decompiler
1.0.0
|
Container class for all Datatype objects in an Architecture. More...
#include <type.hh>
Public Member Functions | |
TypeFactory (Architecture *g) | |
Construct a factory. More... | |
void | setupSizes (void) |
Derive some size information from Architecture. More... | |
void | clear (void) |
Clear out all types. More... | |
void | clearNoncore (void) |
Clear out non-core types. More... | |
virtual | ~TypeFactory (void) |
Destructor. | |
void | setStructAlign (int4 al) |
Set the default structure alignment. | |
int4 | getStructAlign (void) const |
Get the default structure alignment. | |
int4 | getSizeOfInt (void) const |
Get the size of the default "int". | |
Architecture * | getArch (void) const |
Get the Architecture object. | |
Datatype * | findByName (const string &n) |
Return type of given name. More... | |
Datatype * | setName (Datatype *ct, const string &n) |
Set the given types name. More... | |
bool | setFields (vector< TypeField > &fd, TypeStruct *ot, int4 fixedsize) |
Set fields on a TypeStruct. More... | |
bool | setEnumValues (const vector< string > &namelist, const vector< uintb > &vallist, const vector< bool > &assignlist, TypeEnum *te) |
Set named values for an enumeration. More... | |
Datatype * | restoreXmlType (const Element *el) |
Restore Datatype from XML. More... | |
Datatype * | restoreXmlTypeWithCodeFlags (const Element *el, bool hasThisPtr, bool isConstructor, bool isDestructor) |
Restore data-type from XML with extra "code" flags. More... | |
TypeVoid * | getTypeVoid (void) |
Get the "void" data-type. More... | |
Datatype * | getBaseNoChar (int4 s, type_metatype m) |
Get atomic type excluding "char". More... | |
Datatype * | getBase (int4 s, type_metatype m) |
Get atomic type. More... | |
Datatype * | getBase (int4 s, type_metatype m, const string &n) |
Get named atomic type. More... | |
TypeCode * | getTypeCode (void) |
Get an "anonymous" function data-type. More... | |
TypePointer * | getTypePointer (int4 s, Datatype *pt, uint4 ws) |
Construct a pointer data-type. More... | |
TypePointer * | getTypePointerAbsolute (int4 s, Datatype *pt, uint4 ws) |
Construct an absolute pointer data-type. More... | |
TypePointer * | getTypePointerNoDepth (int4 s, Datatype *pt, uint4 ws) |
Construct a depth limited pointer data-type. More... | |
TypeArray * | getTypeArray (int4 as, Datatype *ao) |
Construct an array data-type. More... | |
TypeStruct * | getTypeStruct (const string &n) |
Create an (empty) structure. More... | |
TypeEnum * | getTypeEnum (const string &n) |
Create an (empty) enumeration. More... | |
TypeSpacebase * | getTypeSpacebase (AddrSpace *id, const Address &addr) |
Create a "spacebase" type. More... | |
TypeCode * | getTypeCode (ProtoModel *model, Datatype *outtype, const vector< Datatype * > &intypes, bool dotdotdot) |
Create a "function" datatype. More... | |
void | destroyType (Datatype *ct) |
Remove a data-type from this. More... | |
Datatype * | downChain (Datatype *ptrtype, uintb &off) |
Find a sub-type matching a pointer and offset. More... | |
void | dependentOrder (vector< Datatype * > &deporder) const |
Place all data-types in dependency order. More... | |
void | saveXml (ostream &s) const |
Save this container to stream. More... | |
void | saveXmlCoreTypes (ostream &s) const |
Save core types to stream. More... | |
void | restoreXml (const Element *el) |
Restore this container from a stream. More... | |
void | restoreXmlCoreTypes (const Element *el) |
Initialize basic type names. More... | |
void | parseDataOrganization (const Element *el) |
Parse the <data_organization> tag. More... | |
void | parseEnumConfig (const Element *el) |
Parse the <enum> tag. More... | |
void | setCoreType (const string &name, int4 size, type_metatype meta, bool chartp) |
Create a core data-type. More... | |
void | cacheCoreTypes (void) |
Cache common types. More... | |
Protected Member Functions | |
Datatype * | findByIdLocal (const string &nm, uint8 id) const |
Search locally by name and id. More... | |
virtual Datatype * | findById (const string &n, uint8 id) |
Search by name and id. More... | |
Protected Attributes | |
Architecture * | glb |
The Architecture object that owns this TypeFactory. | |
Private Member Functions | |
Datatype * | findNoName (Datatype &ct) |
Find data-type (in this container) by function. More... | |
Datatype * | findAdd (Datatype &ct) |
Find data-type in this container or add it. More... | |
void | orderRecurse (vector< Datatype * > &deporder, DatatypeSet &mark, Datatype *ct) const |
Write out dependency list. More... | |
Datatype * | restoreXmlTypeNoRef (const Element *el, bool forcecore) |
Restore from an XML tag. More... | |
void | clearCache (void) |
Clear the common type cache. More... | |
TypeChar * | getTypeChar (const string &n) |
Create a default "char" type. More... | |
TypeUnicode * | getTypeUnicode (const string &nm, int4 sz, type_metatype m) |
Create a default "unicode" type. More... | |
TypeCode * | getTypeCode (const string &n) |
Create a default "code" type. More... | |
Private Attributes | |
int4 | sizeOfInt |
Size of the core "int" datatype. | |
int4 | align |
Alignment of structures. | |
int4 | enumsize |
Size of an enumerated type. | |
type_metatype | enumtype |
Default enumeration meta-type (when parsing C) | |
DatatypeSet | tree |
Datatypes within this factory (sorted by function) | |
DatatypeNameSet | nametree |
Cross-reference by name. | |
Datatype * | typecache [9][8] |
Matrix of the most common atomic data-types. | |
Datatype * | typecache10 |
Specially cached 10-byte float type. | |
Datatype * | typecache16 |
Specially cached 16-byte float type. | |
Datatype * | type_nochar |
Same dimensions as char but acts and displays as an INT. | |
Container class for all Datatype objects in an Architecture.
TypeFactory::TypeFactory | ( | Architecture * | g | ) |
void TypeFactory::cacheCoreTypes | ( | void | ) |
Cache common types.
Run through the list of "core" data-types and cache the most commonly accessed ones for quick access (avoiding the tree lookup). The "core" data-types must have been previously initialized.
References Datatype::getMetatype(), Datatype::getSize(), Datatype::isASCII(), Datatype::isCharPrint(), Datatype::isCoreType(), Datatype::isEnumType(), tree, TYPE_BOOL, TYPE_CODE, TYPE_FLOAT, TYPE_INT, type_nochar, TYPE_UINT, TYPE_UNKNOWN, TYPE_VOID, typecache, typecache10, and typecache16.
Referenced by ArchitectureGhidra::buildTypegrp(), Architecture::buildTypegrp(), and restoreXmlCoreTypes().
void TypeFactory::clear | ( | void | ) |
Clear out all types.
Remove all Datatype objects owned by this TypeFactory.
References clearCache(), nametree, and tree.
Referenced by restoreXmlCoreTypes(), and ~TypeFactory().
|
private |
void TypeFactory::clearNoncore | ( | void | ) |
Clear out non-core types.
Delete anything that isn't a core type.
References Datatype::isCoreType(), nametree, and tree.
Referenced by FlushNative::rawAction().
void TypeFactory::dependentOrder | ( | vector< Datatype * > & | deporder | ) | const |
Place all data-types in dependency order.
Place data-types in an order such that if the definition of data-type "a" depends on the definition of data-type "b", then "b" occurs earlier in the order
deporder | will hold the generated dependency list of data-types |
References orderRecurse(), and tree.
Referenced by PrintC::docTypeDefinitions(), and saveXml().
void TypeFactory::destroyType | ( | Datatype * | ct | ) |
Remove a data-type from this.
The indicated Datatype object is removed from this container. Indirect references (via TypeArray TypeStruct etc.) are not affected
ct | is the data-type to destroy |
References Datatype::isCoreType(), nametree, and tree.
Find a sub-type matching a pointer and offset.
Add a constant offset to a pointer with known data-type. If there is a valid component at that offset, return a pointer to the data-type of the component or NULL otherwise. This routine only goes down one level at most. Pass back the renormalized offset relative to the new data-type
ptrtype | is the pointer data-type being added to |
off | is a reference to the offset to add |
References Datatype::getSubType(), getTypePointer(), TypePointer::getWordSize(), Datatype::metatype, TypePointer::ptrto, Datatype::size, and TYPE_PTR.
Referenced by TypeOpPtrsub::getOutputToken(), and ActionInferTypes::propagateAddIn2Out().
Find data-type in this container or add it.
Use quickest method (name or id is possible) to locate the matching data-type. If its not currently in this container, clone the data-type and add it to the container.
ct | is the data-type to match |
References Datatype::clone(), Datatype::compareDependency(), findByIdLocal(), findNoName(), Datatype::getId(), Datatype::id, Datatype::name, nametree, Datatype::printRaw(), and tree.
Referenced by getBase(), getTypeArray(), getTypeChar(), getTypeCode(), getTypeEnum(), getTypePointer(), getTypePointerAbsolute(), getTypeSpacebase(), getTypeStruct(), getTypeUnicode(), restoreXmlTypeNoRef(), and restoreXmlTypeWithCodeFlags().
|
protectedvirtual |
Search by name and id.
Search for a Datatype by name and/or id. Derived classes may search outside this container.
n | is the name of the data-type |
id | is the type id of the data-type |
Reimplemented in TypeFactoryGhidra.
References findByIdLocal().
Referenced by TypeFactoryGhidra::findById(), findByName(), and restoreXmlType().
|
protected |
Search locally by name and id.
Looking just within this container, find a Datatype by name and/or id.
n | is the name of the data-type |
id | is the type id of the data-type |
References Datatype::id, nametree, and TYPE_UNKNOWN.
Referenced by findAdd(), findById(), and restoreXmlTypeNoRef().
Datatype * TypeFactory::findByName | ( | const string & | n | ) |
Return type of given name.
Find type with given name. If there are more than, return first.
n | is the name to search for |
References findById().
Find data-type (in this container) by function.
Find data-type without reference to name, using the functional comparators For this to work, the type must be built out of dependencies that are already present in this type factory
ct | is the data-type to match |
References tree.
Referenced by findAdd().
Datatype * TypeFactory::getBase | ( | int4 | s, |
type_metatype | m | ||
) |
Get atomic type.
Get one of the "base" datatypes. This routine is called a lot, so we go through a cache first.
s | is the desired size |
m | is the desired meta-type |
References findAdd(), getTypeArray(), glb, Architecture::max_basetype_size, TYPE_FLOAT, TYPE_UNKNOWN, typecache, typecache10, and typecache16.
Referenced by RuleSubRight::applyOp(), CastStrategyC::arithmeticOutputStandard(), LabSymbol::buildType(), getBaseNoChar(), TypeOp::getInputLocal(), TypeOpBinary::getInputLocal(), TypeOpUnary::getInputLocal(), TypeOpFunc::getInputLocal(), TypeOpCbranch::getInputLocal(), TypeOpPtradd::getInputLocal(), TypeOpPtrsub::getInputLocal(), TypeOpCpoolref::getInputLocal(), TypeOp::getOutputLocal(), TypeOpBinary::getOutputLocal(), TypeOpUnary::getOutputLocal(), TypeOpFunc::getOutputLocal(), TypeOpPtradd::getOutputLocal(), TypeOpPtrsub::getOutputLocal(), TypeOpCpoolref::getOutputLocal(), TypeOpIntLeft::getOutputToken(), TypeOpIntRight::getOutputToken(), TypeOpIntSright::getOutputToken(), TypeOpPiece::getOutputToken(), TypeOpSubpiece::getOutputToken(), getTypePointerNoDepth(), Funcdata::mapGlobals(), Funcdata::newConstant(), Funcdata::newUnique(), Funcdata::newUniqueOut(), Funcdata::newVarnode(), Funcdata::newVarnodeCallSpecs(), Funcdata::newVarnodeIop(), Funcdata::newVarnodeOut(), Funcdata::newVarnodeSpace(), FuncProto::paramShift(), ActionInferTypes::propagateAddIn2Out(), ActionInferTypes::propagateTypeEdge(), PrintC::pushAnnotation(), Scope::resetSizeLockType(), ParameterBasic::resetSizeLockType(), EquateSymbol::restoreXml(), setCoreType(), FuncProto::updateInputNoTypes(), and FuncProto::updateOutputNoTypes().
Datatype * TypeFactory::getBase | ( | int4 | s, |
type_metatype | m, | ||
const string & | n | ||
) |
Get named atomic type.
Get or create a "base" type with a specified name and properties
s | is the desired size |
m | is the desired meta-type |
n | is the desired name |
References findAdd(), Datatype::hashName(), and Datatype::id.
Datatype * TypeFactory::getBaseNoChar | ( | int4 | s, |
type_metatype | m | ||
) |
Get atomic type excluding "char".
Get a "base" data-type, given its size and metatype. If a 1-byte integer is requested, do NOT return a TypeChar
s | is the size of the data-type |
m | is the meta-type of the data-type |
References getBase(), TYPE_INT, and type_nochar.
Referenced by TypeOpIntLeft::getInputLocal(), TypeOpIntRight::getInputLocal(), and TypeOpIntSright::getInputLocal().
Construct an array data-type.
as | is the number of elements in the desired array |
ao | is the data-type of the array element |
References findAdd().
Referenced by FunctionSymbol::buildType(), and getBase().
|
private |
Create a default "char" type.
This creates a 1-byte character datatype (assumed to use UTF8 encoding)
n | is the name to give the data-type |
References findAdd(), Datatype::hashName(), and Datatype::id.
Referenced by setCoreType().
|
private |
Create a default "code" type.
Create a "function" or "executable" Datatype object This is used for anonymous function pointers with no prototype
nm | is the name of the data-type |
References findAdd(), getTypeCode(), Datatype::hashName(), and Datatype::id.
Referenced by ExternRefSymbol::buildNameType(), FunctionSymbol::buildType(), TypeOpCbranch::getInputLocal(), TypeOpCallind::getInputLocal(), TypeOpIndirect::getInputLocal(), and Funcdata::newCodeRef().
TypeCode * TypeFactory::getTypeCode | ( | void | ) |
Get an "anonymous" function data-type.
Retrieve or create the core "code" Datatype object This has no prototype attached to it and is appropriate for anonymous function pointers.
References findAdd(), TYPE_CODE, TYPE_FLOAT, and typecache.
Referenced by getTypeCode(), and setCoreType().
TypeCode * TypeFactory::getTypeCode | ( | ProtoModel * | model, |
Datatype * | outtype, | ||
const vector< Datatype * > & | intypes, | ||
bool | dotdotdot | ||
) |
Create a "function" datatype.
Creates a TypeCode object and associates a specific function prototype with it.
model | is the prototype model associated with the function |
outtype | is the return type of the function |
intypes | is the array of input parameters of the function |
dotdotdot | is true if the function takes variable arguments |
References findAdd(), getTypeVoid(), and TypeCode::set().
TypeEnum * TypeFactory::getTypeEnum | ( | const string & | n | ) |
Create an (empty) enumeration.
The created enumeration will have no named values and a default configuration Named values must be added later.
n | is the name of the enumeration |
References enumsize, enumtype, findAdd(), Datatype::hashName(), and Datatype::id.
TypePointer * TypeFactory::getTypePointer | ( | int4 | s, |
Datatype * | pt, | ||
uint4 | ws | ||
) |
Construct a pointer data-type.
This creates a pointer to a given data-type. It doesn't allow a "pointer to array" to be created however and will drill-down to the first non-array data-type
s | is the size of the pointer |
pt | is the pointed-to data-type |
ws | is the wordsize associated with the pointer |
References findAdd(), Datatype::getMetatype(), and TYPE_ARRAY.
Referenced by ExternRefSymbol::buildNameType(), downChain(), TypeOpLoad::getInputCast(), TypeOpStore::getInputCast(), TypeOpCbranch::getInputLocal(), TypeOpCallind::getInputLocal(), TypeOpIndirect::getInputLocal(), getTypePointerNoDepth(), ActionInferTypes::propagateAddIn2Out(), ActionInferTypes::propagateTypeEdge(), Funcdata::spacebase(), and Funcdata::spacebaseConstant().
TypePointer * TypeFactory::getTypePointerAbsolute | ( | int4 | s, |
Datatype * | pt, | ||
uint4 | ws | ||
) |
Construct an absolute pointer data-type.
Allows "pointer to array" to be constructed
s | is the size of the pointer |
pt | is the pointed-to data-type |
ws | is the wordsize associated with the pointer |
References findAdd().
Referenced by ParamListStandard::assignMap(), and ParamListStandardOut::assignMap().
TypePointer * TypeFactory::getTypePointerNoDepth | ( | int4 | s, |
Datatype * | pt, | ||
uint4 | ws | ||
) |
Construct a depth limited pointer data-type.
s | is the size of the pointer |
pt | is the pointed-to data-type |
ws | is the wordsize associated with the pointer |
References getBase(), Datatype::getMetatype(), Datatype::getSize(), getTypePointer(), TYPE_PTR, and TYPE_UNKNOWN.
Referenced by ActionInferTypes::propagateTypeEdge().
TypeSpacebase * TypeFactory::getTypeSpacebase | ( | AddrSpace * | id, |
const Address & | addr | ||
) |
Create a "spacebase" type.
Creates the special TypeSpacebase with an associated address space and scope
id | is the address space |
addr | specifies the function scope, or isInvalid() for global scope |
References findAdd(), and glb.
Referenced by Funcdata::spacebase(), and Funcdata::spacebaseConstant().
TypeStruct * TypeFactory::getTypeStruct | ( | const string & | n | ) |
Create an (empty) structure.
The created structure will have no fields. They must be added later.
n | is the name of the structure |
References findAdd(), Datatype::hashName(), and Datatype::id.
|
private |
Create a default "unicode" type.
This creates a multi-byte character data-type (using UTF16 or UTF32 encoding)
nm | is the name to give the data-type |
sz | is the size of the data-type in bytes |
m | is the presumed meta-type when treating the character as an integer |
References findAdd(), Datatype::hashName(), and Datatype::id.
Referenced by setCoreType().
TypeVoid * TypeFactory::getTypeVoid | ( | void | ) |
Get the "void" data-type.
There should be exactly one instance of the "void" Datatype object, which this fetches
References TypeVoid::clone(), Datatype::getName(), Datatype::hashName(), Datatype::id, nametree, tree, TYPE_FLOAT, TYPE_VOID, and typecache.
Referenced by ActionDefaultParams::apply(), ProtoModel::assignParameterStorage(), PrintC::buildTypeStack(), ProtoStoreSymbol::clearOutput(), getTypeCode(), FuncProto::paramShift(), ProtoStoreSymbol::ProtoStoreSymbol(), PrintJava::pushTypeStart(), Override::restoreXml(), restoreXmlTypeNoRef(), and setCoreType().
|
private |
Write out dependency list.
Recursively write out all the components of a data-type in dependency order Component data-types will come before the data-type containing them in the list.
deporder | holds the ordered list of data-types to construct |
mark | is a "marking" container to prevent cycles |
ct | is the data-type to have written out |
References Datatype::getDepend(), and Datatype::numDepend().
Referenced by dependentOrder().
void TypeFactory::parseDataOrganization | ( | const Element * | el | ) |
Parse the <data_organization> tag.
Recover various sizes relevant to this container, such as the default size of "int" and structure alignment, by parsing the <data_organization> tag.
el | is the XML element |
References align, and sizeOfInt.
Referenced by Architecture::parseCompilerConfig().
void TypeFactory::parseEnumConfig | ( | const Element * | el | ) |
Parse the <enum> tag.
Recover default enumeration properties (size and meta-type) from an <enum> XML tag. Should probably consider this deprecated. These values are only used by the internal C parser. param el is the XML element
References enumsize, enumtype, TYPE_INT, and TYPE_UINT.
Referenced by Architecture::parseCompilerConfig().
void TypeFactory::restoreXml | ( | const Element * | el | ) |
Restore this container from a stream.
Read data-types into this container from an XML stream
el | is the root XML element |
References align, enumsize, enumtype, restoreXmlTypeNoRef(), sizeOfInt, TYPE_INT, and TYPE_UINT.
Referenced by Architecture::restoreXml().
void TypeFactory::restoreXmlCoreTypes | ( | const Element * | el | ) |
Initialize basic type names.
Restore data-types from an XML stream into this container This stream is presumed to contain "core" datatypes and the cached matrix will be populated from this set.
el | is the root XML element |
References cacheCoreTypes(), clear(), and restoreXmlTypeNoRef().
Referenced by ArchitectureGhidra::buildTypegrp(), and Architecture::buildTypegrp().
Restore Datatype from XML.
Restore a Datatype object from an XML tag description: either <type>, <typeref>, or <void>
el | is the XML element describing the data-type |
References findById(), Datatype::hashName(), and restoreXmlTypeNoRef().
Referenced by TypeFactoryGhidra::findById(), CPoolRecord::restoreXml(), ProtoStoreInternal::restoreXml(), FuncProto::restoreXml(), and Symbol::restoreXmlBody().
Restore from an XML tag.
Restore a Datatype object from an XML <type> tag. (Don't use for <typeref> tags) The new Datatype is added to this container
el | is the XML element |
forcecore | is true if the new type should be labeled as a core type |
References Datatype::compareDependency(), Datatype::coretype, TypeStruct::field, findAdd(), findByIdLocal(), Datatype::flags, Datatype::getMetatype(), Datatype::getSize(), getTypeVoid(), glb, Datatype::hashName(), Datatype::id, Datatype::restoreXml(), TypeUnicode::restoreXml(), TypePointer::restoreXml(), TypeArray::restoreXml(), TypeEnum::restoreXml(), TypeStruct::restoreXml(), TypeCode::restoreXml(), TypeSpacebase::restoreXml(), setFields(), Datatype::size, string2metatype(), TYPE_ARRAY, TYPE_CODE, TYPE_INT, TYPE_PTR, TYPE_SPACEBASE, TYPE_STRUCT, and TYPE_UNKNOWN.
Referenced by restoreXml(), restoreXmlCoreTypes(), and restoreXmlType().
Datatype * TypeFactory::restoreXmlTypeWithCodeFlags | ( | const Element * | el, |
bool | hasThisPtr, | ||
bool | isConstructor, | ||
bool | isDestructor | ||
) |
Restore data-type from XML with extra "code" flags.
Kludge to get flags into code pointer types, when they can't come through XML
el | is the XML element describing the Datatype |
hasThisPtr | toggles "this" pointer property on "function" datatypes |
isConstructor | toggles "constructor" property on "function" datatypes |
isDestructor | toggles "destructor" property on "function" datatypes |
References findAdd(), Datatype::getMetatype(), TypePointer::ptrto, TypeCode::restoreXml(), Datatype::restoreXmlBasic(), TypeCode::setProperties(), TYPE_PTR, and TypePointer::wordsize.
Referenced by CPoolRecord::restoreXml().
void TypeFactory::saveXml | ( | ostream & | s | ) | const |
Save this container to stream.
All data-types, in dependency order, are written out to an XML stream
s | is the output stream |
References align, dependentOrder(), enumsize, enumtype, sizeOfInt, TYPE_ARRAY, TYPE_INT, TYPE_PTR, and TYPE_STRUCT.
Referenced by Architecture::saveXml().
void TypeFactory::saveXmlCoreTypes | ( | ostream & | s | ) | const |
Save core types to stream.
Any data-type within this container marked as "core" will be written to an XML <coretypes> stream.
s | is the output stream |
References Datatype::getMetatype(), Datatype::isCoreType(), Datatype::saveXml(), tree, TYPE_ARRAY, TYPE_PTR, and TYPE_STRUCT.
Referenced by XmlArchitecture::saveXml(), RawBinaryArchitecture::saveXml(), and BfdArchitecture::saveXml().
void TypeFactory::setCoreType | ( | const string & | name, |
int4 | size, | ||
type_metatype | meta, | ||
bool | chartp | ||
) |
Create a core data-type.
Manually create a "base" core type. This currently must be called before any pointers or arrays are defined off of the type.
name | is the data-type name |
size | is the size of the data-type |
meta | is the meta-type of the data-type |
chartp | is true if a character type should be created |
References Datatype::coretype, Datatype::flags, getBase(), getTypeChar(), getTypeCode(), getTypeUnicode(), getTypeVoid(), TYPE_CODE, and TYPE_VOID.
Referenced by ArchitectureGhidra::buildTypegrp(), and Architecture::buildTypegrp().
bool TypeFactory::setEnumValues | ( | const vector< string > & | namelist, |
const vector< uintb > & | vallist, | ||
const vector< bool > & | assignlist, | ||
TypeEnum * | te | ||
) |
Set named values for an enumeration.
Set the list of enumeration values and identifiers for a TypeEnum Fill in any values for any names that weren't explicitly assigned and check for duplicates.
namelist | is the list of names in the enumeration |
vallist | is the corresponding list of values assigned to names in namelist |
assignlist | is true if the corresponding name in namelist has an assigned value |
te | is the enumeration object to modify |
References calc_mask(), Datatype::getSize(), TypeEnum::setNameMap(), and tree.
bool TypeFactory::setFields | ( | vector< TypeField > & | fd, |
TypeStruct * | ot, | ||
int4 | fixedsize | ||
) |
Set fields on a TypeStruct.
Make sure all the offsets are fully established then set fields of the structure If -fixedsize- is greater than 0, force the final structure to have that size
fd | is the list of fields to set |
ot | is the TypeStruct object to modify |
fixedsize | is 0 or the forced size of the structure |
References align, Datatype::getMetatype(), Datatype::getName(), Datatype::getSize(), TypeStruct::setFields(), Datatype::size, tree, and TYPE_VOID.
Referenced by restoreXmlTypeNoRef().
Set the given types name.
This routine renames a Datatype object and fixes up cross-referencing
ct | is the data-type to rename |
n | is the new name |
References Datatype::hashName(), Datatype::id, Datatype::name, nametree, and tree.
void TypeFactory::setupSizes | ( | void | ) |
Derive some size information from Architecture.
Set up default values for size of "int", structure alignment, and enums.
References VarnodeData::size.
Referenced by Architecture::parseCompilerConfig().