00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
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,
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
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);}
00171 virtual void setAttribute(int k, const char *val);
00172 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00221 virtual void setAttribute(int k, const char *val);
00222 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00281 virtual void setAttribute(int k, const char *val);
00282 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00329 virtual void setAttribute(int k, const char *val);
00330 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00376 virtual void setAttribute(int k, const char *val);
00377 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00425 virtual void setAttribute(int k, const char *val);
00426 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00476 virtual void setAttribute(int k, const char *val);
00477 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00523 virtual void setAttribute(int k, const char *val);
00524 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00570 virtual void setAttribute(int k, const char *val);
00571 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00621 virtual void setAttribute(int k, const char *val);
00622 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00672 virtual void setAttribute(int k, const char *val);
00673 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00726 virtual void setAttribute(int k, const char *val);
00727 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00775 virtual void setAttribute(int k, const char *val);
00776 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00825 virtual void setAttribute(int k, const char *val);
00826 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00884 virtual void setAttribute(int k, const char *val);
00885 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00947 virtual void setAttribute(int k, const char *val);
00948 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
00999 virtual void setAttribute(int k, const char *val);
01000 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01045 virtual void setAttribute(int k, const char *val);
01046 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01097 virtual void setAttribute(int k, const char *val);
01098 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01151 virtual void setAttribute(int k, const char *val);
01152 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01199 virtual void setAttribute(int k, const char *val);
01200 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01255 virtual void setAttribute(int k, const char *val);
01256 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01316 virtual void setAttribute(int k, const char *val);
01317 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01401 virtual void setAttribute(int k, const char *val);
01402 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01486 virtual void setAttribute(int k, const char *val);
01487 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01538 virtual void setAttribute(int k, const char *val);
01539 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01590 virtual void setAttribute(int k, const char *val);
01591 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01638 virtual void setAttribute(int k, const char *val);
01639 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01689 virtual void setAttribute(int k, const char *val);
01690 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01740 virtual void setAttribute(int k, const char *val);
01741 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01793 virtual void setAttribute(int k, const char *val);
01794 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01852 virtual void setAttribute(int k, const char *val);
01853 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01909 virtual void setAttribute(int k, const char *val);
01910 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
01972 virtual void setAttribute(int k, const char *val);
01973 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02019 virtual void setAttribute(int k, const char *val);
02020 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02066 virtual void setAttribute(int k, const char *val);
02067 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02117 virtual void setAttribute(int k, const char *val);
02118 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02168 virtual void setAttribute(int k, const char *val);
02169 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02215 virtual void setAttribute(int k, const char *val);
02216 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02262 virtual void setAttribute(int k, const char *val);
02263 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02313 virtual void setAttribute(int k, const char *val);
02314 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02363 virtual void setAttribute(int k, const char *val);
02364 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02411 virtual void setAttribute(int k, const char *val);
02412 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02464 virtual void setAttribute(int k, const char *val);
02465 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02521 virtual void setAttribute(int k, const char *val);
02522 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02578 virtual void setAttribute(int k, const char *val);
02579 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02635 virtual void setAttribute(int k, const char *val);
02636 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02700 virtual void setAttribute(int k, const char *val);
02701 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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);}
02760 virtual void setAttribute(int k, const char *val);
02761 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
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
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