10 #ifndef _EMBEDDED_RPC__SYMBOLSCANNER_H_ 11 #define _EMBEDDED_RPC__SYMBOLSCANNER_H_ 13 #include "AstWalker.h" 14 #include "types/AliasType.h" 15 #include "types/EnumMember.h" 16 #include "types/EnumType.h" 17 #include "types/Interface.h" 18 #include "types/Program.h" 19 #include "types/StructType.h" 20 #include "types/SymbolScope.h" 21 #include "types/UnionType.h" 683 #endif // _EMBEDDED_RPC__SYMBOLSCANNER_H_ virtual AstNode * handleStructMember(AstNode *node, bottom_up)
This function end handle struct member.
Definition: SymbolScanner.cpp:729
void addDoxygenComments(Symbol *symbol, AstNode *above, AstNode *trailing)
This function sets to given symbol given doxygen comments.
Definition: SymbolScanner.cpp:1686
virtual ~SymbolScanner()
Destructor.
Definition: SymbolScanner.h:76
Annotation::program_lang_t getAnnotationLang(AstNode *annotationNode)
Helper function to get programming language type if specified for which is annotation intended...
Definition: SymbolScanner.cpp:1539
DataType * lookupDataTypeByName(const Token &tok, SymbolScope *scope, bool recursive=true)
This function returns pointer to new type object.
Definition: SymbolScanner.cpp:1315
virtual AstNode * handleEnumMember(AstNode *node, bottom_up)
This function end handle enum member.
Definition: SymbolScanner.cpp:252
void checkAnnotationBeforeAdding(AstNode *annotation, Symbol *symbol)
This function check annotation just before it will be added to symbol.
Definition: SymbolScanner.cpp:1562
bool containsStructEnumDeclaration(const AstNode *typeNode)
Returns true when given Astnode is enum or structure declaration.
Definition: SymbolScanner.cpp:1339
DataType * lookupDataType(const AstNode *typeNode)
This function returns pointer to new type object.
Definition: SymbolScanner.cpp:1345
Scans for symbol names.
Definition: SymbolScanner.h:32
bool rhsIsAStringLiteral(AstNode *rhs)
Determines if the right hand side of a constant declaration is a string literal.
Definition: SymbolScanner.cpp:130
Member of a struct.
Definition: StructMember.h:38
uint64_t getIntExprValue(const AstNode *exprNode)
This function returns token integer value.
Definition: SymbolScanner.cpp:1433
Interface * m_currentInterface
Definition: SymbolScanner.h:88
virtual AstNode * handleStruct(AstNode *node, top_down)
This function start handle struct.
Definition: SymbolScanner.cpp:628
StructType * m_currentStruct
Definition: SymbolScanner.h:89
virtual AstNode * handleUnaryOp(AstNode *node, bottom_up)
This function end handle unary operator.
Definition: SymbolScanner.cpp:533
virtual AstNode * handleConst(AstNode *node, bottom_up)
This function handles a constant definition.
Definition: SymbolScanner.cpp:53
Typedef.
Definition: AliasType.h:26
Homogeneous AST node class.
Definition: AstNode.h:36
virtual AstNode * handleParam(AstNode *node, top_down)
This function start handle function parameter.
Definition: SymbolScanner.cpp:1177
DataType * getDataTypeForConst(AstNode *typeNode)
This function returns the data type for a constant variable.
Definition: SymbolScanner.cpp:135
Performs a depth-first walk of an AST.
Definition: AstWalker.h:41
Program declaration.
Definition: Program.h:28
Structure data type.
Definition: StructType.h:29
Base class for all named declarations in the IDL.
Definition: Symbol.h:28
Value * getAnnotationValue(AstNode *annotationNode)
Helper function to get Value from annotation AstNode.
Definition: SymbolScanner.cpp:1523
virtual AstNode * handleEnum(AstNode *node, top_down)
This function end handle enum.
Definition: SymbolScanner.cpp:185
void addGlobalSymbol(Symbol *symbol)
This function add symbol into global symbol scope.
Definition: SymbolScanner.cpp:1771
SymbolScanner(SymbolScope *globals, std::string fileName)
This function is constructor of symbol scanner class.
Definition: SymbolScanner.h:61
virtual AstNode * handleProgram(AstNode *node, top_down)
This function start handle program.
Definition: SymbolScanner.cpp:602
bool enumMemberHasValue(AstNode *enumMember)
Check to see if enum member is assigned a value by the user.
Definition: SymbolScanner.cpp:290
virtual AstNode * handleExpr(AstNode *node, bottom_up)
This function start handle expression.
Definition: SymbolScanner.cpp:1308
Value * getValueForConst(AstNode *const node, DataType *const constDataType)
Gets the value object for the const variable.
Definition: SymbolScanner.cpp:67
Abstract base class for values of arbitrary types.
Definition: Value.h:27
EnumType * m_currentEnum
Definition: SymbolScanner.h:91
Program * m_currentProgram
Definition: SymbolScanner.h:90
virtual AstNode * handleInterface(AstNode *node, top_down)
This function start handle interface.
Definition: SymbolScanner.cpp:987
virtual AstNode * handleFunction(AstNode *node, top_down)
This function start handle function.
Definition: SymbolScanner.cpp:1016
Program * getProgram()
Program is out of global symbol scope.
Definition: SymbolScanner.h:83
A scoped namespace containing symbols.
Definition: SymbolScope.h:28
StructMember * createCallbackParam(StructMember *structMember, const std::string &name)
This function creates new function parameter.
Definition: SymbolScanner.cpp:1701
bool rhsIsAnExpression(AstNode *rhs)
Determines if the right hand side of a constant declaration is an expression.
Definition: SymbolScanner.cpp:126
void addAnnotations(AstNode *childTok, Symbol *symbol)
This function add annotations to vector of symbol annotations.
Definition: SymbolScanner.cpp:1476
Base class for data types.
Definition: DataType.h:26
SymbolScope * m_globals
Definition: SymbolScanner.h:87
Encapsulates all information about a token.
Definition: Token.h:60
DataType * createArrayType(const AstNode *typeNode)
This function returns pointer to new array object.
Definition: SymbolScanner.cpp:1382
Value * getValueFromSymbol(Token &tok)
Get value from symbol table for name defined by given token.
Definition: SymbolScanner.cpp:1397
Specifier type to select bottom-up handler using ADL.
Definition: AstWalker.h:81
virtual AstNode * handleUnionCase(AstNode *node, top_down)
Definition: SymbolScanner.cpp:863
Enumerate data type.
Definition: EnumType.h:28
virtual AstNode * handleBinaryOp(AstNode *node, bottom_up)
This function end handle binary operator.
Definition: SymbolScanner.cpp:310
void setParameterDirection(StructMember *param, AstNode *directionNode)
set parameter direction: in, out, inout
Definition: SymbolScanner.cpp:1277
virtual void handleRoot(AstNode *node, bottom_up)
This function is called at the end of scanning.
Definition: SymbolScanner.cpp:33
std::map< std::string, DataType * > m_forwardDeclarations
Definition: SymbolScanner.h:95
DataType * createListType(const AstNode *typeNode)
This function returns pointer to new list object.
Definition: SymbolScanner.cpp:1370
virtual AstNode * handleType(AstNode *node, top_down)
This function start handle type.
Definition: SymbolScanner.cpp:148
Discriminated union data type.
Definition: UnionType.h:28
void scanStructForAnnotations()
Controlling annotations used on structure members.
Definition: SymbolScanner.cpp:1612
An interface that contains functions.
Definition: Interface.h:29
SymbolScanner(SymbolScope *globals)
This function is constructor of symbol scanner class.
Definition: SymbolScanner.h:42
virtual AstNode * handleUnion(AstNode *node, top_down)
Handles Union data type while traversing down the AST.
Definition: SymbolScanner.cpp:765
std::vector< UnionCase * > m_emptyUnionCases
Definition: SymbolScanner.h:94
void removeForwardDeclaration(DataType *dataType)
This function unregister union/structure declarations.
Definition: SymbolScanner.cpp:1755
UnionType * m_currentUnion
Definition: SymbolScanner.h:93
AliasType * m_currentAlias
Definition: SymbolScanner.h:92
Specifier type to select top-down handler using ADL.
Definition: AstWalker.h:78
void addForwardDeclaration(DataType *dataType)
This function registers forward union/structure declarations.
Definition: SymbolScanner.cpp:1727