Base class for describing data types. More...
#include <cdatatype.h>
Public Member Functions | |
CDataType (VarDataType_t t) | |
Create data type instance. | |
CDataType (VarDataType_t t, list< CNode * > packedList) | |
Create data type instance. | |
virtual CDataType * | Clone (CObstack *heap)=0 |
Create a new copy with a deep copy. | |
virtual void | SetVarDataType (VarDataType_t v) |
Set declaration's variable data type. | |
virtual VarDataType_t | GetVarDataType () const |
Get declaration's variable data type. | |
virtual void | SetConst (int v) |
Set declaration's const property. | |
virtual int | GetConst () const |
Get declaration's const property. | |
virtual int | GetTwoState () const =0 |
Get declaration's 2 state property. | |
virtual int | GetSigned () const =0 |
Get declartion's signed property. | |
virtual NodeType_t | GetNodeType (void) const =0 |
Get data type. | |
virtual int | IsBaseWidthConstant (void) const =0 |
Determine if base width (sans packed dimensions) of declaration is constant, ie dependent upon only constants and parameters. | |
virtual int | IsBaseWidthVolatile (void) const =0 |
Determine if base width (sans packed dimensions) of declaration is volatile, ie depend upon parameters or variables. | |
virtual int | IsBaseWidthEvaluateable (void) const =0 |
Determine if base width (sans packed dimensions) of declaration can be evaluated. | |
virtual INT32 | GetBaseWidth (void) const =0 |
Evaluate base width (sans packed dimensions) of declaration. | |
virtual CNode * | GetBaseWidthExp () const =0 |
Get expression for datatype's base width (sans packed dimensions). | |
virtual int | IsScalar () const |
Determine if complete data structure is a scalar. | |
virtual int | IsVector () const =0 |
Determine if complete data structure is a vector. | |
virtual int | IsPacked () const =0 |
Determine if complete data structure is packed. | |
virtual int | IsPackedWidthConstant (void) const |
Determine if packed or vector width of declaration is constant, ie dependent upon only constants and parameters. | |
virtual int | IsPackedWidthVolatile (void) const |
Determine if packed or vector width of declaration is volatile, ie depend upon parameters or variables. | |
virtual int | IsPackedWidthEvaluateable (void) const |
Determine if packed or vector width of declaration can be evaluated. | |
virtual CNode * | GetPackedMsb () const |
Get expression for declaration's msb. | |
virtual CNode * | GetPackedLsb () const |
Get expression for declaration's lsb. | |
virtual CNode * | GetPackedRange () const |
Get expression for datatype's overall packed or vector range (msb/lsb). | |
virtual INT32 | GetPackedWidth (void) const |
Evaluate packed or vector width of declaration. | |
virtual CNode * | GetPackedWidthExp () const |
Get expression for datatype's overall packed or vector width. | |
virtual int | PackedWidthDirection (void) const |
Evaluate current decl width direction. | |
virtual INT32 | GetNumberOfPackedDimensions (void) const |
Get number of packed dimensions of declaration. | |
virtual CNode * | GetPackedMsi (INT32 dim) const |
Get expression tree for upper limit of given packed array dimension. | |
virtual CNode * | GetPackedLsi (INT32 dim) const |
Get expression tree for lower limit of packed array dimension. | |
virtual CNode * | GetPackedRange (INT32 dim) const |
Get expression for range of packed array for dimension. | |
virtual void | Dump (FILE *f) const =0 |
Dump data type info to file descriptor. | |
virtual void | PreVisit1 (int(*callback)(CNode *, void *), void *data) |
Walk tree invoking callback on each node before children have been visited. | |
virtual void | PostVisit1 (void(*callback)(CNode *, void *), void *data) |
Walk tree invoking callback on each node after children have been visited. | |
virtual void | PostSubVisit1 (CNode *(*callback)(CNode *, void *), void *data) |
Walk tree invoking callback on each node after children have been visited. | |
Protected Member Functions | |
void | Copy (CObstack *heap, const CDataType &o) |
Perform deep copy of given object to this one This should never be call directly, only by subclasses. |
Base class for describing data types.
CDataType::CDataType | ( | VarDataType_t | t | ) |
Create data type instance.
CDataType::CDataType | ( | VarDataType_t | t, | |
list< CNode * > | packedList | |||
) |
Create data type instance.
Create a new copy with a deep copy.
heap | heap to use for allocation. |
Implemented in CSimpleType.
Perform deep copy of given object to this one This should never be call directly, only by subclasses.
heap | heap to use for allocation. | |
o | declaration to copy. |
virtual void CDataType::Dump | ( | FILE * | f | ) | const [pure virtual] |
virtual INT32 CDataType::GetBaseWidth | ( | void | ) | const [pure virtual] |
Evaluate base width (sans packed dimensions) of declaration.
Implemented in CSimpleType.
virtual CNode* CDataType::GetBaseWidthExp | ( | ) | const [pure virtual] |
Get expression for datatype's base width (sans packed dimensions).
Implemented in CSimpleType.
virtual int CDataType::GetConst | ( | ) | const [inline, virtual] |
Get declaration's const property.
virtual NodeType_t CDataType::GetNodeType | ( | void | ) | const [pure virtual] |
virtual INT32 CDataType::GetNumberOfPackedDimensions | ( | void | ) | const [inline, virtual] |
Get number of packed dimensions of declaration.
Reimplemented in CSimpleType.
virtual CNode* CDataType::GetPackedLsb | ( | ) | const [virtual] |
Get expression for declaration's lsb.
Valid only for Packed and Vector declarations.
Reimplemented in CSimpleType.
Get expression tree for lower limit of packed array dimension.
dim | dimension. |
Reimplemented in CSimpleType.
virtual CNode* CDataType::GetPackedMsb | ( | ) | const [virtual] |
Get expression for declaration's msb.
Valid only for Packed and Vector declarations.
Reimplemented in CSimpleType.
Get expression tree for upper limit of given packed array dimension.
dim | dimension. |
Reimplemented in CSimpleType.
virtual CNode* CDataType::GetPackedRange | ( | ) | const [virtual] |
Get expression for datatype's overall packed or vector range (msb/lsb).
Reimplemented in CSimpleType.
Get expression for range of packed array for dimension.
dim | dimension to get. |
Reimplemented in CSimpleType.
virtual INT32 CDataType::GetPackedWidth | ( | void | ) | const [virtual] |
Evaluate packed or vector width of declaration.
Reimplemented in CSimpleType.
virtual CNode* CDataType::GetPackedWidthExp | ( | ) | const [virtual] |
Get expression for datatype's overall packed or vector width.
Reimplemented in CSimpleType.
virtual int CDataType::GetSigned | ( | ) | const [pure virtual] |
virtual int CDataType::GetTwoState | ( | ) | const [pure virtual] |
virtual VarDataType_t CDataType::GetVarDataType | ( | ) | const [inline, virtual] |
Get declaration's variable data type.
virtual int CDataType::IsBaseWidthConstant | ( | void | ) | const [pure virtual] |
Determine if base width (sans packed dimensions) of declaration is constant, ie dependent upon only constants and parameters.
Implemented in CSimpleType.
virtual int CDataType::IsBaseWidthEvaluateable | ( | void | ) | const [pure virtual] |
Determine if base width (sans packed dimensions) of declaration can be evaluated.
Implemented in CSimpleType.
virtual int CDataType::IsBaseWidthVolatile | ( | void | ) | const [pure virtual] |
Determine if base width (sans packed dimensions) of declaration is volatile, ie depend upon parameters or variables.
Implemented in CSimpleType.
virtual int CDataType::IsPacked | ( | ) | const [pure virtual] |
Determine if complete data structure is packed.
Packed data structures can be treated as a single vector.
Implemented in CSimpleType.
virtual int CDataType::IsPackedWidthConstant | ( | void | ) | const [virtual] |
Determine if packed or vector width of declaration is constant, ie dependent upon only constants and parameters.
virtual int CDataType::IsPackedWidthEvaluateable | ( | void | ) | const [virtual] |
Determine if packed or vector width of declaration can be evaluated.
virtual int CDataType::IsPackedWidthVolatile | ( | void | ) | const [virtual] |
Determine if packed or vector width of declaration is volatile, ie depend upon parameters or variables.
virtual int CDataType::IsScalar | ( | ) | const [virtual] |
Determine if complete data structure is a scalar.
Scalars are single-bit intergal types.
virtual int CDataType::IsVector | ( | ) | const [pure virtual] |
Determine if complete data structure is a vector.
Vectors are multi-bit intergal types.
Implemented in CSimpleType.
virtual int CDataType::PackedWidthDirection | ( | void | ) | const [virtual] |
Evaluate current decl width direction.
Expression must be constant.
Reimplemented in CSimpleType.
virtual void CDataType::PostSubVisit1 | ( | CNode *(*)(CNode *, void *) | callback, | |
void * | data | |||
) | [virtual] |
Walk tree invoking callback on each node after children have been visited.
callback may modify tree and return a modified subtree.
callback | function to be called for each node | |
data | opaque argument passed to callback function |
virtual void CDataType::PostVisit1 | ( | void(*)(CNode *, void *) | callback, | |
void * | data | |||
) | [virtual] |
Walk tree invoking callback on each node after children have been visited.
callback | function to be called for each node | |
data | opaque argument passed to callback function |
virtual void CDataType::PreVisit1 | ( | int(*)(CNode *, void *) | callback, | |
void * | data | |||
) | [virtual] |
Walk tree invoking callback on each node before children have been visited.
callback can terminate transversal early. callback returns 0 to terminate transversal early.
callback | function to be called for each node | |
data | opaque argument passed to callback function |
virtual void CDataType::SetConst | ( | int | v | ) | [inline, virtual] |
Set declaration's const property.
Use to indicate type is a constant variable.
v | value to const property. |
virtual void CDataType::SetVarDataType | ( | VarDataType_t | v | ) | [inline, virtual] |
Set declaration's variable data type.
v | variable data type |