AstCreator

class AstCreator(val filename: String, val config: Config, val cdtAst: IASTTranslationUnit, val file2OffsetTable: ConcurrentHashMap[String, Array[Int]]) extends AstCreatorBase with AstForTypesCreator with AstForFunctionsCreator with AstForPrimitivesCreator with AstForStatementsCreator with AstForExpressionsCreator with AstNodeBuilder with AstCreatorHelper with MacroHandler

Translates the Eclipse CDT AST into a CPG AST.

class AstCreatorBase
class Object
trait Matchable
class Any

Value members

Concrete methods

def createAst(): DiffGraphBuilder

Inherited methods

def absolutePath(filename: String): String

Absolute path for the given file name

Absolute path for the given file name

Inherited from:
AstCreatorBase
def asChildOfMacroCall(node: IASTNode, ast: Ast): Ast

For the given node, determine if it is expanded from a macro, and if so, create a Call node to represent the macro invocation and attach ast as its child.

For the given node, determine if it is expanded from a macro, and if so, create a Call node to represent the macro invocation and attach ast as its child.

Inherited from:
MacroHandler
protected def astForASMDeclaration(asm: IASTASMDeclaration): Ast
Inherited from:
AstForTypesCreator
protected def astForAliasDeclaration(aliasDeclaration: ICPPASTAliasDeclaration): Ast
Inherited from:
AstForTypesCreator
protected def astForArrayModifier(arrMod: IASTArrayModifier): Ast
protected def astForBlockStatement(blockStmt: IASTCompoundStatement, order: Int): Ast
protected def astForComment(comment: IASTComment): Ast
protected def astForDeclarator(declaration: IASTSimpleDeclaration, declarator: IASTDeclarator, index: Int): Ast
Inherited from:
AstForTypesCreator
protected def astForExpression(expression: IASTExpression): Ast
protected def astForFieldReference(fieldRef: IASTFieldReference): Ast
protected def astForFunctionDeclarator(funcDecl: IASTFunctionDeclarator): Ast
Inherited from:
AstForFunctionsCreator
protected def astForFunctionDefinition(funcDef: IASTFunctionDefinition): Ast
Inherited from:
AstForFunctionsCreator
protected def astForIdentifier(ident: IASTNode): Ast
protected def astForInitializer(declarator: IASTDeclarator, init: IASTInitializer): Ast
Inherited from:
AstForTypesCreator
protected def astForInitializerList(l: IASTInitializerList): Ast
protected def astForLiteral(lit: IASTLiteralExpression): Ast
protected def astForMethodRefForLambda(lambdaExpression: ICPPASTLambdaExpression): Ast
Inherited from:
AstForFunctionsCreator
protected def astForNamespaceAlias(namespaceAlias: ICPPASTNamespaceAlias): Ast
Inherited from:
AstForTypesCreator
protected def astForQualifiedName(qualId: CPPASTQualifiedName): Ast
protected def astForStaticAssert(a: ICPPASTStaticAssertDeclaration): Ast
protected def astsForDeclaration(decl: IASTDeclaration): Seq[Ast]
Inherited from:
AstForTypesCreator
protected def astsForStatement(statement: IASTStatement, argIndex: Int): Seq[Ast]
def blockAst(blockNode: NewBlock, statements: List[Ast]): Ast

For a given block node and statement ASTs, create an AST that represents the block. The main purpose of this method is to increase the readability of the code which creates block asts.

For a given block node and statement ASTs, create an AST that represents the block. The main purpose of this method is to increase the readability of the code which creates block asts.

Inherited from:
AstCreatorBase
def callAst(callNode: NewCall, arguments: Seq[Ast], receiver: Option[Ast], withRecvArgEdge: Boolean): Ast

For a given call node, arguments, and optionally, a receiver, create an AST that represents the call site. The main purpose of this method is to automatically assign the correct argument indices.

For a given call node, arguments, and optionally, a receiver, create an AST that represents the call site. The main purpose of this method is to automatically assign the correct argument indices.

Inherited from:
AstCreatorBase
def controlStructureAst(controlStructureNode: NewControlStructure, condition: Option[Ast], children: List[Ast], placeConditionLast: Boolean): Ast

For a given node, condition AST and children ASTs, create an AST that represents the control structure. The main purpose of this method is to automatically assign the correct condition edges.

For a given node, condition AST and children ASTs, create an AST that represents the control structure. The main purpose of this method is to automatically assign the correct condition edges.

Inherited from:
AstCreatorBase
def expandedFromMacro(node: IASTNode): Option[IASTMacroExpansionLocation]
Inherited from:
MacroHandler
def forAst(forNode: NewControlStructure, locals: Seq[Ast], initAsts: Seq[Ast], conditionAsts: Seq[Ast], updateAsts: Seq[Ast], bodyAst: Ast): Ast
Inherited from:
AstCreatorBase
def globalNamespaceBlock(): NewNamespaceBlock

Create a global namespace block for the given filename

Create a global namespace block for the given filename

