<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!--
// // See license.txt for license information. // // tgl_condition.xml // // 24-Jul-2003 phamilton Created //
-->

<object xmlns:xi="http://www.w3.org/2001/XInclude" xmlns="urn:xmlliterate.schema" name="@condition">
    <description>Abstract class representing a condition to be tested for block output.</description>
    <classname>tgl_condition</classname>
    <members>
        <booltype name="fail">
            <description>True if the condition should fail.</description>
        </booltype>
    </members>
    <methods>
        <method name="get_block">
            <inheritance>override</inheritance>
            <implementations>
                <xi:include href="cpp/return_null.xml"/>
            </implementations>
        </method>
        <method name="pass">
            <description>This method is called to test if the condition should pass or not.</description>
            <inheritance>abstract</inheritance>
            <access>public</access>
            <returns>
                <booltype>
                    <description>Returns "true" if the condition passes.</description>
                </booltype>
            </returns>
            <arguments>
                <ptrtypename name="filedef">
                    <description>Not sure.</description>
                    <reftype>tgl_structure_parser</reftype>
                </ptrtypename>
                <ptrtypename name="obj">
                    <description>Not sure.</description>
                    <reftype>@schemaobj</reftype>
                </ptrtypename>
                <booltype name="first">
                    <description>If true, then return true only if the first item is true.</description>
                </booltype>
                <booltype name="last">
                    <description>If true, then return true only if the last item is true.</description>
                </booltype>
            </arguments>
        </method>
    </methods>
    <derived>
        <object name="isabstract">
            <description>Concrete subclass of condition which tests if an object is abstract or not.</description>
            <classname>tgl_isabstract</classname>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/isabstract_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="objecthasmemberequal">
            <description>Concrete subclass of condition condition passes if the member of an object has particular value.</description>
            <classname>tgl_objecthasmemberequal</classname>
            <members>
                <stringtype name="location">
                    <description>The location of the object relative to the object. if blank, then the actual object is searched.</description>
                </stringtype>
                <stringtype name="membername">
                    <description>The name of the member to query.</description>
                </stringtype>
                <stringtype name="membervalue">
                    <description>The value of the member to test.</description>
                </stringtype>
            </members>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/objecthasmemberequal_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="objecthasany">
            <description>Concrete subclass of condition which passes if an objects member is a composite with some objects in it.</description>
            <classname>tgl_objecthasany</classname>
            <members>
                <stringtype name="membername">
                    <description>The member (composite) to query.</description>
                </stringtype>
                <stringtype name="membertype">
                    <description>test to see if the member's type is one of the above.</description>
                </stringtype>
            </members>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/objecthasany_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="vectorhasany">
            <description>Concrete subclass of condition which passes if any object in the vector passes the condition passed in. This is the preferred way to do conditions.</description>
            <classname>tgl_vectorhasany</classname>
            <members>
                <stringtype name="vector">
                    <description>The name of the member which contains a vector of objects.</description>
                </stringtype>
                <typedobjreftype name="condition">
                    <description>The condition to pass.</description>
                    <reftype>@condition</reftype>
                </typedobjreftype>
            </members>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/vectorhasany_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="isinlist">
            <description>Concrete subclass of condition which tests if the member value is in the list or not.</description>
            <classname>tgl_isinlist</classname>
            <members>
                <stringtype name="list">
                    <description>the list to search in.</description>
                </stringtype>
                <stringtype name="membername">
                    <description>The name of the member to query.</description>
                </stringtype>
            </members>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/isinlist_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="isfirst">
            <description>Concrete subclass of condition which tests if the object is first in the list.</description>
            <classname>tgl_isfirst</classname>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/isfirst_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="islast">
            <description>Concrete subclass of condition which tests if the object is last in the list.</description>
            <classname>tgl_islast</classname>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/islast_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="istypenamecomposite">
            <description>Concrete subclass of condition which tests if the object is a typename, and if so is composite.</description>
            <classname>tgl_istypenamecomposite</classname>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/istypenamecomposite_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="logical_or">
            <description>Concrete subclass of condition which implements a logical or of it's sub-conditions.</description>
            <classname>tgl_logical_or</classname>
            <members>
                <typedobjvectortype name="conditions">
                    <description>A list of condition objects.</description>
                    <reftype>@condition</reftype>
                </typedobjvectortype>
            </members>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/logical_or_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="logical_and">
            <description>Concrete subclass of condition which implements a logical and of it's sub-conditions.</description>
            <classname>tgl_logical_and</classname>
            <members>
                <typedobjvectortype name="conditions">
                    <description>A list of condition objects.</description>
                    <reftype>@condition</reftype>
                </typedobjvectortype>
            </members>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/logical_and_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="istypeimplfieldequal">
            <description>Concrete subclass of condition which tests a type implementation field is a particular value.</description>
            <classname>tgl_istypeimplfieldequal</classname>
            <members>
                <stringtype name="language">
                    <description>The language to search for.</description>
                </stringtype>
                <stringtype name="field">
                    <description>The name of the typeimpl field to test.</description>
                </stringtype>
                <stringtype name="value">
                    <description>The value to compare.</description>
                </stringtype>
            </members>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/istypeimplfieldequal_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
        <object name="blockgreater">
            <description>Concrete subclass of condition condition passes if a block value is greater than a numeric value.</description>
            <classname>tgl_blockgreater</classname>
            <members>
                <stringtype name="block">
                    <description>The name of the block to test.</description>
                </stringtype>
                <longtype name="value">
                    <description>The value to test.</description>
                </longtype>
            </members>
            <methods>
                <method name="pass">
                    <inheritance>override</inheritance>
                    <implementations>
                        <xi:include href="cpp/condition/blockgreater_pass.xml"/>
                    </implementations>
                </method>
            </methods>
        </object>
    </derived>
</object>