nedelements.h

Go to the documentation of this file.
00001 //==========================================================================
00002 // Part of the OMNeT++/OMNEST Discrete Event Simulation System
00003 //
00004 // Generated from ned.dtd by dtdclassgen.pl
00005 //
00006 //==========================================================================
00007 
00008 /*--------------------------------------------------------------*
00009   Copyright (C) 2002-2008 Andras Varga
00010 
00011   This file is distributed WITHOUT ANY WARRANTY. See the file
00012   `license' for details on this and other legal matters.
00013 *--------------------------------------------------------------*/
00014 
00015 //
00016 // THIS IS A GENERATED FILE, DO NOT EDIT!
00017 //
00018 
00019 
00020 #ifndef __NEDELEMENTS_H
00021 #define __NEDELEMENTS_H
00022 
00023 #include "nedelement.h"
00024 
00025 NAMESPACE_BEGIN
00026 
00027 class FilesElement;
00028 class NedFileElement;
00029 class CommentElement;
00030 class PackageElement;
00031 class ImportElement;
00032 class PropertyDeclElement;
00033 class ExtendsElement;
00034 class InterfaceNameElement;
00035 class SimpleModuleElement;
00036 class ModuleInterfaceElement;
00037 class CompoundModuleElement;
00038 class ChannelInterfaceElement;
00039 class ChannelElement;
00040 class ParametersElement;
00041 class ParamElement;
00042 class PropertyElement;
00043 class PropertyKeyElement;
00044 class GatesElement;
00045 class GateElement;
00046 class TypesElement;
00047 class SubmodulesElement;
00048 class SubmoduleElement;
00049 class ConnectionsElement;
00050 class ConnectionElement;
00051 class ConnectionGroupElement;
00052 class LoopElement;
00053 class ConditionElement;
00054 class ExpressionElement;
00055 class OperatorElement;
00056 class FunctionElement;
00057 class IdentElement;
00058 class LiteralElement;
00059 class MsgFileElement;
00060 class NamespaceElement;
00061 class CplusplusElement;
00062 class StructDeclElement;
00063 class ClassDeclElement;
00064 class MessageDeclElement;
00065 class PacketDeclElement;
00066 class EnumDeclElement;
00067 class EnumElement;
00068 class EnumFieldsElement;
00069 class EnumFieldElement;
00070 class MessageElement;
00071 class PacketElement;
00072 class ClassElement;
00073 class StructElement;
00074 class FieldElement;
00075 class UnknownElement;
00076 
00077 
00083 enum NEDElementCode {
00084     NED_NULL = 0,  // 0 is reserved
00085     NED_FILES,
00086     NED_NED_FILE,
00087     NED_COMMENT,
00088     NED_PACKAGE,
00089     NED_IMPORT,
00090     NED_PROPERTY_DECL,
00091     NED_EXTENDS,
00092     NED_INTERFACE_NAME,
00093     NED_SIMPLE_MODULE,
00094     NED_MODULE_INTERFACE,
00095     NED_COMPOUND_MODULE,
00096     NED_CHANNEL_INTERFACE,
00097     NED_CHANNEL,
00098     NED_PARAMETERS,
00099     NED_PARAM,
00100     NED_PROPERTY,
00101     NED_PROPERTY_KEY,
00102     NED_GATES,
00103     NED_GATE,
00104     NED_TYPES,
00105     NED_SUBMODULES,
00106     NED_SUBMODULE,
00107     NED_CONNECTIONS,
00108     NED_CONNECTION,
00109     NED_CONNECTION_GROUP,
00110     NED_LOOP,
00111     NED_CONDITION,
00112     NED_EXPRESSION,
00113     NED_OPERATOR,
00114     NED_FUNCTION,
00115     NED_IDENT,
00116     NED_LITERAL,
00117     NED_MSG_FILE,
00118     NED_NAMESPACE,
00119     NED_CPLUSPLUS,
00120     NED_STRUCT_DECL,
00121     NED_CLASS_DECL,
00122     NED_MESSAGE_DECL,
00123     NED_PACKET_DECL,
00124     NED_ENUM_DECL,
00125     NED_ENUM,
00126     NED_ENUM_FIELDS,
00127     NED_ENUM_FIELD,
00128     NED_MESSAGE,
00129     NED_PACKET,
00130     NED_CLASS,
00131     NED_STRUCT,
00132     NED_FIELD,
00133     NED_UNKNOWN
00134 };
00135 
00136 // Note: zero *must* be a valid value for all enums, because that gets set in the ctor if there's not default
00137 enum {NED_GATETYPE_NONE, NED_GATETYPE_INPUT, NED_GATETYPE_OUTPUT, NED_GATETYPE_INOUT};
00138 enum {NED_PARTYPE_NONE, NED_PARTYPE_DOUBLE, NED_PARTYPE_INT, NED_PARTYPE_STRING, NED_PARTYPE_BOOL, NED_PARTYPE_XML};
00139 enum {NED_CONST_DOUBLE, NED_CONST_QUANTITY, NED_CONST_INT, NED_CONST_STRING, NED_CONST_BOOL, NED_CONST_SPEC};
00140 enum {NED_SUBGATE_NONE, NED_SUBGATE_I, NED_SUBGATE_O};
00141 
00152 class NEDXML_API FilesElement : public NEDElement
00153 {
00154   private:
00155   public:
00158     FilesElement();
00159     FilesElement(NEDElement *parent);
00160     virtual ~FilesElement() {}
00162 
00165     virtual const char *getTagName() const {return "files";}
00166     virtual int getTagCode() const {return NED_FILES;}
00167     virtual int getNumAttributes() const;
00168     virtual const char *getAttributeName(int k) const;
00169     virtual const char *getAttribute(int k) const;
00170     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00171     virtual void setAttribute(int k, const char *val);
00172     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00173     virtual const char *getAttributeDefault(int k) const;
00174     virtual FilesElement *dup() const;
00176 
00179 
00180     virtual FilesElement *getNextFilesSibling() const;
00181     virtual NedFileElement *getFirstNedFileChild() const;
00182     virtual MsgFileElement *getFirstMsgFileChild() const;
00184 };
00185 
00200 class NEDXML_API NedFileElement : public NEDElement
00201 {
00202   private:
00203     std::string filename;
00204     std::string version;
00205   public:
00208     NedFileElement();
00209     NedFileElement(NEDElement *parent);
00210     virtual ~NedFileElement() {}
00212 
00215     virtual const char *getTagName() const {return "ned-file";}
00216     virtual int getTagCode() const {return NED_NED_FILE;}
00217     virtual int getNumAttributes() const;
00218     virtual const char *getAttributeName(int k) const;
00219     virtual const char *getAttribute(int k) const;
00220     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00221     virtual void setAttribute(int k, const char *val);
00222     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00223     virtual const char *getAttributeDefault(int k) const;
00224     virtual NedFileElement *dup() const;
00226 
00229     const char * getFilename() const  {return filename.c_str();}
00230     void setFilename(const char * val)  {filename = val;}
00231     const char * getVersion() const  {return version.c_str();}
00232     void setVersion(const char * val)  {version = val;}
00233 
00234     virtual NedFileElement *getNextNedFileSibling() const;
00235     virtual CommentElement *getFirstCommentChild() const;
00236     virtual PackageElement *getFirstPackageChild() const;
00237     virtual ImportElement *getFirstImportChild() const;
00238     virtual PropertyDeclElement *getFirstPropertyDeclChild() const;
00239     virtual PropertyElement *getFirstPropertyChild() const;
00240     virtual SimpleModuleElement *getFirstSimpleModuleChild() const;
00241     virtual CompoundModuleElement *getFirstCompoundModuleChild() const;
00242     virtual ModuleInterfaceElement *getFirstModuleInterfaceChild() const;
00243     virtual ChannelElement *getFirstChannelChild() const;
00244     virtual ChannelInterfaceElement *getFirstChannelInterfaceChild() const;
00246 };
00247 
00260 class NEDXML_API CommentElement : public NEDElement
00261 {
00262   private:
00263     std::string locid;
00264     std::string content;
00265   public:
00268     CommentElement();
00269     CommentElement(NEDElement *parent);
00270     virtual ~CommentElement() {}
00272 
00275     virtual const char *getTagName() const {return "comment";}
00276     virtual int getTagCode() const {return NED_COMMENT;}
00277     virtual int getNumAttributes() const;
00278     virtual const char *getAttributeName(int k) const;
00279     virtual const char *getAttribute(int k) const;
00280     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00281     virtual void setAttribute(int k, const char *val);
00282     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00283     virtual const char *getAttributeDefault(int k) const;
00284     virtual CommentElement *dup() const;
00286 
00289     const char * getLocid() const  {return locid.c_str();}
00290     void setLocid(const char * val)  {locid = val;}
00291     const char * getContent() const  {return content.c_str();}
00292     void setContent(const char * val)  {content = val;}
00293 
00294     virtual CommentElement *getNextCommentSibling() const;
00296 };
00297 
00309 class NEDXML_API PackageElement : public NEDElement
00310 {
00311   private:
00312     std::string name;
00313   public:
00316     PackageElement();
00317     PackageElement(NEDElement *parent);
00318     virtual ~PackageElement() {}
00320 
00323     virtual const char *getTagName() const {return "package";}
00324     virtual int getTagCode() const {return NED_PACKAGE;}
00325     virtual int getNumAttributes() const;
00326     virtual const char *getAttributeName(int k) const;
00327     virtual const char *getAttribute(int k) const;
00328     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00329     virtual void setAttribute(int k, const char *val);
00330     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00331     virtual const char *getAttributeDefault(int k) const;
00332     virtual PackageElement *dup() const;
00334 
00337     const char * getName() const  {return name.c_str();}
00338     void setName(const char * val)  {name = val;}
00339 
00340     virtual PackageElement *getNextPackageSibling() const;
00341     virtual CommentElement *getFirstCommentChild() const;
00343 };
00344 
00356 class NEDXML_API ImportElement : public NEDElement
00357 {
00358   private:
00359     std::string importSpec;
00360   public:
00363     ImportElement();
00364     ImportElement(NEDElement *parent);
00365     virtual ~ImportElement() {}
00367 
00370     virtual const char *getTagName() const {return "import";}
00371     virtual int getTagCode() const {return NED_IMPORT;}
00372     virtual int getNumAttributes() const;
00373     virtual const char *getAttributeName(int k) const;
00374     virtual const char *getAttribute(int k) const;
00375     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00376     virtual void setAttribute(int k, const char *val);
00377     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00378     virtual const char *getAttributeDefault(int k) const;
00379     virtual ImportElement *dup() const;
00381 
00384     const char * getImportSpec() const  {return importSpec.c_str();}
00385     void setImportSpec(const char * val)  {importSpec = val;}
00386 
00387     virtual ImportElement *getNextImportSibling() const;
00388     virtual CommentElement *getFirstCommentChild() const;
00390 };
00391 
00404 class NEDXML_API PropertyDeclElement : public NEDElement
00405 {
00406   private:
00407     std::string name;
00408     bool isArray;
00409   public:
00412     PropertyDeclElement();
00413     PropertyDeclElement(NEDElement *parent);
00414     virtual ~PropertyDeclElement() {}
00416 
00419     virtual const char *getTagName() const {return "property-decl";}
00420     virtual int getTagCode() const {return NED_PROPERTY_DECL;}
00421     virtual int getNumAttributes() const;
00422     virtual const char *getAttributeName(int k) const;
00423     virtual const char *getAttribute(int k) const;
00424     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00425     virtual void setAttribute(int k, const char *val);
00426     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00427     virtual const char *getAttributeDefault(int k) const;
00428     virtual PropertyDeclElement *dup() const;
00430 
00433     const char * getName() const  {return name.c_str();}
00434     void setName(const char * val)  {name = val;}
00435     bool getIsArray() const  {return isArray;}
00436     void setIsArray(bool val)  {isArray = val;}
00437 
00438     virtual PropertyDeclElement *getNextPropertyDeclSibling() const;
00439     virtual CommentElement *getFirstCommentChild() const;
00440     virtual PropertyKeyElement *getFirstPropertyKeyChild() const;
00441     virtual PropertyElement *getFirstPropertyChild() const;
00443 };
00444 
00456 class NEDXML_API ExtendsElement : public NEDElement
00457 {
00458   private:
00459     std::string name;
00460   public:
00463     ExtendsElement();
00464     ExtendsElement(NEDElement *parent);
00465     virtual ~ExtendsElement() {}
00467 
00470     virtual const char *getTagName() const {return "extends";}
00471     virtual int getTagCode() const {return NED_EXTENDS;}
00472     virtual int getNumAttributes() const;
00473     virtual const char *getAttributeName(int k) const;
00474     virtual const char *getAttribute(int k) const;
00475     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00476     virtual void setAttribute(int k, const char *val);
00477     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00478     virtual const char *getAttributeDefault(int k) const;
00479     virtual ExtendsElement *dup() const;
00481 
00484     const char * getName() const  {return name.c_str();}
00485     void setName(const char * val)  {name = val;}
00486 
00487     virtual ExtendsElement *getNextExtendsSibling() const;
00488     virtual CommentElement *getFirstCommentChild() const;
00490 };
00491 
00503 class NEDXML_API InterfaceNameElement : public NEDElement
00504 {
00505   private:
00506     std::string name;
00507   public:
00510     InterfaceNameElement();
00511     InterfaceNameElement(NEDElement *parent);
00512     virtual ~InterfaceNameElement() {}
00514 
00517     virtual const char *getTagName() const {return "interface-name";}
00518     virtual int getTagCode() const {return NED_INTERFACE_NAME;}
00519     virtual int getNumAttributes() const;
00520     virtual const char *getAttributeName(int k) const;
00521     virtual const char *getAttribute(int k) const;
00522     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00523     virtual void setAttribute(int k, const char *val);
00524     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00525     virtual const char *getAttributeDefault(int k) const;
00526     virtual InterfaceNameElement *dup() const;
00528 
00531     const char * getName() const  {return name.c_str();}
00532     void setName(const char * val)  {name = val;}
00533 
00534     virtual InterfaceNameElement *getNextInterfaceNameSibling() const;
00535     virtual CommentElement *getFirstCommentChild() const;
00537 };
00538 
00550 class NEDXML_API SimpleModuleElement : public NEDElement
00551 {
00552   private:
00553     std::string name;
00554   public:
00557     SimpleModuleElement();
00558     SimpleModuleElement(NEDElement *parent);
00559     virtual ~SimpleModuleElement() {}
00561 
00564     virtual const char *getTagName() const {return "simple-module";}
00565     virtual int getTagCode() const {return NED_SIMPLE_MODULE;}
00566     virtual int getNumAttributes() const;
00567     virtual const char *getAttributeName(int k) const;
00568     virtual const char *getAttribute(int k) const;
00569     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00570     virtual void setAttribute(int k, const char *val);
00571     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00572     virtual const char *getAttributeDefault(int k) const;
00573     virtual SimpleModuleElement *dup() const;
00575 
00578     const char * getName() const  {return name.c_str();}
00579     void setName(const char * val)  {name = val;}
00580 
00581     virtual SimpleModuleElement *getNextSimpleModuleSibling() const;
00582     virtual CommentElement *getFirstCommentChild() const;
00583     virtual ExtendsElement *getFirstExtendsChild() const;
00584     virtual InterfaceNameElement *getFirstInterfaceNameChild() const;
00585     virtual ParametersElement *getFirstParametersChild() const;
00586     virtual GatesElement *getFirstGatesChild() const;
00588 };
00589 
00601 class NEDXML_API ModuleInterfaceElement : public NEDElement
00602 {
00603   private:
00604     std::string name;
00605   public:
00608     ModuleInterfaceElement();
00609     ModuleInterfaceElement(NEDElement *parent);
00610     virtual ~ModuleInterfaceElement() {}
00612 
00615     virtual const char *getTagName() const {return "module-interface";}
00616     virtual int getTagCode() const {return NED_MODULE_INTERFACE;}
00617     virtual int getNumAttributes() const;
00618     virtual const char *getAttributeName(int k) const;
00619     virtual const char *getAttribute(int k) const;
00620     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00621     virtual void setAttribute(int k, const char *val);
00622     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00623     virtual const char *getAttributeDefault(int k) const;
00624     virtual ModuleInterfaceElement *dup() const;
00626 
00629     const char * getName() const  {return name.c_str();}
00630     void setName(const char * val)  {name = val;}
00631 
00632     virtual ModuleInterfaceElement *getNextModuleInterfaceSibling() const;
00633     virtual CommentElement *getFirstCommentChild() const;
00634     virtual ExtendsElement *getFirstExtendsChild() const;
00635     virtual ParametersElement *getFirstParametersChild() const;
00636     virtual GatesElement *getFirstGatesChild() const;
00638 };
00639 
00652 class NEDXML_API CompoundModuleElement : public NEDElement
00653 {
00654   private:
00655     std::string name;
00656   public:
00659     CompoundModuleElement();
00660     CompoundModuleElement(NEDElement *parent);
00661     virtual ~CompoundModuleElement() {}
00663 
00666     virtual const char *getTagName() const {return "compound-module";}
00667     virtual int getTagCode() const {return NED_COMPOUND_MODULE;}
00668     virtual int getNumAttributes() const;
00669     virtual const char *getAttributeName(int k) const;
00670     virtual const char *getAttribute(int k) const;
00671     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00672     virtual void setAttribute(int k, const char *val);
00673     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00674     virtual const char *getAttributeDefault(int k) const;
00675     virtual CompoundModuleElement *dup() const;
00677 
00680     const char * getName() const  {return name.c_str();}
00681     void setName(const char * val)  {name = val;}
00682 
00683     virtual CompoundModuleElement *getNextCompoundModuleSibling() const;
00684     virtual CommentElement *getFirstCommentChild() const;
00685     virtual ExtendsElement *getFirstExtendsChild() const;
00686     virtual InterfaceNameElement *getFirstInterfaceNameChild() const;
00687     virtual ParametersElement *getFirstParametersChild() const;
00688     virtual GatesElement *getFirstGatesChild() const;
00689     virtual TypesElement *getFirstTypesChild() const;
00690     virtual SubmodulesElement *getFirstSubmodulesChild() const;
00691     virtual ConnectionsElement *getFirstConnectionsChild() const;
00693 };
00694 
00706 class NEDXML_API ChannelInterfaceElement : public NEDElement
00707 {
00708   private:
00709     std::string name;
00710   public:
00713     ChannelInterfaceElement();
00714     ChannelInterfaceElement(NEDElement *parent);
00715     virtual ~ChannelInterfaceElement() {}
00717 
00720     virtual const char *getTagName() const {return "channel-interface";}
00721     virtual int getTagCode() const {return NED_CHANNEL_INTERFACE;}
00722     virtual int getNumAttributes() const;
00723     virtual const char *getAttributeName(int k) const;
00724     virtual const char *getAttribute(int k) const;
00725     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00726     virtual void setAttribute(int k, const char *val);
00727     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00728     virtual const char *getAttributeDefault(int k) const;
00729     virtual ChannelInterfaceElement *dup() const;
00731 
00734     const char * getName() const  {return name.c_str();}
00735     void setName(const char * val)  {name = val;}
00736 
00737     virtual ChannelInterfaceElement *getNextChannelInterfaceSibling() const;
00738     virtual CommentElement *getFirstCommentChild() const;
00739     virtual ExtendsElement *getFirstExtendsChild() const;
00740     virtual ParametersElement *getFirstParametersChild() const;
00742 };
00743 
00755 class NEDXML_API ChannelElement : public NEDElement
00756 {
00757   private:
00758     std::string name;
00759   public:
00762     ChannelElement();
00763     ChannelElement(NEDElement *parent);
00764     virtual ~ChannelElement() {}
00766 
00769     virtual const char *getTagName() const {return "channel";}
00770     virtual int getTagCode() const {return NED_CHANNEL;}
00771     virtual int getNumAttributes() const;
00772     virtual const char *getAttributeName(int k) const;
00773     virtual const char *getAttribute(int k) const;
00774     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00775     virtual void setAttribute(int k, const char *val);
00776     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00777     virtual const char *getAttributeDefault(int k) const;
00778     virtual ChannelElement *dup() const;
00780 
00783     const char * getName() const  {return name.c_str();}
00784     void setName(const char * val)  {name = val;}
00785 
00786     virtual ChannelElement *getNextChannelSibling() const;
00787     virtual CommentElement *getFirstCommentChild() const;
00788     virtual ExtendsElement *getFirstExtendsChild() const;
00789     virtual InterfaceNameElement *getFirstInterfaceNameChild() const;
00790     virtual ParametersElement *getFirstParametersChild() const;
00792 };
00793 
00805 class NEDXML_API ParametersElement : public NEDElement
00806 {
00807   private:
00808     bool isImplicit;
00809   public:
00812     ParametersElement();
00813     ParametersElement(NEDElement *parent);
00814     virtual ~ParametersElement() {}
00816 
00819     virtual const char *getTagName() const {return "parameters";}
00820     virtual int getTagCode() const {return NED_PARAMETERS;}
00821     virtual int getNumAttributes() const;
00822     virtual const char *getAttributeName(int k) const;
00823     virtual const char *getAttribute(int k) const;
00824     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00825     virtual void setAttribute(int k, const char *val);
00826     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00827     virtual const char *getAttributeDefault(int k) const;
00828     virtual ParametersElement *dup() const;
00830 
00833     bool getIsImplicit() const  {return isImplicit;}
00834     void setIsImplicit(bool val)  {isImplicit = val;}
00835 
00836     virtual ParametersElement *getNextParametersSibling() const;
00837     virtual CommentElement *getFirstCommentChild() const;
00838     virtual PropertyElement *getFirstPropertyChild() const;
00839     virtual ParamElement *getFirstParamChild() const;
00841 };
00842 
00859 class NEDXML_API ParamElement : public NEDElement
00860 {
00861   private:
00862     int type;
00863     bool isVolatile;
00864     std::string name;
00865     std::string value;
00866     bool isPattern;
00867     bool isDefault;
00868   public:
00871     ParamElement();
00872     ParamElement(NEDElement *parent);
00873     virtual ~ParamElement() {}
00875 
00878     virtual const char *getTagName() const {return "param";}
00879     virtual int getTagCode() const {return NED_PARAM;}
00880     virtual int getNumAttributes() const;
00881     virtual const char *getAttributeName(int k) const;
00882     virtual const char *getAttribute(int k) const;
00883     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00884     virtual void setAttribute(int k, const char *val);
00885     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00886     virtual const char *getAttributeDefault(int k) const;
00887     virtual ParamElement *dup() const;
00889 
00892     int getType() const  {return type;}
00893     void setType(int val);
00894     bool getIsVolatile() const  {return isVolatile;}
00895     void setIsVolatile(bool val)  {isVolatile = val;}
00896     const char * getName() const  {return name.c_str();}
00897     void setName(const char * val)  {name = val;}
00898     const char * getValue() const  {return value.c_str();}
00899     void setValue(const char * val)  {value = val;}
00900     bool getIsPattern() const  {return isPattern;}
00901     void setIsPattern(bool val)  {isPattern = val;}
00902     bool getIsDefault() const  {return isDefault;}
00903     void setIsDefault(bool val)  {isDefault = val;}
00904 
00905     virtual ParamElement *getNextParamSibling() const;
00906     virtual CommentElement *getFirstCommentChild() const;
00907     virtual ExpressionElement *getFirstExpressionChild() const;
00908     virtual PropertyElement *getFirstPropertyChild() const;
00910 };
00911 
00925 class NEDXML_API PropertyElement : public NEDElement
00926 {
00927   private:
00928     bool isImplicit;
00929     std::string name;
00930     std::string index;
00931   public:
00934     PropertyElement();
00935     PropertyElement(NEDElement *parent);
00936     virtual ~PropertyElement() {}
00938 
00941     virtual const char *getTagName() const {return "property";}
00942     virtual int getTagCode() const {return NED_PROPERTY;}
00943     virtual int getNumAttributes() const;
00944     virtual const char *getAttributeName(int k) const;
00945     virtual const char *getAttribute(int k) const;
00946     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00947     virtual void setAttribute(int k, const char *val);
00948     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
00949     virtual const char *getAttributeDefault(int k) const;
00950     virtual PropertyElement *dup() const;
00952 
00955     bool getIsImplicit() const  {return isImplicit;}
00956     void setIsImplicit(bool val)  {isImplicit = val;}
00957     const char * getName() const  {return name.c_str();}
00958     void setName(const char * val)  {name = val;}
00959     const char * getIndex() const  {return index.c_str();}
00960     void setIndex(const char * val)  {index = val;}
00961 
00962     virtual PropertyElement *getNextPropertySibling() const;
00963     virtual CommentElement *getFirstCommentChild() const;
00964     virtual PropertyKeyElement *getFirstPropertyKeyChild() const;
00966 };
00967 
00979 class NEDXML_API PropertyKeyElement : public NEDElement
00980 {
00981   private:
00982     std::string name;
00983   public:
00986     PropertyKeyElement();
00987     PropertyKeyElement(NEDElement *parent);
00988     virtual ~PropertyKeyElement() {}
00990 
00993     virtual const char *getTagName() const {return "property-key";}
00994     virtual int getTagCode() const {return NED_PROPERTY_KEY;}
00995     virtual int getNumAttributes() const;
00996     virtual const char *getAttributeName(int k) const;
00997     virtual const char *getAttribute(int k) const;
00998     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
00999     virtual void setAttribute(int k, const char *val);
01000     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01001     virtual const char *getAttributeDefault(int k) const;
01002     virtual PropertyKeyElement *dup() const;
01004 
01007     const char * getName() const  {return name.c_str();}
01008     void setName(const char * val)  {name = val;}
01009 
01010     virtual PropertyKeyElement *getNextPropertyKeySibling() const;
01011     virtual CommentElement *getFirstCommentChild() const;
01012     virtual LiteralElement *getFirstLiteralChild() const;
01014 };
01015 
01026 class NEDXML_API GatesElement : public NEDElement
01027 {
01028   private:
01029   public:
01032     GatesElement();
01033     GatesElement(NEDElement *parent);
01034     virtual ~GatesElement() {}
01036 
01039     virtual const char *getTagName() const {return "gates";}
01040     virtual int getTagCode() const {return NED_GATES;}
01041     virtual int getNumAttributes() const;
01042     virtual const char *getAttributeName(int k) const;
01043     virtual const char *getAttribute(int k) const;
01044     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01045     virtual void setAttribute(int k, const char *val);
01046     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01047     virtual const char *getAttributeDefault(int k) const;
01048     virtual GatesElement *dup() const;
01050 
01053 
01054     virtual GatesElement *getNextGatesSibling() const;
01055     virtual CommentElement *getFirstCommentChild() const;
01056     virtual GateElement *getFirstGateChild() const;
01058 };
01059 
01074 class NEDXML_API GateElement : public NEDElement
01075 {
01076   private:
01077     std::string name;
01078     int type;
01079     bool isVector;
01080     std::string vectorSize;
01081   public:
01084     GateElement();
01085     GateElement(NEDElement *parent);
01086     virtual ~GateElement() {}
01088 
01091     virtual const char *getTagName() const {return "gate";}
01092     virtual int getTagCode() const {return NED_GATE;}
01093     virtual int getNumAttributes() const;
01094     virtual const char *getAttributeName(int k) const;
01095     virtual const char *getAttribute(int k) const;
01096     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01097     virtual void setAttribute(int k, const char *val);
01098     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01099     virtual const char *getAttributeDefault(int k) const;
01100     virtual GateElement *dup() const;
01102 
01105     const char * getName() const  {return name.c_str();}
01106     void setName(const char * val)  {name = val;}
01107     int getType() const  {return type;}
01108     void setType(int val);
01109     bool getIsVector() const  {return isVector;}
01110     void setIsVector(bool val)  {isVector = val;}
01111     const char * getVectorSize() const  {return vectorSize.c_str();}
01112     void setVectorSize(const char * val)  {vectorSize = val;}
01113 
01114     virtual GateElement *getNextGateSibling() const;
01115     virtual CommentElement *getFirstCommentChild() const;
01116     virtual ExpressionElement *getFirstExpressionChild() const;
01117     virtual PropertyElement *getFirstPropertyChild() const;
01119 };
01120 
01132 class NEDXML_API TypesElement : public NEDElement
01133 {
01134   private:
01135   public:
01138     TypesElement();
01139     TypesElement(NEDElement *parent);
01140     virtual ~TypesElement() {}
01142 
01145     virtual const char *getTagName() const {return "types";}
01146     virtual int getTagCode() const {return NED_TYPES;}
01147     virtual int getNumAttributes() const;
01148     virtual const char *getAttributeName(int k) const;
01149     virtual const char *getAttribute(int k) const;
01150     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01151     virtual void setAttribute(int k, const char *val);
01152     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01153     virtual const char *getAttributeDefault(int k) const;
01154     virtual TypesElement *dup() const;
01156 
01159 
01160     virtual TypesElement *getNextTypesSibling() const;
01161     virtual CommentElement *getFirstCommentChild() const;
01162     virtual ChannelElement *getFirstChannelChild() const;
01163     virtual ChannelInterfaceElement *getFirstChannelInterfaceChild() const;
01164     virtual SimpleModuleElement *getFirstSimpleModuleChild() const;
01165     virtual CompoundModuleElement *getFirstCompoundModuleChild() const;
01166     virtual ModuleInterfaceElement *getFirstModuleInterfaceChild() const;
01168 };
01169 
01180 class NEDXML_API SubmodulesElement : public NEDElement
01181 {
01182   private:
01183   public:
01186     SubmodulesElement();
01187     SubmodulesElement(NEDElement *parent);
01188     virtual ~SubmodulesElement() {}
01190 
01193     virtual const char *getTagName() const {return "submodules";}
01194     virtual int getTagCode() const {return NED_SUBMODULES;}
01195     virtual int getNumAttributes() const;
01196     virtual const char *getAttributeName(int k) const;
01197     virtual const char *getAttribute(int k) const;
01198     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01199     virtual void setAttribute(int k, const char *val);
01200     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01201     virtual const char *getAttributeDefault(int k) const;
01202     virtual SubmodulesElement *dup() const;
01204 
01207 
01208     virtual SubmodulesElement *getNextSubmodulesSibling() const;
01209     virtual CommentElement *getFirstCommentChild() const;
01210     virtual SubmoduleElement *getFirstSubmoduleChild() const;
01212 };
01213 
01230 class NEDXML_API SubmoduleElement : public NEDElement
01231 {
01232   private:
01233     std::string name;
01234     std::string type;
01235     std::string likeType;
01236     std::string likeExpr;
01237     bool isDefault;
01238     std::string vectorSize;
01239   public:
01242     SubmoduleElement();
01243     SubmoduleElement(NEDElement *parent);
01244     virtual ~SubmoduleElement() {}
01246 
01249     virtual const char *getTagName() const {return "submodule";}
01250     virtual int getTagCode() const {return NED_SUBMODULE;}
01251     virtual int getNumAttributes() const;
01252     virtual const char *getAttributeName(int k) const;
01253     virtual const char *getAttribute(int k) const;
01254     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01255     virtual void setAttribute(int k, const char *val);
01256     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01257     virtual const char *getAttributeDefault(int k) const;
01258     virtual SubmoduleElement *dup() const;
01260 
01263     const char * getName() const  {return name.c_str();}
01264     void setName(const char * val)  {name = val;}
01265     const char * getType() const  {return type.c_str();}
01266     void setType(const char * val)  {type = val;}
01267     const char * getLikeType() const  {return likeType.c_str();}
01268     void setLikeType(const char * val)  {likeType = val;}
01269     const char * getLikeExpr() const  {return likeExpr.c_str();}
01270     void setLikeExpr(const char * val)  {likeExpr = val;}
01271     bool getIsDefault() const  {return isDefault;}
01272     void setIsDefault(bool val)  {isDefault = val;}
01273     const char * getVectorSize() const  {return vectorSize.c_str();}
01274     void setVectorSize(const char * val)  {vectorSize = val;}
01275 
01276     virtual SubmoduleElement *getNextSubmoduleSibling() const;
01277     virtual CommentElement *getFirstCommentChild() const;
01278     virtual ExpressionElement *getFirstExpressionChild() const;
01279     virtual ConditionElement *getFirstConditionChild() const;
01280     virtual ParametersElement *getFirstParametersChild() const;
01281     virtual GatesElement *getFirstGatesChild() const;
01283 };
01284 
01296 class NEDXML_API ConnectionsElement : public NEDElement
01297 {
01298   private:
01299     bool allowUnconnected;
01300   public:
01303     ConnectionsElement();
01304     ConnectionsElement(NEDElement *parent);
01305     virtual ~ConnectionsElement() {}
01307 
01310     virtual const char *getTagName() const {return "connections";}
01311     virtual int getTagCode() const {return NED_CONNECTIONS;}
01312     virtual int getNumAttributes() const;
01313     virtual const char *getAttributeName(int k) const;
01314     virtual const char *getAttribute(int k) const;
01315     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01316     virtual void setAttribute(int k, const char *val);
01317     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01318     virtual const char *getAttributeDefault(int k) const;
01319     virtual ConnectionsElement *dup() const;
01321 
01324     bool getAllowUnconnected() const  {return allowUnconnected;}
01325     void setAllowUnconnected(bool val)  {allowUnconnected = val;}
01326 
01327     virtual ConnectionsElement *getNextConnectionsSibling() const;
01328     virtual CommentElement *getFirstCommentChild() const;
01329     virtual ConnectionElement *getFirstConnectionChild() const;
01330     virtual ConnectionGroupElement *getFirstConnectionGroupChild() const;
01332 };
01333 
01363 class NEDXML_API ConnectionElement : public NEDElement
01364 {
01365   private:
01366     std::string srcModule;
01367     std::string srcModuleIndex;
01368     std::string srcGate;
01369     bool srcGatePlusplus;
01370     std::string srcGateIndex;
01371     int srcGateSubg;
01372     std::string destModule;
01373     std::string destModuleIndex;
01374     std::string destGate;
01375     bool destGatePlusplus;
01376     std::string destGateIndex;
01377     int destGateSubg;
01378     std::string name;
01379     std::string type;
01380     std::string likeType;
01381     std::string likeExpr;
01382     bool isDefault;
01383     bool isBidirectional;
01384     bool isForwardArrow;
01385   public:
01388     ConnectionElement();
01389     ConnectionElement(NEDElement *parent);
01390     virtual ~ConnectionElement() {}
01392 
01395     virtual const char *getTagName() const {return "connection";}
01396     virtual int getTagCode() const {return NED_CONNECTION;}
01397     virtual int getNumAttributes() const;
01398     virtual const char *getAttributeName(int k) const;
01399     virtual const char *getAttribute(int k) const;
01400     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01401     virtual void setAttribute(int k, const char *val);
01402     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01403     virtual const char *getAttributeDefault(int k) const;
01404     virtual ConnectionElement *dup() const;
01406 
01409     const char * getSrcModule() const  {return srcModule.c_str();}
01410     void setSrcModule(const char * val)  {srcModule = val;}
01411     const char * getSrcModuleIndex() const  {return srcModuleIndex.c_str();}
01412     void setSrcModuleIndex(const char * val)  {srcModuleIndex = val;}
01413     const char * getSrcGate() const  {return srcGate.c_str();}
01414     void setSrcGate(const char * val)  {srcGate = val;}
01415     bool getSrcGatePlusplus() const  {return srcGatePlusplus;}
01416     void setSrcGatePlusplus(bool val)  {srcGatePlusplus = val;}
01417     const char * getSrcGateIndex() const  {return srcGateIndex.c_str();}
01418     void setSrcGateIndex(const char * val)  {srcGateIndex = val;}
01419     int getSrcGateSubg() const  {return srcGateSubg;}
01420     void setSrcGateSubg(int val);
01421     const char * getDestModule() const  {return destModule.c_str();}
01422     void setDestModule(const char * val)  {destModule = val;}
01423     const char * getDestModuleIndex() const  {return destModuleIndex.c_str();}
01424     void setDestModuleIndex(const char * val)  {destModuleIndex = val;}
01425     const char * getDestGate() const  {return destGate.c_str();}
01426     void setDestGate(const char * val)  {destGate = val;}
01427     bool getDestGatePlusplus() const  {return destGatePlusplus;}
01428     void setDestGatePlusplus(bool val)  {destGatePlusplus = val;}
01429     const char * getDestGateIndex() const  {return destGateIndex.c_str();}
01430     void setDestGateIndex(const char * val)  {destGateIndex = val;}
01431     int getDestGateSubg() const  {return destGateSubg;}
01432     void setDestGateSubg(int val);
01433     const char * getName() const  {return name.c_str();}
01434     void setName(const char * val)  {name = val;}
01435     const char * getType() const  {return type.c_str();}
01436     void setType(const char * val)  {type = val;}
01437     const char * getLikeType() const  {return likeType.c_str();}
01438     void setLikeType(const char * val)  {likeType = val;}
01439     const char * getLikeExpr() const  {return likeExpr.c_str();}
01440     void setLikeExpr(const char * val)  {likeExpr = val;}
01441     bool getIsDefault() const  {return isDefault;}
01442     void setIsDefault(bool val)  {isDefault = val;}
01443     bool getIsBidirectional() const  {return isBidirectional;}
01444     void setIsBidirectional(bool val)  {isBidirectional = val;}
01445     bool getIsForwardArrow() const  {return isForwardArrow;}
01446     void setIsForwardArrow(bool val)  {isForwardArrow = val;}
01447 
01448     virtual ConnectionElement *getNextConnectionSibling() const;
01449     virtual CommentElement *getFirstCommentChild() const;
01450     virtual ExpressionElement *getFirstExpressionChild() const;
01451     virtual ParametersElement *getFirstParametersChild() const;
01452     virtual LoopElement *getFirstLoopChild() const;
01453     virtual ConditionElement *getFirstConditionChild() const;
01455 };
01456 
01467 class NEDXML_API ConnectionGroupElement : public NEDElement
01468 {
01469   private:
01470   public:
01473     ConnectionGroupElement();
01474     ConnectionGroupElement(NEDElement *parent);
01475     virtual ~ConnectionGroupElement() {}
01477 
01480     virtual const char *getTagName() const {return "connection-group";}
01481     virtual int getTagCode() const {return NED_CONNECTION_GROUP;}
01482     virtual int getNumAttributes() const;
01483     virtual const char *getAttributeName(int k) const;
01484     virtual const char *getAttribute(int k) const;
01485     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01486     virtual void setAttribute(int k, const char *val);
01487     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01488     virtual const char *getAttributeDefault(int k) const;
01489     virtual ConnectionGroupElement *dup() const;
01491 
01494 
01495     virtual ConnectionGroupElement *getNextConnectionGroupSibling() const;
01496     virtual CommentElement *getFirstCommentChild() const;
01497     virtual LoopElement *getFirstLoopChild() const;
01498     virtual ConditionElement *getFirstConditionChild() const;
01499     virtual ConnectionElement *getFirstConnectionChild() const;
01501 };
01502 
01516 class NEDXML_API LoopElement : public NEDElement
01517 {
01518   private:
01519     std::string paramName;
01520     std::string fromValue;
01521     std::string toValue;
01522   public:
01525     LoopElement();
01526     LoopElement(NEDElement *parent);
01527     virtual ~LoopElement() {}
01529 
01532     virtual const char *getTagName() const {return "loop";}
01533     virtual int getTagCode() const {return NED_LOOP;}
01534     virtual int getNumAttributes() const;
01535     virtual const char *getAttributeName(int k) const;
01536     virtual const char *getAttribute(int k) const;
01537     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01538     virtual void setAttribute(int k, const char *val);
01539     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01540     virtual const char *getAttributeDefault(int k) const;
01541     virtual LoopElement *dup() const;
01543 
01546     const char * getParamName() const  {return paramName.c_str();}
01547     void setParamName(const char * val)  {paramName = val;}
01548     const char * getFromValue() const  {return fromValue.c_str();}
01549     void setFromValue(const char * val)  {fromValue = val;}
01550     const char * getToValue() const  {return toValue.c_str();}
01551     void setToValue(const char * val)  {toValue = val;}
01552 
01553     virtual LoopElement *getNextLoopSibling() const;
01554     virtual CommentElement *getFirstCommentChild() const;
01555     virtual ExpressionElement *getFirstExpressionChild() const;
01557 };
01558 
01570 class NEDXML_API ConditionElement : public NEDElement
01571 {
01572   private:
01573     std::string condition;
01574   public:
01577     ConditionElement();
01578     ConditionElement(NEDElement *parent);
01579     virtual ~ConditionElement() {}
01581 
01584     virtual const char *getTagName() const {return "condition";}
01585     virtual int getTagCode() const {return NED_CONDITION;}
01586     virtual int getNumAttributes() const;
01587     virtual const char *getAttributeName(int k) const;
01588     virtual const char *getAttribute(int k) const;
01589     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01590     virtual void setAttribute(int k, const char *val);
01591     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01592     virtual const char *getAttributeDefault(int k) const;
01593     virtual ConditionElement *dup() const;
01595 
01598     const char * getCondition() const  {return condition.c_str();}
01599     void setCondition(const char * val)  {condition = val;}
01600 
01601     virtual ConditionElement *getNextConditionSibling() const;
01602     virtual CommentElement *getFirstCommentChild() const;
01603     virtual ExpressionElement *getFirstExpressionChild() const;
01605 };
01606 
01618 class NEDXML_API ExpressionElement : public NEDElement
01619 {
01620   private:
01621     std::string target;
01622   public:
01625     ExpressionElement();
01626     ExpressionElement(NEDElement *parent);
01627     virtual ~ExpressionElement() {}
01629 
01632     virtual const char *getTagName() const {return "expression";}
01633     virtual int getTagCode() const {return NED_EXPRESSION;}
01634     virtual int getNumAttributes() const;
01635     virtual const char *getAttributeName(int k) const;
01636     virtual const char *getAttribute(int k) const;
01637     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01638     virtual void setAttribute(int k, const char *val);
01639     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01640     virtual const char *getAttributeDefault(int k) const;
01641     virtual ExpressionElement *dup() const;
01643 
01646     const char * getTarget() const  {return target.c_str();}
01647     void setTarget(const char * val)  {target = val;}
01648 
01649     virtual ExpressionElement *getNextExpressionSibling() const;
01650     virtual CommentElement *getFirstCommentChild() const;
01651     virtual OperatorElement *getFirstOperatorChild() const;
01652     virtual FunctionElement *getFirstFunctionChild() const;
01653     virtual IdentElement *getFirstIdentChild() const;
01654     virtual LiteralElement *getFirstLiteralChild() const;
01656 };
01657 
01669 class NEDXML_API OperatorElement : public NEDElement
01670 {
01671   private:
01672     std::string name;
01673   public:
01676     OperatorElement();
01677     OperatorElement(NEDElement *parent);
01678     virtual ~OperatorElement() {}
01680 
01683     virtual const char *getTagName() const {return "operator";}
01684     virtual int getTagCode() const {return NED_OPERATOR;}
01685     virtual int getNumAttributes() const;
01686     virtual const char *getAttributeName(int k) const;
01687     virtual const char *getAttribute(int k) const;
01688     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01689     virtual void setAttribute(int k, const char *val);
01690     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01691     virtual const char *getAttributeDefault(int k) const;
01692     virtual OperatorElement *dup() const;
01694 
01697     const char * getName() const  {return name.c_str();}
01698     void setName(const char * val)  {name = val;}
01699 
01700     virtual OperatorElement *getNextOperatorSibling() const;
01701     virtual CommentElement *getFirstCommentChild() const;
01702     virtual OperatorElement *getFirstOperatorChild() const;
01703     virtual FunctionElement *getFirstFunctionChild() const;
01704     virtual IdentElement *getFirstIdentChild() const;
01705     virtual LiteralElement *getFirstLiteralChild() const;
01707 };
01708 
01720 class NEDXML_API FunctionElement : public NEDElement
01721 {
01722   private:
01723     std::string name;
01724   public:
01727     FunctionElement();
01728     FunctionElement(NEDElement *parent);
01729     virtual ~FunctionElement() {}
01731 
01734     virtual const char *getTagName() const {return "function";}
01735     virtual int getTagCode() const {return NED_FUNCTION;}
01736     virtual int getNumAttributes() const;
01737     virtual const char *getAttributeName(int k) const;
01738     virtual const char *getAttribute(int k) const;
01739     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01740     virtual void setAttribute(int k, const char *val);
01741     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01742     virtual const char *getAttributeDefault(int k) const;
01743     virtual FunctionElement *dup() const;
01745 
01748     const char * getName() const  {return name.c_str();}
01749     void setName(const char * val)  {name = val;}
01750 
01751     virtual FunctionElement *getNextFunctionSibling() const;
01752     virtual CommentElement *getFirstCommentChild() const;
01753     virtual OperatorElement *getFirstOperatorChild() const;
01754     virtual FunctionElement *getFirstFunctionChild() const;
01755     virtual IdentElement *getFirstIdentChild() const;
01756     virtual LiteralElement *getFirstLiteralChild() const;
01758 };
01759 
01772 class NEDXML_API IdentElement : public NEDElement
01773 {
01774   private:
01775     std::string module;
01776     std::string name;
01777   public:
01780     IdentElement();
01781     IdentElement(NEDElement *parent);
01782     virtual ~IdentElement() {}
01784 
01787     virtual const char *getTagName() const {return "ident";}
01788     virtual int getTagCode() const {return NED_IDENT;}
01789     virtual int getNumAttributes() const;
01790     virtual const char *getAttributeName(int k) const;
01791     virtual const char *getAttribute(int k) const;
01792     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01793     virtual void setAttribute(int k, const char *val);
01794     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01795     virtual const char *getAttributeDefault(int k) const;
01796     virtual IdentElement *dup() const;
01798 
01801     const char * getModule() const  {return module.c_str();}
01802     void setModule(const char * val)  {module = val;}
01803     const char * getName() const  {return name.c_str();}
01804     void setName(const char * val)  {name = val;}
01805 
01806     virtual IdentElement *getNextIdentSibling() const;
01807     virtual CommentElement *getFirstCommentChild() const;
01808     virtual OperatorElement *getFirstOperatorChild() const;
01809     virtual FunctionElement *getFirstFunctionChild() const;
01810     virtual IdentElement *getFirstIdentChild() const;
01811     virtual LiteralElement *getFirstLiteralChild() const;
01813 };
01814 
01828 class NEDXML_API LiteralElement : public NEDElement
01829 {
01830   private:
01831     int type;
01832     std::string text;
01833     std::string value;
01834   public:
01837     LiteralElement();
01838     LiteralElement(NEDElement *parent);
01839     virtual ~LiteralElement() {}
01841 
01844     virtual const char *getTagName() const {return "literal";}
01845     virtual int getTagCode() const {return NED_LITERAL;}
01846     virtual int getNumAttributes() const;
01847     virtual const char *getAttributeName(int k) const;
01848     virtual const char *getAttribute(int k) const;
01849     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01850     virtual void setAttribute(int k, const char *val);
01851     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01852     virtual const char *getAttributeDefault(int k) const;
01853     virtual LiteralElement *dup() const;
01855 
01858     int getType() const  {return type;}
01859     void setType(int val);
01860     const char * getText() const  {return text.c_str();}
01861     void setText(const char * val)  {text = val;}
01862     const char * getValue() const  {return value.c_str();}
01863     void setValue(const char * val)  {value = val;}
01864 
01865     virtual LiteralElement *getNextLiteralSibling() const;
01866     virtual CommentElement *getFirstCommentChild() const;
01868 };
01869 
01884 class NEDXML_API MsgFileElement : public NEDElement
01885 {
01886   private:
01887     std::string filename;
01888     std::string version;
01889   public:
01892     MsgFileElement();
01893     MsgFileElement(NEDElement *parent);
01894     virtual ~MsgFileElement() {}
01896 
01899     virtual const char *getTagName() const {return "msg-file";}
01900     virtual int getTagCode() const {return NED_MSG_FILE;}
01901     virtual int getNumAttributes() const;
01902     virtual const char *getAttributeName(int k) const;
01903     virtual const char *getAttribute(int k) const;
01904     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01905     virtual void setAttribute(int k, const char *val);
01906     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01907     virtual const char *getAttributeDefault(int k) const;
01908     virtual MsgFileElement *dup() const;
01910 
01913     const char * getFilename() const  {return filename.c_str();}
01914     void setFilename(const char * val)  {filename = val;}
01915     const char * getVersion() const  {return version.c_str();}
01916     void setVersion(const char * val)  {version = val;}
01917 
01918     virtual MsgFileElement *getNextMsgFileSibling() const;
01919     virtual CommentElement *getFirstCommentChild() const;
01920     virtual NamespaceElement *getFirstNamespaceChild() const;
01921     virtual PropertyDeclElement *getFirstPropertyDeclChild() const;
01922     virtual PropertyElement *getFirstPropertyChild() const;
01923     virtual CplusplusElement *getFirstCplusplusChild() const;
01924     virtual StructDeclElement *getFirstStructDeclChild() const;
01925     virtual ClassDeclElement *getFirstClassDeclChild() const;
01926     virtual MessageDeclElement *getFirstMessageDeclChild() const;
01927     virtual PacketDeclElement *getFirstPacketDeclChild() const;
01928     virtual EnumDeclElement *getFirstEnumDeclChild() const;
01929     virtual StructElement *getFirstStructChild() const;
01930     virtual ClassElement *getFirstClassChild() const;
01931     virtual MessageElement *getFirstMessageChild() const;
01932     virtual PacketElement *getFirstPacketChild() const;
01933     virtual EnumElement *getFirstEnumChild() const;
01935 };
01936 
01948 class NEDXML_API NamespaceElement : public NEDElement
01949 {
01950   private:
01951     std::string name;
01952   public:
01955     NamespaceElement();
01956     NamespaceElement(NEDElement *parent);
01957     virtual ~NamespaceElement() {}
01959 
01962     virtual const char *getTagName() const {return "namespace";}
01963     virtual int getTagCode() const {return NED_NAMESPACE;}
01964     virtual int getNumAttributes() const;
01965     virtual const char *getAttributeName(int k) const;
01966     virtual const char *getAttribute(int k) const;
01967     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01968     virtual void setAttribute(int k, const char *val);
01969     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01970     virtual const char *getAttributeDefault(int k) const;
01971     virtual NamespaceElement *dup() const;
01973 
01976     const char * getName() const  {return name.c_str();}
01977     void setName(const char * val)  {name = val;}
01978 
01979     virtual NamespaceElement *getNextNamespaceSibling() const;
01980     virtual CommentElement *getFirstCommentChild() const;
01982 };
01983 
01995 class NEDXML_API CplusplusElement : public NEDElement
01996 {
01997   private:
01998     std::string body;
01999   public:
02002     CplusplusElement();
02003     CplusplusElement(NEDElement *parent);
02004     virtual ~CplusplusElement() {}
02006 
02009     virtual const char *getTagName() const {return "cplusplus";}
02010     virtual int getTagCode() const {return NED_CPLUSPLUS;}
02011     virtual int getNumAttributes() const;
02012     virtual const char *getAttributeName(int k) const;
02013     virtual const char *getAttribute(int k) const;
02014     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02015     virtual void setAttribute(int k, const char *val);
02016     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02017     virtual const char *getAttributeDefault(int k) const;
02018     virtual CplusplusElement *dup() const;
02020 
02023     const char * getBody() const  {return body.c_str();}
02024     void setBody(const char * val)  {body = val;}
02025 
02026     virtual CplusplusElement *getNextCplusplusSibling() const;
02027     virtual CommentElement *getFirstCommentChild() const;
02029 };
02030 
02042 class NEDXML_API StructDeclElement : public NEDElement
02043 {
02044   private:
02045     std::string name;
02046   public:
02049     StructDeclElement();
02050     StructDeclElement(NEDElement *parent);
02051     virtual ~StructDeclElement() {}
02053 
02056     virtual const char *getTagName() const {return "struct-decl";}
02057     virtual int getTagCode() const {return NED_STRUCT_DECL;}
02058     virtual int getNumAttributes() const;
02059     virtual const char *getAttributeName(int k) const;
02060     virtual const char *getAttribute(int k) const;
02061     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02062     virtual void setAttribute(int k, const char *val);
02063     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02064     virtual const char *getAttributeDefault(int k) const;
02065     virtual StructDeclElement *dup() const;
02067 
02070     const char * getName() const  {return name.c_str();}
02071     void setName(const char * val)  {name = val;}
02072 
02073     virtual StructDeclElement *getNextStructDeclSibling() const;
02074     virtual CommentElement *getFirstCommentChild() const;
02076 };
02077 
02091 class NEDXML_API ClassDeclElement : public NEDElement
02092 {
02093   private:
02094     std::string name;
02095     bool isCobject;
02096     std::string extendsName;
02097   public:
02100     ClassDeclElement();
02101     ClassDeclElement(NEDElement *parent);
02102     virtual ~ClassDeclElement() {}
02104 
02107     virtual const char *getTagName() const {return "class-decl";}
02108     virtual int getTagCode() const {return NED_CLASS_DECL;}
02109     virtual int getNumAttributes() const;
02110     virtual const char *getAttributeName(int k) const;
02111     virtual const char *getAttribute(int k) const;
02112     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02113     virtual void setAttribute(int k, const char *val);
02114     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02115     virtual const char *getAttributeDefault(int k) const;
02116     virtual ClassDeclElement *dup() const;
02118 
02121     const char * getName() const  {return name.c_str();}
02122     void setName(const char * val)  {name = val;}
02123     bool getIsCobject() const  {return isCobject;}
02124     void setIsCobject(bool val)  {isCobject = val;}
02125     const char * getExtendsName() const  {return extendsName.c_str();}
02126     void setExtendsName(const char * val)  {extendsName = val;}
02127 
02128     virtual ClassDeclElement *getNextClassDeclSibling() const;
02129     virtual CommentElement *getFirstCommentChild() const;
02131 };
02132 
02144 class NEDXML_API MessageDeclElement : public NEDElement
02145 {
02146   private:
02147     std::string name;
02148   public:
02151     MessageDeclElement();
02152     MessageDeclElement(NEDElement *parent);
02153     virtual ~MessageDeclElement() {}
02155 
02158     virtual const char *getTagName() const {return "message-decl";}
02159     virtual int getTagCode() const {return NED_MESSAGE_DECL;}
02160     virtual int getNumAttributes() const;
02161     virtual const char *getAttributeName(int k) const;
02162     virtual const char *getAttribute(int k) const;
02163     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02164     virtual void setAttribute(int k, const char *val);
02165     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02166     virtual const char *getAttributeDefault(int k) const;
02167     virtual MessageDeclElement *dup() const;
02169 
02172     const char * getName() const  {return name.c_str();}
02173     void setName(const char * val)  {name = val;}
02174 
02175     virtual MessageDeclElement *getNextMessageDeclSibling() const;
02176     virtual CommentElement *getFirstCommentChild() const;
02178 };
02179 
02191 class NEDXML_API PacketDeclElement : public NEDElement
02192 {
02193   private:
02194     std::string name;
02195   public:
02198     PacketDeclElement();
02199     PacketDeclElement(NEDElement *parent);
02200     virtual ~PacketDeclElement() {}
02202 
02205     virtual const char *getTagName() const {return "packet-decl";}
02206     virtual int getTagCode() const {return NED_PACKET_DECL;}
02207     virtual int getNumAttributes() const;
02208     virtual const char *getAttributeName(int k) const;
02209     virtual const char *getAttribute(int k) const;
02210     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02211     virtual void setAttribute(int k, const char *val);
02212     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02213     virtual const char *getAttributeDefault(int k) const;
02214     virtual PacketDeclElement *dup() const;
02216 
02219     const char * getName() const  {return name.c_str();}
02220     void setName(const char * val)  {name = val;}
02221 
02222     virtual PacketDeclElement *getNextPacketDeclSibling() const;
02223     virtual CommentElement *getFirstCommentChild() const;
02225 };
02226 
02238 class NEDXML_API EnumDeclElement : public NEDElement
02239 {
02240   private:
02241     std::string name;
02242   public:
02245     EnumDeclElement();
02246     EnumDeclElement(NEDElement *parent);
02247     virtual ~EnumDeclElement() {}
02249 
02252     virtual const char *getTagName() const {return "enum-decl";}
02253     virtual int getTagCode() const {return NED_ENUM_DECL;}
02254     virtual int getNumAttributes() const;
02255     virtual const char *getAttributeName(int k) const;
02256     virtual const char *getAttribute(int k) const;
02257     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02258     virtual void setAttribute(int k, const char *val);
02259     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02260     virtual const char *getAttributeDefault(int k) const;
02261     virtual EnumDeclElement *dup() const;
02263 
02266     const char * getName() const  {return name.c_str();}
02267     void setName(const char * val)  {name = val;}
02268 
02269     virtual EnumDeclElement *getNextEnumDeclSibling() const;
02270     virtual CommentElement *getFirstCommentChild() const;
02272 };
02273 
02287 class NEDXML_API EnumElement : public NEDElement
02288 {
02289   private:
02290     std::string name;
02291     std::string extendsName;
02292     std::string sourceCode;
02293   public:
02296     EnumElement();
02297     EnumElement(NEDElement *parent);
02298     virtual ~EnumElement() {}
02300 
02303     virtual const char *getTagName() const {return "enum";}
02304     virtual int getTagCode() const {return NED_ENUM;}
02305     virtual int getNumAttributes() const;
02306     virtual const char *getAttributeName(int k) const;
02307     virtual const char *getAttribute(int k) const;
02308     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02309     virtual void setAttribute(int k, const char *val);
02310     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02311     virtual const char *getAttributeDefault(int k) const;
02312     virtual EnumElement *dup() const;
02314 
02317     const char * getName() const  {return name.c_str();}
02318     void setName(const char * val)  {name = val;}
02319     const char * getExtendsName() const  {return extendsName.c_str();}
02320     void setExtendsName(const char * val)  {extendsName = val;}
02321     const char * getSourceCode() const  {return sourceCode.c_str();}
02322     void setSourceCode(const char * val)  {sourceCode = val;}
02323 
02324     virtual EnumElement *getNextEnumSibling() const;
02325     virtual CommentElement *getFirstCommentChild() const;
02326     virtual EnumFieldsElement *getFirstEnumFieldsChild() const;
02328 };
02329 
02340 class NEDXML_API EnumFieldsElement : public NEDElement
02341 {
02342   private:
02343   public:
02346     EnumFieldsElement();
02347     EnumFieldsElement(NEDElement *parent);
02348     virtual ~EnumFieldsElement() {}
02350 
02353     virtual const char *getTagName() const {return "enum-fields";}
02354     virtual int getTagCode() const {return NED_ENUM_FIELDS;}
02355     virtual int getNumAttributes() const;
02356     virtual const char *getAttributeName(int k) const;
02357     virtual const char *getAttribute(int k) const;
02358     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02359     virtual void setAttribute(int k, const char *val);
02360     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02361     virtual const char *getAttributeDefault(int k) const;
02362     virtual EnumFieldsElement *dup() const;
02364 
02367 
02368     virtual EnumFieldsElement *getNextEnumFieldsSibling() const;
02369     virtual CommentElement *getFirstCommentChild() const;
02370     virtual EnumFieldElement *getFirstEnumFieldChild() const;
02372 };
02373 
02386 class NEDXML_API EnumFieldElement : public NEDElement
02387 {
02388   private:
02389     std::string name;
02390     std::string value;
02391   public:
02394     EnumFieldElement();
02395     EnumFieldElement(NEDElement *parent);
02396     virtual ~EnumFieldElement() {}
02398 
02401     virtual const char *getTagName() const {return "enum-field";}
02402     virtual int getTagCode() const {return NED_ENUM_FIELD;}
02403     virtual int getNumAttributes() const;
02404     virtual const char *getAttributeName(int k) const;
02405     virtual const char *getAttribute(int k) const;
02406     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02407     virtual void setAttribute(int k, const char *val);
02408     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02409     virtual const char *getAttributeDefault(int k) const;
02410     virtual EnumFieldElement *dup() const;
02412 
02415     const char * getName() const  {return name.c_str();}
02416     void setName(const char * val)  {name = val;}
02417     const char * getValue() const  {return value.c_str();}
02418     void setValue(const char * val)  {value = val;}
02419 
02420     virtual EnumFieldElement *getNextEnumFieldSibling() const;
02421     virtual CommentElement *getFirstCommentChild() const;
02423 };
02424 
02438 class NEDXML_API MessageElement : public NEDElement
02439 {
02440   private:
02441     std::string name;
02442     std::string extendsName;
02443     std::string sourceCode;
02444   public:
02447     MessageElement();
02448     MessageElement(NEDElement *parent);
02449     virtual ~MessageElement() {}
02451 
02454     virtual const char *getTagName() const {return "message";}
02455     virtual int getTagCode() const {return NED_MESSAGE;}
02456     virtual int getNumAttributes() const;
02457     virtual const char *getAttributeName(int k) const;
02458     virtual const char *getAttribute(int k) const;
02459     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02460     virtual void setAttribute(int k, const char *val);
02461     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02462     virtual const char *getAttributeDefault(int k) const;
02463     virtual MessageElement *dup() const;
02465 
02468     const char * getName() const  {return name.c_str();}
02469     void setName(const char * val)  {name = val;}
02470     const char * getExtendsName() const  {return extendsName.c_str();}
02471     void setExtendsName(const char * val)  {extendsName = val;}
02472     const char * getSourceCode() const  {return sourceCode.c_str();}
02473     void setSourceCode(const char * val)  {sourceCode = val;}
02474 
02475     virtual MessageElement *getNextMessageSibling() const;
02476     virtual CommentElement *getFirstCommentChild() const;
02477     virtual PropertyElement *getFirstPropertyChild() const;
02478     virtual FieldElement *getFirstFieldChild() const;
02480 };
02481 
02495 class NEDXML_API PacketElement : public NEDElement
02496 {
02497   private:
02498     std::string name;
02499     std::string extendsName;
02500     std::string sourceCode;
02501   public:
02504     PacketElement();
02505     PacketElement(NEDElement *parent);
02506     virtual ~PacketElement() {}
02508 
02511     virtual const char *getTagName() const {return "packet";}
02512     virtual int getTagCode() const {return NED_PACKET;}
02513     virtual int getNumAttributes() const;
02514     virtual const char *getAttributeName(int k) const;
02515     virtual const char *getAttribute(int k) const;
02516     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02517     virtual void setAttribute(int k, const char *val);
02518     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02519     virtual const char *getAttributeDefault(int k) const;
02520     virtual PacketElement *dup() const;
02522 
02525     const char * getName() const  {return name.c_str();}
02526     void setName(const char * val)  {name = val;}
02527     const char * getExtendsName() const  {return extendsName.c_str();}
02528     void setExtendsName(const char * val)  {extendsName = val;}
02529     const char * getSourceCode() const  {return sourceCode.c_str();}
02530     void setSourceCode(const char * val)  {sourceCode = val;}
02531 
02532     virtual PacketElement *getNextPacketSibling() const;
02533     virtual CommentElement *getFirstCommentChild() const;
02534     virtual PropertyElement *getFirstPropertyChild() const;
02535     virtual FieldElement *getFirstFieldChild() const;
02537 };
02538 
02552 class NEDXML_API ClassElement : public NEDElement
02553 {
02554   private:
02555     std::string name;
02556     std::string extendsName;
02557     std::string sourceCode;
02558   public:
02561     ClassElement();
02562     ClassElement(NEDElement *parent);
02563     virtual ~ClassElement() {}
02565 
02568     virtual const char *getTagName() const {return "class";}
02569     virtual int getTagCode() const {return NED_CLASS;}
02570     virtual int getNumAttributes() const;
02571     virtual const char *getAttributeName(int k) const;
02572     virtual const char *getAttribute(int k) const;
02573     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02574     virtual void setAttribute(int k, const char *val);
02575     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02576     virtual const char *getAttributeDefault(int k) const;
02577     virtual ClassElement *dup() const;
02579 
02582     const char * getName() const  {return name.c_str();}
02583     void setName(const char * val)  {name = val;}
02584     const char * getExtendsName() const  {return extendsName.c_str();}
02585     void setExtendsName(const char * val)  {extendsName = val;}
02586     const char * getSourceCode() const  {return sourceCode.c_str();}
02587     void setSourceCode(const char * val)  {sourceCode = val;}
02588 
02589     virtual ClassElement *getNextClassSibling() const;
02590     virtual CommentElement *getFirstCommentChild() const;
02591     virtual PropertyElement *getFirstPropertyChild() const;
02592     virtual FieldElement *getFirstFieldChild() const;
02594 };
02595 
02609 class NEDXML_API StructElement : public NEDElement
02610 {
02611   private:
02612     std::string name;
02613     std::string extendsName;
02614     std::string sourceCode;
02615   public:
02618     StructElement();
02619     StructElement(NEDElement *parent);
02620     virtual ~StructElement() {}
02622 
02625     virtual const char *getTagName() const {return "struct";}
02626     virtual int getTagCode() const {return NED_STRUCT;}
02627     virtual int getNumAttributes() const;
02628     virtual const char *getAttributeName(int k) const;
02629     virtual const char *getAttribute(int k) const;
02630     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02631     virtual void setAttribute(int k, const char *val);
02632     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02633     virtual const char *getAttributeDefault(int k) const;
02634     virtual StructElement *dup() const;
02636 
02639     const char * getName() const  {return name.c_str();}
02640     void setName(const char * val)  {name = val;}
02641     const char * getExtendsName() const  {return extendsName.c_str();}
02642     void setExtendsName(const char * val)  {extendsName = val;}
02643     const char * getSourceCode() const  {return sourceCode.c_str();}
02644     void setSourceCode(const char * val)  {sourceCode = val;}
02645 
02646     virtual StructElement *getNextStructSibling() const;
02647     virtual CommentElement *getFirstCommentChild() const;
02648     virtual PropertyElement *getFirstPropertyChild() const;
02649     virtual FieldElement *getFirstFieldChild() const;
02651 };
02652 
02670 class NEDXML_API FieldElement : public NEDElement
02671 {
02672   private:
02673     std::string name;
02674     std::string dataType;
02675     bool isAbstract;
02676     bool isReadonly;
02677     bool isVector;
02678     std::string vectorSize;
02679     std::string defaultValue;
02680   public:
02683     FieldElement();
02684     FieldElement(NEDElement *parent);
02685     virtual ~FieldElement() {}
02687 
02690     virtual const char *getTagName() const {return "field";}
02691     virtual int getTagCode() const {return NED_FIELD;}
02692     virtual int getNumAttributes() const;
02693     virtual const char *getAttributeName(int k) const;
02694     virtual const char *getAttribute(int k) const;
02695     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02696     virtual void setAttribute(int k, const char *val);
02697     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02698     virtual const char *getAttributeDefault(int k) const;
02699     virtual FieldElement *dup() const;
02701 
02704     const char * getName() const  {return name.c_str();}
02705     void setName(const char * val)  {name = val;}
02706     const char * getDataType() const  {return dataType.c_str();}
02707     void setDataType(const char * val)  {dataType = val;}
02708     bool getIsAbstract() const  {return isAbstract;}
02709     void setIsAbstract(bool val)  {isAbstract = val;}
02710     bool getIsReadonly() const  {return isReadonly;}
02711     void setIsReadonly(bool val)  {isReadonly = val;}
02712     bool getIsVector() const  {return isVector;}
02713     void setIsVector(bool val)  {isVector = val;}
02714     const char * getVectorSize() const  {return vectorSize.c_str();}
02715     void setVectorSize(const char * val)  {vectorSize = val;}
02716     const char * getDefaultValue() const  {return defaultValue.c_str();}
02717     void setDefaultValue(const char * val)  {defaultValue = val;}
02718 
02719     virtual FieldElement *getNextFieldSibling() const;
02720     virtual CommentElement *getFirstCommentChild() const;
02721     virtual PropertyElement *getFirstPropertyChild() const;
02723 };
02724 
02736 class NEDXML_API UnknownElement : public NEDElement
02737 {
02738   private:
02739     std::string element;
02740   public:
02743     UnknownElement();
02744     UnknownElement(NEDElement *parent);
02745     virtual ~UnknownElement() {}
02747 
02750     virtual const char *getTagName() const {return "unknown";}
02751     virtual int getTagCode() const {return NED_UNKNOWN;}
02752     virtual int getNumAttributes() const;
02753     virtual const char *getAttributeName(int k) const;
02754     virtual const char *getAttribute(int k) const;
02755     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02756     virtual void setAttribute(int k, const char *val);
02757     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02758     virtual const char *getAttributeDefault(int k) const;
02759     virtual UnknownElement *dup() const;
02761 
02764     const char * getElement() const  {return element.c_str();}
02765     void setElement(const char * val)  {element = val;}
02766 
02767     virtual UnknownElement *getNextUnknownSibling() const;
02769 };
02770 
02776 class NEDXML_API NEDElementFactory
02777 {
02778   private:
02779     static NEDElementFactory *f;
02780     // ctor is private, because only one instance is allowed
02781     NEDElementFactory() {}
02782   public:
02784     virtual ~NEDElementFactory() {}
02786     static NEDElementFactory *getInstance();
02788     virtual NEDElement *createElementWithTag(const char *tagname);
02790     virtual NEDElement *createElementWithTag(int tagcode);
02791 };
02792 
02793 NAMESPACE_END
02794 
02795 #endif
02796 
Generated on Tue Dec 2 11:16:31 2014 for OMNeT++ NEDXML by  doxygen 1.6.3