Inherited from:
AstCreatorBase
protected def handleUsingDeclaration(usingDecl: ICPPASTUsingDeclaration): Seq[Ast]
Inherited from:
AstForTypesCreator
def isExpandedFromMacro(node: IASTNode): Boolean
Inherited from:
MacroHandler
def methodAst(method: NewMethod, parameters: Seq[NewMethodParameterIn], body: Ast, methodReturn: NewMethodReturn, modifiers: Seq[NewModifier]): Ast

Creates an AST that represents an entire method, including its content.

Creates an AST that represents an entire method, including its content.

Inherited from:
AstCreatorBase
def methodAstWithAnnotations(method: NewMethod, parameters: Seq[Ast], body: Ast, methodReturn: NewMethodReturn, modifiers: Seq[NewModifier], annotations: Seq[Ast]): Ast

Creates an AST that represents an entire method, including its content and with support for both method and parameter annotations.

Creates an AST that represents an entire method, including its content and with support for both method and parameter annotations.

Inherited from:
AstCreatorBase
def methodReturnNode(tfn: String, dtfn: Option[String], line: Option[Integer], column: Option[Integer]): NewMethodReturn

Create a method return node

Create a method return node

Inherited from:
AstCreatorBase
def methodStubAst(method: NewMethod, parameters: Seq[NewMethodParameterIn], methodReturn: NewMethodReturn, modifiers: Seq[NewModifier]): Ast

Creates an AST that represents a method stub, containing information about the method, its parameters, and the return type.

Creates an AST that represents a method stub, containing information about the method, its parameters, and the return type.

Inherited from:
AstCreatorBase
protected def newCallNode(node: IASTNode, name: String, fullname: String, dispatchType: String, argIndex: Int): NewCall
Inherited from:
AstNodeBuilder
protected def newControlStructureNode(node: IASTNode, controlStructureType: String, code: String): NewControlStructure
Inherited from:
AstNodeBuilder
protected def newJumpTarget(node: IASTNode): NewJumpTarget
Inherited from:
AstNodeBuilder
protected def newMethodRefNode(code: String, methodFullName: String, typeFullName: String, node: IASTNode): NewMethodRef
Inherited from:
AstNodeBuilder
protected def newTypeDecl(name: String, fullname: String, filename: String, code: String, astParentType: String, astParentFullName: String, inherits: Seq[String], alias: Option[String], line: Option[Integer], column: Option[Integer]): NewTypeDecl
Inherited from:
AstNodeBuilder
protected def newUnknown(node: IASTNode): NewUnknown
Inherited from:
AstNodeBuilder
@nowarn
def nodeSignature(node: IASTNode): String

The CDT utility method is unfortunately in a class that is marked as deprecated, however, this is because the CDT team would like to discourage its use but at the same time does not plan to remove this code.

The CDT utility method is unfortunately in a class that is marked as deprecated, however, this is because the CDT team would like to discourage its use but at the same time does not plan to remove this code.

Inherited from:
MacroHandler
def returnAst(returnNode: NewReturn, arguments: Seq[Ast]): Ast

For a given return node and arguments, create an AST that represents the return instruction. The main purpose of this method is to automatically assign the correct argument indices.

For a given return node and arguments, create an AST that represents the return instruction. The main purpose of this method is to automatically assign the correct argument indices.

Inherited from:
AstCreatorBase
def setArgumentIndices(arguments: Seq[Ast]): Unit
Inherited from:
AstCreatorBase
def staticInitMethodAst(initAsts: List[Ast], fullName: String, signature: Option[String], returnType: String): Ast
Inherited from:
AstCreatorBase
protected def templateParameters(e: IASTNode): Option[String]
Inherited from:
AstForTypesCreator
def tryCatchAst(tryNode: NewControlStructure, tryBodyAst: Ast, catchAsts: Seq[Ast], finallyAst: Option[Ast]): Ast

For the given try body, catch ASTs and finally AST, create a try-catch-finally AST with orders set correctly for the ossdataflow engine.

For the given try body, catch ASTs and finally AST, create a try-catch-finally AST with orders set correctly for the ossdataflow engine.

Inherited from:
AstCreatorBase
def withArgumentIndex[T <: ExpressionNew](node: T, argIdxOpt: Option[Int]): T
Inherited from:
AstCreatorBase
def withIndex[T, X](nodes: Array[T])(f: (T, Int) => X): Seq[X]
Inherited from:
AstCreatorBase
def withIndex[T, X](nodes: Seq[T])(f: (T, Int) => X): Seq[X]
Inherited from:
AstCreatorBase
def wrapMultipleInBlock(asts: Seq[Ast], lineNumber: Option[Integer]): Ast
Inherited from:
AstCreatorBase

Concrete fields

val cdtAst: IASTTranslationUnit
val file2OffsetTable: ConcurrentHashMap[String, Array[Int]]
val filename: String
protected val logger: Logger
protected val methodAstParentStack: ListBuffer[NewNode]
protected val scope: Scope[String, (NewNode, String), NewNode]
protected val usingDeclarationMappings: Map[String, String]

Inherited fields

val diffGraph: DiffGraphBuilder
Inherited from:
AstCreatorBase