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_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 
01829 class NEDXML_API LiteralElement : public NEDElement
01830 {
01831   private:
01832     int type;
01833     std::string unit;
01834     std::string text;
01835     std::string value;
01836   public:
01839     LiteralElement();
01840     LiteralElement(NEDElement *parent);
01841     virtual ~LiteralElement() {}
01843 
01846     virtual const char *getTagName() const {return "literal";}
01847     virtual int getTagCode() const {return NED_LITERAL;}
01848     virtual int getNumAttributes() const;
01849     virtual const char *getAttributeName(int k) const;
01850     virtual const char *getAttribute(int k) const;
01851     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01852     virtual void setAttribute(int k, const char *val);
01853     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01854     virtual const char *getAttributeDefault(int k) const;
01855     virtual LiteralElement *dup() const;
01857 
01860     int getType() const  {return type;}
01861     void setType(int val);
01862     const char * getUnit() const  {return unit.c_str();}
01863     void setUnit(const char * val)  {unit = val;}
01864     const char * getText() const  {return text.c_str();}
01865     void setText(const char * val)  {text = val;}
01866     const char * getValue() const  {return value.c_str();}
01867     void setValue(const char * val)  {value = val;}
01868 
01869     virtual LiteralElement *getNextLiteralSibling() const;
01870     virtual CommentElement *getFirstCommentChild() const;
01872 };
01873 
01888 class NEDXML_API MsgFileElement : public NEDElement
01889 {
01890   private:
01891     std::string filename;
01892     std::string version;
01893   public:
01896     MsgFileElement();
01897     MsgFileElement(NEDElement *parent);
01898     virtual ~MsgFileElement() {}
01900 
01903     virtual const char *getTagName() const {return "msg-file";}
01904     virtual int getTagCode() const {return NED_MSG_FILE;}
01905     virtual int getNumAttributes() const;
01906     virtual const char *getAttributeName(int k) const;
01907     virtual const char *getAttribute(int k) const;
01908     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01909     virtual void setAttribute(int k, const char *val);
01910     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01911     virtual const char *getAttributeDefault(int k) const;
01912     virtual MsgFileElement *dup() const;
01914 
01917     const char * getFilename() const  {return filename.c_str();}
01918     void setFilename(const char * val)  {filename = val;}
01919     const char * getVersion() const  {return version.c_str();}
01920     void setVersion(const char * val)  {version = val;}
01921 
01922     virtual MsgFileElement *getNextMsgFileSibling() const;
01923     virtual CommentElement *getFirstCommentChild() const;
01924     virtual NamespaceElement *getFirstNamespaceChild() const;
01925     virtual PropertyDeclElement *getFirstPropertyDeclChild() const;
01926     virtual PropertyElement *getFirstPropertyChild() const;
01927     virtual CplusplusElement *getFirstCplusplusChild() const;
01928     virtual StructDeclElement *getFirstStructDeclChild() const;
01929     virtual ClassDeclElement *getFirstClassDeclChild() const;
01930     virtual MessageDeclElement *getFirstMessageDeclChild() const;
01931     virtual PacketDeclElement *getFirstPacketDeclChild() const;
01932     virtual EnumDeclElement *getFirstEnumDeclChild() const;
01933     virtual StructElement *getFirstStructChild() const;
01934     virtual ClassElement *getFirstClassChild() const;
01935     virtual MessageElement *getFirstMessageChild() const;
01936     virtual PacketElement *getFirstPacketChild() const;
01937     virtual EnumElement *getFirstEnumChild() const;
01939 };
01940 
01952 class NEDXML_API NamespaceElement : public NEDElement
01953 {
01954   private:
01955     std::string name;
01956   public:
01959     NamespaceElement();
01960     NamespaceElement(NEDElement *parent);
01961     virtual ~NamespaceElement() {}
01963 
01966     virtual const char *getTagName() const {return "namespace";}
01967     virtual int getTagCode() const {return NED_NAMESPACE;}
01968     virtual int getNumAttributes() const;
01969     virtual const char *getAttributeName(int k) const;
01970     virtual const char *getAttribute(int k) const;
01971     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
01972     virtual void setAttribute(int k, const char *val);
01973     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
01974     virtual const char *getAttributeDefault(int k) const;
01975     virtual NamespaceElement *dup() const;
01977 
01980     const char * getName() const  {return name.c_str();}
01981     void setName(const char * val)  {name = val;}
01982 
01983     virtual NamespaceElement *getNextNamespaceSibling() const;
01984     virtual CommentElement *getFirstCommentChild() const;
01986 };
01987 
01999 class NEDXML_API CplusplusElement : public NEDElement
02000 {
02001   private:
02002     std::string body;
02003   public:
02006     CplusplusElement();
02007     CplusplusElement(NEDElement *parent);
02008     virtual ~CplusplusElement() {}
02010 
02013     virtual const char *getTagName() const {return "cplusplus";}
02014     virtual int getTagCode() const {return NED_CPLUSPLUS;}
02015     virtual int getNumAttributes() const;
02016     virtual const char *getAttributeName(int k) const;
02017     virtual const char *getAttribute(int k) const;
02018     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02019     virtual void setAttribute(int k, const char *val);
02020     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02021     virtual const char *getAttributeDefault(int k) const;
02022     virtual CplusplusElement *dup() const;
02024 
02027     const char * getBody() const  {return body.c_str();}
02028     void setBody(const char * val)  {body = val;}
02029 
02030     virtual CplusplusElement *getNextCplusplusSibling() const;
02031     virtual CommentElement *getFirstCommentChild() const;
02033 };
02034 
02046 class NEDXML_API StructDeclElement : public NEDElement
02047 {
02048   private:
02049     std::string name;
02050   public:
02053     StructDeclElement();
02054     StructDeclElement(NEDElement *parent);
02055     virtual ~StructDeclElement() {}
02057 
02060     virtual const char *getTagName() const {return "struct-decl";}
02061     virtual int getTagCode() const {return NED_STRUCT_DECL;}
02062     virtual int getNumAttributes() const;
02063     virtual const char *getAttributeName(int k) const;
02064     virtual const char *getAttribute(int k) const;
02065     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02066     virtual void setAttribute(int k, const char *val);
02067     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02068     virtual const char *getAttributeDefault(int k) const;
02069     virtual StructDeclElement *dup() const;
02071 
02074     const char * getName() const  {return name.c_str();}
02075     void setName(const char * val)  {name = val;}
02076 
02077     virtual StructDeclElement *getNextStructDeclSibling() const;
02078     virtual CommentElement *getFirstCommentChild() const;
02080 };
02081 
02095 class NEDXML_API ClassDeclElement : public NEDElement
02096 {
02097   private:
02098     std::string name;
02099     bool isCobject;
02100     std::string extendsName;
02101   public:
02104     ClassDeclElement();
02105     ClassDeclElement(NEDElement *parent);
02106     virtual ~ClassDeclElement() {}
02108 
02111     virtual const char *getTagName() const {return "class-decl";}
02112     virtual int getTagCode() const {return NED_CLASS_DECL;}
02113     virtual int getNumAttributes() const;
02114     virtual const char *getAttributeName(int k) const;
02115     virtual const char *getAttribute(int k) const;
02116     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02117     virtual void setAttribute(int k, const char *val);
02118     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02119     virtual const char *getAttributeDefault(int k) const;
02120     virtual ClassDeclElement *dup() const;
02122 
02125     const char * getName() const  {return name.c_str();}
02126     void setName(const char * val)  {name = val;}
02127     bool getIsCobject() const  {return isCobject;}
02128     void setIsCobject(bool val)  {isCobject = val;}
02129     const char * getExtendsName() const  {return extendsName.c_str();}
02130     void setExtendsName(const char * val)  {extendsName = val;}
02131 
02132     virtual ClassDeclElement *getNextClassDeclSibling() const;
02133     virtual CommentElement *getFirstCommentChild() const;
02135 };
02136 
02148 class NEDXML_API MessageDeclElement : public NEDElement
02149 {
02150   private:
02151     std::string name;
02152   public:
02155     MessageDeclElement();
02156     MessageDeclElement(NEDElement *parent);
02157     virtual ~MessageDeclElement() {}
02159 
02162     virtual const char *getTagName() const {return "message-decl";}
02163     virtual int getTagCode() const {return NED_MESSAGE_DECL;}
02164     virtual int getNumAttributes() const;
02165     virtual const char *getAttributeName(int k) const;
02166     virtual const char *getAttribute(int k) const;
02167     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02168     virtual void setAttribute(int k, const char *val);
02169     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02170     virtual const char *getAttributeDefault(int k) const;
02171     virtual MessageDeclElement *dup() const;
02173 
02176     const char * getName() const  {return name.c_str();}
02177     void setName(const char * val)  {name = val;}
02178 
02179     virtual MessageDeclElement *getNextMessageDeclSibling() const;
02180     virtual CommentElement *getFirstCommentChild() const;
02182 };
02183 
02195 class NEDXML_API PacketDeclElement : public NEDElement
02196 {
02197   private:
02198     std::string name;
02199   public:
02202     PacketDeclElement();
02203     PacketDeclElement(NEDElement *parent);
02204     virtual ~PacketDeclElement() {}
02206 
02209     virtual const char *getTagName() const {return "packet-decl";}
02210     virtual int getTagCode() const {return NED_PACKET_DECL;}
02211     virtual int getNumAttributes() const;
02212     virtual const char *getAttributeName(int k) const;
02213     virtual const char *getAttribute(int k) const;
02214     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02215     virtual void setAttribute(int k, const char *val);
02216     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02217     virtual const char *getAttributeDefault(int k) const;
02218     virtual PacketDeclElement *dup() const;
02220 
02223     const char * getName() const  {return name.c_str();}
02224     void setName(const char * val)  {name = val;}
02225 
02226     virtual PacketDeclElement *getNextPacketDeclSibling() const;
02227     virtual CommentElement *getFirstCommentChild() const;
02229 };
02230 
02242 class NEDXML_API EnumDeclElement : public NEDElement
02243 {
02244   private:
02245     std::string name;
02246   public:
02249     EnumDeclElement();
02250     EnumDeclElement(NEDElement *parent);
02251     virtual ~EnumDeclElement() {}
02253 
02256     virtual const char *getTagName() const {return "enum-decl";}
02257     virtual int getTagCode() const {return NED_ENUM_DECL;}
02258     virtual int getNumAttributes() const;
02259     virtual const char *getAttributeName(int k) const;
02260     virtual const char *getAttribute(int k) const;
02261     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02262     virtual void setAttribute(int k, const char *val);
02263     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02264     virtual const char *getAttributeDefault(int k) const;
02265     virtual EnumDeclElement *dup() const;
02267 
02270     const char * getName() const  {return name.c_str();}
02271     void setName(const char * val)  {name = val;}
02272 
02273     virtual EnumDeclElement *getNextEnumDeclSibling() const;
02274     virtual CommentElement *getFirstCommentChild() const;
02276 };
02277 
02291 class NEDXML_API EnumElement : public NEDElement
02292 {
02293   private:
02294     std::string name;
02295     std::string extendsName;
02296     std::string sourceCode;
02297   public:
02300     EnumElement();
02301     EnumElement(NEDElement *parent);
02302     virtual ~EnumElement() {}
02304 
02307     virtual const char *getTagName() const {return "enum";}
02308     virtual int getTagCode() const {return NED_ENUM;}
02309     virtual int getNumAttributes() const;
02310     virtual const char *getAttributeName(int k) const;
02311     virtual const char *getAttribute(int k) const;
02312     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02313     virtual void setAttribute(int k, const char *val);
02314     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02315     virtual const char *getAttributeDefault(int k) const;
02316     virtual EnumElement *dup() const;
02318 
02321     const char * getName() const  {return name.c_str();}
02322     void setName(const char * val)  {name = val;}
02323     const char * getExtendsName() const  {return extendsName.c_str();}
02324     void setExtendsName(const char * val)  {extendsName = val;}
02325     const char * getSourceCode() const  {return sourceCode.c_str();}
02326     void setSourceCode(const char * val)  {sourceCode = val;}
02327 
02328     virtual EnumElement *getNextEnumSibling() const;
02329     virtual CommentElement *getFirstCommentChild() const;
02330     virtual EnumFieldsElement *getFirstEnumFieldsChild() const;
02332 };
02333 
02344 class NEDXML_API EnumFieldsElement : public NEDElement
02345 {
02346   private:
02347   public:
02350     EnumFieldsElement();
02351     EnumFieldsElement(NEDElement *parent);
02352     virtual ~EnumFieldsElement() {}
02354 
02357     virtual const char *getTagName() const {return "enum-fields";}
02358     virtual int getTagCode() const {return NED_ENUM_FIELDS;}
02359     virtual int getNumAttributes() const;
02360     virtual const char *getAttributeName(int k) const;
02361     virtual const char *getAttribute(int k) const;
02362     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02363     virtual void setAttribute(int k, const char *val);
02364     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02365     virtual const char *getAttributeDefault(int k) const;
02366     virtual EnumFieldsElement *dup() const;
02368 
02371 
02372     virtual EnumFieldsElement *getNextEnumFieldsSibling() const;
02373     virtual CommentElement *getFirstCommentChild() const;
02374     virtual EnumFieldElement *getFirstEnumFieldChild() const;
02376 };
02377 
02390 class NEDXML_API EnumFieldElement : public NEDElement
02391 {
02392   private:
02393     std::string name;
02394     std::string value;
02395   public:
02398     EnumFieldElement();
02399     EnumFieldElement(NEDElement *parent);
02400     virtual ~EnumFieldElement() {}
02402 
02405     virtual const char *getTagName() const {return "enum-field";}
02406     virtual int getTagCode() const {return NED_ENUM_FIELD;}
02407     virtual int getNumAttributes() const;
02408     virtual const char *getAttributeName(int k) const;
02409     virtual const char *getAttribute(int k) const;
02410     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02411     virtual void setAttribute(int k, const char *val);
02412     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02413     virtual const char *getAttributeDefault(int k) const;
02414     virtual EnumFieldElement *dup() const;
02416 
02419     const char * getName() const  {return name.c_str();}
02420     void setName(const char * val)  {name = val;}
02421     const char * getValue() const  {return value.c_str();}
02422     void setValue(const char * val)  {value = val;}
02423 
02424     virtual EnumFieldElement *getNextEnumFieldSibling() const;
02425     virtual CommentElement *getFirstCommentChild() const;
02427 };
02428 
02442 class NEDXML_API MessageElement : public NEDElement
02443 {
02444   private:
02445     std::string name;
02446     std::string extendsName;
02447     std::string sourceCode;
02448   public:
02451     MessageElement();
02452     MessageElement(NEDElement *parent);
02453     virtual ~MessageElement() {}
02455 
02458     virtual const char *getTagName() const {return "message";}
02459     virtual int getTagCode() const {return NED_MESSAGE;}
02460     virtual int getNumAttributes() const;
02461     virtual const char *getAttributeName(int k) const;
02462     virtual const char *getAttribute(int k) const;
02463     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02464     virtual void setAttribute(int k, const char *val);
02465     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02466     virtual const char *getAttributeDefault(int k) const;
02467     virtual MessageElement *dup() const;
02469 
02472     const char * getName() const  {return name.c_str();}
02473     void setName(const char * val)  {name = val;}
02474     const char * getExtendsName() const  {return extendsName.c_str();}
02475     void setExtendsName(const char * val)  {extendsName = val;}
02476     const char * getSourceCode() const  {return sourceCode.c_str();}
02477     void setSourceCode(const char * val)  {sourceCode = val;}
02478 
02479     virtual MessageElement *getNextMessageSibling() const;
02480     virtual CommentElement *getFirstCommentChild() const;
02481     virtual PropertyElement *getFirstPropertyChild() const;
02482     virtual FieldElement *getFirstFieldChild() const;
02484 };
02485 
02499 class NEDXML_API PacketElement : public NEDElement
02500 {
02501   private:
02502     std::string name;
02503     std::string extendsName;
02504     std::string sourceCode;
02505   public:
02508     PacketElement();
02509     PacketElement(NEDElement *parent);
02510     virtual ~PacketElement() {}
02512 
02515     virtual const char *getTagName() const {return "packet";}
02516     virtual int getTagCode() const {return NED_PACKET;}
02517     virtual int getNumAttributes() const;
02518     virtual const char *getAttributeName(int k) const;
02519     virtual const char *getAttribute(int k) const;
02520     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02521     virtual void setAttribute(int k, const char *val);
02522     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02523     virtual const char *getAttributeDefault(int k) const;
02524     virtual PacketElement *dup() const;
02526 
02529     const char * getName() const  {return name.c_str();}
02530     void setName(const char * val)  {name = val;}
02531     const char * getExtendsName() const  {return extendsName.c_str();}
02532     void setExtendsName(const char * val)  {extendsName = val;}
02533     const char * getSourceCode() const  {return sourceCode.c_str();}
02534     void setSourceCode(const char * val)  {sourceCode = val;}
02535 
02536     virtual PacketElement *getNextPacketSibling() const;
02537     virtual CommentElement *getFirstCommentChild() const;
02538     virtual PropertyElement *getFirstPropertyChild() const;
02539     virtual FieldElement *getFirstFieldChild() const;
02541 };
02542 
02556 class NEDXML_API ClassElement : public NEDElement
02557 {
02558   private:
02559     std::string name;
02560     std::string extendsName;
02561     std::string sourceCode;
02562   public:
02565     ClassElement();
02566     ClassElement(NEDElement *parent);
02567     virtual ~ClassElement() {}
02569 
02572     virtual const char *getTagName() const {return "class";}
02573     virtual int getTagCode() const {return NED_CLASS;}
02574     virtual int getNumAttributes() const;
02575     virtual const char *getAttributeName(int k) const;
02576     virtual const char *getAttribute(int k) const;
02577     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02578     virtual void setAttribute(int k, const char *val);
02579     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02580     virtual const char *getAttributeDefault(int k) const;
02581     virtual ClassElement *dup() const;
02583 
02586     const char * getName() const  {return name.c_str();}
02587     void setName(const char * val)  {name = val;}
02588     const char * getExtendsName() const  {return extendsName.c_str();}
02589     void setExtendsName(const char * val)  {extendsName = val;}
02590     const char * getSourceCode() const  {return sourceCode.c_str();}
02591     void setSourceCode(const char * val)  {sourceCode = val;}
02592 
02593     virtual ClassElement *getNextClassSibling() const;
02594     virtual CommentElement *getFirstCommentChild() const;
02595     virtual PropertyElement *getFirstPropertyChild() const;
02596     virtual FieldElement *getFirstFieldChild() const;
02598 };
02599 
02613 class NEDXML_API StructElement : public NEDElement
02614 {
02615   private:
02616     std::string name;
02617     std::string extendsName;
02618     std::string sourceCode;
02619   public:
02622     StructElement();
02623     StructElement(NEDElement *parent);
02624     virtual ~StructElement() {}
02626 
02629     virtual const char *getTagName() const {return "struct";}
02630     virtual int getTagCode() const {return NED_STRUCT;}
02631     virtual int getNumAttributes() const;
02632     virtual const char *getAttributeName(int k) const;
02633     virtual const char *getAttribute(int k) const;
02634     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02635     virtual void setAttribute(int k, const char *val);
02636     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02637     virtual const char *getAttributeDefault(int k) const;
02638     virtual StructElement *dup() const;
02640 
02643     const char * getName() const  {return name.c_str();}
02644     void setName(const char * val)  {name = val;}
02645     const char * getExtendsName() const  {return extendsName.c_str();}
02646     void setExtendsName(const char * val)  {extendsName = val;}
02647     const char * getSourceCode() const  {return sourceCode.c_str();}
02648     void setSourceCode(const char * val)  {sourceCode = val;}
02649 
02650     virtual StructElement *getNextStructSibling() const;
02651     virtual CommentElement *getFirstCommentChild() const;
02652     virtual PropertyElement *getFirstPropertyChild() const;
02653     virtual FieldElement *getFirstFieldChild() const;
02655 };
02656 
02674 class NEDXML_API FieldElement : public NEDElement
02675 {
02676   private:
02677     std::string name;
02678     std::string dataType;
02679     bool isAbstract;
02680     bool isReadonly;
02681     bool isVector;
02682     std::string vectorSize;
02683     std::string defaultValue;
02684   public:
02687     FieldElement();
02688     FieldElement(NEDElement *parent);
02689     virtual ~FieldElement() {}
02691 
02694     virtual const char *getTagName() const {return "field";}
02695     virtual int getTagCode() const {return NED_FIELD;}
02696     virtual int getNumAttributes() const;
02697     virtual const char *getAttributeName(int k) const;
02698     virtual const char *getAttribute(int k) const;
02699     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02700     virtual void setAttribute(int k, const char *val);
02701     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02702     virtual const char *getAttributeDefault(int k) const;
02703     virtual FieldElement *dup() const;
02705 
02708     const char * getName() const  {return name.c_str();}
02709     void setName(const char * val)  {name = val;}
02710     const char * getDataType() const  {return dataType.c_str();}
02711     void setDataType(const char * val)  {dataType = val;}
02712     bool getIsAbstract() const  {return isAbstract;}
02713     void setIsAbstract(bool val)  {isAbstract = val;}
02714     bool getIsReadonly() const  {return isReadonly;}
02715     void setIsReadonly(bool val)  {isReadonly = val;}
02716     bool getIsVector() const  {return isVector;}
02717     void setIsVector(bool val)  {isVector = val;}
02718     const char * getVectorSize() const  {return vectorSize.c_str();}
02719     void setVectorSize(const char * val)  {vectorSize = val;}
02720     const char * getDefaultValue() const  {return defaultValue.c_str();}
02721     void setDefaultValue(const char * val)  {defaultValue = val;}
02722 
02723     virtual FieldElement *getNextFieldSibling() const;
02724     virtual CommentElement *getFirstCommentChild() const;
02725     virtual PropertyElement *getFirstPropertyChild() const;
02727 };
02728 
02740 class NEDXML_API UnknownElement : public NEDElement
02741 {
02742   private:
02743     std::string element;
02744   public:
02747     UnknownElement();
02748     UnknownElement(NEDElement *parent);
02749     virtual ~UnknownElement() {}
02751 
02754     virtual const char *getTagName() const {return "unknown";}
02755     virtual int getTagCode() const {return NED_UNKNOWN;}
02756     virtual int getNumAttributes() const;
02757     virtual const char *getAttributeName(int k) const;
02758     virtual const char *getAttribute(int k) const;
02759     virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);} // needed because of a C++ language quirk
02760     virtual void setAttribute(int k, const char *val);
02761     virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);} // ditto
02762     virtual const char *getAttributeDefault(int k) const;
02763     virtual UnknownElement *dup() const;
02765 
02768     const char * getElement() const  {return element.c_str();}
02769     void setElement(const char * val)  {element = val;}
02770 
02771     virtual UnknownElement *getNextUnknownSibling() const;
02773 };
02774 
02780 class NEDXML_API NEDElementFactory
02781 {
02782   private:
02783     static NEDElementFactory *f;
02784     // ctor is private, because only one instance is allowed
02785     NEDElementFactory() {}
02786   public:
02788     virtual ~NEDElementFactory() {}
02790     static NEDElementFactory *getInstance();
02792     virtual NEDElement *createElementWithTag(const char *tagname);
02794     virtual NEDElement *createElementWithTag(int tagcode);
02795 };
02796 
02797 NAMESPACE_END
02798 
02799 #endif
02800 

Generated on Wed Apr 3 14:40:29 2013 for OMNeT++ NEDXML by  doxygen 1.5.5