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

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

<filedef name="testdef">
    <root>derived(1)</root>
    <blocks>
<!--
a test for a text block
-->

        <text name="testtext">
            <content>A piece of text.</content>
        </text>
<!--
a test for wrapping
-->

        <text name="testwrap">
            <wrap>74</wrap>
            <content>Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appears in all copies and that both the copyright notice and this permission notice appear in supporting documentation. No representations are made about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.</content>
        </text>
<!--
a test for stringmember
-->

        <stringmember name="teststringmember">
            <membername>classname</membername>
        </stringmember>
<!--
a test for stringmember
-->

        <stringmember name="teststringmemberparent">
            <location>parent()</location>
            <membername>classname</membername>
        </stringmember>
<!--
test for includes
-->

        <includes name="testincludes">
            <language>C++</language>
            <otherclasses>[foo]</otherclasses>
            <otherincludes>[x.hpp]</otherincludes>
        </includes>
<!--
test for local forwards
-->

        <forwards name="testlocalforwards">
            <local/>
        </forwards>
<!--
test for global forwards
-->

        <forwards name="testglobalforwards"/>
<!--
test for foreach/members
-->

        <foreach name="foreachmembertest">
            <vector>members</vector>
            <blocks>
                <stringmember name="membername">
                    <membername>name</membername>
                </stringmember>
                <typeimplfield name="cpptype">
                    <language>C++</language>
                    <field>typedecl</field>
                </typeimplfield>
                <text name="comma">
                    <conditions>
                        <islast>
                            <fail/>
                        </islast>
                    </conditions>
                    <content>,</content>
                </text>
            </blocks>
            <structure>member(\cpptype, \membername)\comma</structure>
        </foreach>
<!--
test for isabstract
-->

        <text name="testisabstract">
            <conditions>
                <isabstract>
                    <fail/>
                </isabstract>
            </conditions>
            <content>not abstract</content>
        </text>
<!--
test for vectorhasany
-->

        <text name="testvectorhasany">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <objecthasmemberequal>
                            <membername>type</membername>
                            <membervalue>objvector</membervalue>
                        </objecthasmemberequal>
                    </condition>
                </vectorhasany>
            </conditions>
            <content>we have an objvector member</content>
        </text>
<!--
test for isinlist
-->

        <text name="testisinlist">
            <conditions>
                <isinlist>
                    <membername>classname</membername>
                    <list>[foo,bar]</list>
                </isinlist>
            </conditions>
            <content>class name is in the list</content>
        </text>
<!--
test for foreachobject
-->

        <foreachobject name="foreachobjecttest">
            <location>root().schema.derived(1)</location>
            <blocks>
                <stringmember name="classname">
                    <membername>classname</membername>
                </stringmember>
                <stringmember name="objname">
                    <membername>name</membername>
                </stringmember>
            </blocks>
            <structure>(\objname : \classname)</structure>
        </foreachobject>
<!--
test for foreach/methods
-->

        <foreach name="foreachmethodtest">
            <vector>methods</vector>
            <blocks>
                <stringmember name="methodname">
                    <membername>name</membername>
                </stringmember>
                <text name="comma">
                    <conditions>
                        <islast>
                            <fail/>
                        </islast>
                    </conditions>
                    <content>,</content>
                </text>
            </blocks>
            <structure>\methodname\comma</structure>
        </foreach>
<!--
test for overriden methods
-->

        <overridemethods name="testoverridemethods"/>
<!--
test for objecthasmemberequal
-->

        <text name="testobjecthasmemberequal">
            <conditions>
                <objecthasmemberequal>
                    <membername>classname</membername>
                    <membervalue>bar</membervalue>
                </objecthasmemberequal>
            </conditions>
            <content>We have an object with classname bar</content>
        </text>
        <text name="testblock">
            <content>4</content>
        </text>
<!--
test for blockgreater
-->

        <text name="testblockgreater">
            <conditions>
                <blockgreater>
                    <block>testblock</block>
                    <value>3</value>
                </blockgreater>
            </conditions>
            <content>4 is greater than 3.</content>
        </text>
<!--
test for date. We just output the year so that the pattern file only has to be changed each year :-)
-->

        <date name="testdate">
            <format>%Y</format>
        </date>
<!--
test for logical_or
-->

        <text name="testlogical_or">
            <conditions>
                <logical_or>
                    <conditions>
                        <objecthasmemberequal>
                            <membername>classname</membername>
                            <membervalue>foo</membervalue>
                        </objecthasmemberequal>
                        <vectorhasany>
                            <vector>members</vector>
                            <condition>
                                <objecthasmemberequal>
                                    <membername>type</membername>
                                    <membervalue>objvector</membervalue>
                                </objecthasmemberequal>
                            </condition>
                        </vectorhasany>
                    </conditions>
                </logical_or>
            </conditions>
            <content>We have an object with classname foo, or has an objvector</content>
        </text>
