20 #ifndef __OMNETPP_NEDXML_ASTNODE_H 21 #define __OMNETPP_NEDXML_ASTNODE_H 25 #pragma warning(disable: 4996) 89 static long numCreated;
90 static long numExisting;
93 static bool stringToBool(
const char *s);
94 static const char *boolToString(
bool b);
95 static int stringToEnum(
const char *s,
const char *vals[],
int nums[],
int n);
96 static const char *enumToString(
int b,
const char *vals[],
int nums[],
int n);
97 static void validateEnum(
int b,
const char *vals[],
int nums[],
int n);
122 virtual ASTNode *dup()
const = 0;
127 virtual ASTNode *dupTree()
const;
137 virtual const char *getTagName()
const = 0;
143 virtual int getTagCode()
const = 0;
148 virtual long getId()
const;
153 virtual void setId(
long id);
159 virtual const char *getSourceLocation()
const;
165 virtual void setSourceLocation(
const char *loc);
177 virtual void setSourceRegion(
const SourceRegion& region);
189 virtual void applyDefaults();
195 virtual int getNumAttributes()
const = 0;
204 virtual const char *getAttributeName(
int k)
const = 0;
210 virtual int lookupAttribute(
const char *attr)
const;
220 virtual const char *getAttribute(
int k)
const = 0;
228 virtual const char *getAttribute(
const char *attr)
const;
238 virtual void setAttribute(
int k,
const char *value) = 0;
246 virtual void setAttribute(
const char *attr,
const char *value);
256 virtual const char *getAttributeDefault(
int k)
const = 0;
264 virtual const char *getAttributeDefault(
const char *attr)
const;
273 virtual ASTNode *getParent()
const;
279 virtual ASTNode *getFirstChild()
const;
285 virtual ASTNode *getLastChild()
const;
302 virtual ASTNode *getNextSibling()
const;
308 virtual ASTNode *getPrevSibling()
const;
315 virtual void appendChild(
ASTNode *node);
338 virtual ASTNode *getFirstChildWithTag(
int tagcode)
const;
354 virtual ASTNode *getNextSiblingWithTag(
int tagcode)
const;
359 virtual int getNumChildren()
const;
364 virtual int getNumChildrenWithTag(
int tagcode)
const;
374 ASTNode *getFirstChildWithAttribute(
int tagcode,
const char *attr,
const char *attrvalue=
nullptr);
380 ASTNode *getParentWithTag(
int tagcode);
404 virtual void setUserData(
UserData *data);
410 virtual UserData *getUserData()
const;
#define NEDXML_API
Definition: nedxmldefs.h:31
int endColumn
Definition: astnode.h:63
ASTNode MsgElement
Definition: astnode.h:415
int endLine
Definition: astnode.h:62
virtual ~ASTNodeFactory()
Definition: astnode.h:425
static long getNumExisting()
Definition: astnode.h:395
UserData()
Definition: astnode.h:44
int startLine
Definition: astnode.h:60
Subclass from this if you want to attach extra data to ASTNode objects.
Definition: astnode.h:40
Definition: astbuilder.h:25
int startColumn
Definition: astnode.h:61
SourceRegion()
Definition: astnode.h:59
Stores a line:col..line:col region in a source file. Used for mapping ASTNodes back to the source cod...
Definition: astnode.h:57
ASTNode * createElementWithTag(ParseContext *np, ASTNodeFactory *factory, int tagcode, ASTNode *parent=nullptr)
ASTNode NedElement
Definition: astnode.h:414
static long getNumCreated()
Definition: astnode.h:389
virtual ~UserData()
Definition: astnode.h:47
Base class for ASTNode factories.
Definition: astnode.h:422