|
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, uint4 flags) |
| 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 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 * | getTypePointerStripArray (int4 s, Datatype *pt, uint4 ws) |
| Construct a pointer data-type, stripping an ARRAY level. More... | |
| TypePointer * | getTypePointer (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... | |
| Datatype * | concretize (Datatype *ct) |
| Convert given data-type to concrete form. 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(), TYPE_BOOL, TYPE_CODE, TYPE_FLOAT, TYPE_INT, TYPE_UINT, TYPE_UNKNOWN, and TYPE_VOID.
Referenced by ArchitectureGhidra::buildTypegrp().
| void TypeFactory::clear | ( | void | ) |
Clear out all types.
Remove all Datatype objects owned by this TypeFactory.
|
private |
Clear the common type cache.
Clear the matrix of commonly used atomic types.
| void TypeFactory::clearNoncore | ( | void | ) |
Clear out non-core types.
Delete anything that isn't a core type.
References Datatype::isCoreType().
Referenced by FlushNative::rawAction().
Convert given data-type to concrete form.
The data-type propagation system can push around data-types that are partial or are otherwise unrepresentable in the source language. This method substitutes those data-types with a concrete data-type that is representable, or returns the same data-type if is already concrete. Its important that the returned data-type have the same size as the original data-type regardless.
| ct | is the given data-type |
References Datatype::getMetatype(), Datatype::getSize(), Datatype::metatype, TYPE_CODE, and TYPE_UNKNOWN.
Referenced by ScopeLocal::createEntry().
| 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 |
Referenced by PrintC::docTypeDefinitions().
| 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().
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::getMetatype(), Datatype::getSubType(), TypePointer::getWordSize(), Datatype::metatype, TypePointer::ptrto, Datatype::size, TYPE_ARRAY, 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(), Datatype::getId(), Datatype::id, Datatype::name, and Datatype::printRaw().
|
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.
Referenced by TypeFactoryGhidra::findById().
|
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, and TYPE_UNKNOWN.
| 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 |
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 |
| 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 TYPE_FLOAT, and TYPE_UNKNOWN.
Referenced by MapState::addGuard(), RuleSubRight::applyOp(), CastStrategyC::arithmeticOutputStandard(), LabSymbol::buildType(), TypeOp::getInputLocal(), TypeOpBinary::getInputLocal(), TypeOpUnary::getInputLocal(), TypeOpFunc::getInputLocal(), TypeOpCbranch::getInputLocal(), TypeOpPtradd::getInputLocal(), TypeOpPtrsub::getInputLocal(), TypeOpCpoolref::getInputLocal(), TypeOpInsert::getInputLocal(), TypeOpExtract::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(), Funcdata::mapGlobals(), RangeHint::merge(), Funcdata::newConstant(), Funcdata::newUnique(), Funcdata::newUniqueOut(), Funcdata::newVarnode(), Funcdata::newVarnodeCallSpecs(), Funcdata::newVarnodeIop(), Funcdata::newVarnodeOut(), Funcdata::newVarnodeSpace(), FuncProto::paramShift(), ScopeInternal::processCollision(), ActionInferTypes::propagateAddIn2Out(), ActionInferTypes::propagateTypeEdge(), PrintC::pushAnnotation(), ParameterBasic::resetSizeLockType(), EquateSymbol::restoreXml(), FuncProto::updateInputNoTypes(), FuncProto::updateInputTypes(), 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 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 TYPE_INT.
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 |
Referenced by ScopeLocal::createEntry().
|
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 Datatype::hashName(), and Datatype::id.
|
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 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 TYPE_CODE, and TYPE_FLOAT.
| 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 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 Datatype::enumtype, Datatype::hashName(), and Datatype::id.
| TypePointer * TypeFactory::getTypePointer | ( | 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 |
Referenced by ParamListStandard::assignMap(), ParamListStandardOut::assignMap(), ExternRefSymbol::buildNameType(), TypeOpLoad::getInputCast(), TypeOpStore::getInputCast(), TypeOpCbranch::getInputLocal(), TypeOpCallind::getInputLocal(), TypeOpIndirect::getInputLocal(), ActionInferTypes::propagateAddIn2Out(), ActionInferTypes::propagateTypeEdge(), Funcdata::spacebase(), and Funcdata::spacebaseConstant().
| 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 Datatype::getMetatype(), Datatype::getSize(), TYPE_PTR, and TYPE_UNKNOWN.
Referenced by ActionInferTypes::propagateTypeEdge().
| TypePointer * TypeFactory::getTypePointerStripArray | ( | int4 | s, |
| Datatype * | pt, | ||
| uint4 | ws | ||
| ) |
Construct a pointer data-type, stripping an ARRAY level.
This creates a pointer to a given data-type. If the given data-type is an array, the TYPE_ARRAY property is stripped off, and a pointer to the array element data-type is returned.
| s | is the size of the pointer |
| pt | is the pointed-to data-type |
| ws | is the wordsize associated with the pointer |
References Datatype::getMetatype(), and TYPE_ARRAY.
Referenced by Funcdata::spacebaseConstant().
| 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 |
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 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 Datatype::hashName(), and Datatype::id.
| 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, TYPE_FLOAT, and TYPE_VOID.
Referenced by ActionDefaultParams::apply(), PrintC::buildTypeStack(), FuncProto::paramShift(), PrintJava::pushTypeStart(), and Override::restoreXml().
|
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(), Datatype::numDepend(), and Datatype::size.
| 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 Element::getAttributeValue(), Element::getChildren(), and Element::getName().
| 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 Datatype::enumtype, Element::getAttributeValue(), TYPE_INT, TYPE_UINT, and xml_readbool().
| 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 Datatype::enumtype, Element::getAttributeValue(), Element::getChildren(), TYPE_INT, TYPE_UINT, and xml_readbool().
| 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 Element::getChildren().
Referenced by ArchitectureGhidra::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 Element::getAttributeName(), Element::getAttributeValue(), Element::getName(), Element::getNumAttributes(), and Datatype::hashName().
Referenced by TypeFactoryGhidra::findById(), CPoolRecord::restoreXml(), ProtoStoreInternal::restoreXml(), and FuncProto::restoreXml().
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, Datatype::flags, Element::getAttributeName(), Element::getAttributeValue(), Datatype::getMetatype(), Element::getName(), Element::getNumAttributes(), Datatype::getSize(), Datatype::hashName(), Datatype::hashSize(), Datatype::id, Datatype::restoreXml(), TypeUnicode::restoreXml(), TypePointer::restoreXml(), TypeArray::restoreXml(), TypeEnum::restoreXml(), TypeStruct::restoreXml(), TypeCode::restoreXml(), TypeSpacebase::restoreXml(), Datatype::size, string2metatype(), TYPE_ARRAY, TYPE_CODE, TYPE_INT, TYPE_PTR, TYPE_SPACEBASE, TYPE_STRUCT, TYPE_UNKNOWN, and xml_readbool().
| Datatype * TypeFactory::restoreXmlTypeWithCodeFlags | ( | const Element * | el, |
| 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 |
| isConstructor | toggles "constructor" property on "function" datatypes |
| isDestructor | toggles "destructor" property on "function" datatypes |
References Element::getAttributeName(), Element::getAttributeValue(), Element::getChildren(), Datatype::getMetatype(), Element::getNumAttributes(), 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 a_v_b(), a_v_i(), Datatype::enumtype, TYPE_ARRAY, TYPE_INT, TYPE_PTR, and TYPE_STRUCT.
| 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(), 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, TYPE_CODE, and TYPE_VOID.
Referenced by ArchitectureGhidra::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(), and TypeEnum::setNameMap().
| bool TypeFactory::setFields | ( | vector< TypeField > & | fd, |
| TypeStruct * | ot, | ||
| int4 | fixedsize, | ||
| uint4 | flags | ||
| ) |
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 |
| flags | are other flags to set on the structure |
References Datatype::flags, Datatype::getMetatype(), Datatype::getName(), Datatype::getSize(), Datatype::opaque_string, TypeStruct::setFields(), Datatype::size, TYPE_VOID, and Datatype::variable_length.
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, and Datatype::name.
| void TypeFactory::setupSizes | ( | void | ) |
Derive some size information from Architecture.
Set up default values for size of "int", structure alignment, and enums.
References Datatype::enumtype, VarnodeData::size, and TYPE_UINT.
1.8.11