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

<!--
// // Copyright (c) 2006 // Paul Hamilton; QuidNovi // // This software is proprietary and remains // the sole property of QuidNovi. // // version.xml // // 27-Jan-2006 phamilton Created //
-->

<object xmlns:xi="http://www.w3.org/2001/XInclude" xmlns="urn:xmlliterate.schema" name="version">
    <description>Class used to describe a software version.</description>
    <namespace>$(namespace)</namespace>
    <classname>$(classname)</classname>
    <members>
        <longtype name="major">
            <description>The major version number.</description>
        </longtype>
        <longtype name="minor">
            <description>The minor version number.</description>
        </longtype>
        <longtype name="build">
            <description>The build number.</description>
        </longtype>
        <longtype name="subbuild">
            <description>The sub-build number.</description>
        </longtype>
    </members>
    <constructors>
        <constructor>
            <arguments>
                <longtype name="major"/>
                <longtype name="minor"/>
                <longtype name="build"/>
                <longtype name="subbuild"/>
            </arguments>
            <implementations>
                <emptyconsinitimpl>
                    <initialise>
                        <constrcopymembers>
                            <members>[major,minor,build,subbuild]</members>
                        </constrcopymembers>
                    </initialise>
                </emptyconsinitimpl>
            </implementations>
        </constructor>
    </constructors>
    <methods>
        <method name="internal_string">
            <description>Return the internal version as a string.</description>
            <inheritance>concrete</inheritance>
            <access>public</access>
            <returns>
                <stringtype>
                    <description>The version as a string.</description>
                </stringtype>
            </returns>
            <implementations>
                <xi:include href="cpp/version_internal_string.xml"/>
                <xi:include href="java/version_internal_string.xml"/>
            </implementations>
        </method>
        <method name="public_string">
            <description>Return the public version as a string.</description>
            <inheritance>concrete</inheritance>
            <access>public</access>
            <returns>
                <stringtype>
                    <description>The version as a string.</description>
                </stringtype>
            </returns>
            <arguments>
                <booltype name="full">
                    <description>If true, then the phase and build are included.</description>
                </booltype>
            </arguments>
            <implementations>
                <xi:include href="cpp/version_public_string.xml"/>
                <xi:include href="java/version_public_string.xml"/>
            </implementations>
        </method>
        <method name="build_smaller">
            <description>Return true if the build number of this version is greater than the build number passed in.</description>
            <inheritance>concrete</inheritance>
            <access>public</access>
            <returns>
                <booltype>
                    <description>True if the build number is greater.</description>
                </booltype>
            </returns>
            <arguments>
                <longtype name="build">
                    <description>If true, then the phase and build are included.</description>
                </longtype>
            </arguments>
            <implementations>
                <xi:include href="cpp/version_build_smaller.xml"/>
                <xi:include href="java/version_build_smaller.xml"/>
            </implementations>
        </method>
    </methods>
</object>