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

<!--
// // See license.txt for license information. // // schema_object.xml // // 16-Aug-2003 phamilton Created //
-->

<object xmlns:xi="http://www.w3.org/2001/XInclude" xmlns="urn:xmlliterate.schema" name="object">
    <description>An object in the schema.</description>
    <classname>schema_object</classname>
    <members>
        <stringtype name="classname">
            <description>The name of the "class" for the object during code generation. This name is also generally used as the filename that this obect will be generated into.</description>
        </stringtype>
        <stringtype name="namespace">
            <description>The namespace that will be used by this object and all nested objects. The notation for namespaces is "x:y" which is a little different to languages like C++, so beware. If this object is already a child of another object with a namespace, then this namespace will be appended to the parents etc. So to collect a full namespace for an object, you need to walk through all parent objects appending namespaces as you go.</description>
        </stringtype>
        <stringtype name="include">
            <description>The include for this class. Often this is not needed, but "includes" will use it if it's available. Only in C-like languages.</description>
        </stringtype>
        <stringtype name="imp">
            <description>The import for this class. Often this is not needed, but "includes" will use it if it's available. For java like languages.</description>
        </stringtype>
        <typedobjvectortype name="enumerations">
            <description>All the enumerations used by members of an object.</description>
            <reftype>enumeration</reftype>
        </typedobjvectortype>
        <typedobjvectortype name="typeimpls">
            <description>All the type implementations used by the object.</description>
            <reftype>typeimpl</reftype>
        </typedobjvectortype>
        <typedobjvectortype name="members">
            <description>All the members of an object.</description>
            <reftype>@typename</reftype>
        </typedobjvectortype>
        <typedobjvectortype name="constructors">
            <description>All the constructors of an object.</description>
            <reftype>constructor</reftype>
        </typedobjvectortype>
        <typedobjreftype name="destruct">
            <description>The Destructor of an object.</description>
            <reftype>destructor</reftype>
        </typedobjreftype>
        <typedobjvectortype name="methods">
            <description>All the methods of an object.</description>
            <reftype>method</reftype>
        </typedobjvectortype>
        <typedobjvectortype name="derived">
            <description>All the derived objects of an object.</description>
            <reftype>object</reftype>
        </typedobjvectortype>
        <typedobjvectortype name="tests">
            <description>All the tests of an object.</description>
            <reftype>test</reftype>
        </typedobjvectortype>
    </members>
    <methods>
        <method name="get_namespace">
            <access>public</access>
            <inheritance>concrete</inheritance>
            <description>Get the namespace of this object.</description>
            <returns>
                <stringtype>
                    <description>Returns the namespace of this object. See "namespace" member for the format.</description>
                </stringtype>
            </returns>
            <implementations>
                <xi:include href="cpp/get_namespace.xml"/>
                <xi:include href="java/get_namespace.xml"/>
            </implementations>
        </method>
        <method name="version">
            <description>Return the internal version of the software.</description>
            <inheritance>concrete</inheritance>
            <access>public</access>
            <scope>global</scope>
            <returns>
                <schema_versiontype>
                    <description>Return the internal software version.</description>
                </schema_versiontype>
            </returns>
            <implementations>
                <xi:include href="cpp/version.xml"/>
                <xi:include href="java/version.xml"/>
            </implementations>
        </method>
    </methods>
</object>