Class CallExpression
java.lang.Object
de.fraunhofer.aisec.cpg.graph.Node
de.fraunhofer.aisec.cpg.graph.statements.Statement
de.fraunhofer.aisec.cpg.graph.statements.expressions.Expression
de.fraunhofer.aisec.cpg.graph.statements.expressions.CallExpression
- All Implemented Interfaces:
DeclarationHolder,de.fraunhofer.aisec.cpg.graph.HasBase,HasType,HasType.SecondaryTypeEdge,HasType.TypeListener,Persistable,IVisitable<de.fraunhofer.aisec.cpg.graph.Node>
- Direct Known Subclasses:
ExplicitConstructorInvocation,MemberCallExpression,StaticCallExpression
public class CallExpression extends Expression implements HasType.TypeListener, de.fraunhofer.aisec.cpg.graph.HasBase, HasType.SecondaryTypeEdge
An expression, which calls another function. It has a list of arguments (list of
Expressions) and is connected via the INVOKES edge to its FunctionDeclaration.-
Nested Class Summary
Nested classes/interfaces inherited from class de.fraunhofer.aisec.cpg.graph.Node
de.fraunhofer.aisec.cpg.graph.Node.CompanionNested classes/interfaces inherited from interface de.fraunhofer.aisec.cpg.graph.HasType
HasType.SecondaryTypeEdge, HasType.TypeListener -
Field Summary
Fields Modifier and Type Field Description protected java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<FunctionDeclaration>>invokesConnection to itsFunctionDeclaration.Fields inherited from class de.fraunhofer.aisec.cpg.graph.statements.expressions.Expression
typeFields inherited from class de.fraunhofer.aisec.cpg.graph.Node
Companion, EMPTY_NAME, TO_STRING_STYLE -
Constructor Summary
Constructors Constructor Description CallExpression() -
Method Summary
Modifier and Type Method Description voidaddArgument(Expression expression)voidaddArgument(Expression expression, @Nullable java.lang.String name)voidaddExplicitTemplateParameter(de.fraunhofer.aisec.cpg.graph.Node templateParameter)voidaddExplicitTemplateParameters(java.util.List<de.fraunhofer.aisec.cpg.graph.Node> templateParameters)voidaddTemplateParameter(de.fraunhofer.aisec.cpg.graph.Node templateParam, TemplateDeclaration.TemplateInitialization templateInitialization)voidaddTemplateParameter(Expression expressionTemplateParam, TemplateDeclaration.TemplateInitialization templateInitialization)voidaddTemplateParameter(Type typeTemplateParam, TemplateDeclaration.TemplateInitialization templateInitialization)booleanequals(java.lang.Object o)@NonNull java.util.List<Expression>getArguments()@NonNull java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<Expression>>getArgumentsPropertyEdge()ExpressiongetBase()java.lang.StringgetFqn()@NonNull java.util.List<FunctionDeclaration>getInvokes()java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<FunctionDeclaration>>getInvokesPropertyEdge()java.util.List<Type>getSignature()@Nullable TemplateDeclarationgetTemplateInstantiation()@Nullable java.util.List<de.fraunhofer.aisec.cpg.graph.Node>getTemplateParameters()@Nullable java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<de.fraunhofer.aisec.cpg.graph.Node>>getTemplateParametersPropertyEdge()@Nullable java.util.List<Type>getTypeTemplateParameters()inthashCode()booleaninstantiatesTemplate()voidpossibleSubTypesChanged(HasType src, HasType root, java.util.Set<Type> oldSubTypes)voidremoveRealization(de.fraunhofer.aisec.cpg.graph.Node templateParam)voidreplaceTypeTemplateParameter(Type oldType, Type newType)voidsetArgument(int index, Expression argument)voidsetArguments(java.util.List<Expression> arguments)voidsetBase(Expression base)voidsetFqn(java.lang.String fqn)voidsetInvokes(java.util.List<FunctionDeclaration> invokes)voidsetTemplate(boolean template)voidsetTemplateInstantiation(TemplateDeclaration templateInstantiation)voidsetTemplateParameters(java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<de.fraunhofer.aisec.cpg.graph.Node>> templateParameters)java.lang.StringtoString()voidtypeChanged(HasType src, HasType root, Type oldType)voidupdateTemplateParameters(java.util.Map<de.fraunhofer.aisec.cpg.graph.Node,TemplateDeclaration.TemplateInitialization> initializationType, java.util.List<de.fraunhofer.aisec.cpg.graph.Node> orderedInitializationSignature)voidupdateType(java.util.Collection<Type> typeState)Methods inherited from class de.fraunhofer.aisec.cpg.graph.statements.expressions.Expression
getPossibleSubTypes, getPropagationType, getType, getTypeListeners, refreshType, registerTypeListener, resetTypes, setPossibleSubTypes, setType, unregisterTypeListener, updatePossibleSubtypes, updateTypeMethods inherited from class de.fraunhofer.aisec.cpg.graph.statements.Statement
addDeclaration, getDeclarations, getLocals, getLocalsPropertyEdge, removeLocal, setLocalsMethods inherited from class de.fraunhofer.aisec.cpg.graph.Node
addAnnotations, addNextDFG, addNextEOG, addPrevDFG, addPrevEOG, addTypedef, clearNextEOG, disconnectFromGraph, getAnnotations, getArgumentIndex, getCode, getComment, getFile, getId, getLocation, getName, getNextDFG, getNextEOG, getNextEOGEdges, getPrevDFG, getPrevEOG, getPrevEOGEdges, getTypedefs, isImplicit, isInferred, removeNextDFG, removePrevDFG, removePrevEOGEntry, setAnnotations, setArgumentIndex, setCode, setComment, setFile, setId, setImplicit, setInferred, setLocation, setName, setNextDFG, setNextEOG, setNextEOGEdges, setPrevDFG, setPrevEOG, setPrevEOGEdges, setTypedefsMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface de.fraunhofer.aisec.cpg.graph.DeclarationHolder
addIfNotContains, addIfNotContains, addIfNotContainsMethods inherited from interface de.fraunhofer.aisec.cpg.graph.HasType
setPossibleSubTypes, setTypeMethods inherited from interface de.fraunhofer.aisec.cpg.processing.IVisitable
accept
-
Field Details
-
invokes
protected java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<FunctionDeclaration>> invokesConnection to itsFunctionDeclaration. This will be populated by theCallResolver.
-
-
Constructor Details
-
CallExpression
public CallExpression()
-
-
Method Details
-
getBase
- Specified by:
getBasein interfacede.fraunhofer.aisec.cpg.graph.HasBase
-
setBase
-
getArguments
-
setArgument
-
getArgumentsPropertyEdge
public @NonNull java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<Expression>> getArgumentsPropertyEdge() -
addArgument
-
addArgument
-
setArguments
-
getInvokes
-
getInvokesPropertyEdge
public java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<FunctionDeclaration>> getInvokesPropertyEdge() -
setInvokes
-
getSignature
-
setTemplate
public void setTemplate(boolean template) -
getTemplateParametersPropertyEdge
public @Nullable java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<de.fraunhofer.aisec.cpg.graph.Node>> getTemplateParametersPropertyEdge() -
getTemplateParameters
public @Nullable java.util.List<de.fraunhofer.aisec.cpg.graph.Node> getTemplateParameters() -
getTypeTemplateParameters
-
addTemplateParameter
public void addTemplateParameter(Type typeTemplateParam, TemplateDeclaration.TemplateInitialization templateInitialization) -
replaceTypeTemplateParameter
-
addTemplateParameter
public void addTemplateParameter(Expression expressionTemplateParam, TemplateDeclaration.TemplateInitialization templateInitialization) -
addTemplateParameter
public void addTemplateParameter(de.fraunhofer.aisec.cpg.graph.Node templateParam, TemplateDeclaration.TemplateInitialization templateInitialization) -
addExplicitTemplateParameter
public void addExplicitTemplateParameter(de.fraunhofer.aisec.cpg.graph.Node templateParameter) -
addExplicitTemplateParameters
public void addExplicitTemplateParameters(java.util.List<de.fraunhofer.aisec.cpg.graph.Node> templateParameters) -
removeRealization
public void removeRealization(de.fraunhofer.aisec.cpg.graph.Node templateParam) -
setTemplateParameters
public void setTemplateParameters(java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<de.fraunhofer.aisec.cpg.graph.Node>> templateParameters) -
getTemplateInstantiation
-
setTemplateInstantiation
-
updateTemplateParameters
public void updateTemplateParameters(java.util.Map<de.fraunhofer.aisec.cpg.graph.Node,TemplateDeclaration.TemplateInitialization> initializationType, java.util.List<de.fraunhofer.aisec.cpg.graph.Node> orderedInitializationSignature) -
instantiatesTemplate
public boolean instantiatesTemplate() -
typeChanged
- Specified by:
typeChangedin interfaceHasType.TypeListener
-
possibleSubTypesChanged
- Specified by:
possibleSubTypesChangedin interfaceHasType.TypeListener
-
toString
@NotNull public java.lang.String toString()- Overrides:
toStringin classExpression
-
getFqn
public java.lang.String getFqn() -
setFqn
public void setFqn(java.lang.String fqn) -
equals
public boolean equals(java.lang.Object o)- Overrides:
equalsin classExpression
-
hashCode
public int hashCode()- Overrides:
hashCodein classExpression
-
updateType
- Specified by:
updateTypein interfaceHasType.SecondaryTypeEdge
-