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 | saveXml (ostream &s) const |
Save any parameters that are not backed by symbols to an XML stream. More... | |
virtual void | restoreXml (const Element *el, ProtoModel *model) |
Restore any internal parameter descriptions from an XML stream. More... | |
Public Member Functions inherited from 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.
ProtoStoreInternal::ProtoStoreInternal | ( | Datatype * | vt | ) |
Constructor.
vt | is the void data-type used for an unspecified return value |
References ParameterPieces::flags, outparam, setOutput(), ParameterPieces::type, and voidtype.
Referenced by clone().
|
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 ProtoStore.
References inparam.
|
virtual |
Restore any internal parameter descriptions from an XML stream.
el | is a root <internallist> element containing <param> and <retparam> sub-tags. |
model | is prototype model for determining storage for unassigned parameters |
Implements ProtoStore.
References ParameterPieces::addr, ProtoModel::assignParameterStorage(), Datatype::flags, ProtoParameter::getAddress(), ProtoModel::getArch(), ProtoParameter::getType(), Varnode::hiddenretparm, Varnode::indirectstorage, ProtoParameter::isIndirectStorage(), Address::isInvalid(), ProtoParameter::isTypeLocked(), outparam, Address::restoreXml(), TypeFactory::restoreXmlType(), setInput(), ProtoParameter::setNameLock(), setOutput(), ProtoParameter::setTypeLock(), and Architecture::types.
|
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.
s | is the output stream |
Implements ProtoStore.
References ProtoParameter::getAddress(), ProtoParameter::getName(), ProtoParameter::getType(), inparam, ProtoParameter::isHiddenReturn(), ProtoParameter::isIndirectStorage(), ProtoParameter::isNameLocked(), ProtoParameter::isTypeLocked(), outparam, Address::saveXml(), and Datatype::saveXml().
|
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 ProtoStore.
References ParameterPieces::addr, ParameterPieces::flags, inparam, and ParameterPieces::type.
Referenced by restoreXml().
|
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 ProtoStore.
References ParameterPieces::addr, ParameterPieces::flags, outparam, and ParameterPieces::type.
Referenced by ProtoStoreInternal(), and restoreXml().