decompiler  1.0.0
Public Member Functions | Protected Member Functions | Private Member Functions | Friends | List of all members
ghidra::TypeUnicode Class Reference

The unicode data-type: i.e. wchar. More...

#include <type.hh>

Inheritance diagram for ghidra::TypeUnicode:
ghidra::TypeBase ghidra::Datatype

Public Member Functions

 TypeUnicode (void)
 For use with decode.
 
 TypeUnicode (const TypeUnicode &op)
 Construct from another TypeUnicode.
 
 TypeUnicode (const string &nm, int4 sz, type_metatype m)
 Construct given name,size, meta-type.
 
virtual Datatypeclone (void) const
 Clone the data-type.
 
virtual void encode (Encoder &encoder) const
 Encode the data-type to a stream. More...
 
- Public Member Functions inherited from ghidra::TypeBase
 TypeBase (const TypeBase &op)
 Construct TypeBase copying properties from another data-type.
 
 TypeBase (int4 s, type_metatype m)
 Construct TypeBase from a size and meta-type.
 
 TypeBase (int4 s, type_metatype m, const string &n)
 Construct TypeBase from a size, meta-type, and name.
 
- Public Member Functions inherited from ghidra::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.
 
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'.
 
bool isVariableLength (void) const
 Is this a variable length structure.
 
bool hasSameVariableBase (const Datatype *ct) const
 Are these the same variable length data-type. More...
 
bool isOpaqueString (void) const
 Is this an opaquely encoded string.
 
bool isPointerRel (void) const
 Is this a TypePointerRel.
 
bool isFormalPointerRel (void) const
 Is this a non-ephemeral TypePointerRel.
 
bool hasStripped (void) const
 Return true if this has a stripped form.
 
bool isIncomplete (void) const
 Is this an incompletely defined data-type.
 
bool needsResolution (void) const
 Is this a union or a pointer to union.
 
uint4 getInheritable (void) const
 Get properties pointers inherit.
 
uint4 getDisplayFormat (void) const
 Get the display format for constants with this data-type. More...
 
type_metatype getMetatype (void) const
 Get the type meta-type.
 
sub_metatype getSubMeta (void) const
 Get the sub-metatype.
 
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.
 
const string & getDisplayName (void) const
 Get string to use in display.
 
DatatypegetTypedef (void) const
 Get the data-type immediately typedefed by this (or null)
 
virtual void printRaw (ostream &s) const
 Print a description of the type to stream. More...
 
virtual const TypeFieldfindTruncation (int8 off, int4 sz, const PcodeOp *op, int4 slot, int8 &newoff) const
 Find an immediate subfield of this data-type. More...
 
virtual DatatypegetSubType (int8 off, int8 *newoff) const
 Recover component data-type one-level down. More...
 
virtual DatatypenearestArrayedComponentForward (int8 off, int8 *newoff, int8 *elSize) const
 
virtual DatatypenearestArrayedComponentBackward (int8 off, int8 *newoff, int8 *elSize) const
 
virtual int4 getHoleSize (int4 off) const
 Get number of bytes at the given offset that are padding.
 
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.
 
virtual int4 compare (const Datatype &op, int4 level) const
 Order types for propagation. More...
 
virtual int4 compareDependency (const Datatype &op) const
 Compare for storage in tree structure. More...
 
virtual bool isPtrsubMatching (uintb off) const
 Is this data-type suitable as input to a CPUI_PTRSUB op. More...
 
virtual DatatypegetStripped (void) const
 Get a stripped version of this for formal use in formal declarations. More...
 
virtual DatatyperesolveInFlow (PcodeOp *op, int4 slot)
 Tailor data-type propagation based on Varnode use. More...
 
virtual DatatypefindResolve (const PcodeOp *op, int4 slot)
 Find a previously resolved sub-type. More...
 
virtual int4 findCompatibleResolve (Datatype *ct) const
 Find a resolution compatible with the given data-type. More...
 
virtual const TypeFieldresolveTruncation (int8 offset, PcodeOp *op, int4 slot, int8 &newoff)
 Resolve which union field is being used for a given PcodeOp when a truncation is involved. 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 encodeRef (Encoder &encoder) const
 Encode a reference of this to a stream. More...
 