<!--
test for logical_and
-->

        <text name="testlogical_and">
            <conditions>
                <logical_and>
                    <conditions>
                        <objecthasmemberequal>
                            <membername>classname</membername>
                            <membervalue>bar</membervalue>
                        </objecthasmemberequal>
                        <vectorhasany>
                            <vector>members</vector>
                            <condition>
                                <objecthasmemberequal>
                                    <membername>type</membername>
                                    <membervalue>objvector</membervalue>
                                </objecthasmemberequal>
                            </condition>
                        </vectorhasany>
                    </conditions>
                </logical_and>
            </conditions>
            <content>We have an object with classname bar, and has an objvector</content>
        </text>
<!--
test for namespace - start
-->

        <namespace name="testnamespace_start">
            <identifier>a:b:c</identifier>
            <context>start</context>
        </namespace>
<!--
test for namespace - end
-->

        <namespace name="testnamespace_end">
            <identifier>a:b:c</identifier>
            <context>end</context>
        </namespace>
<!--
test for namespace - using
-->

        <namespace name="testnamespace_using">
            <identifier>a:b:c</identifier>
            <context>using</context>
        </namespace>
<!--
test for forlist
-->

        <forlist name="testforlist">
            <list>[a,b,c,d]</list>
            <blocks>
                <text name="comma">
                    <conditions>
                        <islast>
                            <fail/>
                        </islast>
                    </conditions>
                    <content>,</content>
                </text>
            </blocks>
            <structure>\item\comma </structure>
        </forlist>
<!--
test for forlist with a member
-->

        <foreach name="testforlistmember">
            <vector>constructors</vector>
            <blocks>
                <foreach name="impl">
                    <vector>implementations</vector>
                    <blocks>
                        <foreach name="init">
                            <vector>initialise</vector>
                            <blocks>
                                <forlist name="list">
                                    <listmember>members</listmember>
                                    <blocks>
                                        <text name="comma">
                                            <conditions>
                                                <islast>
                                                    <fail/>
                                                </islast>
                                            </conditions>
                                            <content>,</content>
                                        </text>
                                    </blocks>
                                    <structure>\item\comma </structure>
                                </forlist>
                            </blocks>
                            <structure>\list</structure>
                        </foreach>
                    </blocks>
                    <structure>\init</structure>
                </foreach>
            </blocks>
            <structure>\impl</structure>
        </foreach>
<!--
a test for a text block inside another one.
-->

        <text name="testblock">
            <content>A block to appear.</content>
        </text>
        <text name="testembedtext">
            <content>\testblock</content>
        </text>
<!--
A test to make sure you can quote text blocks.
-->

        <text name="testnoembedtext">
            <content>\\testblock</content>
        </text>
<!--
A test tfor the web tangle.
-->

        <foreach name="testwebtangle">
            <vector>methods</vector>
            <blocks>
                <stringmember name="methodname">
                    <membername>name</membername>
                </stringmember>
                <webtangle name="web">
                    <language>C++</language>
                </webtangle>
            </blocks>
            <structure>\methodname: \web</structure>
        </foreach>
    </blocks>
    <structure> testtext: \testtext testwrap with comment: \comment=on \testwrap \comment=off testwrap without comment: \testwrap uppercase testtext: \uppercase=on\testtext\uppercase=off teststringmember: \teststringmember teststringmemberparent: \teststringmemberparent testincludes: \testincludes testlocalforwards: \testlocalforwards testglobalforwards: \testglobalforwards foreachmembertest: \foreachmembertest testisabstract: \testisabstract testvectorhasany: \testvectorhasany testisinlist: \testisinlist foreachobjecttest: \foreachobjecttest testobjecthasmemberequal: \testobjecthasmemberequal testblockgreater: \testblockgreater testdate: \testdate foreachmethodtest: \foreachmethodtest testoverridemethods: \testoverridemethods testlogical_or: \testlogical_or testlogical_and: \testlogical_and testnamespace_start: \testnamespace_start testnamespace_end: \testnamespace_end testnamespace_using: \testnamespace_using testforlist: \testforlist testforlistmember: \testforlistmember testembedtext: \testembedtext testnoembedtext: \testnoembedtext testwebtangle: \testwebtangle </structure>
</filedef>