decompiler
1.0.0
|
Datatype object representing executable code. More...
#include <type.hh>
Public Member Functions | |
TypeCode (const TypeCode &op) | |
Construct from another TypeCode. | |
TypeCode (const string &nm) | |
Construct from a name. | |
int4 | compareBasic (const TypeCode *op) const |
Compare surface characteristics of two TypeCodes. More... | |
const FuncProto * | getPrototype (void) const |
Get the function prototype. | |
void | setProperties (bool hasThisPtr, bool isConstructor, bool isDestructor) |
Set additional function properties. More... | |
virtual void | printRaw (ostream &s) const |
Print a description of the type to stream. More... | |
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 |
Clone the data-type. | |
virtual void | saveXml (ostream &s) const |
Serialize the data-type to XML. More... | |
Public Member Functions inherited from Datatype | |
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 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. | |
int4 | typeOrder (const Datatype &op) const |
Order this with -op- datatype. | |
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... | |
Protected Member Functions | |
void | set (ProtoModel *model, Datatype *outtype, const vector< Datatype * > &intypes, bool dotdotdot, Datatype *voidtype) |
Establish a function pointer. More... | |
virtual void | restoreXml (const Element *el, TypeFactory &typegrp) |
Restore data-type from XML. More... | |
Protected Member Functions inherited from Datatype | |
void | restoreXmlBasic (const Element *el) |
Recover basic data-type properties. More... | |
Protected Attributes | |
FuncProto * | proto |
If non-null, this describes the prototype of the underlying function. | |
Protected Attributes inherited from Datatype | |
int4 | size |
Size (of variable holding a value of this type) | |
string | name |
Name of type. | |
type_metatype | metatype |
Meta-type - type disregarding size. | |
uint4 | flags |
Boolean properties of the type. | |
uint8 | id |
A unique id for the type (or 0 if an id is not assigned) | |
Friends | |
class | TypeFactory |
Additional Inherited Members | |
Protected Types inherited from Datatype | |
enum | { coretype = 1, chartype = 2, enumtype = 4, poweroftwo = 8, utf16 = 16, utf32 = 32 } |
Boolean properties of datatypes. More... | |
Static Protected Member Functions inherited from Datatype | |
static uint8 | hashName (const string &nm) |
Produce a data-type id by hashing the type name. More... | |
Datatype object representing executable code.
Sometimes, this holds the "function" being pointed to by a function pointer
|
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.
op | is the data-type to compare with this |
level | is maximum level to descend when recursively comparing |
Reimplemented from Datatype.
int4 TypeCode::compareBasic | ( | const TypeCode * | op | ) | const |
Compare surface characteristics of two TypeCodes.
Compare basic characteristics of this with another TypeCode, not including the prototype
op | is the other data-type to compare to |
|
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.
op | is the data-type to compare with this |
Reimplemented from Datatype.
|
virtual |
Print a description of the type to stream.
Print a raw description of the type to stream. Intended for debugging. Not intended to produce parsable C.
s | is the output stream |
Reimplemented from Datatype.
|
protectedvirtual |
Restore data-type from XML.
Restore a Datatype object from an XML element
el | is the XML element |
typegrp | is the underlying TypeFactory that will hold the new object |
Reimplemented from Datatype.
Referenced by TypeFactory::restoreXmlTypeNoRef(), and TypeFactory::restoreXmlTypeWithCodeFlags().
|
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.
s | is the stream to write to |
Reimplemented from Datatype.
|
protected |
Establish a function pointer.
Turn on the data-type's function prototype
model | is the prototype model |
outtype | is the return type of the prototype |
intypes | is the list of input parameters |
dotdotdot | is true if the prototype takes variable arguments |
voidtype | is the reference "void" data-type |
Referenced by TypeFactory::getTypeCode().
void TypeCode::setProperties | ( | bool | hasThisPtr, |
bool | isConstructor, | ||
bool | isDestructor | ||
) |
Set additional function properties.
Assuming this has an underlying function prototype, set some of its boolean properties
hasThisPtr | toggles whether prototype has takes a "this" pointer |
isConstructor | toggles whether the function is a constructor |
isDestructor | toggles whether the function is a destructor |
Referenced by TypeFactory::restoreXmlTypeWithCodeFlags().