decompiler
1.0.0
|
A collection of parameter descriptions without backing symbols. More...
#include <fspec.hh>
Public Member Functions | |
ProtoStoreInternal (Datatype *vt) | |
Constructor. More... | |
virtual ProtoParameter * | setInput (int4 i, const string &nm, const ParameterPieces &pieces) |
Establish name, data-type, storage of a specific input parameter. More... | |
virtual void | clearInput (int4 i) |
Clear the input parameter at the specified slot. More... | |
virtual void | clearAllInputs (void) |
Clear all input parameters (and any backing symbols) | |
virtual int4 | getNumInputs (void) const |
Get the number of input parameters for this prototype. | |
virtual ProtoParameter * | getInput (int4 i) |
Get the i-th input parameter (or NULL if it doesn't exist) | |
virtual ProtoParameter * | setOutput (const ParameterPieces &piece) |
Establish the data-type and storage of the return value. More... | |
virtual void | clearOutput (void) |
Clear the return value to TYPE_VOID. | |
virtual ProtoParameter * | getOutput (void) |
Get the return-value description. | |
virtual ProtoStore * | clone (void) const |
Clone the entire collection of parameter descriptions. | |
virtual void | encode (Encoder &encoder) const |
Encode any parameters that are not backed by symbols to a stream. More... | |
virtual void | decode (Decoder &decoder, ProtoModel *model) |
Restore any internal parameter descriptions from a stream. More... | |
Public Member Functions inherited from ghidra::ProtoStore | |
virtual | ~ProtoStore (void) |
Constructor. | |
Private Attributes | |
Datatype * | voidtype |
Cached reference to the void data-type. | |
vector< ProtoParameter * > | inparam |
Descriptions of input parameters. | |
ProtoParameter * | outparam |
Description of the return value. | |
A collection of parameter descriptions without backing symbols.
Parameter descriptions are stored internally to the object and are not mirrored by a symbol table.
ghidra::ProtoStoreInternal::ProtoStoreInternal | ( | Datatype * | vt | ) |
Constructor.
vt | is the void data-type used for an unspecified return value |
References ghidra::ParameterPieces::flags, setOutput(), and ghidra::ParameterPieces::type.
|
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
i | is the specified parameter slot to remove |
Implements ghidra::ProtoStore.
|
virtual |
Restore any internal parameter descriptions from a stream.
Parse an <internallist> element containing <param> and <retparam> child elements.
decoder | is the stream decoder |
model | is prototype model for determining storage for unassigned parameters |
Implements ghidra::ProtoStore.
References ghidra::ParameterPieces::addr, ghidra::ProtoModel::assignParameterStorage(), ghidra::Decoder::closeElement(), ghidra::Address::decode(), ghidra::TypeFactory::decodeType(), ghidra::AddrSpace::flags, ghidra::Datatype::flags, ghidra::ProtoModel::getArch(), ghidra::Decoder::getNextAttributeId(), ghidra::ParameterPieces::hiddenretparm, ghidra::ParameterPieces::indirectstorage, ghidra::ParameterPieces::isthis, ghidra::AddrSpace::name, ghidra::ParameterPieces::namelock, ghidra::Decoder::openElement(), ghidra::Decoder::readBool(), ghidra::Decoder::readString(), ghidra::ProtoParameter::setNameLock(), ghidra::ProtoParameter::setTypeLock(), ghidra::ParameterPieces::typelock, and ghidra::Architecture::types.
|
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.
encoder | is the stream encoder |
Implements ghidra::ProtoStore.
References ghidra::Encoder::closeElement(), ghidra::Address::encode(), ghidra::Datatype::encode(), ghidra::ProtoParameter::getAddress(), ghidra::ProtoParameter::getName(), ghidra::ProtoParameter::getType(), ghidra::ProtoParameter::isHiddenReturn(), ghidra::ProtoParameter::isIndirectStorage(), ghidra::ProtoParameter::isNameLocked(), ghidra::ProtoParameter::isThisPointer(), ghidra::ProtoParameter::isTypeLocked(), ghidra::Encoder::openElement(), ghidra::Encoder::writeBool(), and ghidra::Encoder::writeString().
|
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.
i | is the specified input slot |
nm | is the (optional) name of the parameter |
pieces | holds the raw storage address and data-type to set |
Implements ghidra::ProtoStore.
References ghidra::ParameterPieces::addr, ghidra::ParameterPieces::flags, and ghidra::ParameterPieces::type.
|
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.
piece | holds the raw storage address and data-type to set |
Implements ghidra::ProtoStore.
References ghidra::ParameterPieces::addr, ghidra::ParameterPieces::flags, and ghidra::ParameterPieces::type.
Referenced by ghidra::FuncProto::paramShift(), and ProtoStoreInternal().