Ghidra Decompiler Analysis Engine
Public Member Functions | List of all members
ProtoStore Class Referenceabstract

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

#include <fspec.hh>

Inheritance diagram for ProtoStore:
Inheritance graph
[legend]

Public Member Functions

virtual ProtoParametersetInput (int4 i, const string &nm, const ParameterPieces &pieces)=0
 Establish name, data-type, storage of a specific input parameter. More...
 
virtual void clearInput (int4 i)=0
 Clear the input parameter at the specified slot. More...
 
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. More...
 
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 saveXml (ostream &s) const =0
 Save any parameters that are not backed by symbols to an XML stream. More...
 
virtual void restoreXml (const Element *el, ProtoModel *model)=0
 Restore any internal parameter descriptions from an XML stream. More...
 

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

◆ clearInput()

virtual void 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 ProtoStoreInternal, and ProtoStoreSymbol.

◆ restoreXml()

virtual void ProtoStore::restoreXml ( const Element el,
ProtoModel model 
)
pure virtual

Restore any internal parameter descriptions from an XML stream.

Parameters
elis a root <internallist> element containing <param> and <retparam> sub-tags.
modelis prototype model for determining storage for unassigned parameters

Implemented in ProtoStoreInternal, and ProtoStoreSymbol.

◆ saveXml()

virtual void ProtoStore::saveXml ( ostream &  s) const
pure virtual

Save any parameters that are not backed by symbols to an XML stream.

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

Parameters
sis the output stream

Implemented in ProtoStoreInternal, and ProtoStoreSymbol.

◆ setInput()

virtual ProtoParameter* 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 ProtoStoreInternal, and ProtoStoreSymbol.

◆ setOutput()

virtual ProtoParameter* 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 ProtoStoreInternal, and ProtoStoreSymbol.


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