bool isPieceStructured (void) const
 Does this data-type consist of separate pieces? More...
 

Protected Member Functions

void decode (Decoder &decoder, TypeFactory &typegrp)
 Restore this unicode data-type from a stream. More...
 
- Protected Member Functions inherited from ghidra::Datatype
void decodeBasic (Decoder &decoder)
 Recover basic data-type properties. More...
 
void encodeBasic (type_metatype meta, Encoder &encoder) const
 Encode basic data-type properties. More...
 
void encodeTypedef (Encoder &encoder) const
 Encode this as a typedef element to a stream. More...
 
void markComplete (void)
 Mark this data-type as completely defined.
 
void setDisplayFormat (uint4 format)
 Set a specific display format. More...
 

Private Member Functions

void setflags (void)
 Set unicode property flags. More...
 

Friends

class TypeFactory
 

Additional Inherited Members

- Static Public Member Functions inherited from ghidra::Datatype
static uint4 encodeIntegerFormat (const string &val)
 Encode the format attribute from an XML element. More...
 
static string decodeIntegerFormat (uint4 val)
 Decode the given format value into an XML attribute string. More...
 
- Protected Types inherited from ghidra::Datatype
enum  {
  coretype = 1, chartype = 2, enumtype = 4, poweroftwo = 8,
  utf16 = 16, utf32 = 32, opaque_string = 64, variable_length = 128,
  has_stripped = 0x100, is_ptrrel = 0x200, type_incomplete = 0x400, needs_resolution = 0x800,
  force_format = 0x7000, truncate_bigendian = 0x8000
}
 Boolean properties of datatypes. More...
 
- Static Protected Member Functions inherited from ghidra::Datatype
static uint8 hashName (const string &nm)
 Produce a data-type id by hashing the type name. More...
 
static uint8 hashSize (uint8 id, int4 size)
 Reversibly hash size into id. More...
 
- Protected Attributes inherited from ghidra::Datatype
uint8 id
 A unique id for the type (or 0 if an id is not assigned)
 
int4 size
 Size (of variable holding a value of this type)
 
uint4 flags
 Boolean properties of the type.
 
string name
 Name of type.
 
string displayName
 Name to display in output.
 
type_metatype metatype
 Meta-type - type disregarding size.
 
sub_metatype submeta
 Sub-type of of the meta-type, for comparisons.
 
DatatypetypedefImm
 The immediate data-type being typedefed by this.
 
- Static Protected Attributes inherited from ghidra::Datatype
static sub_metatype base2sub [15]
 

Detailed Description

The unicode data-type: i.e. wchar.

This supports encoding elements that are wider than 1-byte

Member Function Documentation

◆ decode()

void ghidra::TypeUnicode::decode ( Decoder decoder,
TypeFactory typegrp 
)
protected

Restore this unicode data-type from a stream.

Parse a <type> tag for properties of the data-type.

Parameters
decoderis the stream decoder
typegrpis the factory owning this data-type

References ghidra::Datatype::decodeBasic(), ghidra::SUB_INT_UNICODE, ghidra::SUB_UINT_UNICODE, ghidra::Datatype::submeta, and ghidra::TYPE_INT.

Referenced by ghidra::TypeFactory::decodeTypeNoRef().

◆ encode()

void ghidra::TypeUnicode::encode ( Encoder encoder) const
virtual

Encode the data-type to a stream.

Encode a formal description of the data-type as a <type> element. For composite data-types, the description goes down one level, describing the component types only by reference.

Parameters
encoderis the stream encoder

Reimplemented from ghidra::Datatype.

References ghidra::Encoder::closeElement(), ghidra::Datatype::encodeBasic(), ghidra::Datatype::encodeTypedef(), ghidra::Encoder::openElement(), ghidra::Datatype::typedefImm, and ghidra::Encoder::writeBool().

◆ setflags()

void ghidra::TypeUnicode::setflags ( void  )
private

Set unicode property flags.

Properties that specify which encoding this type uses are set based on the size of the data-type. I.e. select UTF8, UTF16, or UTF32

References ghidra::Datatype::chartype, ghidra::Datatype::flags, ghidra::Datatype::utf16, and ghidra::Datatype::utf32.

Referenced by TypeUnicode().


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