|
|
| 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.
|
| |
| bool | hasSameVariableBase (const Datatype *ct) const |
| | Are these the same variable length data-type. More...
|
| |
| 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 Datatype * | nearestArrayedComponentForward (uintb off, uintb *newoff, int4 *elSize) const |
| |
| virtual Datatype * | nearestArrayedComponentBackward (uintb off, uintb *newoff, int4 *elSize) const |
| |
| 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 | 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...
|
| |
| bool | isPtrsubMatching (uintb offset) const |
| | Is this data-type suitable as input to a CPUI_PTRSUB op. 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.
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, TypeCode, 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