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

<!--
// // See license.txt for license information. // // arguments.xml // // 14-Oct-2004 phamilton Created //
-->

<foreach name="arguments">
    <vector>arguments</vector>
    <blocks>
        <stringmember name="name">
            <membername>name</membername>
        </stringmember>
<!--
although it loks like this block isn't used, it's actually used by some implfields below so we need it here.
-->

        <lookupobjectmember name="enumeration">
            <location>root()</location>
            <lookupmember>enumeration</lookupmember>
            <membername>classname</membername>
            <objecttype>enumeration</objecttype>
        </lookupobjectmember>
        <typeimplfield name="cpptype">
            <language>C++</language>
            <field>argdecl</field>
        </typeimplfield>
        <lookupobjectmember name="ptrreftype">
            <location>root()</location>
            <lookupmember>reftype</lookupmember>
            <membername>classname</membername>
        </lookupobjectmember>
        <lookupobjectnamespace name="namespace">
            <location>root()</location>
            <lookupmember>reftype</lookupmember>
        </lookupobjectnamespace>
        <text name="type">
            <conditions>
                <objecthasmemberequal>
                    <membername>reftype</membername>
                    <membervalue/>
                </objecthasmemberequal>
            </conditions>
            <content>\cpptype </content>
        </text>
        <text name="reftype">
            <conditions>
                <objecthasmemberequal>
                    <membername>reftype</membername>
                    <membervalue/>
                    <fail/>
                </objecthasmemberequal>
                <objecthasmemberequal>
                    <membername>readonly</membername>
                    <membervalue>false</membervalue>
                </objecthasmemberequal>
            </conditions>
            <content>\namespace\ptrreftype *</content>
        </text>
        <text name="readonlyreftype">
            <conditions>
                <objecthasmemberequal>
                    <membername>reftype</membername>
                    <membervalue/>
                    <fail/>
                </objecthasmemberequal>
                <objecthasmemberequal>
                    <membername>readonly</membername>
                    <membervalue>true</membervalue>
                </objecthasmemberequal>
            </conditions>
            <content>const \namespace\ptrreftype& </content>
        </text>
        <text name="comma">
            <conditions>
                <islast>
                    <fail/>
                </islast>
            </conditions>
            <content>, \n\t\t</content>
        </text>
    </blocks>
    <structure>\type\reftype\readonlyreftype\name\comma</structure>
</foreach>