Class FunctionDeclaration
java.lang.Object
de.fraunhofer.aisec.cpg.graph.Node
de.fraunhofer.aisec.cpg.graph.declarations.Declaration
de.fraunhofer.aisec.cpg.graph.declarations.ValueDeclaration
de.fraunhofer.aisec.cpg.graph.declarations.FunctionDeclaration
- All Implemented Interfaces:
DeclarationHolder,HasType,Persistable,IVisitable<de.fraunhofer.aisec.cpg.graph.Node>
- Direct Known Subclasses:
MethodDeclaration
public class FunctionDeclaration extends ValueDeclaration implements DeclarationHolder
Represents the declaration or definition of a function.
-
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 StatementbodyThe function body.protected java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<ParamVariableDeclaration>>parametersThe list of function parameters.protected java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<RecordDeclaration>>recordsClasses and Structs can be declared inside a function and are only valid within the function.protected java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<Type>>throwsTypesFields inherited from class de.fraunhofer.aisec.cpg.graph.declarations.ValueDeclaration
possibleSubTypes, typeFields inherited from class de.fraunhofer.aisec.cpg.graph.Node
Companion, EMPTY_NAME, TO_STRING_STYLE -
Constructor Summary
Constructors Constructor Description FunctionDeclaration() -
Method Summary
Modifier and Type Method Description voidaddDeclaration(@NonNull Declaration declaration)Adds the specified declaration to this declaration holder.voidaddOverriddenBy(FunctionDeclaration functionDeclaration)voidaddOverriddenBy(java.util.Collection<? extends FunctionDeclaration> c)voidaddOverrides(FunctionDeclaration functionDeclaration)voidaddParameter(ParamVariableDeclaration paramVariableDeclaration)voidaddThrowTypes(Type type)voidaddThrowTypes(java.util.Collection<Type> collection)booleanequals(java.lang.Object o)StatementgetBody()<T> @Nullable TgetBodyStatementAs(int i, java.lang.Class<T> clazz)java.util.List<Declaration>getDeclarations()java.util.List<Expression>getDefaultParameters()java.util.List<Type>getDefaultParameterSignature()FunctionDeclarationgetDefinition()java.util.List<FunctionDeclaration>getOverriddenBy()java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<FunctionDeclaration>>getOverriddenByPropertyEdge()java.util.List<FunctionDeclaration>getOverrides()java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<FunctionDeclaration>>getOverridesPropertyEdge()java.util.List<ParamVariableDeclaration>getParameters()java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<ParamVariableDeclaration>>getParametersPropertyEdge()java.util.List<RecordDeclaration>getRecords()java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<RecordDeclaration>>getRecordsPropertyEdge()java.lang.StringgetSignature()java.util.List<Type>getSignatureTypes()java.util.List<Type>getThrowsTypes()java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<Type>>getThrowsTypesPropertyEdge()java.util.Optional<VariableDeclaration>getVariableDeclarationByName(java.lang.String name)Looks for a variable declaration by the given name.booleanhasBody()inthashCode()booleanhasSameSignature(FunctionDeclaration targetFunctionDeclaration)booleanhasSignature(java.util.List<Type> targetSignature)booleanisDefinition()booleanisOverrideCandidate(FunctionDeclaration other)voidremoveParameter(ParamVariableDeclaration paramVariableDeclaration)voidsetBody(Statement body)voidsetDefinition(FunctionDeclaration definition)voidsetIsDefinition(boolean definition)voidsetParameters(java.util.List<ParamVariableDeclaration> parameters)voidsetRecords(java.util.List<RecordDeclaration> records)voidsetThrowsTypes(java.util.List<Type> throwsTypes)java.lang.StringtoString()Methods inherited from class de.fraunhofer.aisec.cpg.graph.declarations.ValueDeclaration
getPossibleSubTypes, getPropagationType, getType, getTypeListeners, refreshType, registerTypeListener, resetTypes, setPossibleSubTypes, setType, unregisterTypeListener, updatePossibleSubtypes, updateTypeMethods 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
-
body
The function body. Usually aCompoundStatement. -
records
protected java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<RecordDeclaration>> recordsClasses and Structs can be declared inside a function and are only valid within the function. -
parameters
protected java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<ParamVariableDeclaration>> parametersThe list of function parameters. -
throwsTypes
-
-
Constructor Details
-
FunctionDeclaration
public FunctionDeclaration()
-
-
Method Details
-
hasBody
public boolean hasBody() -
getSignature
public java.lang.String getSignature() -
hasSameSignature
-
hasSignature
-
isOverrideCandidate
-
getOverriddenBy
-
getOverriddenByPropertyEdge
public java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<FunctionDeclaration>> getOverriddenByPropertyEdge() -
addOverriddenBy
-
addOverriddenBy
-
getOverrides
-
getOverridesPropertyEdge
public java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<FunctionDeclaration>> getOverridesPropertyEdge() -
addOverrides
-
getThrowsTypes
-
getThrowsTypesPropertyEdge
public java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<Type>> getThrowsTypesPropertyEdge() -
setThrowsTypes
-
addThrowTypes
-
addThrowTypes
-
getBody
-
getBodyStatementAs
public <T> @Nullable T getBodyStatementAs(int i, java.lang.Class<T> clazz) -
setBody
-
getParameters
-
getDefaultParameters
-
getDefaultParameterSignature
-
getSignatureTypes
-
getParametersPropertyEdge
public java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<ParamVariableDeclaration>> getParametersPropertyEdge() -
addParameter
-
removeParameter
-
setParameters
-
getVariableDeclarationByName
Looks for a variable declaration by the given name.- Parameters:
name- the name of the variable- Returns:
- an optional value containing the variable declaration if found
-
toString
@NotNull public java.lang.String toString()- Overrides:
toStringin classValueDeclaration
-
equals
public boolean equals(java.lang.Object o)- Overrides:
equalsin classValueDeclaration
-
hashCode
public int hashCode()- Overrides:
hashCodein classValueDeclaration
-
getDefinition
-
isDefinition
public boolean isDefinition() -
setIsDefinition
public void setIsDefinition(boolean definition) -
setDefinition
-
getRecords
-
getRecordsPropertyEdge
public java.util.List<de.fraunhofer.aisec.cpg.graph.edge.PropertyEdge<RecordDeclaration>> getRecordsPropertyEdge() -
setRecords
-
addDeclaration
Description copied from interface:DeclarationHolderAdds the specified declaration to this declaration holder. Ideally, the declaration holder should use theDeclarationHolder.addIfNotContains(Collection, Declaration)method to consistently add declarations.- Specified by:
addDeclarationin interfaceDeclarationHolder- Parameters:
declaration- the declaration
-
getDeclarations
- Specified by:
getDeclarationsin interfaceDeclarationHolder
-