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

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

<filedef name="header">
    <filepath>$(filepath)</filepath>
    <extension>.hpp</extension>
    <root>$(root)</root>
    <ignoreobjects>$(ignoreobjects)</ignoreobjects>
    <blocks>
        <namespace name="namespacestart">
            <context>start</context>
        </namespace>
        <namespace name="namespaceend">
            <context>end</context>
        </namespace>
        <date name="date">
            <format>%e-%b-%Y</format>
        </date>
        <stringmember name="classname">
            <membername>classname</membername>
        </stringmember>
        <stringmember name="description">
            <membername>description</membername>
        </stringmember>
        <stringmember name="superclassname">
            <location>parent()</location>
            <membername>classname</membername>
        </stringmember>
        <import href="../common/header/abstractmethods.xml"/>
        <import href="../common/header/publicmethods.xml"/>
        <import href="../common/header/privatemethods.xml"/>
        <import href="../common/header/overridemethods.xml"/>
        <import href="../common/header/virtualmethods.xml"/>
        <import href="../common/header/memberincludes.xml"/>
        <import href="../common/header/argincludes.xml"/>
        <forwards name="globalforwards"/>
        <forwards name="localforwards">
            <local/>
        </forwards>
        <includes name="includes">
            <otherclasses>$(ignoreobjects)</otherclasses>
            <otherincludes>$(ignoreincludes)</otherincludes>
            <language>C++</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>
                <lookupobjectnamespace name="namespace">
                    <location>root()</location>
                    <lookupmember>reftype</lookupmember>
                </lookupobjectnamespace>
<!--
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>C++</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\cpptype _\membername;\n</content>
                </text>
                <text name="typedmemberdef">
                    <conditions>
                        <objecthasmemberequal>
                            <membername>reftype</membername>
                            <membervalue/>
                            <fail/>
                        </objecthasmemberequal>
                    </conditions>
                    <content>\t\static\cpptype<\namespace\classname> _\membername;\n</content>
                </text>
            </blocks>
            <structure>\memberdef\typedmemberdef</structure>
        </foreach>
        <foreach name="memberinits">
            <vector>members</vector>
            <blocks>
<!--
although it loks like this block isn't used, it's actually used by some implfields below so we need it here.
-->

                <stringmember name="membername">
                    <membername>name</membername>
                </stringmember>
                <lookupobjectmember name="enumeration">
                    <location>root()</location>
                    <lookupmember>enumeration</lookupmember>
                    <membername>classname</membername>
                    <objecttype>enumeration</objecttype>
                </lookupobjectmember>
                <typeimplfield name="cppinit">
                    <language>C++</language>
                    <field>initexpr</field>
                </typeimplfield>
                <text name="init">
                    <conditions>
                        <istypeimplfieldequal>
                            <language>C++</language>
                            <field>initexpr</field>
                            <value/>
                            <fail/>
                        </istypeimplfieldequal>
                        <vectorhasany>
                            <vector>attributes</vector>
                            <condition>
                                <objecthasmemberequal>
                                    <membername>name</membername>
                                    <membervalue>global</membervalue>
                                </objecthasmemberequal>
                            </condition>
                            <fail/>
                        </vectorhasany>
                    </conditions>
                    <content>,\n\t\(t)_\membername(\cppinit)</content>
                </text>
            </blocks>
            <structure>\init</structure>
        </foreach>
        <text name="clonedef">
            <conditions>
                <isabstract>
                    <fail/>
                </isabstract>
            </conditions>
            <content>\(t)virtual ph::common::object_base *clone(const std::string &name,\n\t\(t)ph::common::cloneable_object_context *context) const;\n</content>
        </text>
        <text name="copy">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hasanymembervisit.xml"/>
                    </condition>
                </vectorhasany>
            </conditions>
            <content>\(t)void copy(const \classname &obj);\n</content>
        </text>
        <text name="memberaccept">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hasmembervisit.xml"/>
                    </condition>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::member_visitor *v);\n</content>
        </text>
        <text name="memberacceptinline">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hasmembervisit.xml"/>
                    </condition>
                    <fail/>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::member_visitor *v)\n\t\t{ return inherited::accept(v); }\n</content>
        </text>
        <text name="constmemberaccept">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hasmembervisit.xml"/>
                    </condition>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::const_member_visitor *v) const;\n</content>
        </text>
        <text name="constmemberacceptinline">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hasmembervisit.xml"/>
                    </condition>
                    <fail/>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::const_member_visitor *v) const\n\t\t{ return inherited::accept(v); }\n</content>
        </text>
        <text name="compositememberaccept">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hascompositemembervisit.xml"/>
                    </condition>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::object_visitor *v);\n</content>
        </text>
        <text name="compositememberacceptinline">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hascompositemembervisit.xml"/>
                    </condition>
                    <fail/>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::object_visitor *v)\n\t\t{ return inherited::accept(v); }\n</content>
        </text>
        <text name="constcompositememberaccept">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hascompositemembervisit.xml"/>
                    </condition>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::const_object_visitor *v) const;\n</content>
        </text>
        <text name="constcompositememberacceptinline">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hascompositemembervisit.xml"/>
                    </condition>
                    <fail/>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::const_object_visitor *v) const\n\t\t{ return inherited::accept(v); }\n</content>
        </text>
        <text name="nameobjectaccept">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hascompositemembervisit.xml"/>
                    </condition>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::object_name_visitor *v) const;\n</content>
        </text>
        <text name="nameobjectacceptinline">
            <conditions>
                <vectorhasany>
                    <vector>members</vector>
                    <condition>
                        <import url="common/hascompositemembervisit.xml"/>
                    </condition>
                    <fail/>
                </vectorhasany>
            </conditions>
            <content>\(t)virtual bool accept(ph::common::object_name_visitor *v) const\n\t\t{ return inherited::accept(v); }\n</content>
        </text>
    </blocks>
    <structure>\comment=on See license.txt for license information. \classname.hpp Generated by tangle. Edit at your own risk! \comment=off #ifndef inc\uppercase=on\classname\uppercase=off #define inc\uppercase=on\classname\uppercase=off \includes \memberincludes \argincludes \globalforwards \namespacestart \localforwards class \classname : public \superclassname { protected: typedef \superclassname inherited; \memberdefs public: \classname(const std::string &type, const std::string &name) : inherited(type, name)\memberinits {}; \abstractmethods \publicmethods \overridemethods \virtualmethods \copy \memberaccept\memberacceptinline \constmemberaccept\constmemberacceptinline \compositememberaccept\compositememberacceptinline \constcompositememberaccept\constcompositememberacceptinline \nameobjectaccept\nameobjectacceptinline \clonedef private: \privatemethods }; \namespaceend #endif // inc\uppercase=on\classname\uppercase=off </structure>
</filedef>