Ghidra 11.3.2
Ghidra internal decompiler documentation.
Loading...
Searching...
No Matches
ghidra::ProtoStore Class Referenceabstract

A collection parameter descriptions making up a function prototype. More...

#include <fspec.hh>

Inheritance diagram for ghidra::ProtoStore:
[legend]

Public Member Functions

virtual ~ProtoStore (void)
 Constructor.
 
virtual ProtoParametersetInput (int4 i, const string &nm, const ParameterPieces &pieces)=0
 Establish name, data-type, storage of a specific input parameter.
 
virtual void clearInput (int4 i)=0
 Clear the input parameter at the specified slot.
 
virtual void clearAllInputs (void)=0
 Clear all input parameters (and any backing symbols)
 
virtual int4 getNumInputs (void) const =0
 Get the number of input parameters for this prototype.
 
virtual ProtoParametergetInput (int4 i)=0
 Get the i-th input parameter (or NULL if it doesn't exist)
 
virtual ProtoParametersetOutput (const ParameterPieces &piece)=0
 Establish the data-type and storage of the return value.
 
virtual void clearOutput (void)=0
 Clear the return value to TYPE_VOID.
 
virtual ProtoParametergetOutput (void)=0
 Get the return-value description.
 
virtual ProtoStoreclone (void) const =0
 Clone the entire collection of parameter descriptions.
 
virtual void encode (Encoder &encoder) const =0
 Encode any parameters that are not backed by symbols to a stream.
 
virtual void decode (Decoder &decoder, ProtoModel *model)=0
 Restore any internal parameter descriptions from a stream.
 

Detailed Description

A collection parameter descriptions making up a function prototype.

A unified interface for accessing descriptions of individual parameters in a function prototype. Both input parameters and return values are described.

Member Function Documentation

◆ clearAllInputs()

virtual void ghidra::ProtoStore::clearAllInputs ( void  )
pure virtual

◆ clearInput()

virtual void ghidra::ProtoStore::clearInput ( int4  i)
pure virtual

Clear the input parameter at the specified slot.

The parameter is excised, any following parameters are shifted to fill its spot. If there is a backing Symbol, it is removed from the SymbolTable

Parameters
iis the specified parameter slot to remove

Implemented in ghidra::ProtoStoreSymbol, and ghidra::ProtoStoreInternal.

Referenced by ghidra::FuncProto::removeParam().

◆ clearOutput()

virtual void ghidra::ProtoStore::clearOutput ( void  )
pure virtual

◆ clone()

virtual ProtoStore * ghidra::ProtoStore::clone ( void  ) const
pure virtual

Clone the entire collection of parameter descriptions.

Implemented in ghidra::ProtoStoreSymbol, and ghidra::ProtoStoreInternal.

Referenced by ghidra::FuncProto::copy().

◆ decode()

virtual void ghidra::ProtoStore::decode ( Decoder decoder,
ProtoModel model 
)
pure virtual

Restore any internal parameter descriptions from a stream.

Parse an <internallist> element containing <param> and <retparam> child elements.

Parameters
decoderis the stream decoder
modelis prototype model for determining storage for unassigned parameters

Implemented in ghidra::ProtoStoreSymbol, and ghidra::ProtoStoreInternal.

Referenced by ghidra::FuncProto::decode().

◆ encode()

virtual void ghidra::ProtoStore::encode ( Encoder encoder) const
pure virtual

Encode any parameters that are not backed by symbols to a stream.

Symbols are stored elsewhere, so symbol backed parameters are not serialized. If there are any internal parameters an <internallist> element is emitted.

Parameters
encoderis the stream encoder

Implemented in ghidra::ProtoStoreSymbol, and ghidra::ProtoStoreInternal.

Referenced by ghidra::FuncProto::encode().

◆ getInput()

virtual ProtoParameter * ghidra::ProtoStore::getInput ( int4  i)
pure virtual

Get the i-th input parameter (or NULL if it doesn't exist)

Implemented in ghidra::ProtoStoreSymbol, and ghidra::ProtoStoreInternal.

Referenced by ghidra::FuncProto::getParam(), ghidra::FuncProto::getPieces(), and ghidra::FuncProto::updateThisPointer().

◆ getNumInputs()

virtual int4 ghidra::ProtoStore::getNumInputs ( void  ) const
pure virtual

Get the number of input parameters for this prototype.

Implemented in ghidra::ProtoStoreSymbol, and ghidra::ProtoStoreInternal.

Referenced by ghidra::FuncProto::getPieces(), ghidra::FuncProto::numParams(), and ghidra::FuncProto::updateThisPointer().

◆ getOutput()

◆ setInput()

virtual ProtoParameter * ghidra::ProtoStore::setInput ( int4  i,
const string &  nm,
const ParameterPieces pieces 
)
pure virtual

Establish name, data-type, storage of a specific input parameter.

This either allocates a new parameter or replaces the existing one at the specified input slot. If there is a backing symbol table, a Symbol is created or modified.

Parameters
iis the specified input slot
nmis the (optional) name of the parameter
piecesholds the raw storage address and data-type to set
Returns
the new/modified ProtoParameter

Implemented in ghidra::ProtoStoreSymbol, and ghidra::ProtoStoreInternal.

Referenced by ghidra::FuncProto::paramShift(), ghidra::FuncProto::setParam(), ghidra::FuncProto::updateAllTypes(), ghidra::FuncProto::updateInputNoTypes(), and ghidra::FuncProto::updateInputTypes().

◆ setOutput()

virtual ProtoParameter * ghidra::ProtoStore::setOutput ( const ParameterPieces piece)
pure virtual

Establish the data-type and storage of the return value.

This either allocates a new parameter or replaces the existing one. A void return value can be specified with an invalid address and TYPE_VOID data-type.

Parameters
pieceholds the raw storage address and data-type to set
Returns
the new/modified ProtoParameter

Implemented in ghidra::ProtoStoreSymbol, and ghidra::ProtoStoreInternal.

Referenced by ghidra::FuncProto::decode(), ghidra::FuncProto::paramShift(), ghidra::FuncProto::setOutput(), ghidra::FuncProto::updateAllTypes(), ghidra::FuncProto::updateOutputNoTypes(), and ghidra::FuncProto::updateOutputTypes().


The documentation for this class was generated from the following file: