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 class NedFilesNode;
00026 class NedFileNode;
00027 class ImportNode;
00028 class ImportedFileNode;
00029 class ChannelNode;
00030 class ChannelAttrNode;
00031 class NetworkNode;
00032 class SimpleModuleNode;
00033 class CompoundModuleNode;
00034 class ParamsNode;
00035 class ParamNode;
00036 class GatesNode;
00037 class GateNode;
00038 class MachinesNode;
00039 class MachineNode;
00040 class SubmodulesNode;
00041 class SubmoduleNode;
00042 class SubstparamsNode;
00043 class SubstparamNode;
00044 class GatesizesNode;
00045 class GatesizeNode;
00046 class SubstmachinesNode;
00047 class SubstmachineNode;
00048 class ConnectionsNode;
00049 class ConnectionNode;
00050 class ConnAttrNode;
00051 class ForLoopNode;
00052 class LoopVarNode;
00053 class DisplayStringNode;
00054 class ExpressionNode;
00055 class OperatorNode;
00056 class FunctionNode;
00057 class ParamRefNode;
00058 class IdentNode;
00059 class ConstNode;
00060 class CplusplusNode;
00061 class StructDeclNode;
00062 class ClassDeclNode;
00063 class MessageDeclNode;
00064 class EnumDeclNode;
00065 class EnumNode;
00066 class EnumFieldsNode;
00067 class EnumFieldNode;
00068 class MessageNode;
00069 class ClassNode;
00070 class StructNode;
00071 class FieldsNode;
00072 class FieldNode;
00073 class PropertiesNode;
00074 class PropertyNode;
00075 class UnknownNode;
00076
00077
00083 enum NEDElementCode {
00084 NED_NED_FILES,
00085 NED_NED_FILE,
00086 NED_IMPORT,
00087 NED_IMPORTED_FILE,
00088 NED_CHANNEL,
00089 NED_CHANNEL_ATTR,
00090 NED_NETWORK,
00091 NED_SIMPLE_MODULE,
00092 NED_COMPOUND_MODULE,
00093 NED_PARAMS,
00094 NED_PARAM,
00095 NED_GATES,
00096 NED_GATE,
00097 NED_MACHINES,
00098 NED_MACHINE,
00099 NED_SUBMODULES,
00100 NED_SUBMODULE,
00101 NED_SUBSTPARAMS,
00102 NED_SUBSTPARAM,
00103 NED_GATESIZES,
00104 NED_GATESIZE,
00105 NED_SUBSTMACHINES,
00106 NED_SUBSTMACHINE,
00107 NED_CONNECTIONS,
00108 NED_CONNECTION,
00109 NED_CONN_ATTR,
00110 NED_FOR_LOOP,
00111 NED_LOOP_VAR,
00112 NED_DISPLAY_STRING,
00113 NED_EXPRESSION,
00114 NED_OPERATOR,
00115 NED_FUNCTION,
00116 NED_PARAM_REF,
00117 NED_IDENT,
00118 NED_CONST,
00119 NED_CPLUSPLUS,
00120 NED_STRUCT_DECL,
00121 NED_CLASS_DECL,
00122 NED_MESSAGE_DECL,
00123 NED_ENUM_DECL,
00124 NED_ENUM,
00125 NED_ENUM_FIELDS,
00126 NED_ENUM_FIELD,
00127 NED_MESSAGE,
00128 NED_CLASS,
00129 NED_STRUCT,
00130 NED_FIELDS,
00131 NED_FIELD,
00132 NED_PROPERTIES,
00133 NED_PROPERTY,
00134 NED_UNKNOWN
00135 };
00136
00137 enum {NED_GATEDIR_INPUT, NED_GATEDIR_OUTPUT};
00138 enum {NED_ARROWDIR_LEFT, NED_ARROWDIR_RIGHT};
00139 enum {NED_CONST_BOOL, NED_CONST_INT, NED_CONST_REAL, NED_CONST_STRING, NED_CONST_TIME};
00140
00151 class NedFilesNode : public NEDElement
00152 {
00153 private:
00154 public:
00157 NedFilesNode() {applyDefaults();}
00158 NedFilesNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00159 virtual ~NedFilesNode() {}
00161
00164 virtual const char *getTagName() const {return "ned-files";}
00165 virtual int getTagCode() const {return NED_NED_FILES;}
00166 virtual int getNumAttributes() const;
00167 virtual const char *getAttributeName(int k) const;
00168 virtual const char *getAttribute(int k) const;
00169 virtual void setAttribute(int k, const char *val);
00170 virtual const char *getAttributeDefault(int k) const;
00172
00175
00176 virtual NedFilesNode *getNextNedFilesNodeSibling() const;
00177 virtual NedFilesNode *getFirstNedFilesChild() const;
00178 virtual NedFileNode *getFirstNedFileChild() const;
00180 };
00181
00198 class NedFileNode : public NEDElement
00199 {
00200 private:
00201 std::string filename;
00202 std::string sourceCode;
00203 std::string preferredIndent;
00204 std::string bannerComment;
00205 public:
00208 NedFileNode() {applyDefaults();}
00209 NedFileNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00210 virtual ~NedFileNode() {}
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 void setAttribute(int k, const char *val);
00221 virtual const char *getAttributeDefault(int k) const;
00223
00226 const char * getFilename() const {return filename.c_str();}
00227 void setFilename(const char * val) {filename = val;}
00228 const char * getSourceCode() const {return sourceCode.c_str();}
00229 void setSourceCode(const char * val) {sourceCode = val;}
00230 const char * getPreferredIndent() const {return preferredIndent.c_str();}
00231 void setPreferredIndent(const char * val) {preferredIndent = val;}
00232 const char * getBannerComment() const {return bannerComment.c_str();}
00233 void setBannerComment(const char * val) {bannerComment = val;}
00234
00235 virtual NedFileNode *getNextNedFileNodeSibling() const;
00236 virtual ImportNode *getFirstImportChild() const;
00237 virtual ChannelNode *getFirstChannelChild() const;
00238 virtual SimpleModuleNode *getFirstSimpleModuleChild() const;
00239 virtual CompoundModuleNode *getFirstCompoundModuleChild() const;
00240 virtual NetworkNode *getFirstNetworkChild() const;
00241 virtual CplusplusNode *getFirstCplusplusChild() const;
00242 virtual StructDeclNode *getFirstStructDeclChild() const;
00243 virtual ClassDeclNode *getFirstClassDeclChild() const;
00244 virtual MessageDeclNode *getFirstMessageDeclChild() const;
00245 virtual EnumDeclNode *getFirstEnumDeclChild() const;
00246 virtual EnumNode *getFirstEnumChild() const;
00247 virtual MessageNode *getFirstMessageChild() const;
00248 virtual ClassNode *getFirstClassChild() const;
00249 virtual StructNode *getFirstStructChild() const;
00251 };
00252
00265 class ImportNode : public NEDElement
00266 {
00267 private:
00268 std::string bannerComment;
00269 std::string rightComment;
00270 public:
00273 ImportNode() {applyDefaults();}
00274 ImportNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00275 virtual ~ImportNode() {}
00277
00280 virtual const char *getTagName() const {return "import";}
00281 virtual int getTagCode() const {return NED_IMPORT;}
00282 virtual int getNumAttributes() const;
00283 virtual const char *getAttributeName(int k) const;
00284 virtual const char *getAttribute(int k) const;
00285 virtual void setAttribute(int k, const char *val);
00286 virtual const char *getAttributeDefault(int k) const;
00288
00291 const char * getBannerComment() const {return bannerComment.c_str();}
00292 void setBannerComment(const char * val) {bannerComment = val;}
00293 const char * getRightComment() const {return rightComment.c_str();}
00294 void setRightComment(const char * val) {rightComment = val;}
00295
00296 virtual ImportNode *getNextImportNodeSibling() const;
00297 virtual ImportedFileNode *getFirstImportedFileChild() const;
00299 };
00300
00314 class ImportedFileNode : public NEDElement
00315 {
00316 private:
00317 std::string filename;
00318 std::string bannerComment;
00319 std::string rightComment;
00320 public:
00323 ImportedFileNode() {applyDefaults();}
00324 ImportedFileNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00325 virtual ~ImportedFileNode() {}
00327
00330 virtual const char *getTagName() const {return "imported-file";}
00331 virtual int getTagCode() const {return NED_IMPORTED_FILE;}
00332 virtual int getNumAttributes() const;
00333 virtual const char *getAttributeName(int k) const;
00334 virtual const char *getAttribute(int k) const;
00335 virtual void setAttribute(int k, const char *val);
00336 virtual const char *getAttributeDefault(int k) const;
00338
00341 const char * getFilename() const {return filename.c_str();}
00342 void setFilename(const char * val) {filename = val;}
00343 const char * getBannerComment() const {return bannerComment.c_str();}
00344 void setBannerComment(const char * val) {bannerComment = val;}
00345 const char * getRightComment() const {return rightComment.c_str();}
00346 void setRightComment(const char * val) {rightComment = val;}
00347
00348 virtual ImportedFileNode *getNextImportedFileNodeSibling() const;
00350 };
00351
00367 class ChannelNode : public NEDElement
00368 {
00369 private:
00370 std::string name;
00371 std::string sourceCode;
00372 std::string bannerComment;
00373 std::string rightComment;
00374 std::string trailingComment;
00375 public:
00378 ChannelNode() {applyDefaults();}
00379 ChannelNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00380 virtual ~ChannelNode() {}
00382
00385 virtual const char *getTagName() const {return "channel";}
00386 virtual int getTagCode() const {return NED_CHANNEL;}
00387 virtual int getNumAttributes() const;
00388 virtual const char *getAttributeName(int k) const;
00389 virtual const char *getAttribute(int k) const;
00390 virtual void setAttribute(int k, const char *val);
00391 virtual const char *getAttributeDefault(int k) const;
00393
00396 const char * getName() const {return name.c_str();}
00397 void setName(const char * val) {name = val;}
00398 const char * getSourceCode() const {return sourceCode.c_str();}
00399 void setSourceCode(const char * val) {sourceCode = val;}
00400 const char * getBannerComment() const {return bannerComment.c_str();}
00401 void setBannerComment(const char * val) {bannerComment = val;}
00402 const char * getRightComment() const {return rightComment.c_str();}
00403 void setRightComment(const char * val) {rightComment = val;}
00404 const char * getTrailingComment() const {return trailingComment.c_str();}
00405 void setTrailingComment(const char * val) {trailingComment = val;}
00406
00407 virtual ChannelNode *getNextChannelNodeSibling() const;
00408 virtual ChannelAttrNode *getFirstChannelAttrChild() const;
00409 virtual DisplayStringNode *getFirstDisplayStringChild() const;
00411 };
00412
00427 class ChannelAttrNode : public NEDElement
00428 {
00429 private:
00430 std::string name;
00431 std::string value;
00432 std::string bannerComment;
00433 std::string rightComment;
00434 public:
00437 ChannelAttrNode() {applyDefaults();}
00438 ChannelAttrNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00439 virtual ~ChannelAttrNode() {}
00441
00444 virtual const char *getTagName() const {return "channel-attr";}
00445 virtual int getTagCode() const {return NED_CHANNEL_ATTR;}
00446 virtual int getNumAttributes() const;
00447 virtual const char *getAttributeName(int k) const;
00448 virtual const char *getAttribute(int k) const;
00449 virtual void setAttribute(int k, const char *val);
00450 virtual const char *getAttributeDefault(int k) const;
00452
00455 const char * getName() const {return name.c_str();}
00456 void setName(const char * val) {name = val;}
00457 const char * getValue() const {return value.c_str();}
00458 void setValue(const char * val) {value = val;}
00459 const char * getBannerComment() const {return bannerComment.c_str();}
00460 void setBannerComment(const char * val) {bannerComment = val;}
00461 const char * getRightComment() const {return rightComment.c_str();}
00462 void setRightComment(const char * val) {rightComment = val;}
00463
00464 virtual ChannelAttrNode *getNextChannelAttrNodeSibling() const;
00465 virtual ExpressionNode *getFirstExpressionChild() const;
00467 };
00468
00485 class NetworkNode : public NEDElement
00486 {
00487 private:
00488 std::string name;
00489 std::string typeName;
00490 std::string sourceCode;
00491 std::string bannerComment;
00492 std::string rightComment;
00493 std::string trailingComment;
00494 public:
00497 NetworkNode() {applyDefaults();}
00498 NetworkNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00499 virtual ~NetworkNode() {}
00501
00504 virtual const char *getTagName() const {return "network";}
00505 virtual int getTagCode() const {return NED_NETWORK;}
00506 virtual int getNumAttributes() const;
00507 virtual const char *getAttributeName(int k) const;
00508 virtual const char *getAttribute(int k) const;
00509 virtual void setAttribute(int k, const char *val);
00510 virtual const char *getAttributeDefault(int k) const;
00512
00515 const char * getName() const {return name.c_str();}
00516 void setName(const char * val) {name = val;}
00517 const char * getTypeName() const {return typeName.c_str();}
00518 void setTypeName(const char * val) {typeName = val;}
00519 const char * getSourceCode() const {return sourceCode.c_str();}
00520 void setSourceCode(const char * val) {sourceCode = val;}
00521 const char * getBannerComment() const {return bannerComment.c_str();}
00522 void setBannerComment(const char * val) {bannerComment = val;}
00523 const char * getRightComment() const {return rightComment.c_str();}
00524 void setRightComment(const char * val) {rightComment = val;}
00525 const char * getTrailingComment() const {return trailingComment.c_str();}
00526 void setTrailingComment(const char * val) {trailingComment = val;}
00527
00528 virtual NetworkNode *getNextNetworkNodeSibling() const;
00529 virtual SubstmachinesNode *getFirstSubstmachinesChild() const;
00530 virtual SubstparamsNode *getFirstSubstparamsChild() const;
00532 };
00533
00549 class SimpleModuleNode : public NEDElement
00550 {
00551 private:
00552 std::string name;
00553 std::string sourceCode;
00554 std::string bannerComment;
00555 std::string rightComment;
00556 std::string trailingComment;
00557 public:
00560 SimpleModuleNode() {applyDefaults();}
00561 SimpleModuleNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00562 virtual ~SimpleModuleNode() {}
00564
00567 virtual const char *getTagName() const {return "simple-module";}
00568 virtual int getTagCode() const {return NED_SIMPLE_MODULE;}
00569 virtual int getNumAttributes() const;
00570 virtual const char *getAttributeName(int k) const;
00571 virtual const char *getAttribute(int k) const;
00572 virtual void setAttribute(int k, const char *val);
00573 virtual const char *getAttributeDefault(int k) const;
00575
00578 const char * getName() const {return name.c_str();}
00579 void setName(const char * val) {name = val;}
00580 const char * getSourceCode() const {return sourceCode.c_str();}
00581 void setSourceCode(const char * val) {sourceCode = val;}
00582 const char * getBannerComment() const {return bannerComment.c_str();}
00583 void setBannerComment(const char * val) {bannerComment = val;}
00584 const char * getRightComment() const {return rightComment.c_str();}
00585 void setRightComment(const char * val) {rightComment = val;}
00586 const char * getTrailingComment() const {return trailingComment.c_str();}
00587 void setTrailingComment(const char * val) {trailingComment = val;}
00588
00589 virtual SimpleModuleNode *getNextSimpleModuleNodeSibling() const;
00590 virtual MachinesNode *getFirstMachinesChild() const;
00591 virtual ParamsNode *getFirstParamsChild() const;
00592 virtual GatesNode *getFirstGatesChild() const;
00593 virtual DisplayStringNode *getFirstDisplayStringChild() const;
00595 };
00596
00613 class CompoundModuleNode : public NEDElement
00614 {
00615 private:
00616 std::string name;
00617 std::string sourceCode;
00618 std::string bannerComment;
00619 std::string rightComment;
00620 std::string trailingComment;
00621 public:
00624 CompoundModuleNode() {applyDefaults();}
00625 CompoundModuleNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00626 virtual ~CompoundModuleNode() {}
00628
00631 virtual const char *getTagName() const {return "compound-module";}
00632 virtual int getTagCode() const {return NED_COMPOUND_MODULE;}
00633 virtual int getNumAttributes() const;
00634 virtual const char *getAttributeName(int k) const;
00635 virtual const char *getAttribute(int k) const;
00636 virtual void setAttribute(int k, const char *val);
00637 virtual const char *getAttributeDefault(int k) const;
00639
00642 const char * getName() const {return name.c_str();}
00643 void setName(const char * val) {name = val;}
00644 const char * getSourceCode() const {return sourceCode.c_str();}
00645 void setSourceCode(const char * val) {sourceCode = val;}
00646 const char * getBannerComment() const {return bannerComment.c_str();}
00647 void setBannerComment(const char * val) {bannerComment = val;}
00648 const char * getRightComment() const {return rightComment.c_str();}
00649 void setRightComment(const char * val) {rightComment = val;}
00650 const char * getTrailingComment() const {return trailingComment.c_str();}
00651 void setTrailingComment(const char * val) {trailingComment = val;}
00652
00653 virtual CompoundModuleNode *getNextCompoundModuleNodeSibling() const;
00654 virtual MachinesNode *getFirstMachinesChild() const;
00655 virtual ParamsNode *getFirstParamsChild() const;
00656 virtual GatesNode *getFirstGatesChild() const;
00657 virtual SubmodulesNode *getFirstSubmodulesChild() const;
00658 virtual ConnectionsNode *getFirstConnectionsChild() const;
00659 virtual DisplayStringNode *getFirstDisplayStringChild() const;
00661 };
00662
00675 class ParamsNode : public NEDElement
00676 {
00677 private:
00678 std::string bannerComment;
00679 std::string rightComment;
00680 public:
00683 ParamsNode() {applyDefaults();}
00684 ParamsNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00685 virtual ~ParamsNode() {}
00687
00690 virtual const char *getTagName() const {return "params";}
00691 virtual int getTagCode() const {return NED_PARAMS;}
00692 virtual int getNumAttributes() const;
00693 virtual const char *getAttributeName(int k) const;
00694 virtual const char *getAttribute(int k) const;
00695 virtual void setAttribute(int k, const char *val);
00696 virtual const char *getAttributeDefault(int k) const;
00698
00701 const char * getBannerComment() const {return bannerComment.c_str();}
00702 void setBannerComment(const char * val) {bannerComment = val;}
00703 const char * getRightComment() const {return rightComment.c_str();}
00704 void setRightComment(const char * val) {rightComment = val;}
00705
00706 virtual ParamsNode *getNextParamsNodeSibling() const;
00707 virtual ParamNode *getFirstParamChild() const;
00709 };
00710
00725 class ParamNode : public NEDElement
00726 {
00727 private:
00728 std::string name;
00729 std::string dataType;
00730 std::string bannerComment;
00731 std::string rightComment;
00732 public:
00735 ParamNode() {applyDefaults();}
00736 ParamNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00737 virtual ~ParamNode() {}
00739
00742 virtual const char *getTagName() const {return "param";}
00743 virtual int getTagCode() const {return NED_PARAM;}
00744 virtual int getNumAttributes() const;
00745 virtual const char *getAttributeName(int k) const;
00746 virtual const char *getAttribute(int k) const;
00747 virtual void setAttribute(int k, const char *val);
00748 virtual const char *getAttributeDefault(int k) const;
00750
00753 const char * getName() const {return name.c_str();}
00754 void setName(const char * val) {name = val;}
00755 const char * getDataType() const {return dataType.c_str();}
00756 void setDataType(const char * val) {dataType = val;}
00757 const char * getBannerComment() const {return bannerComment.c_str();}
00758 void setBannerComment(const char * val) {bannerComment = val;}
00759 const char * getRightComment() const {return rightComment.c_str();}
00760 void setRightComment(const char * val) {rightComment = val;}
00761
00762 virtual ParamNode *getNextParamNodeSibling() const;
00764 };
00765
00778 class GatesNode : public NEDElement
00779 {
00780 private:
00781 std::string bannerComment;
00782 std::string rightComment;
00783 public:
00786 GatesNode() {applyDefaults();}
00787 GatesNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00788 virtual ~GatesNode() {}
00790
00793 virtual const char *getTagName() const {return "gates";}
00794 virtual int getTagCode() const {return NED_GATES;}
00795 virtual int getNumAttributes() const;
00796 virtual const char *getAttributeName(int k) const;
00797 virtual const char *getAttribute(int k) const;
00798 virtual void setAttribute(int k, const char *val);
00799 virtual const char *getAttributeDefault(int k) const;
00801
00804 const char * getBannerComment() const {return bannerComment.c_str();}
00805 void setBannerComment(const char * val) {bannerComment = val;}
00806 const char * getRightComment() const {return rightComment.c_str();}
00807 void setRightComment(const char * val) {rightComment = val;}
00808
00809 virtual GatesNode *getNextGatesNodeSibling() const;
00810 virtual GateNode *getFirstGateChild() const;
00812 };
00813
00829 class GateNode : public NEDElement
00830 {
00831 private:
00832 std::string name;
00833 int direction;
00834 bool isVector;
00835 std::string bannerComment;
00836 std::string rightComment;
00837 public:
00840 GateNode() {applyDefaults();}
00841 GateNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00842 virtual ~GateNode() {}
00844
00847 virtual const char *getTagName() const {return "gate";}
00848 virtual int getTagCode() const {return NED_GATE;}
00849 virtual int getNumAttributes() const;
00850 virtual const char *getAttributeName(int k) const;
00851 virtual const char *getAttribute(int k) const;
00852 virtual void setAttribute(int k, const char *val);
00853 virtual const char *getAttributeDefault(int k) const;
00855
00858 const char * getName() const {return name.c_str();}
00859 void setName(const char * val) {name = val;}
00860 int getDirection() const {return direction;}
00861 void setDirection(int val) {direction = val;}
00862 bool getIsVector() const {return isVector;}
00863 void setIsVector(bool val) {isVector = val;}
00864 const char * getBannerComment() const {return bannerComment.c_str();}
00865 void setBannerComment(const char * val) {bannerComment = val;}
00866 const char * getRightComment() const {return rightComment.c_str();}
00867 void setRightComment(const char * val) {rightComment = val;}
00868
00869 virtual GateNode *getNextGateNodeSibling() const;
00871 };
00872
00885 class MachinesNode : public NEDElement
00886 {
00887 private:
00888 std::string bannerComment;
00889 std::string rightComment;
00890 public:
00893 MachinesNode() {applyDefaults();}
00894 MachinesNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00895 virtual ~MachinesNode() {}
00897
00900 virtual const char *getTagName() const {return "machines";}
00901 virtual int getTagCode() const {return NED_MACHINES;}
00902 virtual int getNumAttributes() const;
00903 virtual const char *getAttributeName(int k) const;
00904 virtual const char *getAttribute(int k) const;
00905 virtual void setAttribute(int k, const char *val);
00906 virtual const char *getAttributeDefault(int k) const;
00908
00911 const char * getBannerComment() const {return bannerComment.c_str();}
00912 void setBannerComment(const char * val) {bannerComment = val;}
00913 const char * getRightComment() const {return rightComment.c_str();}
00914 void setRightComment(const char * val) {rightComment = val;}
00915
00916 virtual MachinesNode *getNextMachinesNodeSibling() const;
00917 virtual MachineNode *getFirstMachineChild() const;
00919 };
00920
00934 class MachineNode : public NEDElement
00935 {
00936 private:
00937 std::string name;
00938 std::string bannerComment;
00939 std::string rightComment;
00940 public:
00943 MachineNode() {applyDefaults();}
00944 MachineNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00945 virtual ~MachineNode() {}
00947
00950 virtual const char *getTagName() const {return "machine";}
00951 virtual int getTagCode() const {return NED_MACHINE;}
00952 virtual int getNumAttributes() const;
00953 virtual const char *getAttributeName(int k) const;
00954 virtual const char *getAttribute(int k) const;
00955 virtual void setAttribute(int k, const char *val);
00956 virtual const char *getAttributeDefault(int k) const;
00958
00961 const char * getName() const {return name.c_str();}
00962 void setName(const char * val) {name = val;}
00963 const char * getBannerComment() const {return bannerComment.c_str();}
00964 void setBannerComment(const char * val) {bannerComment = val;}
00965 const char * getRightComment() const {return rightComment.c_str();}
00966 void setRightComment(const char * val) {rightComment = val;}
00967
00968 virtual MachineNode *getNextMachineNodeSibling() const;
00970 };
00971
00984 class SubmodulesNode : public NEDElement
00985 {
00986 private:
00987 std::string bannerComment;
00988 std::string rightComment;
00989 public:
00992 SubmodulesNode() {applyDefaults();}
00993 SubmodulesNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
00994 virtual ~SubmodulesNode() {}
00996
00999 virtual const char *getTagName() const {return "submodules";}
01000 virtual int getTagCode() const {return NED_SUBMODULES;}
01001 virtual int getNumAttributes() const;
01002 virtual const char *getAttributeName(int k) const;
01003 virtual const char *getAttribute(int k) const;
01004 virtual void setAttribute(int k, const char *val);
01005 virtual const char *getAttributeDefault(int k) const;
01007
01010 const char * getBannerComment() const {return bannerComment.c_str();}
01011 void setBannerComment(const char * val) {bannerComment = val;}
01012 const char * getRightComment() const {return rightComment.c_str();}
01013 void setRightComment(const char * val) {rightComment = val;}
01014
01015 virtual SubmodulesNode *getNextSubmodulesNodeSibling() const;
01016 virtual SubmoduleNode *getFirstSubmoduleChild() const;
01018 };
01019
01037 class SubmoduleNode : public NEDElement
01038 {
01039 private:
01040 std::string name;
01041 std::string typeName;
01042 std::string likeParam;
01043 std::string vectorSize;
01044 std::string bannerComment;
01045 std::string rightComment;
01046 public:
01049 SubmoduleNode() {applyDefaults();}
01050 SubmoduleNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01051 virtual ~SubmoduleNode() {}
01053
01056 virtual const char *getTagName() const {return "submodule";}
01057 virtual int getTagCode() const {return NED_SUBMODULE;}
01058 virtual int getNumAttributes() const;
01059 virtual const char *getAttributeName(int k) const;
01060 virtual const char *getAttribute(int k) const;
01061 virtual void setAttribute(int k, const char *val);
01062 virtual const char *getAttributeDefault(int k) const;
01064
01067 const char * getName() const {return name.c_str();}
01068 void setName(const char * val) {name = val;}
01069 const char * getTypeName() const {return typeName.c_str();}
01070 void setTypeName(const char * val) {typeName = val;}
01071 const char * getLikeParam() const {return likeParam.c_str();}
01072 void setLikeParam(const char * val) {likeParam = val;}
01073 const char * getVectorSize() const {return vectorSize.c_str();}
01074 void setVectorSize(const char * val) {vectorSize = val;}
01075 const char * getBannerComment() const {return bannerComment.c_str();}
01076 void setBannerComment(const char * val) {bannerComment = val;}
01077 const char * getRightComment() const {return rightComment.c_str();}
01078 void setRightComment(const char * val) {rightComment = val;}
01079
01080 virtual SubmoduleNode *getNextSubmoduleNodeSibling() const;
01081 virtual ExpressionNode *getFirstExpressionChild() const;
01082 virtual SubstmachinesNode *getFirstSubstmachinesChild() const;
01083 virtual SubstparamsNode *getFirstSubstparamsChild() const;
01084 virtual GatesizesNode *getFirstGatesizesChild() const;
01085 virtual DisplayStringNode *getFirstDisplayStringChild() const;
01087 };
01088
01102 class SubstparamsNode : public NEDElement
01103 {
01104 private:
01105 std::string condition;
01106 std::string bannerComment;
01107 std::string rightComment;
01108 public:
01111 SubstparamsNode() {applyDefaults();}
01112 SubstparamsNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01113 virtual ~SubstparamsNode() {}
01115
01118 virtual const char *getTagName() const {return "substparams";}
01119 virtual int getTagCode() const {return NED_SUBSTPARAMS;}
01120 virtual int getNumAttributes() const;
01121 virtual const char *getAttributeName(int k) const;
01122 virtual const char *getAttribute(int k) const;
01123 virtual void setAttribute(int k, const char *val);
01124 virtual const char *getAttributeDefault(int k) const;
01126
01129 const char * getCondition() const {return condition.c_str();}
01130 void setCondition(const char * val) {condition = val;}
01131 const char * getBannerComment() const {return bannerComment.c_str();}
01132 void setBannerComment(const char * val) {bannerComment = val;}
01133 const char * getRightComment() const {return rightComment.c_str();}
01134 void setRightComment(const char * val) {rightComment = val;}
01135
01136 virtual SubstparamsNode *getNextSubstparamsNodeSibling() const;
01137 virtual ExpressionNode *getFirstExpressionChild() const;
01138 virtual SubstparamNode *getFirstSubstparamChild() const;
01140 };
01141
01156 class SubstparamNode : public NEDElement
01157 {
01158 private:
01159 std::string name;
01160 std::string value;
01161 std::string bannerComment;
01162 std::string rightComment;
01163 public:
01166 SubstparamNode() {applyDefaults();}
01167 SubstparamNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01168 virtual ~SubstparamNode() {}
01170
01173 virtual const char *getTagName() const {return "substparam";}
01174 virtual int getTagCode() const {return NED_SUBSTPARAM;}
01175 virtual int getNumAttributes() const;
01176 virtual const char *getAttributeName(int k) const;
01177 virtual const char *getAttribute(int k) const;
01178 virtual void setAttribute(int k, const char *val);
01179 virtual const char *getAttributeDefault(int k) const;
01181
01184 const char * getName() const {return name.c_str();}
01185 void setName(const char * val) {name = val;}
01186 const char * getValue() const {return value.c_str();}
01187 void setValue(const char * val) {value = val;}
01188 const char * getBannerComment() const {return bannerComment.c_str();}
01189 void setBannerComment(const char * val) {bannerComment = val;}
01190 const char * getRightComment() const {return rightComment.c_str();}
01191 void setRightComment(const char * val) {rightComment = val;}
01192
01193 virtual SubstparamNode *getNextSubstparamNodeSibling() const;
01194 virtual ExpressionNode *getFirstExpressionChild() const;
01196 };
01197
01211 class GatesizesNode : public NEDElement
01212 {
01213 private:
01214 std::string condition;
01215 std::string bannerComment;
01216 std::string rightComment;
01217 public:
01220 GatesizesNode() {applyDefaults();}
01221 GatesizesNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01222 virtual ~GatesizesNode() {}
01224
01227 virtual const char *getTagName() const {return "gatesizes";}
01228 virtual int getTagCode() const {return NED_GATESIZES;}
01229 virtual int getNumAttributes() const;
01230 virtual const char *getAttributeName(int k) const;
01231 virtual const char *getAttribute(int k) const;
01232 virtual void setAttribute(int k, const char *val);
01233 virtual const char *getAttributeDefault(int k) const;
01235
01238 const char * getCondition() const {return condition.c_str();}
01239 void setCondition(const char * val) {condition = val;}
01240 const char * getBannerComment() const {return bannerComment.c_str();}
01241 void setBannerComment(const char * val) {bannerComment = val;}
01242 const char * getRightComment() const {return rightComment.c_str();}
01243 void setRightComment(const char * val) {rightComment = val;}
01244
01245 virtual GatesizesNode *getNextGatesizesNodeSibling() const;
01246 virtual ExpressionNode *getFirstExpressionChild() const;
01247 virtual GatesizeNode *getFirstGatesizeChild() const;
01249 };
01250
01265 class GatesizeNode : public NEDElement
01266 {
01267 private:
01268 std::string name;
01269 std::string vectorSize;
01270 std::string bannerComment;
01271 std::string rightComment;
01272 public:
01275 GatesizeNode() {applyDefaults();}
01276 GatesizeNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01277 virtual ~GatesizeNode() {}
01279
01282 virtual const char *getTagName() const {return "gatesize";}
01283 virtual int getTagCode() const {return NED_GATESIZE;}
01284 virtual int getNumAttributes() const;
01285 virtual const char *getAttributeName(int k) const;
01286 virtual const char *getAttribute(int k) const;
01287 virtual void setAttribute(int k, const char *val);
01288 virtual const char *getAttributeDefault(int k) const;
01290
01293 const char * getName() const {return name.c_str();}
01294 void setName(const char * val) {name = val;}
01295 const char * getVectorSize() const {return vectorSize.c_str();}
01296 void setVectorSize(const char * val) {vectorSize = val;}
01297 const char * getBannerComment() const {return bannerComment.c_str();}
01298 void setBannerComment(const char * val) {bannerComment = val;}
01299 const char * getRightComment() const {return rightComment.c_str();}
01300 void setRightComment(const char * val) {rightComment = val;}
01301
01302 virtual GatesizeNode *getNextGatesizeNodeSibling() const;
01303 virtual ExpressionNode *getFirstExpressionChild() const;
01305 };
01306
01320 class SubstmachinesNode : public NEDElement
01321 {
01322 private:
01323 std::string condition;
01324 std::string bannerComment;
01325 std::string rightComment;
01326 public:
01329 SubstmachinesNode() {applyDefaults();}
01330 SubstmachinesNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01331 virtual ~SubstmachinesNode() {}
01333
01336 virtual const char *getTagName() const {return "substmachines";}
01337 virtual int getTagCode() const {return NED_SUBSTMACHINES;}
01338 virtual int getNumAttributes() const;
01339 virtual const char *getAttributeName(int k) const;
01340 virtual const char *getAttribute(int k) const;
01341 virtual void setAttribute(int k, const char *val);
01342 virtual const char *getAttributeDefault(int k) const;
01344
01347 const char * getCondition() const {return condition.c_str();}
01348 void setCondition(const char * val) {condition = val;}
01349 const char * getBannerComment() const {return bannerComment.c_str();}
01350 void setBannerComment(const char * val) {bannerComment = val;}
01351 const char * getRightComment() const {return rightComment.c_str();}
01352 void setRightComment(const char * val) {rightComment = val;}
01353
01354 virtual SubstmachinesNode *getNextSubstmachinesNodeSibling() const;
01355 virtual ExpressionNode *getFirstExpressionChild() const;
01356 virtual SubstmachineNode *getFirstSubstmachineChild() const;
01358 };
01359
01373 class SubstmachineNode : public NEDElement
01374 {
01375 private:
01376 std::string name;
01377 std::string bannerComment;
01378 std::string rightComment;
01379 public:
01382 SubstmachineNode() {applyDefaults();}
01383 SubstmachineNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01384 virtual ~SubstmachineNode() {}
01386
01389 virtual const char *getTagName() const {return "substmachine";}
01390 virtual int getTagCode() const {return NED_SUBSTMACHINE;}
01391 virtual int getNumAttributes() const;
01392 virtual const char *getAttributeName(int k) const;
01393 virtual const char *getAttribute(int k) const;
01394 virtual void setAttribute(int k, const char *val);
01395 virtual const char *getAttributeDefault(int k) const;
01397
01400 const char * getName() const {return name.c_str();}
01401 void setName(const char * val) {name = val;}
01402 const char * getBannerComment() const {return bannerComment.c_str();}
01403 void setBannerComment(const char * val) {bannerComment = val;}
01404 const char * getRightComment() const {return rightComment.c_str();}
01405 void setRightComment(const char * val) {rightComment = val;}
01406
01407 virtual SubstmachineNode *getNextSubstmachineNodeSibling() const;
01409 };
01410
01424 class ConnectionsNode : public NEDElement
01425 {
01426 private:
01427 bool checkUnconnected;
01428 std::string bannerComment;
01429 std::string rightComment;
01430 public:
01433 ConnectionsNode() {applyDefaults();}
01434 ConnectionsNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01435 virtual ~ConnectionsNode() {}
01437
01440 virtual const char *getTagName() const {return "connections";}
01441 virtual int getTagCode() const {return NED_CONNECTIONS;}
01442 virtual int getNumAttributes() const;
01443 virtual const char *getAttributeName(int k) const;
01444 virtual const char *getAttribute(int k) const;
01445 virtual void setAttribute(int k, const char *val);
01446 virtual const char *getAttributeDefault(int k) const;
01448
01451 bool getCheckUnconnected() const {return checkUnconnected;}
01452 void setCheckUnconnected(bool val) {checkUnconnected = val;}
01453 const char * getBannerComment() const {return bannerComment.c_str();}
01454 void setBannerComment(const char * val) {bannerComment = val;}
01455 const char * getRightComment() const {return rightComment.c_str();}
01456 void setRightComment(const char * val) {rightComment = val;}
01457
01458 virtual ConnectionsNode *getNextConnectionsNodeSibling() const;
01459 virtual ConnectionNode *getFirstConnectionChild() const;
01460 virtual ForLoopNode *getFirstForLoopChild() const;
01462 };
01463
01488 class ConnectionNode : public NEDElement
01489 {
01490 private:
01491 std::string condition;
01492 std::string srcModule;
01493 std::string srcModuleIndex;
01494 std::string srcGate;
01495 bool srcGatePlusplus;
01496 std::string srcGateIndex;
01497 std::string destModule;
01498 std::string destModuleIndex;
01499 std::string destGate;
01500 bool destGatePlusplus;
01501 std::string destGateIndex;
01502 int arrowDirection;
01503 std::string bannerComment;
01504 std::string rightComment;
01505 public:
01508 ConnectionNode() {applyDefaults();}
01509 ConnectionNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01510 virtual ~ConnectionNode() {}
01512
01515 virtual const char *getTagName() const {return "connection";}
01516 virtual int getTagCode() const {return NED_CONNECTION;}
01517 virtual int getNumAttributes() const;
01518 virtual const char *getAttributeName(int k) const;
01519 virtual const char *getAttribute(int k) const;
01520 virtual void setAttribute(int k, const char *val);
01521 virtual const char *getAttributeDefault(int k) const;
01523
01526 const char * getCondition() const {return condition.c_str();}
01527 void setCondition(const char * val) {condition = val;}
01528 const char * getSrcModule() const {return srcModule.c_str();}
01529 void setSrcModule(const char * val) {srcModule = val;}
01530 const char * getSrcModuleIndex() const {return srcModuleIndex.c_str();}
01531 void setSrcModuleIndex(const char * val) {srcModuleIndex = val;}
01532 const char * getSrcGate() const {return srcGate.c_str();}
01533 void setSrcGate(const char * val) {srcGate = val;}
01534 bool getSrcGatePlusplus() const {return srcGatePlusplus;}
01535 void setSrcGatePlusplus(bool val) {srcGatePlusplus = val;}
01536 const char * getSrcGateIndex() const {return srcGateIndex.c_str();}
01537 void setSrcGateIndex(const char * val) {srcGateIndex = val;}
01538 const char * getDestModule() const {return destModule.c_str();}
01539 void setDestModule(const char * val) {destModule = val;}
01540 const char * getDestModuleIndex() const {return destModuleIndex.c_str();}
01541 void setDestModuleIndex(const char * val) {destModuleIndex = val;}
01542 const char * getDestGate() const {return destGate.c_str();}
01543 void setDestGate(const char * val) {destGate = val;}
01544 bool getDestGatePlusplus() const {return destGatePlusplus;}
01545 void setDestGatePlusplus(bool val) {destGatePlusplus = val;}
01546 const char * getDestGateIndex() const {return destGateIndex.c_str();}
01547 void setDestGateIndex(const char * val) {destGateIndex = val;}
01548 int getArrowDirection() const {return arrowDirection;}
01549 void setArrowDirection(int val) {arrowDirection = val;}
01550 const char * getBannerComment() const {return bannerComment.c_str();}
01551 void setBannerComment(const char * val) {bannerComment = val;}
01552 const char * getRightComment() const {return rightComment.c_str();}
01553 void setRightComment(const char * val) {rightComment = val;}
01554
01555 virtual ConnectionNode *getNextConnectionNodeSibling() const;
01556 virtual ExpressionNode *getFirstExpressionChild() const;
01557 virtual ConnAttrNode *getFirstConnAttrChild() const;
01558 virtual DisplayStringNode *getFirstDisplayStringChild() const;
01560 };
01561
01575 class ConnAttrNode : public NEDElement
01576 {
01577 private:
01578 std::string name;
01579 std::string value;
01580 std::string rightComment;
01581 public:
01584 ConnAttrNode() {applyDefaults();}
01585 ConnAttrNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01586 virtual ~ConnAttrNode() {}
01588
01591 virtual const char *getTagName() const {return "conn-attr";}
01592 virtual int getTagCode() const {return NED_CONN_ATTR;}
01593 virtual int getNumAttributes() const;
01594 virtual const char *getAttributeName(int k) const;
01595 virtual const char *getAttribute(int k) const;
01596 virtual void setAttribute(int k, const char *val);
01597 virtual const char *getAttributeDefault(int k) const;
01599
01602 const char * getName() const {return name.c_str();}
01603 void setName(const char * val) {name = val;}
01604 const char * getValue() const {return value.c_str();}
01605 void setValue(const char * val) {value = val;}
01606 const char * getRightComment() const {return rightComment.c_str();}
01607 void setRightComment(const char * val) {rightComment = val;}
01608
01609 virtual ConnAttrNode *getNextConnAttrNodeSibling() const;
01610 virtual ExpressionNode *getFirstExpressionChild() const;
01612 };
01613
01627 class ForLoopNode : public NEDElement
01628 {
01629 private:
01630 std::string bannerComment;
01631 std::string rightComment;
01632 std::string trailingComment;
01633 public:
01636 ForLoopNode() {applyDefaults();}
01637 ForLoopNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01638 virtual ~ForLoopNode() {}
01640
01643 virtual const char *getTagName() const {return "for-loop";}
01644 virtual int getTagCode() const {return NED_FOR_LOOP;}
01645 virtual int getNumAttributes() const;
01646 virtual const char *getAttributeName(int k) const;
01647 virtual const char *getAttribute(int k) const;
01648 virtual void setAttribute(int k, const char *val);
01649 virtual const char *getAttributeDefault(int k) const;
01651
01654 const char * getBannerComment() const {return bannerComment.c_str();}
01655 void setBannerComment(const char * val) {bannerComment = val;}
01656 const char * getRightComment() const {return rightComment.c_str();}
01657 void setRightComment(const char * val) {rightComment = val;}
01658 const char * getTrailingComment() const {return trailingComment.c_str();}
01659 void setTrailingComment(const char * val) {trailingComment = val;}
01660
01661 virtual ForLoopNode *getNextForLoopNodeSibling() const;
01662 virtual LoopVarNode *getFirstLoopVarChild() const;
01663 virtual ConnectionNode *getFirstConnectionChild() const;
01665 };
01666
01682 class LoopVarNode : public NEDElement
01683 {
01684 private:
01685 std::string paramName;
01686 std::string fromValue;
01687 std::string toValue;
01688 std::string bannerComment;
01689 std::string rightComment;
01690 public:
01693 LoopVarNode() {applyDefaults();}
01694 LoopVarNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01695 virtual ~LoopVarNode() {}
01697
01700 virtual const char *getTagName() const {return "loop-var";}
01701 virtual int getTagCode() const {return NED_LOOP_VAR;}
01702 virtual int getNumAttributes() const;
01703 virtual const char *getAttributeName(int k) const;
01704 virtual const char *getAttribute(int k) const;
01705 virtual void setAttribute(int k, const char *val);
01706 virtual const char *getAttributeDefault(int k) const;
01708
01711 const char * getParamName() const {return paramName.c_str();}
01712 void setParamName(const char * val) {paramName = val;}
01713 const char * getFromValue() const {return fromValue.c_str();}
01714 void setFromValue(const char * val) {fromValue = val;}
01715 const char * getToValue() const {return toValue.c_str();}
01716 void setToValue(const char * val) {toValue = val;}
01717 const char * getBannerComment() const {return bannerComment.c_str();}
01718 void setBannerComment(const char * val) {bannerComment = val;}
01719 const char * getRightComment() const {return rightComment.c_str();}
01720 void setRightComment(const char * val) {rightComment = val;}
01721
01722 virtual LoopVarNode *getNextLoopVarNodeSibling() const;
01723 virtual ExpressionNode *getFirstExpressionChild() const;
01725 };
01726
01740 class DisplayStringNode : public NEDElement
01741 {
01742 private:
01743 std::string value;
01744 std::string bannerComment;
01745 std::string rightComment;
01746 public:
01749 DisplayStringNode() {applyDefaults();}
01750 DisplayStringNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01751 virtual ~DisplayStringNode() {}
01753
01756 virtual const char *getTagName() const {return "display-string";}
01757 virtual int getTagCode() const {return NED_DISPLAY_STRING;}
01758 virtual int getNumAttributes() const;
01759 virtual const char *getAttributeName(int k) const;
01760 virtual const char *getAttribute(int k) const;
01761 virtual void setAttribute(int k, const char *val);
01762 virtual const char *getAttributeDefault(int k) const;
01764
01767 const char * getValue() const {return value.c_str();}
01768 void setValue(const char * val) {value = val;}
01769 const char * getBannerComment() const {return bannerComment.c_str();}
01770 void setBannerComment(const char * val) {bannerComment = val;}
01771 const char * getRightComment() const {return rightComment.c_str();}
01772 void setRightComment(const char * val) {rightComment = val;}
01773
01774 virtual DisplayStringNode *getNextDisplayStringNodeSibling() const;
01776 };
01777
01789 class ExpressionNode : public NEDElement
01790 {
01791 private:
01792 std::string target;
01793 public:
01796 ExpressionNode() {applyDefaults();}
01797 ExpressionNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01798 virtual ~ExpressionNode() {}
01800
01803 virtual const char *getTagName() const {return "expression";}
01804 virtual int getTagCode() const {return NED_EXPRESSION;}
01805 virtual int getNumAttributes() const;
01806 virtual const char *getAttributeName(int k) const;
01807 virtual const char *getAttribute(int k) const;
01808 virtual void setAttribute(int k, const char *val);
01809 virtual const char *getAttributeDefault(int k) const;
01811
01814 const char * getTarget() const {return target.c_str();}
01815 void setTarget(const char * val) {target = val;}
01816
01817 virtual ExpressionNode *getNextExpressionNodeSibling() const;
01818 virtual OperatorNode *getFirstOperatorChild() const;
01819 virtual FunctionNode *getFirstFunctionChild() const;
01820 virtual ParamRefNode *getFirstParamRefChild() const;
01821 virtual IdentNode *getFirstIdentChild() const;
01822 virtual ConstNode *getFirstConstChild() const;
01824 };
01825
01837 class OperatorNode : public NEDElement
01838 {
01839 private:
01840 std::string name;
01841 public:
01844 OperatorNode() {applyDefaults();}
01845 OperatorNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01846 virtual ~OperatorNode() {}
01848
01851 virtual const char *getTagName() const {return "operator";}
01852 virtual int getTagCode() const {return NED_OPERATOR;}
01853 virtual int getNumAttributes() const;
01854 virtual const char *getAttributeName(int k) const;
01855 virtual const char *getAttribute(int k) const;
01856 virtual void setAttribute(int k, const char *val);
01857 virtual const char *getAttributeDefault(int k) const;
01859
01862 const char * getName() const {return name.c_str();}
01863 void setName(const char * val) {name = val;}
01864
01865 virtual OperatorNode *getNextOperatorNodeSibling() const;
01866 virtual OperatorNode *getFirstOperatorChild() const;
01867 virtual FunctionNode *getFirstFunctionChild() const;
01868 virtual ParamRefNode *getFirstParamRefChild() const;
01869 virtual IdentNode *getFirstIdentChild() const;
01870 virtual ConstNode *getFirstConstChild() const;
01872 };
01873
01885 class FunctionNode : public NEDElement
01886 {
01887 private:
01888 std::string name;
01889 public:
01892 FunctionNode() {applyDefaults();}
01893 FunctionNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01894 virtual ~FunctionNode() {}
01896
01899 virtual const char *getTagName() const {return "function";}
01900 virtual int getTagCode() const {return NED_FUNCTION;}
01901 virtual int getNumAttributes() const;
01902 virtual const char *getAttributeName(int k) const;
01903 virtual const char *getAttribute(int k) const;
01904 virtual void setAttribute(int k, const char *val);
01905 virtual const char *getAttributeDefault(int k) const;
01907
01910 const char * getName() const {return name.c_str();}
01911 void setName(const char * val) {name = val;}
01912
01913 virtual FunctionNode *getNextFunctionNodeSibling() const;
01914 virtual OperatorNode *getFirstOperatorChild() const;
01915 virtual FunctionNode *getFirstFunctionChild() const;
01916 virtual ParamRefNode *getFirstParamRefChild() const;
01917 virtual IdentNode *getFirstIdentChild() const;
01918 virtual ConstNode *getFirstConstChild() const;
01920 };
01921
01938 class ParamRefNode : public NEDElement
01939 {
01940 private:
01941 std::string module;
01942 std::string moduleIndex;
01943 std::string paramName;
01944 std::string paramIndex;
01945 bool isRef;
01946 bool isAncestor;
01947 public:
01950 ParamRefNode() {applyDefaults();}
01951 ParamRefNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
01952 virtual ~ParamRefNode() {}
01954
01957 virtual const char *getTagName() const {return "param-ref";}
01958 virtual int getTagCode() const {return NED_PARAM_REF;}
01959 virtual int getNumAttributes() const;
01960 virtual const char *getAttributeName(int k) const;
01961 virtual const char *getAttribute(int k) const;
01962 virtual void setAttribute(int k, const char *val);
01963 virtual const char *getAttributeDefault(int k) const;
01965
01968 const char * getModule() const {return module.c_str();}
01969 void setModule(const char * val) {module = val;}
01970 const char * getModuleIndex() const {return moduleIndex.c_str();}
01971 void setModuleIndex(const char * val) {moduleIndex = val;}
01972 const char * getParamName() const {return paramName.c_str();}
01973 void setParamName(const char * val) {paramName = val;}
01974 const char * getParamIndex() const {return paramIndex.c_str();}
01975 void setParamIndex(const char * val) {paramIndex = val;}
01976 bool getIsRef() const {return isRef;}
01977 void setIsRef(bool val) {isRef = val;}
01978 bool getIsAncestor() const {return isAncestor;}
01979 void setIsAncestor(bool val) {isAncestor = val;}
01980
01981 virtual ParamRefNode *getNextParamRefNodeSibling() const;
01982 virtual ExpressionNode *getFirstExpressionChild() const;
01984 };
01985
01997 class IdentNode : public NEDElement
01998 {
01999 private:
02000 std::string name;
02001 public:
02004 IdentNode() {applyDefaults();}
02005 IdentNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02006 virtual ~IdentNode() {}
02008
02011 virtual const char *getTagName() const {return "ident";}
02012 virtual int getTagCode() const {return NED_IDENT;}
02013 virtual int getNumAttributes() const;
02014 virtual const char *getAttributeName(int k) const;
02015 virtual const char *getAttribute(int k) const;
02016 virtual void setAttribute(int k, const char *val);
02017 virtual const char *getAttributeDefault(int k) const;
02019
02022 const char * getName() const {return name.c_str();}
02023 void setName(const char * val) {name = val;}
02024
02025 virtual IdentNode *getNextIdentNodeSibling() const;
02027 };
02028
02042 class ConstNode : public NEDElement
02043 {
02044 private:
02045 int type;
02046 std::string text;
02047 std::string value;
02048 public:
02051 ConstNode() {applyDefaults();}
02052 ConstNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02053 virtual ~ConstNode() {}
02055
02058 virtual const char *getTagName() const {return "const";}
02059 virtual int getTagCode() const {return NED_CONST;}
02060 virtual int getNumAttributes() const;
02061 virtual const char *getAttributeName(int k) const;
02062 virtual const char *getAttribute(int k) const;
02063 virtual void setAttribute(int k, const char *val);
02064 virtual const char *getAttributeDefault(int k) const;
02066
02069 int getType() const {return type;}
02070 void setType(int val) {type = val;}
02071 const char * getText() const {return text.c_str();}
02072 void setText(const char * val) {text = val;}
02073 const char * getValue() const {return value.c_str();}
02074 void setValue(const char * val) {value = val;}
02075
02076 virtual ConstNode *getNextConstNodeSibling() const;
02078 };
02079
02094 class CplusplusNode : public NEDElement
02095 {
02096 private:
02097 std::string body;
02098 std::string bannerComment;
02099 std::string rightComment;
02100 std::string trailingComment;
02101 public:
02104 CplusplusNode() {applyDefaults();}
02105 CplusplusNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02106 virtual ~CplusplusNode() {}
02108
02111 virtual const char *getTagName() const {return "cplusplus";}
02112 virtual int getTagCode() const {return NED_CPLUSPLUS;}
02113 virtual int getNumAttributes() const;
02114 virtual const char *getAttributeName(int k) const;
02115 virtual const char *getAttribute(int k) const;
02116 virtual void setAttribute(int k, const char *val);
02117 virtual const char *getAttributeDefault(int k) const;
02119
02122 const char * getBody() const {return body.c_str();}
02123 void setBody(const char * val) {body = val;}
02124 const char * getBannerComment() const {return bannerComment.c_str();}
02125 void setBannerComment(const char * val) {bannerComment = val;}
02126 const char * getRightComment() const {return rightComment.c_str();}
02127 void setRightComment(const char * val) {rightComment = val;}
02128 const char * getTrailingComment() const {return trailingComment.c_str();}
02129 void setTrailingComment(const char * val) {trailingComment = val;}
02130
02131 virtual CplusplusNode *getNextCplusplusNodeSibling() const;
02133 };
02134
02149 class StructDeclNode : public NEDElement
02150 {
02151 private:
02152 std::string name;
02153 std::string bannerComment;
02154 std::string rightComment;
02155 std::string trailingComment;
02156 public:
02159 StructDeclNode() {applyDefaults();}
02160 StructDeclNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02161 virtual ~StructDeclNode() {}
02163
02166 virtual const char *getTagName() const {return "struct-decl";}
02167 virtual int getTagCode() const {return NED_STRUCT_DECL;}
02168 virtual int getNumAttributes() const;
02169 virtual const char *getAttributeName(int k) const;
02170 virtual const char *getAttribute(int k) const;
02171 virtual void setAttribute(int k, const char *val);
02172 virtual const char *getAttributeDefault(int k) const;
02174
02177 const char * getName() const {return name.c_str();}
02178 void setName(const char * val) {name = val;}
02179 const char * getBannerComment() const {return bannerComment.c_str();}
02180 void setBannerComment(const char * val) {bannerComment = val;}
02181 const char * getRightComment() const {return rightComment.c_str();}
02182 void setRightComment(const char * val) {rightComment = val;}
02183 const char * getTrailingComment() const {return trailingComment.c_str();}
02184 void setTrailingComment(const char * val) {trailingComment = val;}
02185
02186 virtual StructDeclNode *getNextStructDeclNodeSibling() const;
02188 };
02189
02205 class ClassDeclNode : public NEDElement
02206 {
02207 private:
02208 std::string name;
02209 bool isCobject;
02210 std::string bannerComment;
02211 std::string rightComment;
02212 std::string trailingComment;
02213 public:
02216 ClassDeclNode() {applyDefaults();}
02217 ClassDeclNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02218 virtual ~ClassDeclNode() {}
02220
02223 virtual const char *getTagName() const {return "class-decl";}
02224 virtual int getTagCode() const {return NED_CLASS_DECL;}
02225 virtual int getNumAttributes() const;
02226 virtual const char *getAttributeName(int k) const;
02227 virtual const char *getAttribute(int k) const;
02228 virtual void setAttribute(int k, const char *val);
02229 virtual const char *getAttributeDefault(int k) const;
02231
02234 const char * getName() const {return name.c_str();}
02235 void setName(const char * val) {name = val;}
02236 bool getIsCobject() const {return isCobject;}
02237 void setIsCobject(bool val) {isCobject = val;}
02238 const char * getBannerComment() const {return bannerComment.c_str();}
02239 void setBannerComment(const char * val) {bannerComment = val;}
02240 const char * getRightComment() const {return rightComment.c_str();}
02241 void setRightComment(const char * val) {rightComment = val;}
02242 const char * getTrailingComment() const {return trailingComment.c_str();}
02243 void setTrailingComment(const char * val) {trailingComment = val;}
02244
02245 virtual ClassDeclNode *getNextClassDeclNodeSibling() const;
02247 };
02248
02263 class MessageDeclNode : public NEDElement
02264 {
02265 private:
02266 std::string name;
02267 std::string bannerComment;
02268 std::string rightComment;
02269 std::string trailingComment;
02270 public:
02273 MessageDeclNode() {applyDefaults();}
02274 MessageDeclNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02275 virtual ~MessageDeclNode() {}
02277
02280 virtual const char *getTagName() const {return "message-decl";}
02281 virtual int getTagCode() const {return NED_MESSAGE_DECL;}
02282 virtual int getNumAttributes() const;
02283 virtual const char *getAttributeName(int k) const;
02284 virtual const char *getAttribute(int k) const;
02285 virtual void setAttribute(int k, const char *val);
02286 virtual const char *getAttributeDefault(int k) const;
02288
02291 const char * getName() const {return name.c_str();}
02292 void setName(const char * val) {name = val;}
02293 const char * getBannerComment() const {return bannerComment.c_str();}
02294 void setBannerComment(const char * val) {bannerComment = val;}
02295 const char * getRightComment() const {return rightComment.c_str();}
02296 void setRightComment(const char * val) {rightComment = val;}
02297 const char * getTrailingComment() const {return trailingComment.c_str();}
02298 void setTrailingComment(const char * val) {trailingComment = val;}
02299
02300 virtual MessageDeclNode *getNextMessageDeclNodeSibling() const;
02302 };
02303
02318 class EnumDeclNode : public NEDElement
02319 {
02320 private:
02321 std::string name;
02322 std::string bannerComment;
02323 std::string rightComment;
02324 std::string trailingComment;
02325 public:
02328 EnumDeclNode() {applyDefaults();}
02329 EnumDeclNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02330 virtual ~EnumDeclNode() {}
02332
02335 virtual const char *getTagName() const {return "enum-decl";}
02336 virtual int getTagCode() const {return NED_ENUM_DECL;}
02337 virtual int getNumAttributes() const;
02338 virtual const char *getAttributeName(int k) const;
02339 virtual const char *getAttribute(int k) const;
02340 virtual void setAttribute(int k, const char *val);
02341 virtual const char *getAttributeDefault(int k) const;
02343
02346 const char * getName() const {return name.c_str();}
02347 void setName(const char * val) {name = val;}
02348 const char * getBannerComment() const {return bannerComment.c_str();}
02349 void setBannerComment(const char * val) {bannerComment = val;}
02350 const char * getRightComment() const {return rightComment.c_str();}
02351 void setRightComment(const char * val) {rightComment = val;}
02352 const char * getTrailingComment() const {return trailingComment.c_str();}
02353 void setTrailingComment(const char * val) {trailingComment = val;}
02354
02355 virtual EnumDeclNode *getNextEnumDeclNodeSibling() const;
02357 };
02358
02375 class EnumNode : public NEDElement
02376 {
02377 private:
02378 std::string name;
02379 std::string extendsName;
02380 std::string sourceCode;
02381 std::string bannerComment;
02382 std::string rightComment;
02383 std::string trailingComment;
02384 public:
02387 EnumNode() {applyDefaults();}
02388 EnumNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02389 virtual ~EnumNode() {}
02391
02394 virtual const char *getTagName() const {return "enum";}
02395 virtual int getTagCode() const {return NED_ENUM;}
02396 virtual int getNumAttributes() const;
02397 virtual const char *getAttributeName(int k) const;
02398 virtual const char *getAttribute(int k) const;
02399 virtual void setAttribute(int k, const char *val);
02400 virtual const char *getAttributeDefault(int k) const;
02402
02405 const char * getName() const {return name.c_str();}
02406 void setName(const char * val) {name = val;}
02407 const char * getExtendsName() const {return extendsName.c_str();}
02408 void setExtendsName(const char * val) {extendsName = val;}
02409 const char * getSourceCode() const {return sourceCode.c_str();}
02410 void setSourceCode(const char * val) {sourceCode = val;}
02411 const char * getBannerComment() const {return bannerComment.c_str();}
02412 void setBannerComment(const char * val) {bannerComment = val;}
02413 const char * getRightComment() const {return rightComment.c_str();}
02414 void setRightComment(const char * val) {rightComment = val;}
02415 const char * getTrailingComment() const {return trailingComment.c_str();}
02416 void setTrailingComment(const char * val) {trailingComment = val;}
02417
02418 virtual EnumNode *getNextEnumNodeSibling() const;
02419 virtual EnumFieldsNode *getFirstEnumFieldsChild() const;
02421 };
02422
02435 class EnumFieldsNode : public NEDElement
02436 {
02437 private:
02438 std::string bannerComment;
02439 std::string rightComment;
02440 public:
02443 EnumFieldsNode() {applyDefaults();}
02444 EnumFieldsNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02445 virtual ~EnumFieldsNode() {}
02447
02450 virtual const char *getTagName() const {return "enum-fields";}
02451 virtual int getTagCode() const {return NED_ENUM_FIELDS;}
02452 virtual int getNumAttributes() const;
02453 virtual const char *getAttributeName(int k) const;
02454 virtual const char *getAttribute(int k) const;
02455 virtual void setAttribute(int k, const char *val);
02456 virtual const char *getAttributeDefault(int k) const;
02458
02461 const char * getBannerComment() const {return bannerComment.c_str();}
02462 void setBannerComment(const char * val) {bannerComment = val;}
02463 const char * getRightComment() const {return rightComment.c_str();}
02464 void setRightComment(const char * val) {rightComment = val;}
02465
02466 virtual EnumFieldsNode *getNextEnumFieldsNodeSibling() const;
02467 virtual EnumFieldNode *getFirstEnumFieldChild() const;
02469 };
02470
02485 class EnumFieldNode : public NEDElement
02486 {
02487 private:
02488 std::string name;
02489 std::string value;
02490 std::string bannerComment;
02491 std::string rightComment;
02492 public:
02495 EnumFieldNode() {applyDefaults();}
02496 EnumFieldNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02497 virtual ~EnumFieldNode() {}
02499
02502 virtual const char *getTagName() const {return "enum-field";}
02503 virtual int getTagCode() const {return NED_ENUM_FIELD;}
02504 virtual int getNumAttributes() const;
02505 virtual const char *getAttributeName(int k) const;
02506 virtual const char *getAttribute(int k) const;
02507 virtual void setAttribute(int k, const char *val);
02508 virtual const char *getAttributeDefault(int k) const;
02510
02513 const char * getName() const {return name.c_str();}
02514 void setName(const char * val) {name = val;}
02515 const char * getValue() const {return value.c_str();}
02516 void setValue(const char * val) {value = val;}
02517 const char * getBannerComment() const {return bannerComment.c_str();}
02518 void setBannerComment(const char * val) {bannerComment = val;}
02519 const char * getRightComment() const {return rightComment.c_str();}
02520 void setRightComment(const char * val) {rightComment = val;}
02521
02522 virtual EnumFieldNode *getNextEnumFieldNodeSibling() const;
02524 };
02525
02542 class MessageNode : public NEDElement
02543 {
02544 private:
02545 std::string name;
02546 std::string extendsName;
02547 std::string sourceCode;
02548 std::string bannerComment;
02549 std::string rightComment;
02550 std::string trailingComment;
02551 public:
02554 MessageNode() {applyDefaults();}
02555 MessageNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02556 virtual ~MessageNode() {}
02558
02561 virtual const char *getTagName() const {return "message";}
02562 virtual int getTagCode() const {return NED_MESSAGE;}
02563 virtual int getNumAttributes() const;
02564 virtual const char *getAttributeName(int k) const;
02565 virtual const char *getAttribute(int k) const;
02566 virtual void setAttribute(int k, const char *val);
02567 virtual const char *getAttributeDefault(int k) const;
02569
02572 const char * getName() const {return name.c_str();}
02573 void setName(const char * val) {name = val;}
02574 const char * getExtendsName() const {return extendsName.c_str();}
02575 void setExtendsName(const char * val) {extendsName = val;}
02576 const char * getSourceCode() const {return sourceCode.c_str();}
02577 void setSourceCode(const char * val) {sourceCode = val;}
02578 const char * getBannerComment() const {return bannerComment.c_str();}
02579 void setBannerComment(const char * val) {bannerComment = val;}
02580 const char * getRightComment() const {return rightComment.c_str();}
02581 void setRightComment(const char * val) {rightComment = val;}
02582 const char * getTrailingComment() const {return trailingComment.c_str();}
02583 void setTrailingComment(const char * val) {trailingComment = val;}
02584
02585 virtual MessageNode *getNextMessageNodeSibling() const;
02586 virtual PropertiesNode *getFirstPropertiesChild() const;
02587 virtual FieldsNode *getFirstFieldsChild() const;
02589 };
02590
02607 class ClassNode : public NEDElement
02608 {
02609 private:
02610 std::string name;
02611 std::string extendsName;
02612 std::string sourceCode;
02613 std::string bannerComment;
02614 std::string rightComment;
02615 std::string trailingComment;
02616 public:
02619 ClassNode() {applyDefaults();}
02620 ClassNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02621 virtual ~ClassNode() {}
02623
02626 virtual const char *getTagName() const {return "class";}
02627 virtual int getTagCode() const {return NED_CLASS;}
02628 virtual int getNumAttributes() const;
02629 virtual const char *getAttributeName(int k) const;
02630 virtual const char *getAttribute(int k) const;
02631 virtual void setAttribute(int k, const char *val);
02632 virtual const char *getAttributeDefault(int k) const;
02634
02637 const char * getName() const {return name.c_str();}
02638 void setName(const char * val) {name = val;}
02639 const char * getExtendsName() const {return extendsName.c_str();}
02640 void setExtendsName(const char * val) {extendsName = val;}
02641 const char * getSourceCode() const {return sourceCode.c_str();}
02642 void setSourceCode(const char * val) {sourceCode = val;}
02643 const char * getBannerComment() const {return bannerComment.c_str();}
02644 void setBannerComment(const char * val) {bannerComment = val;}
02645 const char * getRightComment() const {return rightComment.c_str();}
02646 void setRightComment(const char * val) {rightComment = val;}
02647 const char * getTrailingComment() const {return trailingComment.c_str();}
02648 void setTrailingComment(const char * val) {trailingComment = val;}
02649
02650 virtual ClassNode *getNextClassNodeSibling() const;
02651 virtual PropertiesNode *getFirstPropertiesChild() const;
02652 virtual FieldsNode *getFirstFieldsChild() const;
02654 };
02655
02672 class StructNode : public NEDElement
02673 {
02674 private:
02675 std::string name;
02676 std::string extendsName;
02677 std::string sourceCode;
02678 std::string bannerComment;
02679 std::string rightComment;
02680 std::string trailingComment;
02681 public:
02684 StructNode() {applyDefaults();}
02685 StructNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02686 virtual ~StructNode() {}
02688
02691 virtual const char *getTagName() const {return "struct";}
02692 virtual int getTagCode() const {return NED_STRUCT;}
02693 virtual int getNumAttributes() const;
02694 virtual const char *getAttributeName(int k) const;
02695 virtual const char *getAttribute(int k) const;
02696 virtual void setAttribute(int k, const char *val);
02697 virtual const char *getAttributeDefault(int k) const;
02699
02702 const char * getName() const {return name.c_str();}
02703 void setName(const char * val) {name = val;}
02704 const char * getExtendsName() const {return extendsName.c_str();}
02705 void setExtendsName(const char * val) {extendsName = val;}
02706 const char * getSourceCode() const {return sourceCode.c_str();}
02707 void setSourceCode(const char * val) {sourceCode = val;}
02708 const char * getBannerComment() const {return bannerComment.c_str();}
02709 void setBannerComment(const char * val) {bannerComment = val;}
02710 const char * getRightComment() const {return rightComment.c_str();}
02711 void setRightComment(const char * val) {rightComment = val;}
02712 const char * getTrailingComment() const {return trailingComment.c_str();}
02713 void setTrailingComment(const char * val) {trailingComment = val;}
02714
02715 virtual StructNode *getNextStructNodeSibling() const;
02716 virtual PropertiesNode *getFirstPropertiesChild() const;
02717 virtual FieldsNode *getFirstFieldsChild() const;
02719 };
02720
02733 class FieldsNode : public NEDElement
02734 {
02735 private:
02736 std::string bannerComment;
02737 std::string rightComment;
02738 public:
02741 FieldsNode() {applyDefaults();}
02742 FieldsNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02743 virtual ~FieldsNode() {}
02745
02748 virtual const char *getTagName() const {return "fields";}
02749 virtual int getTagCode() const {return NED_FIELDS;}
02750 virtual int getNumAttributes() const;
02751 virtual const char *getAttributeName(int k) const;
02752 virtual const char *getAttribute(int k) const;
02753 virtual void setAttribute(int k, const char *val);
02754 virtual const char *getAttributeDefault(int k) const;
02756
02759 const char * getBannerComment() const {return bannerComment.c_str();}
02760 void setBannerComment(const char * val) {bannerComment = val;}
02761 const char * getRightComment() const {return rightComment.c_str();}
02762 void setRightComment(const char * val) {rightComment = val;}
02763
02764 virtual FieldsNode *getNextFieldsNodeSibling() const;
02765 virtual FieldNode *getFirstFieldChild() const;
02767 };
02768
02789 class FieldNode : public NEDElement
02790 {
02791 private:
02792 std::string name;
02793 std::string dataType;
02794 bool isAbstract;
02795 bool isReadonly;
02796 bool isVector;
02797 std::string vectorSize;
02798 std::string enumName;
02799 std::string defaultValue;
02800 std::string bannerComment;
02801 std::string rightComment;
02802 public:
02805 FieldNode() {applyDefaults();}
02806 FieldNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02807 virtual ~FieldNode() {}
02809
02812 virtual const char *getTagName() const {return "field";}
02813 virtual int getTagCode() const {return NED_FIELD;}
02814 virtual int getNumAttributes() const;
02815 virtual const char *getAttributeName(int k) const;
02816 virtual const char *getAttribute(int k) const;
02817 virtual void setAttribute(int k, const char *val);
02818 virtual const char *getAttributeDefault(int k) const;
02820
02823 const char * getName() const {return name.c_str();}
02824 void setName(const char * val) {name = val;}
02825 const char * getDataType() const {return dataType.c_str();}
02826 void setDataType(const char * val) {dataType = val;}
02827 bool getIsAbstract() const {return isAbstract;}
02828 void setIsAbstract(bool val) {isAbstract = val;}
02829 bool getIsReadonly() const {return isReadonly;}
02830 void setIsReadonly(bool val) {isReadonly = val;}
02831 bool getIsVector() const {return isVector;}
02832 void setIsVector(bool val) {isVector = val;}
02833 const char * getVectorSize() const {return vectorSize.c_str();}
02834 void setVectorSize(const char * val) {vectorSize = val;}
02835 const char * getEnumName() const {return enumName.c_str();}
02836 void setEnumName(const char * val) {enumName = val;}
02837 const char * getDefaultValue() const {return defaultValue.c_str();}
02838 void setDefaultValue(const char * val) {defaultValue = val;}
02839 const char * getBannerComment() const {return bannerComment.c_str();}
02840 void setBannerComment(const char * val) {bannerComment = val;}
02841 const char * getRightComment() const {return rightComment.c_str();}
02842 void setRightComment(const char * val) {rightComment = val;}
02843
02844 virtual FieldNode *getNextFieldNodeSibling() const;
02846 };
02847
02860 class PropertiesNode : public NEDElement
02861 {
02862 private:
02863 std::string bannerComment;
02864 std::string rightComment;
02865 public:
02868 PropertiesNode() {applyDefaults();}
02869 PropertiesNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02870 virtual ~PropertiesNode() {}
02872
02875 virtual const char *getTagName() const {return "properties";}
02876 virtual int getTagCode() const {return NED_PROPERTIES;}
02877 virtual int getNumAttributes() const;
02878 virtual const char *getAttributeName(int k) const;
02879 virtual const char *getAttribute(int k) const;
02880 virtual void setAttribute(int k, const char *val);
02881 virtual const char *getAttributeDefault(int k) const;
02883
02886 const char * getBannerComment() const {return bannerComment.c_str();}
02887 void setBannerComment(const char * val) {bannerComment = val;}
02888 const char * getRightComment() const {return rightComment.c_str();}
02889 void setRightComment(const char * val) {rightComment = val;}
02890
02891 virtual PropertiesNode *getNextPropertiesNodeSibling() const;
02892 virtual PropertyNode *getFirstPropertyChild() const;
02894 };
02895
02910 class PropertyNode : public NEDElement
02911 {
02912 private:
02913 std::string name;
02914 std::string value;
02915 std::string bannerComment;
02916 std::string rightComment;
02917 public:
02920 PropertyNode() {applyDefaults();}
02921 PropertyNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02922 virtual ~PropertyNode() {}
02924
02927 virtual const char *getTagName() const {return "property";}
02928 virtual int getTagCode() const {return NED_PROPERTY;}
02929 virtual int getNumAttributes() const;
02930 virtual const char *getAttributeName(int k) const;
02931 virtual const char *getAttribute(int k) const;
02932 virtual void setAttribute(int k, const char *val);
02933 virtual const char *getAttributeDefault(int k) const;
02935
02938 const char * getName() const {return name.c_str();}
02939 void setName(const char * val) {name = val;}
02940 const char * getValue() const {return value.c_str();}
02941 void setValue(const char * val) {value = val;}
02942 const char * getBannerComment() const {return bannerComment.c_str();}
02943 void setBannerComment(const char * val) {bannerComment = val;}
02944 const char * getRightComment() const {return rightComment.c_str();}
02945 void setRightComment(const char * val) {rightComment = val;}
02946
02947 virtual PropertyNode *getNextPropertyNodeSibling() const;
02949 };
02950
02962 class UnknownNode : public NEDElement
02963 {
02964 private:
02965 std::string element;
02966 public:
02969 UnknownNode() {applyDefaults();}
02970 UnknownNode(NEDElement *parent) : NEDElement(parent) {applyDefaults();}
02971 virtual ~UnknownNode() {}
02973
02976 virtual const char *getTagName() const {return "unknown";}
02977 virtual int getTagCode() const {return NED_UNKNOWN;}
02978 virtual int getNumAttributes() const;
02979 virtual const char *getAttributeName(int k) const;
02980 virtual const char *getAttribute(int k) const;
02981 virtual void setAttribute(int k, const char *val);
02982 virtual const char *getAttributeDefault(int k) const;
02984
02987 const char * getElement() const {return element.c_str();}
02988 void setElement(const char * val) {element = val;}
02989
02990 virtual UnknownNode *getNextUnknownNodeSibling() const;
02992 };
02993
02999 class NEDElementFactory
03000 {
03001 private:
03002 static NEDElementFactory *f;
03003
03004 NEDElementFactory() {}
03005 public:
03007 virtual ~NEDElementFactory() {}
03009 static NEDElementFactory *getInstance();
03011 virtual NEDElement *createNodeWithTag(const char *tagname);
03013 virtual NEDElement *createNodeWithTag(int tagcode);
03014 };
03015
03016 #endif
03017