Package ghidra.program.database.function
Class ReturnParameterDB
- java.lang.Object
-
- ghidra.program.database.function.VariableDB
-
- ghidra.program.database.function.ReturnParameterDB
-
public class ReturnParameterDB extends VariableDB
-
-
Field Summary
-
Fields inherited from class ghidra.program.database.function.VariableDB
function, functionMgr, storage, symbol
-
Fields inherited from interface ghidra.program.model.listing.Parameter
RETURN_NAME, RETURN_ORIDINAL, UNASSIGNED_ORDINAL
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AutoParameterType
getAutoParameterType()
If this is an auto-parameter this method will indicate its type.java.lang.String
getComment()
Get the Comment for this variableDataType
getDataType()
Get the Data Type of this variableint
getFirstUseOffset()
DataType
getFormalDataType()
Get the original formal signature data type before a possible forced indirect was possibly imposed by the functions calling convention.java.lang.String
getName()
Get the Name of this variable or null if not assigned or not-applicableint
getOrdinal()
Returns the ordinal (index) of this parameter within the function signature.SourceType
getSource()
Get the source of this variableVariableStorage
getVariableStorage()
Get the variable storage associated with this variable.boolean
hasAssignedStorage()
boolean
isAutoParameter()
boolean
isForcedIndirect()
If this parameter which was forced by the associated calling convention to be passed as a pointer instead of its original formal type.void
setComment(java.lang.String comment)
Set the comment for this variablevoid
setDataType(DataType type, boolean alignStack, boolean force, SourceType source)
Set the Data Type of this variable.void
setDataType(DataType type, VariableStorage newStorage, boolean force, SourceType source)
Set the Data Type of this variable and the associated storage whose size matches the data type length.void
setDataType(DataType type, SourceType source)
Set the Data Type of this variable using the default alignment behavior (implementation specific).void
setName(java.lang.String name, SourceType source)
Set the name of this variable.-
Methods inherited from class ghidra.program.database.function.VariableDB
compareTo, equals, getFirstStorageVarnode, getFunction, getLastStorageVarnode, getLength, getMinAddress, getProgram, getRegister, getRegisters, getStackOffset, getSymbol, hashCode, hasStackStorage, isCompoundVariable, isEquivalent, isMemoryVariable, isRegisterVariable, isStackVariable, isUniqueVariable, isValid, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ghidra.program.model.listing.Variable
getFirstStorageVarnode, getFunction, getLastStorageVarnode, getLength, getMinAddress, getProgram, getRegister, getRegisters, getStackOffset, getSymbol, hasStackStorage, isCompoundVariable, isEquivalent, isMemoryVariable, isRegisterVariable, isStackVariable, isUniqueVariable, isValid
-
-
-
-
Method Detail
-
getName
public java.lang.String getName()
Description copied from interface:Variable
Get the Name of this variable or null if not assigned or not-applicable- Specified by:
getName
in interfaceVariable
- Overrides:
getName
in classVariableDB
- Returns:
- the name of the variable
-
setName
public void setName(java.lang.String name, SourceType source) throws DuplicateNameException, InvalidInputException
Description copied from interface:Variable
Set the name of this variable.- Specified by:
setName
in interfaceVariable
- Overrides:
setName
in classVariableDB
- Parameters:
name
- the namesource
- the source of this variable name- Throws:
DuplicateNameException
- if the name collides with the name of another variable.InvalidInputException
- if name contains blank characters, is zero length, or is null
-
getComment
public java.lang.String getComment()
Description copied from interface:Variable
Get the Comment for this variable- Specified by:
getComment
in interfaceVariable
- Overrides:
getComment
in classVariableDB
- Returns:
- the comment
-
setComment
public void setComment(java.lang.String comment)
Description copied from interface:Variable
Set the comment for this variable- Specified by:
setComment
in interfaceVariable
- Overrides:
setComment
in classVariableDB
- Parameters:
comment
- the comment
-
getOrdinal
public final int getOrdinal()
Description copied from interface:Parameter
Returns the ordinal (index) of this parameter within the function signature.- Specified by:
getOrdinal
in interfaceParameter
-
setDataType
public void setDataType(DataType type, VariableStorage newStorage, boolean force, SourceType source) throws InvalidInputException, VariableSizeException
Description copied from interface:Variable
Set the Data Type of this variable and the associated storage whose size matches the data type length.NOTE: The storage and source are ignored if the function does not have custom storage enabled.
- Specified by:
setDataType
in interfaceVariable
- Overrides:
setDataType
in classVariableDB
- Parameters:
type
- the data typenewStorage
- properly sized storage for the new data typeforce
- overwrite conflicting variablessource
- variable storage source (used only for function parameters and return)- Throws:
InvalidInputException
- if data type is not a fixed length or violates storage constraints.VariableSizeException
- if force is false and data type size causes a conflict with other variables
-
setDataType
public void setDataType(DataType type, SourceType source) throws InvalidInputException
Description copied from interface:Variable
Set the Data Type of this variable using the default alignment behavior (implementation specific). The given dataType must have a fixed length. If contained within a stack-frame, data-type size will be constrained by existing variables (e.g., equivalent to force=false) Note: stack offset will be maintained for stack variables.- Specified by:
setDataType
in interfaceVariable
- Overrides:
setDataType
in classVariableDB
- Parameters:
type
- the data typesource
- signature source- Throws:
InvalidInputException
- if data type is not a fixed length or violates storage constraints.VariableSizeException
- if data type size causes a conflict with other variables- See Also:
Variable.setDataType(DataType, boolean, boolean, SourceType)
-
setDataType
public void setDataType(DataType type, boolean alignStack, boolean force, SourceType source) throws InvalidInputException
Description copied from interface:Variable
Set the Data Type of this variable. The given dataType must have a fixed length.- Specified by:
setDataType
in interfaceVariable
- Overrides:
setDataType
in classVariableDB
- Parameters:
type
- the data typealignStack
- maintain proper stack alignment/justification if supported by implementation. If false and this is a stack variable, the current stack address/offset will not change. If true, the affect is implementation dependent since alignment can not be performed without access to a compiler specification.force
- overwrite conflicting variablessource
- signature source- Throws:
InvalidInputException
- if data type is not a fixed length or violates storage constraints.VariableSizeException
- if force is false and data type size causes a conflict with other variables
-
getFormalDataType
public DataType getFormalDataType()
Description copied from interface:Parameter
Get the original formal signature data type before a possible forced indirect was possibly imposed by the functions calling convention. TheVariable.getDataType()
method will always return the effective data type which corresponds to the allocated variable storage.- Specified by:
getFormalDataType
in interfaceParameter
- Returns:
- Formal data type. This type will only differ from the
Variable.getDataType()
value if this parameter isForcedIndirect.
-
getSource
public SourceType getSource()
Description copied from interface:Variable
Get the source of this variable- Specified by:
getSource
in interfaceVariable
- Overrides:
getSource
in classVariableDB
- Returns:
- the source of this variable
-
hasAssignedStorage
public boolean hasAssignedStorage()
- Specified by:
hasAssignedStorage
in interfaceVariable
- Overrides:
hasAssignedStorage
in classVariableDB
- Returns:
- true if this variable has been assigned storage. This is equivalent to
Variable.getVariableStorage()
!= null
-
getVariableStorage
public VariableStorage getVariableStorage()
Description copied from interface:Variable
Get the variable storage associated with this variable.- Specified by:
getVariableStorage
in interfaceVariable
- Overrides:
getVariableStorage
in classVariableDB
- Returns:
- the variable storage for this variable
-
getFirstUseOffset
public int getFirstUseOffset()
- Specified by:
getFirstUseOffset
in interfaceVariable
- Returns:
- the first use offset relative to the function entry point.
-
getDataType
public DataType getDataType()
Description copied from interface:Variable
Get the Data Type of this variable- Specified by:
getDataType
in interfaceVariable
- Overrides:
getDataType
in classVariableDB
- Returns:
- the data type of the variable
-
isForcedIndirect
public boolean isForcedIndirect()
Description copied from interface:Parameter
If this parameter which was forced by the associated calling convention to be passed as a pointer instead of its original formal type.- Specified by:
isForcedIndirect
in interfaceParameter
- Returns:
- true if this parameter was forced to be passed as a pointer instead of its original formal type
-
isAutoParameter
public boolean isAutoParameter()
- Specified by:
isAutoParameter
in interfaceParameter
- Returns:
- true if this parameter is automatically generated based upon the associated function calling convention and function signature. An example of such a parameter include the "__return_storage_ptr__" parameter.
-
getAutoParameterType
public AutoParameterType getAutoParameterType()
Description copied from interface:Parameter
If this is an auto-parameter this method will indicate its type.- Specified by:
getAutoParameterType
in interfaceParameter
- Returns:
- auto-parameter type of null if not applicable.
-
-