OMNeT++ NEDXML  5.4.1
nedyyutil.h
Go to the documentation of this file.
1 //==========================================================================
2 // nedyyutil.h -
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_NEDYYUTIL_H
18 #define __OMNETPP_NEDXML_NEDYYUTIL_H
19 
20 #include "yyutil.h"
21 #include "nedelements.h"
22 
23 namespace omnetpp {
24 namespace nedxml {
25 namespace nedyyutil { // for now
26 
27 ASTNode *createNedElementWithTag(ParseContext *np, int tagcode, ASTNode *parent=nullptr);
28 ASTNode *getOrCreateNedElementWithTag(ParseContext *np, int tagcode, ASTNode *parent);
29 
30 PropertyElement *addProperty(ParseContext *np, ASTNode *node, const char *name); // directly under the node
31 PropertyElement *addComponentProperty(ParseContext *np, ASTNode *node, const char *name); // into ParametersElement child of node
32 
33 PropertyElement *storeSourceCode(ParseContext *np, ASTNode *node, YYLoc tokenpos); // directly under the node
34 PropertyElement *storeComponentSourceCode(ParseContext *np, ASTNode *node, YYLoc tokenpos); // into ParametersElement child
35 PropertyElement *setIsNetworkProperty(ParseContext *np, ASTNode *node); // into ParametersElement child
36 
37 void addComment(ParseContext *np, ASTNode *node, const char *locId, const char *comment, const char *defaultValue);
38 void storeFileComment(ParseContext *np, ASTNode *node);
39 void storeBannerComment(ParseContext *np, ASTNode *node, YYLoc tokenpos);
40 void storeRightComment(ParseContext *np, ASTNode *node, YYLoc tokenpos);
41 void storeTrailingComment(ParseContext *np, ASTNode *node, YYLoc tokenpos);
43 void storeBannerAndRightComments(ParseContext *np, ASTNode *node, YYLoc firstpos, YYLoc lastpos);
44 void storeInnerComments(ParseContext *np, ASTNode *node, YYLoc pos);
45 
46 ParamElement *addParameter(ParseContext *np, ASTNode *params, YYLoc namepos);
47 ParamElement *addParameter(ParseContext *np, ASTNode *params, const char *name, YYLoc namepos);
48 GateElement *addGate(ParseContext *np, ASTNode *gates, YYLoc namepos);
49 
50 void swapExpressionChildren(ASTNode *node, const char *attr1, const char *attr2);
51 void swapConnection(ASTNode *conn);
52 
53 ExpressionElement *createExpression(ParseContext *np, ASTNode *expr);
54 OperatorElement *createOperator(ParseContext *np, const char *op, ASTNode *operand1, ASTNode *operand2=nullptr, ASTNode *operand3=nullptr);
55 FunctionElement *createFunction(ParseContext *np, const char *funcname, ASTNode *arg1=nullptr, ASTNode *arg2=nullptr, ASTNode *arg3=nullptr, ASTNode *arg4=nullptr, ASTNode *arg5=nullptr, ASTNode *arg6=nullptr, ASTNode *arg7=nullptr, ASTNode *arg8=nullptr, ASTNode *arg9=nullptr, ASTNode *arg10=nullptr);
56 IdentElement *createIdent(ParseContext *np, YYLoc parampos);
57 IdentElement *createIdent(ParseContext *np, YYLoc parampos, YYLoc modulepos, ASTNode *moduleindexoperand=nullptr);
58 LiteralElement *createPropertyValue(ParseContext *np, YYLoc textpos);
59 LiteralElement *createLiteral(ParseContext *np, int type, YYLoc valuepos, YYLoc textpos);
60 LiteralElement *createLiteral(ParseContext *np, int type, const char *value, const char *text);
61 LiteralElement *createStringLiteral(ParseContext *np, YYLoc textpos);
62 LiteralElement *createQuantityLiteral(ParseContext *np, YYLoc textpos);
64 
65 void addOptionalExpression(ParseContext *np, ASTNode *elem, const char *attrname, YYLoc exprpos, ASTNode *expr);
66 void addExpression(ParseContext *np, ASTNode *elem, const char *attrname, YYLoc exprpos, ASTNode *expr);
67 
68 } // namespace nedyyutil
69 } // namespace nedxml
70 } // namespace omnetpp
71 
72 
73 #endif
74 
ASTNode * createNedElementWithTag(ParseContext *np, int tagcode, ASTNode *parent=nullptr)
LiteralElement * createPropertyValue(ParseContext *np, YYLoc textpos)
ASTNode * getOrCreateNedElementWithTag(ParseContext *np, int tagcode, ASTNode *parent)
Definition: yydefs.h:37
ExpressionElement * createExpression(ParseContext *np, ASTNode *expr)
void addComment(ParseContext *np, ASTNode *node, const char *locId, const char *comment, const char *defaultValue)
OperatorElement * createOperator(ParseContext *np, const char *op, ASTNode *operand1, ASTNode *operand2=nullptr, ASTNode *operand3=nullptr)
void addExpression(ParseContext *np, ASTNode *elem, const char *attrname, YYLoc exprpos, ASTNode *expr)
LineColumn pos
void storeRightComment(ParseContext *np, ASTNode *node, YYLoc tokenpos)
void storeTrailingComment(ParseContext *np, ASTNode *node, YYLoc tokenpos)
void storeInnerComments(ParseContext *np, ASTNode *node, YYLoc pos)
PropertyElement * storeComponentSourceCode(ParseContext *np, ASTNode *node, YYLoc tokenpos)
ParamElement * addParameter(ParseContext *np, ASTNode *params, YYLoc namepos)
FunctionElement * createFunction(ParseContext *np, const char *funcname, ASTNode *arg1=nullptr, ASTNode *arg2=nullptr, ASTNode *arg3=nullptr, ASTNode *arg4=nullptr, ASTNode *arg5=nullptr, ASTNode *arg6=nullptr, ASTNode *arg7=nullptr, ASTNode *arg8=nullptr, ASTNode *arg9=nullptr, ASTNode *arg10=nullptr)
LiteralElement * createQuantityLiteral(ParseContext *np, YYLoc textpos)
IdentElement * createIdent(ParseContext *np, YYLoc parampos)
LiteralElement * createStringLiteral(ParseContext *np, YYLoc textpos)
Definition: yydefs.h:48
void addOptionalExpression(ParseContext *np, ASTNode *elem, const char *attrname, YYLoc exprpos, ASTNode *expr)
ASTNode * prependMinusSign(ParseContext *np, ASTNode *node)
PropertyElement * addComponentProperty(ParseContext *np, ASTNode *node, const char *name)
void swapConnection(ASTNode *conn)
void storeBannerAndRightComments(ParseContext *np, ASTNode *node, YYLoc pos)
GateElement * addGate(ParseContext *np, ASTNode *gates, YYLoc namepos)
PropertyElement * storeSourceCode(ParseContext *np, ASTNode *node, YYLoc tokenpos)
Definition: astbuilder.h:25
PropertyElement * addProperty(ParseContext *np, ASTNode *node, const char *name)
void swapExpressionChildren(ASTNode *node, const char *attr1, const char *attr2)
Definition: astnode.h:75
void storeFileComment(ParseContext *np, ASTNode *node)
PropertyElement * setIsNetworkProperty(ParseContext *np, ASTNode *node)
LiteralElement * createLiteral(ParseContext *np, int type, YYLoc valuepos, YYLoc textpos)
void storeBannerComment(ParseContext *np, ASTNode *node, YYLoc tokenpos)