decompiler  1.0.0
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
TypeCode Class Reference

Datatype object representing executable code. More...

#include <type.hh>

Inheritance diagram for TypeCode:
Datatype

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 FuncProtogetPrototype (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 Datatypeclone (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 DatatypegetSubType (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 DatatypegetDepend (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

FuncProtoproto
 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...
 

Detailed Description

Datatype object representing executable code.

Sometimes, this holds the "function" being pointed to by a function pointer

Member Function Documentation

◆ compare()

int4 TypeCode::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
opis the data-type to compare with this
levelis maximum level to descend when recursively comparing
Returns
negative, 0, positive depending on ordering of types

Reimplemented from Datatype.

◆ compareBasic()

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

  • -1 or 1 if -this- and -op- are different in surface characteristics
  • 0 if they are exactly equal and have no parameters
  • 2 if they are equal on the surface, but additional comparisons must be made on parameters
    Parameters
    opis the other data-type to compare to
    Returns
    the comparison value

◆ compareDependency()

int4 TypeCode::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
opis the data-type to compare with this
Returns
negative, 0, positive depending on ordering of types

Reimplemented from Datatype.

◆ printRaw()

void TypeCode::printRaw ( ostream &  s) const
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.

Parameters
sis the output stream

Reimplemented from Datatype.

◆ restoreXml()

void TypeCode::restoreXml ( const Element el,
TypeFactory typegrp 
)
protectedvirtual

Restore data-type from XML.

Restore a Datatype object from an XML element

Parameters
elis the XML element
typegrpis the underlying TypeFactory that will hold the new object

Reimplemented from Datatype.

Referenced by TypeFactory::restoreXmlTypeNoRef(), and TypeFactory::restoreXmlTypeWithCodeFlags().

◆ saveXml()

void TypeCode::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
sis the stream to write to

Reimplemented from Datatype.

◆ set()

void TypeCode::set ( ProtoModel model,
Datatype outtype,
const vector< Datatype * > &  intypes,
bool  dotdotdot,
Datatype voidtype 
)
protected

Establish a function pointer.

Turn on the data-type's function prototype

Parameters
modelis the prototype model
outtypeis the return type of the prototype
intypesis the list of input parameters
dotdotdotis true if the prototype takes variable arguments
voidtypeis the reference "void" data-type

Referenced by TypeFactory::getTypeCode().

◆ setProperties()

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

Parameters
hasThisPtrtoggles whether prototype has takes a "this" pointer
isConstructortoggles whether the function is a constructor
isDestructortoggles whether the function is a destructor

Referenced by TypeFactory::restoreXmlTypeWithCodeFlags().


The documentation for this class was generated from the following files: