OMNeT++ NEDXML 6.1
Discrete Event Simulation Library
msgtypetable.h
Go to the documentation of this file.
1 //==========================================================================
2 // MSGTYPETABLE.H - part of
3 //
4 // OMNeT++/OMNEST
5 // Discrete System Simulation in C++
6 //
7 //==========================================================================
8 
9 /*--------------------------------------------------------------*
10  Copyright (C) 2002-2017 Andras Varga
11  Copyright (C) 2006-2017 OpenSim Ltd.
12 
13  This file is distributed WITHOUT ANY WARRANTY. See the file
14  `license' for details on this and other legal matters.
15 *--------------------------------------------------------------*/
16 
17 #ifndef __OMNETPP_NEDXML_MSGTYPETABLE_H
18 #define __OMNETPP_NEDXML_MSGTYPETABLE_H
19 
20 #include <iostream>
21 #include <sstream>
22 #include <string>
23 #include <vector>
24 #include <map>
25 #include <set>
26 
27 #include "nedxmldefs.h"
28 
29 namespace omnetpp {
30 namespace nedxml {
31 
32 class CplusplusElement;
33 
40 {
41  public:
42  typedef std::vector<std::string> StringVector;
43 
44  class Property
45  {
46  protected:
47  ASTNode *astNode = nullptr; // pointer to property element in AST
48  std::string name;
49  std::string index;
50  std::map<std::string, StringVector> propertyValue;
51  public:
52  Property() {}
53  Property(const std::string& name, const std::string& index, ASTNode *astNode) : astNode(astNode), name(name), index(index) {}
54  Property(const Property& other) = default;
55  const std::string& getName() const {return name;}
56  const std::string& getIndex() const {return index;}
57  std::string getIndexedName() const;
58  ASTNode *getASTNode() const {return astNode;}
59  StringVector getValue(const std::string& key="") const;
60  std::string getValueAsString() const;
61  void addValue(const std::string& key, const std::string& value);
62  };
63 
64  class Properties
65  {
66  protected:
67  std::vector<Property> properties;
68  public:
69  void add(const Property& p) {properties.push_back(p);}
70  bool empty() const {return properties.empty();}
71  const std::vector<Property>& getAll() const {return properties;}
72  const Property *get(const std::string& name, const std::string& index="") const;
73  bool contains(const std::string& name, const std::string& index="") const {return get(name, index) != nullptr;}
74  };
75 
76  class FieldInfo {
77  public:
78  ASTNode *astNode; // pointer to field element in AST
79 
80  std::string name; // field name in MSG
81  std::string type; // field type in MSG, without 'const' and '*' modifiers
82  std::string typeQName; // fully qualified C++ name of type
83  std::string value; // value (or empty). for arrays, this is the value for one array element (we have no syntax for initializing with a list of values)
84  std::string symbolicConstant; // symbolic name for local field index in the generated class descriptor
85  bool isAbstract; // "abstract" keyword specified for field
86  bool isConst; // "const" keyword specified for field
87  bool byValue; // @byValue(true); whether value should be passed by value (instead of by reference) in setters/getters
88  bool isPointer; // field is a pointer or pointer array ("*" syntax)
89  bool isOwnedPointer; // from @owned; if true, field is a pointer or pointer array, and allocated memory is owned by the object (needs to be duplicated in dup(), and deleted in destructor).
90  // if field type is also cOwnedObject, take()/drop() calls should be generated
91  bool isArray; // field is an array ("[]" or "[size]" syntax)
92  bool isDynamicArray; // if field is a dynamic array
93  bool isFixedArray; // if field is a fixed-size array
94  std::string arraySize; // if field is an array: array size (string inside the square brackets)
95  Properties props; // field properties (name, first value of default key)
96 
97  // data needed for code generation
98  bool isClass; // field type is a class (true) or struct (false)
99  bool iscObject; // field type is derived from cObject
100  bool iscNamedObject; // field type is derived from cNamedObject
101  bool iscOwnedObject; // field type is derived from cOwnedObject
102  std::string baseDataType;// dataType without modifiers like '*' or 'const'
103  std::string dataType; // member C++ datatype
104  std::string argType; // setter C++ argument type
105  std::string returnType; // getter C++ return type
106  std::string mutableReturnType; // mutableGetter C++ return type
107  std::string var; // name of data member variable
108  std::string argName; // setter argument name
109  std::string sizeVar; // data member to store size of dynamic array
110  std::string sizeType; // type of array sizes and array indices
111  std::string getter; // getter function name: "T getter() const;" "const T& getter() const" default value is getFoo
112  std::string getterForUpdate; // mutable getter function name: "T& getterForUpdate();" default value is getFooForUpdate
113  bool hasGetterForUpdate; // whether a getterForUpdate method needs to be generated
114  bool allowReplace; // @allowReplace; whether setter of an owned pointer field is allowed to delete an already-set object
115  std::string remover; // remover function name (for pointers: drop object if owned, set pointer to nullptr, return object)
116  std::string dropper; // deprecated alias for remover
117  std::string clone; // @clone; code to duplicate (one array element of) the field (for owned pointers)
118  std::string setter; // @setter; setter function name
119  std::string inserter; // @inserter; inserter function name (insert element to dynamic array)
120  std::string appender; // @appender; appender function name (append element to dynamic array)
121  std::string eraser; // @eraser; eraser function name (erase element from dynamic array)
122  std::string sizeSetter; // setArraySize() function name
123  std::string sizeGetter; // array size getter function name
124  bool hasStrMethod; // the field's type has an str() method
125  std::string toString; // function to convert data to string, defined in property @toString
126  // if tostring begins with a dot, then it is taken as member function call, parentheses needed in property; otherwise toString is understood as name of a normal function, do not use parentheses
127  // std::string <function>(<datatype>); // @toString(function)
128  // std::string <function>(const <datatype>&); // @toString(function)
129  // const char * <function>(<datatype>); // @toString(function)
130  // const char * <function>(const <datatype>&); // @toString(function)
131  // std::string <datatype>::<function>(...); // @toString(.function(...))
132  // const char * <datatype>::<function>(...); // @toString(.function(...))
133  std::string fromString; // function to convert string to data member, defined in property @fromString
134  // <datatype> <function>(const char *); // @fromString(function)
135  std::string toValue; // function to convert data to cValue, defined in property @toValue; syntax is similar to toString
136  std::string fromValue; // function to convert data from cValue, defined in property @fromValue; syntax is similar to fromString
137  std::string getterConversion; // currently only with strings: ".c_str()"
138  std::string enumName; // from @enum
139  std::string enumQName; // fully qualified type name of enum
140  bool nopack; // @nopack(true)
141  bool isOpaque; // @opaque(true), means that field type is treated as atomic (has no fields), i.e. has no descriptor
142  bool overrideGetter; // @overrideGetter|@override, used when field getter function overrides a function in base class
143  bool overrideSetter; // @overrideSetter|@override, used when field setter function overrides a function in base class
144  bool isCustom; // @custom; if true, do not generate any data member or code for the field.
145  bool isCustomImpl; // @customImpl: if true: do not generate implementation for the field's accessor methods
146 
147  // The following members only affect the generated class descriptor, not the class itself
148  bool isEditable; // @editable(true): field value is editable via the descriptor's setFieldValueFromString() method
149  bool isReplaceable; // @replaceable(true): field value is a pointer which can be set via the descriptor's setFieldStructValuePointer() method
150  bool isResizable; // @resizable(true): field is an array whose size can be set via the descriptor's setFieldArraySize() method
151  };
152 
153  class ClassInfo {
154  public:
155  typedef std::vector<FieldInfo> Fieldlist;
156 
157  ASTNode *astNode = nullptr;
158  std::string keyword; // struct/class/packet from MSG
159  std::string name; // class name from MSG
160  std::string qname; // qualified name from MSG (namespace :: name)
161  Properties props; // class properties
162 
163  bool classInfoComplete = false; // whether following fields are filled in
164  bool classBeingAnalyzed = false;
165  bool fieldsComplete = false; // whether fieldList and baseclassFieldlist are filled in
166  bool fieldsBeingAnalyzed = false;
167 
168  std::string extendsQName; // fully qualified name of base type
169  std::string extendsName; // base type's name from MSG
170  bool customize; // from @customize
171  bool omitGetVerb; // from @omitGetVerb
172  bool isClass; // true=class, false=struct
173  bool isPolymorphic; // whether the type is polymorphic (has virtual member functions)
174  bool iscObject; // whether type is subclassed from cObject
175  bool iscNamedObject; // whether type is subclassed from cNamedObject
176  bool iscOwnedObject; // whether type is subclassed from cOwnedObject
177  bool isAbstract; // whether class can be instantiated (base class not abstract, and has no abstract fields)
178  bool isEnum = false;
179  bool isImported; // whether this type imported from an another msg file
180  bool subclassable; // whether this type can be subclasses (e.g. "int" or final classes cannot)
181  bool supportsPtr; // whether type supports creating a pointer (or pointer array) from it
182  std::string namespaceName;
183  std::string className; // name of actual C++ class or struct generated (<name>_Base when @customize is present)
184  std::string classQName; // className, but fully qualified
185  std::string realClass; // name of intended C++ class, usually the same as <name>
186  std::string baseClass; // C++ base class
187  std::string descriptorClass; // name of C++ descriptor class to be generated
188  std::string fieldNameSuffix; // member variable suffix, e.g. "_var" or "_m"
189 
190  Fieldlist fieldList; // list of fields
191  Fieldlist baseclassFieldlist; // assignments to fields declared in super classes
192 
193  bool generateClass = true;
194  bool generateDescriptor = true;
195  bool generateSettersInDescriptor = true;
196  bool generateCastFunction = false;
197 
198  std::vector<std::string> rootClasses; // root(s) of its C++ class hierarchy
199  StringVector implementsQNames; // qnames of additional base classes, from @implements property
200  std::string beforeChange; // @beforeChange; method to be called before mutator methods
201  std::string str; // @str; expression to be returned from str() method
202 
203  std::string classExtraCode; // code to be inserted into the class declaration
204  std::map<std::string, CplusplusElement*> methodCplusplusBlocks; // keyed by method name
205  mutable std::set<std::string> usedMethodCplusplusBlocks; // collects method names; used during generation
206 
207  // The following members describe how the class should behave when instantiated as field
208  std::string defaultValue; // default value (or empty)
209  bool isOpaque; // from @opaque
210  bool byValue; // from @byValue, default value is false
211  bool isEditable; // from @editable
212  std::string dataTypeBase; // member C++ datatype
213  std::string argTypeBase; // setter C++ argument type
214  std::string returnTypeBase; // getter C++ return type
215  std::string toString; // function to convert data to string, defined in property @toString
216  std::string fromString; // @fromString; function to convert string to data member, defined in property @fromString
217  std::string toValue; // function to convert data to cValue, defined in property @toValue
218  std::string fromValue; // @fromString; function to convert cValue to data member, defined in property @fromValue
219  std::string clone; // @clone; code to clone a dynamically allocated object of this type (for owned pointer fields)
220  std::string getterConversion; // @getterConversion; conversion from storage type to return type in getters
221  };
222 
223  class EnumItem
224  {
225  public:
227  std::string name;
228  std::string value;
229  std::string comment;
230  };
231 
232  class EnumInfo
233  {
234  public:
236  std::string enumName; // name from MSG file
237  std::string enumQName; // qualified name from MSG (namespace :: name)
238  Properties props; // class properties
239  bool isEnumClass = false; // whether this is an enum class
240  std::string baseType; // underlying data type, e.g. "uint8_t"
241  typedef std::vector<EnumItem> FieldList;
242  bool isDeclaration = false; // i.e. not a definition
243  FieldList fieldList; // list of fields
244  };
245 
246  private:
247  Properties globalProperties;
248  std::map<std::string,ClassInfo> definedClasses;
249  std::map<std::string,EnumInfo> definedEnums;
250  std::vector<ASTNode*> importedMsgFiles;
251 
252  protected:
253  void initDescriptors();
254  std::string prefixWithNamespace(const std::string& namespaceName, const std::string& name) {
255  return !namespaceName.empty() ? namespaceName + "::" + name : name;
256  }
257 
258  public:
259  MsgTypeTable() {initDescriptors();}
260  ~MsgTypeTable();
261  StringVector lookupExistingEnumName(const std::string& name, const std::string& contextNamespace);
262  bool isClassDefined(const std::string& classqname) { return definedClasses.find(classqname) != definedClasses.end(); }
263  bool isEnumDefined(const std::string& enumqname) { return definedEnums.find(enumqname) != definedEnums.end(); }
264  ClassInfo *findClassInfo(const std::string& classqname);
265  ClassInfo& getClassInfo(const std::string& classqname);
266  const EnumInfo& getEnumInfo(const std::string& qname);
267  const Properties& getGlobalProperties() const {return globalProperties;}
268  void storeMsgFile(ASTNode *tree) {importedMsgFiles.push_back(tree);}
269  void addGlobalProperty(const Property& p) {globalProperties.add(p);}
270  void addClass(const ClassInfo& classInfo) {definedClasses[classInfo.qname] = classInfo;} // TODO assert not already there
271  void addEnum(const EnumInfo& enumInfo) {definedEnums[enumInfo.enumQName] = enumInfo;} //TODO assert not already there
272 };
273 
274 } // namespace nedxml
275 } // namespace omnetpp
276 
277 
278 #endif
279 
280 
omnetpp::nedxml::MsgTypeTable::Property::index
std::string index
Definition: msgtypetable.h:49
omnetpp::nedxml::MsgTypeTable::MsgTypeTable
MsgTypeTable()
Definition: msgtypetable.h:259
omnetpp::nedxml::MsgTypeTable::FieldInfo::isConst
bool isConst
Definition: msgtypetable.h:86
omnetpp::nedxml::MsgTypeTable::Properties::add
void add(const Property &p)
Definition: msgtypetable.h:69
omnetpp::nedxml::MsgTypeTable::ClassInfo::rootClasses
std::vector< std::string > rootClasses
Definition: msgtypetable.h:198
omnetpp::nedxml::MsgTypeTable::FieldInfo::symbolicConstant
std::string symbolicConstant
Definition: msgtypetable.h:84
omnetpp::nedxml::MsgTypeTable::ClassInfo::iscOwnedObject
bool iscOwnedObject
Definition: msgtypetable.h:176
omnetpp::nedxml::MsgTypeTable::ClassInfo::fromValue
std::string fromValue
Definition: msgtypetable.h:218
omnetpp::nedxml::MsgTypeTable::FieldInfo::sizeType
std::string sizeType
Definition: msgtypetable.h:110
omnetpp::nedxml::MsgTypeTable::EnumInfo
Definition: msgtypetable.h:232
omnetpp::nedxml::MsgTypeTable::FieldInfo::var
std::string var
Definition: msgtypetable.h:107
omnetpp::nedxml::MsgTypeTable::Property::name
std::string name
Definition: msgtypetable.h:48
omnetpp::nedxml::MsgTypeTable::Properties::empty
bool empty() const
Definition: msgtypetable.h:70
omnetpp::nedxml::MsgTypeTable::FieldInfo::isOwnedPointer
bool isOwnedPointer
Definition: msgtypetable.h:89
omnetpp::nedxml::MsgTypeTable::Properties
Definition: msgtypetable.h:64
omnetpp::nedxml::MsgTypeTable::FieldInfo::fromString
std::string fromString
Definition: msgtypetable.h:133
omnetpp::nedxml::MsgTypeTable::EnumInfo::fieldList
FieldList fieldList
Definition: msgtypetable.h:243
omnetpp::nedxml::MsgTypeTable::FieldInfo::name
std::string name
Definition: msgtypetable.h:80
omnetpp::nedxml::MsgTypeTable::ClassInfo
Definition: msgtypetable.h:153
omnetpp::nedxml::MsgTypeTable::FieldInfo::overrideSetter
bool overrideSetter
Definition: msgtypetable.h:143
omnetpp::nedxml::MsgTypeTable::FieldInfo::nopack
bool nopack
Definition: msgtypetable.h:140
omnetpp::nedxml::MsgTypeTable::FieldInfo::isResizable
bool isResizable
Definition: msgtypetable.h:150
omnetpp::nedxml::MsgTypeTable::storeMsgFile
void storeMsgFile(ASTNode *tree)
Definition: msgtypetable.h:268
omnetpp::nedxml::MsgTypeTable::ClassInfo::extendsQName
std::string extendsQName
Definition: msgtypetable.h:168
omnetpp::nedxml::MsgTypeTable::FieldInfo::hasStrMethod
bool hasStrMethod
Definition: msgtypetable.h:124
omnetpp::nedxml::MsgTypeTable::FieldInfo::fromValue
std::string fromValue
Definition: msgtypetable.h:136
omnetpp::nedxml::MsgTypeTable::FieldInfo::hasGetterForUpdate
bool hasGetterForUpdate
Definition: msgtypetable.h:113
omnetpp::nedxml::MsgTypeTable::addGlobalProperty
void addGlobalProperty(const Property &p)
Definition: msgtypetable.h:269
omnetpp::nedxml::MsgTypeTable::StringVector
std::vector< std::string > StringVector
Definition: msgtypetable.h:42
omnetpp::nedxml::MsgTypeTable::ClassInfo::methodCplusplusBlocks
std::map< std::string, CplusplusElement * > methodCplusplusBlocks
Definition: msgtypetable.h:204
omnetpp::nedxml::MsgTypeTable::ClassInfo::isEditable
bool isEditable
Definition: msgtypetable.h:211
omnetpp::nedxml::MsgTypeTable::ClassInfo::isClass
bool isClass
Definition: msgtypetable.h:172
omnetpp::nedxml::MsgTypeTable::FieldInfo::isReplaceable
bool isReplaceable
Definition: msgtypetable.h:149
omnetpp::nedxml::MsgTypeTable::Property::getName
const std::string & getName() const
Definition: msgtypetable.h:55
omnetpp::nedxml::MsgTypeTable::FieldInfo::toValue
std::string toValue
Definition: msgtypetable.h:135
omnetpp::nedxml::MsgTypeTable::EnumItem::comment
std::string comment
Definition: msgtypetable.h:229
omnetpp::nedxml::MsgTypeTable::ClassInfo::defaultValue
std::string defaultValue
Definition: msgtypetable.h:208
omnetpp::nedxml::MsgTypeTable::ClassInfo::toString
std::string toString
Definition: msgtypetable.h:215
omnetpp::nedxml::MsgTypeTable::addClass
void addClass(const ClassInfo &classInfo)
Definition: msgtypetable.h:270
omnetpp::nedxml::MsgTypeTable::FieldInfo::isDynamicArray
bool isDynamicArray
Definition: msgtypetable.h:92
omnetpp::nedxml::MsgTypeTable::EnumItem::value
std::string value
Definition: msgtypetable.h:228
omnetpp::nedxml::MsgTypeTable::Property::propertyValue
std::map< std::string, StringVector > propertyValue
Definition: msgtypetable.h:50
omnetpp::nedxml::MsgTypeTable::ClassInfo::argTypeBase
std::string argTypeBase
Definition: msgtypetable.h:213
omnetpp::nedxml::MsgTypeTable::FieldInfo::isOpaque
bool isOpaque
Definition: msgtypetable.h:141
omnetpp::nedxml::MsgTypeTable::FieldInfo::enumQName
std::string enumQName
Definition: msgtypetable.h:139
omnetpp::nedxml::MsgTypeTable::FieldInfo::allowReplace
bool allowReplace
Definition: msgtypetable.h:114
omnetpp::nedxml::MsgTypeTable::isClassDefined
bool isClassDefined(const std::string &classqname)
Definition: msgtypetable.h:262
omnetpp::nedxml::MsgTypeTable::ClassInfo::clone
std::string clone
Definition: msgtypetable.h:219
omnetpp::nedxml::MsgTypeTable::ClassInfo::realClass
std::string realClass
Definition: msgtypetable.h:185
omnetpp::nedxml::MsgTypeTable::EnumItem::astNode
ASTNode * astNode
Definition: msgtypetable.h:226
omnetpp::nedxml::MsgTypeTable::ClassInfo::fieldList
Fieldlist fieldList
Definition: msgtypetable.h:190
NEDXML_API
#define NEDXML_API
Definition: nedxmldefs.h:31
omnetpp::nedxml::MsgTypeTable::ClassInfo::implementsQNames
StringVector implementsQNames
Definition: msgtypetable.h:199
omnetpp::nedxml::MsgTypeTable::FieldInfo::getterConversion
std::string getterConversion
Definition: msgtypetable.h:137
omnetpp::nedxml::MsgTypeTable::FieldInfo::iscOwnedObject
bool iscOwnedObject
Definition: msgtypetable.h:101
omnetpp::nedxml::MsgTypeTable::ClassInfo::usedMethodCplusplusBlocks
std::set< std::string > usedMethodCplusplusBlocks
Definition: msgtypetable.h:205
omnetpp::nedxml::MsgTypeTable::ClassInfo::namespaceName
std::string namespaceName
Definition: msgtypetable.h:182
omnetpp::nedxml::MsgTypeTable::FieldInfo::mutableReturnType
std::string mutableReturnType
Definition: msgtypetable.h:106
omnetpp::nedxml::MsgTypeTable::ClassInfo::keyword
std::string keyword
Definition: msgtypetable.h:158
omnetpp::nedxml::MsgTypeTable::EnumInfo::enumQName
std::string enumQName
Definition: msgtypetable.h:237
omnetpp::nedxml::MsgTypeTable::FieldInfo::sizeVar
std::string sizeVar
Definition: msgtypetable.h:109
omnetpp::nedxml::MsgTypeTable::FieldInfo::dataType
std::string dataType
Definition: msgtypetable.h:103
omnetpp
Definition: astbuilder.h:25
omnetpp::nedxml::MsgTypeTable::FieldInfo::getter
std::string getter
Definition: msgtypetable.h:111
omnetpp::nedxml::MsgTypeTable::FieldInfo::isPointer
bool isPointer
Definition: msgtypetable.h:88
omnetpp::nedxml::MsgTypeTable::FieldInfo::baseDataType
std::string baseDataType
Definition: msgtypetable.h:102
omnetpp::nedxml::MsgTypeTable::EnumItem
Definition: msgtypetable.h:223
omnetpp::nedxml::MsgTypeTable::FieldInfo::sizeSetter
std::string sizeSetter
Definition: msgtypetable.h:122
omnetpp::nedxml::MsgTypeTable::EnumInfo::props
Properties props
Definition: msgtypetable.h:238
omnetpp::nedxml::MsgTypeTable::ClassInfo::toValue
std::string toValue
Definition: msgtypetable.h:217
omnetpp::nedxml::MsgTypeTable::EnumInfo::enumName
std::string enumName
Definition: msgtypetable.h:236
omnetpp::nedxml::MsgTypeTable::ClassInfo::beforeChange
std::string beforeChange
Definition: msgtypetable.h:200
omnetpp::nedxml::MsgTypeTable::Properties::getAll
const std::vector< Property > & getAll() const
Definition: msgtypetable.h:71
omnetpp::nedxml::MsgTypeTable::FieldInfo::setter
std::string setter
Definition: msgtypetable.h:118
omnetpp::nedxml::MsgTypeTable
Definition: msgtypetable.h:39
omnetpp::nedxml::MsgTypeTable::ClassInfo::omitGetVerb
bool omitGetVerb
Definition: msgtypetable.h:171
omnetpp::nedxml::MsgTypeTable::ClassInfo::returnTypeBase
std::string returnTypeBase
Definition: msgtypetable.h:214
omnetpp::nedxml::MsgTypeTable::FieldInfo::value
std::string value
Definition: msgtypetable.h:83
omnetpp::nedxml::MsgTypeTable::ClassInfo::classQName
std::string classQName
Definition: msgtypetable.h:184
omnetpp::nedxml::MsgTypeTable::Property
Definition: msgtypetable.h:44
omnetpp::nedxml::MsgTypeTable::isEnumDefined
bool isEnumDefined(const std::string &enumqname)
Definition: msgtypetable.h:263
omnetpp::nedxml::MsgTypeTable::Property::getIndex
const std::string & getIndex() const
Definition: msgtypetable.h:56
omnetpp::nedxml::MsgTypeTable::ClassInfo::baseClass
std::string baseClass
Definition: msgtypetable.h:186
omnetpp::nedxml::MsgTypeTable::FieldInfo::byValue
bool byValue
Definition: msgtypetable.h:87
omnetpp::nedxml::MsgTypeTable::FieldInfo::arraySize
std::string arraySize
Definition: msgtypetable.h:94
omnetpp::nedxml::MsgTypeTable::FieldInfo::inserter
std::string inserter
Definition: msgtypetable.h:119
omnetpp::nedxml::MsgTypeTable::Property::getASTNode
ASTNode * getASTNode() const
Definition: msgtypetable.h:58
omnetpp::nedxml::MsgTypeTable::Property::Property
Property()
Definition: msgtypetable.h:52
omnetpp::nedxml::MsgTypeTable::ClassInfo::getterConversion
std::string getterConversion
Definition: msgtypetable.h:220
omnetpp::nedxml::MsgTypeTable::ClassInfo::Fieldlist
std::vector< FieldInfo > Fieldlist
Definition: msgtypetable.h:155
omnetpp::nedxml::MsgTypeTable::FieldInfo::isFixedArray
bool isFixedArray
Definition: msgtypetable.h:93
omnetpp::nedxml::MsgTypeTable::EnumInfo::baseType
std::string baseType
Definition: msgtypetable.h:240
omnetpp::nedxml::MsgTypeTable::FieldInfo::toString
std::string toString
Definition: msgtypetable.h:125
omnetpp::nedxml::MsgTypeTable::ClassInfo::props
Properties props
Definition: msgtypetable.h:161
omnetpp::nedxml::MsgTypeTable::FieldInfo::isCustom
bool isCustom
Definition: msgtypetable.h:144
omnetpp::nedxml::MsgTypeTable::addEnum
void addEnum(const EnumInfo &enumInfo)
Definition: msgtypetable.h:271
omnetpp::nedxml::MsgTypeTable::FieldInfo::overrideGetter
bool overrideGetter
Definition: msgtypetable.h:142
omnetpp::nedxml::ASTNode
Definition: astnode.h:87
omnetpp::nedxml::MsgTypeTable::FieldInfo::isClass
bool isClass
Definition: msgtypetable.h:98
omnetpp::nedxml::MsgTypeTable::FieldInfo::isCustomImpl
bool isCustomImpl
Definition: msgtypetable.h:145
omnetpp::nedxml::MsgTypeTable::FieldInfo::isArray
bool isArray
Definition: msgtypetable.h:91
omnetpp::nedxml::MsgTypeTable::EnumInfo::astNode
ASTNode * astNode
Definition: msgtypetable.h:235
omnetpp::nedxml::MsgTypeTable::ClassInfo::iscObject
bool iscObject
Definition: msgtypetable.h:174
omnetpp::nedxml::MsgTypeTable::FieldInfo::argName
std::string argName
Definition: msgtypetable.h:108
omnetpp::nedxml::MsgTypeTable::ClassInfo::fromString
std::string fromString
Definition: msgtypetable.h:216
omnetpp::nedxml::MsgTypeTable::ClassInfo::extendsName
std::string extendsName
Definition: msgtypetable.h:169
omnetpp::nedxml::MsgTypeTable::FieldInfo::eraser
std::string eraser
Definition: msgtypetable.h:121
omnetpp::nedxml::MsgTypeTable::FieldInfo::iscNamedObject
bool iscNamedObject
Definition: msgtypetable.h:100
omnetpp::nedxml::MsgTypeTable::FieldInfo::argType
std::string argType
Definition: msgtypetable.h:104
omnetpp::nedxml::MsgTypeTable::ClassInfo::name
std::string name
Definition: msgtypetable.h:159
omnetpp::nedxml::MsgTypeTable::ClassInfo::dataTypeBase
std::string dataTypeBase
Definition: msgtypetable.h:212
omnetpp::nedxml::MsgTypeTable::FieldInfo::clone
std::string clone
Definition: msgtypetable.h:117
omnetpp::nedxml::MsgTypeTable::ClassInfo::byValue
bool byValue
Definition: msgtypetable.h:210
omnetpp::nedxml::MsgTypeTable::FieldInfo::getterForUpdate
std::string getterForUpdate
Definition: msgtypetable.h:112
omnetpp::nedxml::MsgTypeTable::prefixWithNamespace
std::string prefixWithNamespace(const std::string &namespaceName, const std::string &name)
Definition: msgtypetable.h:254
omnetpp::nedxml::MsgTypeTable::FieldInfo::iscObject
bool iscObject
Definition: msgtypetable.h:99
omnetpp::nedxml::MsgTypeTable::FieldInfo::type
std::string type
Definition: msgtypetable.h:81
omnetpp::nedxml::MsgTypeTable::ClassInfo::customize
bool customize
Definition: msgtypetable.h:170
omnetpp::nedxml::MsgTypeTable::Property::Property
Property(const std::string &name, const std::string &index, ASTNode *astNode)
Definition: msgtypetable.h:53
omnetpp::nedxml::MsgTypeTable::ClassInfo::fieldNameSuffix
std::string fieldNameSuffix
Definition: msgtypetable.h:188
omnetpp::nedxml::MsgTypeTable::FieldInfo::isAbstract
bool isAbstract
Definition: msgtypetable.h:85
omnetpp::nedxml::MsgTypeTable::ClassInfo::isPolymorphic
bool isPolymorphic
Definition: msgtypetable.h:173
omnetpp::nedxml::MsgTypeTable::FieldInfo::typeQName
std::string typeQName
Definition: msgtypetable.h:82
nedxmldefs.h
omnetpp::nedxml::MsgTypeTable::ClassInfo::classExtraCode
std::string classExtraCode
Definition: msgtypetable.h:203
omnetpp::nedxml::MsgTypeTable::FieldInfo::returnType
std::string returnType
Definition: msgtypetable.h:105
omnetpp::nedxml::MsgTypeTable::ClassInfo::supportsPtr
bool supportsPtr
Definition: msgtypetable.h:181
omnetpp::nedxml::MsgTypeTable::ClassInfo::str
std::string str
Definition: msgtypetable.h:201
omnetpp::nedxml::MsgTypeTable::ClassInfo::descriptorClass
std::string descriptorClass
Definition: msgtypetable.h:187
omnetpp::nedxml::MsgTypeTable::EnumInfo::FieldList
std::vector< EnumItem > FieldList
Definition: msgtypetable.h:241
omnetpp::nedxml::MsgTypeTable::ClassInfo::isImported
bool isImported
Definition: msgtypetable.h:179
omnetpp::nedxml::MsgTypeTable::ClassInfo::subclassable
bool subclassable
Definition: msgtypetable.h:180
omnetpp::nedxml::MsgTypeTable::FieldInfo::props
Properties props
Definition: msgtypetable.h:95
omnetpp::nedxml::MsgTypeTable::getGlobalProperties
const Properties & getGlobalProperties() const
Definition: msgtypetable.h:267
omnetpp::nedxml::MsgTypeTable::ClassInfo::qname
std::string qname
Definition: msgtypetable.h:160
omnetpp::nedxml::MsgTypeTable::FieldInfo::sizeGetter
std::string sizeGetter
Definition: msgtypetable.h:123
omnetpp::nedxml::MsgTypeTable::FieldInfo::astNode
ASTNode * astNode
Definition: msgtypetable.h:78
omnetpp::nedxml::MsgTypeTable::Properties::properties
std::vector< Property > properties
Definition: msgtypetable.h:67
omnetpp::nedxml::MsgTypeTable::FieldInfo::dropper
std::string dropper
Definition: msgtypetable.h:116
omnetpp::nedxml::MsgTypeTable::FieldInfo::isEditable
bool isEditable
Definition: msgtypetable.h:148
omnetpp::nedxml::MsgTypeTable::ClassInfo::isOpaque
bool isOpaque
Definition: msgtypetable.h:209
omnetpp::nedxml::MsgTypeTable::EnumItem::name
std::string name
Definition: msgtypetable.h:227
omnetpp::nedxml::MsgTypeTable::FieldInfo::appender
std::string appender
Definition: msgtypetable.h:120
omnetpp::nedxml::MsgTypeTable::ClassInfo::iscNamedObject
bool iscNamedObject
Definition: msgtypetable.h:175
omnetpp::nedxml::MsgTypeTable::FieldInfo
Definition: msgtypetable.h:76
omnetpp::nedxml::MsgTypeTable::ClassInfo::className
std::string className
Definition: msgtypetable.h:183
omnetpp::nedxml::MsgTypeTable::FieldInfo::enumName
std::string enumName
Definition: msgtypetable.h:138
omnetpp::nedxml::MsgTypeTable::FieldInfo::remover
std::string remover
Definition: msgtypetable.h:115
omnetpp::nedxml::MsgTypeTable::ClassInfo::baseclassFieldlist
Fieldlist baseclassFieldlist
Definition: msgtypetable.h:191
omnetpp::nedxml::MsgTypeTable::Properties::contains
bool contains(const std::string &name, const std::string &index="") const
Definition: msgtypetable.h:73
omnetpp::nedxml::MsgTypeTable::ClassInfo::isAbstract
bool isAbstract
Definition: msgtypetable.h:177