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

<!--
// // See license.txt for license information. // // impl.xml // // 31-Jan-2006 phamilton Created //
-->

<filedef name="impl">
    <filepath>$(filepath)</filepath>
    <extension>.java</extension>
    <root>$(root)</root>
    <ignoreobjects>$(ignoreobjects)</ignoreobjects>
    <blocks>
        <namespace name="namespace">
            <language>Java</language>
        </namespace>
        <date name="date">
            <format>%e-%b-%Y</format>
        </date>
        <stringmember name="classname">
            <membername>classname</membername>
        </stringmember>
        <stringmember name="superclassname">
            <location>parent()</location>
            <membername>classname</membername>
        </stringmember>
        <import href="../common/abstractmethods.xml"/>
        <import href="../common/methods.xml"/>
        <import href="../common/overridemethods.xml">
            <param name="priv" value="protected"/>
        </import>
        <import href="../common/memberimports.xml"/>
        <import href="../common/argimports.xml"/>
        <includes name="imports">
            <otherclasses>$(ignoreobjects)</otherclasses>
            <otherincludes>[]</otherincludes>
            <language>Java</language>
        </includes>
        <foreach name="memberdefs">
            <vector>members</vector>
            <blocks>
                <stringmember name="membername">
                    <membername>name</membername>
                </stringmember>
                <lookupobjectmember name="classname">
                    <location>root()</location>
                    <lookupmember>reftype</lookupmember>
                    <membername>classname</membername>
                </lookupobjectmember>
<!--
although it looks 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>Java</language>
                    <field>typedecl</field>
                </typeimplfield>
                <text name="static">
                    <conditions>
                        <vectorhasany>
                            <vector>attributes</vector>
                            <condition>
                                <objecthasmemberequal>
                                    <membername>name</membername>
                                    <membervalue>global</membervalue>
                                </objecthasmemberequal>
                            </condition>
                        </vectorhasany>
                    </conditions>
                    <content>static </content>
                </text>
                <text name="memberdef">
                    <conditions>
                        <objecthasmemberequal>
                            <membername>reftype</membername>
                            <membervalue/>
                        </objecthasmemberequal>
                    </conditions>
                    <content>\t\(static)protected \cpptype _\membername;\n</content>
                </text>
                <text name="typedrefmemberdef">
                    <conditions>
                        <objecthasmemberequal>
                            <membername>type</membername>
                            <membervalue>typedobjreftype</membervalue>
                        </objecthasmemberequal>
                    </conditions>
                    <content>\t\(static)protected \classname _\membername;\n</content>
                </text>
                <text name="typedvectormemberdef">
                    <conditions>
                        <objecthasmemberequal>
                            <membername>type</membername>
                            <membervalue>typedobjvectortype</membervalue>
                        </objecthasmemberequal>
                    </conditions>
                    <content>\t\(static)protected \classname[] _\membername;\n</content>
                </text>
            </blocks>
            <structure>\memberdef\typedrefmemberdef\typedvectormemberdef</structure>
        </foreach>
        <text name="abstract">
            <conditions>
                <isabstract/>
            </conditions>
            <content>abstract </content>
        </text>
    </blocks>
    <structure>\comment=on See license.txt for license information. \(classname).java Generated by tangle. Edit at your own risk! \comment=off package \namespace; \imports \memberimports \argimports public \(abstract)class \classname extends \superclassname { \memberdefs public \classname(String type, String name) { super(type, name); } \abstractmethods \methods \overridemethods } </structure>
</filedef>