|
| Datatype (const Datatype &op) |
| Construct the base data-type copying low-level properties of another.
|
|
| Datatype (int4 s, type_metatype m) |
| Construct the base data-type providing size and meta-type.
|
|
| Datatype (int4 s, type_metatype m, const string &n) |
| Construct the base data-type providing size, meta-type, and name.
|
|
virtual | ~Datatype (void) |
| Destructor.
|
|
bool | isCoreType (void) const |
| Is this a core data-type.
|
|
bool | isCharPrint (void) const |
| Does this print as a 'char'.
|
|
bool | isEnumType (void) const |
| Is this an enumerated type.
|
|
bool | isPowerOfTwo (void) const |
| Is this a flag-based enumeration.
|
|
bool | isASCII (void) const |
| Does this print as an ASCII 'char'.
|
|
bool | isUTF16 (void) const |
| Does this print as UTF16 'wchar'.
|
|
bool | isUTF32 (void) const |
| Does this print as UTF32 'wchar'.
|
|
uint4 | getInheritable (void) const |
| Get properties pointers inherit.
|
|
type_metatype | getMetatype (void) const |
| Get the type meta-type.
|
|
uint8 | getId (void) const |
| Get the type id.
|
|
int4 | getSize (void) const |
| Get the type size.
|
|
const string & | getName (void) const |
| Get the type name.
|
|
virtual void | printRaw (ostream &s) const |
| Print a description of the type to stream. More...
|
|
virtual Datatype * | getSubType (uintb off, uintb *newoff) const |
| Recover component data-type one-level down. More...
|
|
virtual int4 | numDepend (void) const |
| Return number of component sub-types.
|
|
virtual Datatype * | getDepend (int4 index) const |
| Return the i-th component sub-type.
|
|
virtual void | printNameBase (ostream &s) const |
| Print name as short prefix.
|
|
virtual int4 | compare (const Datatype &op, int4 level) const |
| Compare for functional equivalence. More...
|
|
virtual int4 | compareDependency (const Datatype &op) const |
| Compare for storage in tree structure. More...
|
|
virtual Datatype * | clone (void) const =0 |
| Clone the data-type.
|
|
virtual void | saveXml (ostream &s) const |
| Serialize the data-type to XML. More...
|
|
int4 | typeOrder (const Datatype &op) const |
| Order this with -op- datatype.
|
|
int4 | typeOrderBool (const Datatype &op) const |
| Order this with -op-, treating bool data-type as special. More...
|
|
void | saveXmlBasic (ostream &s) const |
| Save basic data-type properties. More...
|
|
void | saveXmlRef (ostream &s) const |
| Write an XML reference of this to stream. More...
|
|
The base datatype class for the decompiler.
Used for symbols, function prototypes, type propagation etc.
int4 Datatype::compare |
( |
const Datatype & |
op, |
|
|
int4 |
level |
|
) |
| const |
|
virtual |
Compare for functional equivalence.
Compare this with another data-type. 0 (equality) means the data-types are functionally equivalent (even if names differ) Smaller types come earlier. More specific types come earlier.
- Parameters
-
op | is the data-type to compare with this |
level | is maximum level to descend when recursively comparing |
- Returns
- negative, 0, positive depending on ordering of types
Reimplemented in TypeSpacebase, TypeCode, TypeStruct, TypeEnum, TypeArray, and TypePointer.
int4 Datatype::compareDependency |
( |
const Datatype & |
op | ) |
const |
|
virtual |
Compare for storage in tree structure.
Ordering of data-types for the main TypeFactory container. Comparison only goes down one-level in the component structure, before just comparing pointers.
- Parameters
-
op | is the data-type to compare with this |
- Returns
- negative, 0, positive depending on ordering of types
Reimplemented in TypeSpacebase, TypeCode, TypeStruct, TypeEnum, TypeArray, and TypePointer.
Datatype * Datatype::getSubType |
( |
uintb |
off, |
|
|
uintb * |
newoff |
|
) |
| const |
|
virtual |
Recover component data-type one-level down.
Given an offset into this data-type, return the component data-type at that offset. Also, pass back a "renormalized" offset suitable for recursize getSubType() calls: i.e. if the original offset hits the exact start of the sub-type, 0 is passed back. If there is no valid component data-type at the offset, return NULL and pass back the original offset
- Parameters
-
off | is the offset into this data-type |
newoff | is a pointer to the passed-back offset |
- Returns
- a pointer to the component data-type or NULL
Reimplemented in TypeSpacebase, TypeStruct, and TypeArray.
void Datatype::saveXml |
( |
ostream & |
s | ) |
const |
|
virtual |
Serialize the data-type to XML.
Write out a formal description of the data-type as an XML <type> tag. For composite data-types, the description goes down one level, describing the component types only by reference.
- Parameters
-
s | is the stream to write to |
Reimplemented in TypeSpacebase, TypeCode, TypeStruct, TypeEnum, TypeArray, TypePointer, TypeVoid, TypeUnicode, and TypeChar.
int4 Datatype::typeOrderBool |
( |
const Datatype & |
op | ) |
const |
|
inline |
Order this with -op-, treating bool data-type as special.
Order data-types, with special handling of the bool data-type. Data-types are compared using the normal ordering, but bool is ordered after all other data-types. A return value of 0 indicates the data-types are the same, -1 indicates that this is prefered (ordered earlier), and 1 indicates this is ordered later.
- Parameters
-
op | is the other data-type to compare with this |
- Returns
- -1, 0, or 1