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

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

<object xmlns="urn:xmlliterate.schema" name="@root">
    <derived>
        <object name="@xmlobj">
            <description>The base class in the xml object system.</description>
            <include>../cppxmlobj/xmlobj.hpp</include>
            <classname>ph::xmlobj::xmlobj</classname>
            <templates>
                <typedobjvectortype name="objvector"/>
            </templates>
            <typeimpls>
                <typeimpl name="booltype">
                    <language>C++</language>
                    <initexpr>false</initexpr>
                    <typedecl>bool</typedecl>
                </typeimpl>
                <typeimpl name="inttype">
                    <language>C++</language>
                    <initexpr>0</initexpr>
                    <typedecl>int</typedecl>
                </typeimpl>
                <typeimpl name="objvector">
                    <language>C++</language>
                    <initexpr>this, "\membername"</initexpr>
                    <typedecl>ph::xmlobj::xmlobj_typed_vector</typedecl>
                    <include>../../cppxmlobj/xmlobj_typed_vector.hpp</include>
                </typeimpl>
            </typeimpls>
            <derived>
                <object name="foo">
                    <description>A foo object for testing.</description>
                    <classname>CFoo</classname>
                    <members>
                        <booltype name="z">
                            <description>Another value</description>
                        </booltype>
                    </members>
                    <methods>
                        <method name="zzz">
                            <inheritance>abstract</inheritance>
                            <returns>
                                <inttype>
                                    <description>Return a number.</description>
                                </inttype>
                            </returns>
                        </method>
                    </methods>
                    <derived>
                        <object name="bar">
                            <description>A bar object for testing.</description>
                            <classname>bar</classname>
                            <enumerations>
                                <enumeration name="e">
                                    <tokens>
                                        <token name="e_1">
                                            <id>e1</id>
                                        </token>
                                        <token name="e_2">
                                            <id>e2</id>
                                        </token>
                                        <token name="e_3">
                                            <id>e3</id>
                                        </token>
                                    </tokens>
                                </enumeration>
                            </enumerations>
                            <members>
                                <objvector name="foos">
                                    <description>Some foos</description>
                                    <reftype>foo</reftype>
                                </objvector>
                            </members>
                            <constructors>
                                <constructor>
                                    <implementations>
                                        <emptyconsinitimpl>
                                            <initialise>
                                                <constrcopymembers>
                                                    <members>[z]</members>
                                                </constrcopymembers>
                                            </initialise>
                                        </emptyconsinitimpl>
                                    </implementations>
                                </constructor>
                            </constructors>
                            <methods>
                                <method name="xxx">
                                    <returns>
                                        <inttype>
                                            <description>Return a number.</description>
                                        </inttype>
                                    </returns>
                                    <implementations>
                                        <web>
                                            <language>C++</language>
                                            <sections>
                                                <websection name="root">
                                                    <sections>
                                                        <webuse name="main"/>
                                                    </sections>
                                                </websection>
                                                <websection name="main">
                                                    <sections>
                                                        <websource>
                                                            <code> // some source. </code>
                                                        </websource>
                                                        <webuse name="next"/>
                                                        <websource>
                                                            <code> // some other source. </code>
                                                        </websource>
                                                    </sections>
                                                </websection>
                                                <websection name="next">
                                                    <sections>
                                                        <websource>
                                                            <code> // some next source. </code>
                                                        </websource>
                                                    </sections>
                                                </websection>
                                            </sections>
                                        </web>
                                    </implementations>
                                </method>
                                <method name="yyy">
                                    <returns>
                                        <inttype>
                                            <description>Return a number.</description>
                                        </inttype>
                                    </returns>
                                </method>
                                <method name="zzz">
                                    <inheritance>override</inheritance>
                                </method>
                            </methods>
                        </object>
                    </derived>
                </object>
            </derived>
        </object>
    </derived>
</object>