nedyyutil.h Source File

NEDXML API: nedyyutil.h Source File
NEDXML API
nedyyutil.h
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
23namespace omnetpp {
24namespace nedxml {
25namespace nedyyutil { // for now
26
27ASTNode *createNedElementWithTag(ParseContext *np, int tagcode, ASTNode *parent=nullptr);
28ASTNode *getOrCreateNedElementWithTag(ParseContext *np, int tagcode, ASTNode *parent);
29
30PropertyElement *addProperty(ParseContext *np, ASTNode *node, const char *name); // directly under the node
31PropertyElement *addComponentProperty(ParseContext *np, ASTNode *node, const char *name); // into ParametersElement child of node
32
33PropertyElement *storeSourceCode(ParseContext *np, ASTNode *node, YYLoc tokenpos); // directly under the node
34PropertyElement *storeComponentSourceCode(ParseContext *np, ASTNode *node, YYLoc tokenpos); // into ParametersElement child
35PropertyElement *setIsNetworkProperty(ParseContext *np, ASTNode *node); // into ParametersElement child
36
37void addComment(ParseContext *np, ASTNode *node, const char *locId, const char *comment, const char *defaultValue);
38void storeFileComment(ParseContext *np, ASTNode *node);
39void storeBannerComment(ParseContext *np, ASTNode *node, YYLoc tokenpos);
40void storeRightComment(ParseContext *np, ASTNode *node, YYLoc tokenpos);
41void storeTrailingComment(ParseContext *np, ASTNode *node, YYLoc tokenpos);
42void storeBannerAndRightComments(ParseContext *np, ASTNode *node, YYLoc pos);
43void storeBannerAndRightComments(ParseContext *np, ASTNode *node, YYLoc firstpos, YYLoc lastpos);
44void storeInnerComments(ParseContext *np, ASTNode *node, YYLoc pos);
45
46ParamElement *addParameter(ParseContext *np, ASTNode *params, YYLoc namepos);
47ParamElement *addParameter(ParseContext *np, ASTNode *params, const char *name, YYLoc namepos);
48GateElement *addGate(ParseContext *np, ASTNode *gates, YYLoc namepos);
49
50void swapConnection(ASTNode *conn);
51
52LiteralElement *createPropertyValue(ParseContext *np, YYLoc textpos);
53LiteralElement *createLiteral(ParseContext *np, int type, YYLoc valuepos, YYLoc textpos);
54LiteralElement *createLiteral(ParseContext *np, int type, const char *value, const char *text);
55LiteralElement *createStringLiteral(ParseContext *np, YYLoc textpos);
56LiteralElement *createQuantityLiteral(ParseContext *np, YYLoc textpos);
57ASTNode *prependMinusSign(ParseContext *np, ASTNode *node);
58
59void addOptionalExpression(ParseContext *np, ASTNode *elem, const char *attrname, YYLoc exprpos, ASTNode *expr);
60void addExpression(ParseContext *np, ASTNode *elem, const char *attrname, YYLoc exprpos, ASTNode *expr);
61
62} // namespace nedyyutil
63} // namespace nedxml
64} // namespace omnetpp
65
66
67#endif
68