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_QUANTITY, NED_CONST_INT, NED_CONST_STRING, NED_CONST_BOOL, NED_CONST_SPEC};
00140 enum {NED_SUBGATE_NONE, NED_SUBGATE_I, NED_SUBGATE_O};
00141
00152 class NEDXML_API FilesElement : public NEDElement
00153 {
00154 private:
00155 public:
00158 FilesElement();
00159 FilesElement(NEDElement *parent);
00160 virtual ~FilesElement() {}
00162
00165 virtual const char *getTagName() const {return "files";}
00166 virtual int getTagCode() const {return NED_FILES;}
00167 virtual int getNumAttributes() const;
00168 virtual const char *getAttributeName(int k) const;
00169 virtual const char *getAttribute(int k) const;
00170 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
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
01828 class NEDXML_API LiteralElement : public NEDElement
01829 {
01830 private:
01831 int type;
01832 std::string text;
01833 std::string value;
01834 public:
01837 LiteralElement();
01838 LiteralElement(NEDElement *parent);
01839 virtual ~LiteralElement() {}
01841
01844 virtual const char *getTagName() const {return "literal";}
01845 virtual int getTagCode() const {return NED_LITERAL;}
01846 virtual int getNumAttributes() const;
01847 virtual const char *getAttributeName(int k) const;
01848 virtual const char *getAttribute(int k) const;
01849 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
01850 virtual void setAttribute(int k, const char *val);
01851 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
01852 virtual const char *getAttributeDefault(int k) const;
01853 virtual LiteralElement *dup() const;
01855
01858 int getType() const {return type;}
01859 void setType(int val);
01860 const char * getText() const {return text.c_str();}
01861 void setText(const char * val) {text = val;}
01862 const char * getValue() const {return value.c_str();}
01863 void setValue(const char * val) {value = val;}
01864
01865 virtual LiteralElement *getNextLiteralSibling() const;
01866 virtual CommentElement *getFirstCommentChild() const;
01868 };
01869
01884 class NEDXML_API MsgFileElement : public NEDElement
01885 {
01886 private:
01887 std::string filename;
01888 std::string version;
01889 public:
01892 MsgFileElement();
01893 MsgFileElement(NEDElement *parent);
01894 virtual ~MsgFileElement() {}
01896
01899 virtual const char *getTagName() const {return "msg-file";}
01900 virtual int getTagCode() const {return NED_MSG_FILE;}
01901 virtual int getNumAttributes() const;
01902 virtual const char *getAttributeName(int k) const;
01903 virtual const char *getAttribute(int k) const;
01904 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
01905 virtual void setAttribute(int k, const char *val);
01906 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
01907 virtual const char *getAttributeDefault(int k) const;
01908 virtual MsgFileElement *dup() const;
01910
01913 const char * getFilename() const {return filename.c_str();}
01914 void setFilename(const char * val) {filename = val;}
01915 const char * getVersion() const {return version.c_str();}
01916 void setVersion(const char * val) {version = val;}
01917
01918 virtual MsgFileElement *getNextMsgFileSibling() const;
01919 virtual CommentElement *getFirstCommentChild() const;
01920 virtual NamespaceElement *getFirstNamespaceChild() const;
01921 virtual PropertyDeclElement *getFirstPropertyDeclChild() const;
01922 virtual PropertyElement *getFirstPropertyChild() const;
01923 virtual CplusplusElement *getFirstCplusplusChild() const;
01924 virtual StructDeclElement *getFirstStructDeclChild() const;
01925 virtual ClassDeclElement *getFirstClassDeclChild() const;
01926 virtual MessageDeclElement *getFirstMessageDeclChild() const;
01927 virtual PacketDeclElement *getFirstPacketDeclChild() const;
01928 virtual EnumDeclElement *getFirstEnumDeclChild() const;
01929 virtual StructElement *getFirstStructChild() const;
01930 virtual ClassElement *getFirstClassChild() const;
01931 virtual MessageElement *getFirstMessageChild() const;
01932 virtual PacketElement *getFirstPacketChild() const;
01933 virtual EnumElement *getFirstEnumChild() const;
01935 };
01936
01948 class NEDXML_API NamespaceElement : public NEDElement
01949 {
01950 private:
01951 std::string name;
01952 public:
01955 NamespaceElement();
01956 NamespaceElement(NEDElement *parent);
01957 virtual ~NamespaceElement() {}
01959
01962 virtual const char *getTagName() const {return "namespace";}
01963 virtual int getTagCode() const {return NED_NAMESPACE;}
01964 virtual int getNumAttributes() const;
01965 virtual const char *getAttributeName(int k) const;
01966 virtual const char *getAttribute(int k) const;
01967 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
01968 virtual void setAttribute(int k, const char *val);
01969 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
01970 virtual const char *getAttributeDefault(int k) const;
01971 virtual NamespaceElement *dup() const;
01973
01976 const char * getName() const {return name.c_str();}
01977 void setName(const char * val) {name = val;}
01978
01979 virtual NamespaceElement *getNextNamespaceSibling() const;
01980 virtual CommentElement *getFirstCommentChild() const;
01982 };
01983
01995 class NEDXML_API CplusplusElement : public NEDElement
01996 {
01997 private:
01998 std::string body;
01999 public:
02002 CplusplusElement();
02003 CplusplusElement(NEDElement *parent);
02004 virtual ~CplusplusElement() {}
02006
02009 virtual const char *getTagName() const {return "cplusplus";}
02010 virtual int getTagCode() const {return NED_CPLUSPLUS;}
02011 virtual int getNumAttributes() const;
02012 virtual const char *getAttributeName(int k) const;
02013 virtual const char *getAttribute(int k) const;
02014 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02015 virtual void setAttribute(int k, const char *val);
02016 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02017 virtual const char *getAttributeDefault(int k) const;
02018 virtual CplusplusElement *dup() const;
02020
02023 const char * getBody() const {return body.c_str();}
02024 void setBody(const char * val) {body = val;}
02025
02026 virtual CplusplusElement *getNextCplusplusSibling() const;
02027 virtual CommentElement *getFirstCommentChild() const;
02029 };
02030
02042 class NEDXML_API StructDeclElement : public NEDElement
02043 {
02044 private:
02045 std::string name;
02046 public:
02049 StructDeclElement();
02050 StructDeclElement(NEDElement *parent);
02051 virtual ~StructDeclElement() {}
02053
02056 virtual const char *getTagName() const {return "struct-decl";}
02057 virtual int getTagCode() const {return NED_STRUCT_DECL;}
02058 virtual int getNumAttributes() const;
02059 virtual const char *getAttributeName(int k) const;
02060 virtual const char *getAttribute(int k) const;
02061 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02062 virtual void setAttribute(int k, const char *val);
02063 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02064 virtual const char *getAttributeDefault(int k) const;
02065 virtual StructDeclElement *dup() const;
02067
02070 const char * getName() const {return name.c_str();}
02071 void setName(const char * val) {name = val;}
02072
02073 virtual StructDeclElement *getNextStructDeclSibling() const;
02074 virtual CommentElement *getFirstCommentChild() const;
02076 };
02077
02091 class NEDXML_API ClassDeclElement : public NEDElement
02092 {
02093 private:
02094 std::string name;
02095 bool isCobject;
02096 std::string extendsName;
02097 public:
02100 ClassDeclElement();
02101 ClassDeclElement(NEDElement *parent);
02102 virtual ~ClassDeclElement() {}
02104
02107 virtual const char *getTagName() const {return "class-decl";}
02108 virtual int getTagCode() const {return NED_CLASS_DECL;}
02109 virtual int getNumAttributes() const;
02110 virtual const char *getAttributeName(int k) const;
02111 virtual const char *getAttribute(int k) const;
02112 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02113 virtual void setAttribute(int k, const char *val);
02114 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02115 virtual const char *getAttributeDefault(int k) const;
02116 virtual ClassDeclElement *dup() const;
02118
02121 const char * getName() const {return name.c_str();}
02122 void setName(const char * val) {name = val;}
02123 bool getIsCobject() const {return isCobject;}
02124 void setIsCobject(bool val) {isCobject = val;}
02125 const char * getExtendsName() const {return extendsName.c_str();}
02126 void setExtendsName(const char * val) {extendsName = val;}
02127
02128 virtual ClassDeclElement *getNextClassDeclSibling() const;
02129 virtual CommentElement *getFirstCommentChild() const;
02131 };
02132
02144 class NEDXML_API MessageDeclElement : public NEDElement
02145 {
02146 private:
02147 std::string name;
02148 public:
02151 MessageDeclElement();
02152 MessageDeclElement(NEDElement *parent);
02153 virtual ~MessageDeclElement() {}
02155
02158 virtual const char *getTagName() const {return "message-decl";}
02159 virtual int getTagCode() const {return NED_MESSAGE_DECL;}
02160 virtual int getNumAttributes() const;
02161 virtual const char *getAttributeName(int k) const;
02162 virtual const char *getAttribute(int k) const;
02163 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02164 virtual void setAttribute(int k, const char *val);
02165 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02166 virtual const char *getAttributeDefault(int k) const;
02167 virtual MessageDeclElement *dup() const;
02169
02172 const char * getName() const {return name.c_str();}
02173 void setName(const char * val) {name = val;}
02174
02175 virtual MessageDeclElement *getNextMessageDeclSibling() const;
02176 virtual CommentElement *getFirstCommentChild() const;
02178 };
02179
02191 class NEDXML_API PacketDeclElement : public NEDElement
02192 {
02193 private:
02194 std::string name;
02195 public:
02198 PacketDeclElement();
02199 PacketDeclElement(NEDElement *parent);
02200 virtual ~PacketDeclElement() {}
02202
02205 virtual const char *getTagName() const {return "packet-decl";}
02206 virtual int getTagCode() const {return NED_PACKET_DECL;}
02207 virtual int getNumAttributes() const;
02208 virtual const char *getAttributeName(int k) const;
02209 virtual const char *getAttribute(int k) const;
02210 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02211 virtual void setAttribute(int k, const char *val);
02212 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02213 virtual const char *getAttributeDefault(int k) const;
02214 virtual PacketDeclElement *dup() const;
02216
02219 const char * getName() const {return name.c_str();}
02220 void setName(const char * val) {name = val;}
02221
02222 virtual PacketDeclElement *getNextPacketDeclSibling() const;
02223 virtual CommentElement *getFirstCommentChild() const;
02225 };
02226
02238 class NEDXML_API EnumDeclElement : public NEDElement
02239 {
02240 private:
02241 std::string name;
02242 public:
02245 EnumDeclElement();
02246 EnumDeclElement(NEDElement *parent);
02247 virtual ~EnumDeclElement() {}
02249
02252 virtual const char *getTagName() const {return "enum-decl";}
02253 virtual int getTagCode() const {return NED_ENUM_DECL;}
02254 virtual int getNumAttributes() const;
02255 virtual const char *getAttributeName(int k) const;
02256 virtual const char *getAttribute(int k) const;
02257 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02258 virtual void setAttribute(int k, const char *val);
02259 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02260 virtual const char *getAttributeDefault(int k) const;
02261 virtual EnumDeclElement *dup() const;
02263
02266 const char * getName() const {return name.c_str();}
02267 void setName(const char * val) {name = val;}
02268
02269 virtual EnumDeclElement *getNextEnumDeclSibling() const;
02270 virtual CommentElement *getFirstCommentChild() const;
02272 };
02273
02287 class NEDXML_API EnumElement : public NEDElement
02288 {
02289 private:
02290 std::string name;
02291 std::string extendsName;
02292 std::string sourceCode;
02293 public:
02296 EnumElement();
02297 EnumElement(NEDElement *parent);
02298 virtual ~EnumElement() {}
02300
02303 virtual const char *getTagName() const {return "enum";}
02304 virtual int getTagCode() const {return NED_ENUM;}
02305 virtual int getNumAttributes() const;
02306 virtual const char *getAttributeName(int k) const;
02307 virtual const char *getAttribute(int k) const;
02308 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02309 virtual void setAttribute(int k, const char *val);
02310 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02311 virtual const char *getAttributeDefault(int k) const;
02312 virtual EnumElement *dup() const;
02314
02317 const char * getName() const {return name.c_str();}
02318 void setName(const char * val) {name = val;}
02319 const char * getExtendsName() const {return extendsName.c_str();}
02320 void setExtendsName(const char * val) {extendsName = val;}
02321 const char * getSourceCode() const {return sourceCode.c_str();}
02322 void setSourceCode(const char * val) {sourceCode = val;}
02323
02324 virtual EnumElement *getNextEnumSibling() const;
02325 virtual CommentElement *getFirstCommentChild() const;
02326 virtual EnumFieldsElement *getFirstEnumFieldsChild() const;
02328 };
02329
02340 class NEDXML_API EnumFieldsElement : public NEDElement
02341 {
02342 private:
02343 public:
02346 EnumFieldsElement();
02347 EnumFieldsElement(NEDElement *parent);
02348 virtual ~EnumFieldsElement() {}
02350
02353 virtual const char *getTagName() const {return "enum-fields";}
02354 virtual int getTagCode() const {return NED_ENUM_FIELDS;}
02355 virtual int getNumAttributes() const;
02356 virtual const char *getAttributeName(int k) const;
02357 virtual const char *getAttribute(int k) const;
02358 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02359 virtual void setAttribute(int k, const char *val);
02360 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02361 virtual const char *getAttributeDefault(int k) const;
02362 virtual EnumFieldsElement *dup() const;
02364
02367
02368 virtual EnumFieldsElement *getNextEnumFieldsSibling() const;
02369 virtual CommentElement *getFirstCommentChild() const;
02370 virtual EnumFieldElement *getFirstEnumFieldChild() const;
02372 };
02373
02386 class NEDXML_API EnumFieldElement : public NEDElement
02387 {
02388 private:
02389 std::string name;
02390 std::string value;
02391 public:
02394 EnumFieldElement();
02395 EnumFieldElement(NEDElement *parent);
02396 virtual ~EnumFieldElement() {}
02398
02401 virtual const char *getTagName() const {return "enum-field";}
02402 virtual int getTagCode() const {return NED_ENUM_FIELD;}
02403 virtual int getNumAttributes() const;
02404 virtual const char *getAttributeName(int k) const;
02405 virtual const char *getAttribute(int k) const;
02406 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02407 virtual void setAttribute(int k, const char *val);
02408 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02409 virtual const char *getAttributeDefault(int k) const;
02410 virtual EnumFieldElement *dup() const;
02412
02415 const char * getName() const {return name.c_str();}
02416 void setName(const char * val) {name = val;}
02417 const char * getValue() const {return value.c_str();}
02418 void setValue(const char * val) {value = val;}
02419
02420 virtual EnumFieldElement *getNextEnumFieldSibling() const;
02421 virtual CommentElement *getFirstCommentChild() const;
02423 };
02424
02438 class NEDXML_API MessageElement : public NEDElement
02439 {
02440 private:
02441 std::string name;
02442 std::string extendsName;
02443 std::string sourceCode;
02444 public:
02447 MessageElement();
02448 MessageElement(NEDElement *parent);
02449 virtual ~MessageElement() {}
02451
02454 virtual const char *getTagName() const {return "message";}
02455 virtual int getTagCode() const {return NED_MESSAGE;}
02456 virtual int getNumAttributes() const;
02457 virtual const char *getAttributeName(int k) const;
02458 virtual const char *getAttribute(int k) const;
02459 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02460 virtual void setAttribute(int k, const char *val);
02461 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02462 virtual const char *getAttributeDefault(int k) const;
02463 virtual MessageElement *dup() const;
02465
02468 const char * getName() const {return name.c_str();}
02469 void setName(const char * val) {name = val;}
02470 const char * getExtendsName() const {return extendsName.c_str();}
02471 void setExtendsName(const char * val) {extendsName = val;}
02472 const char * getSourceCode() const {return sourceCode.c_str();}
02473 void setSourceCode(const char * val) {sourceCode = val;}
02474
02475 virtual MessageElement *getNextMessageSibling() const;
02476 virtual CommentElement *getFirstCommentChild() const;
02477 virtual PropertyElement *getFirstPropertyChild() const;
02478 virtual FieldElement *getFirstFieldChild() const;
02480 };
02481
02495 class NEDXML_API PacketElement : public NEDElement
02496 {
02497 private:
02498 std::string name;
02499 std::string extendsName;
02500 std::string sourceCode;
02501 public:
02504 PacketElement();
02505 PacketElement(NEDElement *parent);
02506 virtual ~PacketElement() {}
02508
02511 virtual const char *getTagName() const {return "packet";}
02512 virtual int getTagCode() const {return NED_PACKET;}
02513 virtual int getNumAttributes() const;
02514 virtual const char *getAttributeName(int k) const;
02515 virtual const char *getAttribute(int k) const;
02516 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02517 virtual void setAttribute(int k, const char *val);
02518 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02519 virtual const char *getAttributeDefault(int k) const;
02520 virtual PacketElement *dup() const;
02522
02525 const char * getName() const {return name.c_str();}
02526 void setName(const char * val) {name = val;}
02527 const char * getExtendsName() const {return extendsName.c_str();}
02528 void setExtendsName(const char * val) {extendsName = val;}
02529 const char * getSourceCode() const {return sourceCode.c_str();}
02530 void setSourceCode(const char * val) {sourceCode = val;}
02531
02532 virtual PacketElement *getNextPacketSibling() const;
02533 virtual CommentElement *getFirstCommentChild() const;
02534 virtual PropertyElement *getFirstPropertyChild() const;
02535 virtual FieldElement *getFirstFieldChild() const;
02537 };
02538
02552 class NEDXML_API ClassElement : public NEDElement
02553 {
02554 private:
02555 std::string name;
02556 std::string extendsName;
02557 std::string sourceCode;
02558 public:
02561 ClassElement();
02562 ClassElement(NEDElement *parent);
02563 virtual ~ClassElement() {}
02565
02568 virtual const char *getTagName() const {return "class";}
02569 virtual int getTagCode() const {return NED_CLASS;}
02570 virtual int getNumAttributes() const;
02571 virtual const char *getAttributeName(int k) const;
02572 virtual const char *getAttribute(int k) const;
02573 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02574 virtual void setAttribute(int k, const char *val);
02575 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02576 virtual const char *getAttributeDefault(int k) const;
02577 virtual ClassElement *dup() const;
02579
02582 const char * getName() const {return name.c_str();}
02583 void setName(const char * val) {name = val;}
02584 const char * getExtendsName() const {return extendsName.c_str();}
02585 void setExtendsName(const char * val) {extendsName = val;}
02586 const char * getSourceCode() const {return sourceCode.c_str();}
02587 void setSourceCode(const char * val) {sourceCode = val;}
02588
02589 virtual ClassElement *getNextClassSibling() const;
02590 virtual CommentElement *getFirstCommentChild() const;
02591 virtual PropertyElement *getFirstPropertyChild() const;
02592 virtual FieldElement *getFirstFieldChild() const;
02594 };
02595
02609 class NEDXML_API StructElement : public NEDElement
02610 {
02611 private:
02612 std::string name;
02613 std::string extendsName;
02614 std::string sourceCode;
02615 public:
02618 StructElement();
02619 StructElement(NEDElement *parent);
02620 virtual ~StructElement() {}
02622
02625 virtual const char *getTagName() const {return "struct";}
02626 virtual int getTagCode() const {return NED_STRUCT;}
02627 virtual int getNumAttributes() const;
02628 virtual const char *getAttributeName(int k) const;
02629 virtual const char *getAttribute(int k) const;
02630 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02631 virtual void setAttribute(int k, const char *val);
02632 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02633 virtual const char *getAttributeDefault(int k) const;
02634 virtual StructElement *dup() const;
02636
02639 const char * getName() const {return name.c_str();}
02640 void setName(const char * val) {name = val;}
02641 const char * getExtendsName() const {return extendsName.c_str();}
02642 void setExtendsName(const char * val) {extendsName = val;}
02643 const char * getSourceCode() const {return sourceCode.c_str();}
02644 void setSourceCode(const char * val) {sourceCode = val;}
02645
02646 virtual StructElement *getNextStructSibling() const;
02647 virtual CommentElement *getFirstCommentChild() const;
02648 virtual PropertyElement *getFirstPropertyChild() const;
02649 virtual FieldElement *getFirstFieldChild() const;
02651 };
02652
02670 class NEDXML_API FieldElement : public NEDElement
02671 {
02672 private:
02673 std::string name;
02674 std::string dataType;
02675 bool isAbstract;
02676 bool isReadonly;
02677 bool isVector;
02678 std::string vectorSize;
02679 std::string defaultValue;
02680 public:
02683 FieldElement();
02684 FieldElement(NEDElement *parent);
02685 virtual ~FieldElement() {}
02687
02690 virtual const char *getTagName() const {return "field";}
02691 virtual int getTagCode() const {return NED_FIELD;}
02692 virtual int getNumAttributes() const;
02693 virtual const char *getAttributeName(int k) const;
02694 virtual const char *getAttribute(int k) const;
02695 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02696 virtual void setAttribute(int k, const char *val);
02697 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02698 virtual const char *getAttributeDefault(int k) const;
02699 virtual FieldElement *dup() const;
02701
02704 const char * getName() const {return name.c_str();}
02705 void setName(const char * val) {name = val;}
02706 const char * getDataType() const {return dataType.c_str();}
02707 void setDataType(const char * val) {dataType = val;}
02708 bool getIsAbstract() const {return isAbstract;}
02709 void setIsAbstract(bool val) {isAbstract = val;}
02710 bool getIsReadonly() const {return isReadonly;}
02711 void setIsReadonly(bool val) {isReadonly = val;}
02712 bool getIsVector() const {return isVector;}
02713 void setIsVector(bool val) {isVector = val;}
02714 const char * getVectorSize() const {return vectorSize.c_str();}
02715 void setVectorSize(const char * val) {vectorSize = val;}
02716 const char * getDefaultValue() const {return defaultValue.c_str();}
02717 void setDefaultValue(const char * val) {defaultValue = val;}
02718
02719 virtual FieldElement *getNextFieldSibling() const;
02720 virtual CommentElement *getFirstCommentChild() const;
02721 virtual PropertyElement *getFirstPropertyChild() const;
02723 };
02724
02736 class NEDXML_API UnknownElement : public NEDElement
02737 {
02738 private:
02739 std::string element;
02740 public:
02743 UnknownElement();
02744 UnknownElement(NEDElement *parent);
02745 virtual ~UnknownElement() {}
02747
02750 virtual const char *getTagName() const {return "unknown";}
02751 virtual int getTagCode() const {return NED_UNKNOWN;}
02752 virtual int getNumAttributes() const;
02753 virtual const char *getAttributeName(int k) const;
02754 virtual const char *getAttribute(int k) const;
02755 virtual const char *getAttribute(const char *name) const {return NEDElement::getAttribute(name);}
02756 virtual void setAttribute(int k, const char *val);
02757 virtual void setAttribute(const char *name, const char *val) {NEDElement::setAttribute(name, val);}
02758 virtual const char *getAttributeDefault(int k) const;
02759 virtual UnknownElement *dup() const;
02761
02764 const char * getElement() const {return element.c_str();}
02765 void setElement(const char * val) {element = val;}
02766
02767 virtual UnknownElement *getNextUnknownSibling() const;
02769 };
02770
02776 class NEDXML_API NEDElementFactory
02777 {
02778 private:
02779 static NEDElementFactory *f;
02780
02781 NEDElementFactory() {}
02782 public:
02784 virtual ~NEDElementFactory() {}
02786 static NEDElementFactory *getInstance();
02788 virtual NEDElement *createElementWithTag(const char *tagname);
02790 virtual NEDElement *createElementWithTag(int tagcode);
02791 };
02792
02793 NAMESPACE_END
02794
02795 #endif
02796