vrq
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions

CDecl Class Reference

Base class for describing declaration objects. More...

#include <cdecl.h>

Inheritance diagram for CDecl:
CObject CAttr CBlock CFref CGate CGenvar CInstance CMacro CNet CParam CPort CPortDir CVar

List of all members.

Public Types

enum  Flag { eFLAG_NONE = 0, eFLAG_PRAGMA = 1, eFLAG_ARRAY = 2, eFLAG_DATATYPE = 4 }

Public Member Functions

virtual CDeclClone (CObstack *heap)=0
 Create a deep copy of declaration.
virtual void SetDataType (CDataType *dt)
 Set declartion's data type property.
virtual CDataTypeGetDataType ()
 Get declartion's data type property.
virtual void SetWireAttr (Wire_t v)
 Set declaration's wire attribute.
virtual Wire_t GetWireAttr ()
 Get declartion's wire type property.
virtual int IsWidthConstant (void) const
 Determine if packed width of declaration is constant, ie dependent upon only constants and parameters.
virtual int IsWidthVolatile (void) const
 Determine if packed width of declaration is volatile, ie depend upon parameters or variables.
virtual int IsWidthEvaluateable (void) const
 Determine if packed width of declaration can be evaluated.
virtual INT32 GetWidth (void) const
 Evaluate packed width of declaration.
virtual CNodeGetWidthExp (void) const
 Get expression representing width of declaration.
virtual CNodeGetMsb () const
 Get expression for declaration's msb.
virtual CNodeGetLsb () const
 Get expression for declaration's lsb.
virtual int WidthDirection (void) const
 Evaluate current decl width direction.
virtual INT32 GetNumberOfUnpackedDimensions (void)
 Get number of unpacked dimensions of declaration.
virtual CNodeGetUnpackedMsi (INT32 dim)
 Get expression tree for upper limit of given packed array dimension.
virtual CNodeGetUnpackedLsi (INT32 dim)
 Get expression tree for lower limit of unpacked array dimension.
virtual void SetNumberOfUnpackedDimensions (INT32 dim)
 Set number of unpacked dimensions for declaration.
virtual CNodeGetUnpackedRange (INT32 dim)
 Get expression for range of array for dimension.
virtual void SetUnpackedRange (INT32 dim, CNode *v)
 Set expression for range of unpacked array for declaration.
virtual void SetConstAttr (int v)
 Set declaration's const attribute.
virtual int GetConstAttr ()
 Get declaration's const attribute.
virtual void SetVarAttr (int v)
 Set declaration's var attribute.
virtual int GetVarAttr ()
 Get declaration's var attribute.
virtual void SetAutomatic (int v)
 Set declaration's automatic property.
virtual int GetAutomatic ()
 Get declaration's automatic property.
virtual void SetVectored (int v)
 Set declartion's vectored property.
virtual int GetVectored ()
 Get declartion's vectored property.
virtual void SetScalared (int v)
 Set declartion's scalared property.
virtual int GetScalared ()
 Get declartion's scalared property.
void SetAttributes (CNode *attr)
 Set declarations's attributes.
CNodeGetAttributes ()
 Get declaration's attributes.
int HasAttribute (char *name, CNode *n=NULL, int init=1)
 Determine if declaration has the given attribute.
NodeType_t GetNodeType (void)
 Get node type of decl.
Decl_t GetClass (void)
 Get class of declaration.
void SetDeclStatementCreated (void)
 Set declaration statement created attribute.
int DeclStatementCreated (void)
 Get declaration statement create attibute.
Decl_t GetType (void)
 Get declaration type.
void SetCoord (Coord_t *aLoc)
 Set declaration coordinate.
Coord_tGetCoord (void)
 Get file coordinates for declaration.
virtual void Dump (FILE *f)
 Dump declaration info to file descriptor.
virtual void DumpDeclInfo (FILE *f)
 Dump declaration name, type and location to file descriptor.
const char * GetName (void)
 Shortcut to get declaration's name.
void SetSymbol (CSymbol *aSymbol)
 Set declaration's symbol.
CSymbolGetSymbol (void)
 Get declaration's symbol.
void SetPragmas (CNode *p)
 Set declaration pragmas.
CNodeGetPragmas ()
 Get declaration pragmas.
virtual void PreVisit1 (int(*func)(CNode *, void *), void *data)
virtual void PostVisit1 (void(*func)(CNode *, void *), void *data)
virtual void PostSubVisit1 (CNode *(*func)(CNode *, void *), void *data)

Static Public Member Functions

static Flag Or (Flag f1, Flag f2)
static Flag Or (Flag f1, Flag f2, Flag f3)
static void GetMembers (Decl_t type, list< Decl_t > &result)
 Get a list of members of the given declaration class/type.

Protected Member Functions

 CDecl (CSymbol *aSymbol, Coord_t *aLoc, Decl_t aType, CDataType *dataType, Flag flags)
 Create instance of declaration.
void Copy (CObstack *heap, const CDecl &o)
 Perform deep copy of given object to this one This should never be call directly, only by subclasses.

Detailed Description

Base class for describing declaration objects.


Member Enumeration Documentation

Enumerator:
eFLAG_NONE 

no support flags

eFLAG_PRAGMA 

declaration accepts pragmas

eFLAG_ARRAY 

declaration can be unpacked array

eFLAG_DATATYPE 

declaration has datatype


Constructor & Destructor Documentation

CDecl::CDecl ( CSymbol aSymbol,
Coord_t aLoc,
Decl_t  aType,
CDataType dataType,
Flag  flags 
) [inline, protected]

Create instance of declaration.

This should never be call directly.

Parameters:
aSymbol declaration for symbol.
aLoc file coordinates of declaration.
aType declaration type.
dataType declaration data type
flags list of supported constructs.

Member Function Documentation

virtual CDecl* CDecl::Clone ( CObstack heap  )  [pure virtual]

Create a deep copy of declaration.

Parameters:
heap heap to use for allocation.
Returns:
new declaration.

Implemented in CAttr, CBlock, CFref, CGenvar, CNet, CGate, CMacro, CPort, CInstance, CPortDir, CParam, CModule, and CVar.

void CDecl::Copy ( CObstack heap,
const CDecl o 
) [protected]

Perform deep copy of given object to this one This should never be call directly, only by subclasses.

Parameters:
heap heap to use for allocation.
o declaration to copy.
int CDecl::DeclStatementCreated ( void   )  [inline]

Get declaration statement create attibute.

Returns:
non-zero if declaration statement has been created.
virtual void CDecl::Dump ( FILE *  f  )  [inline, virtual]

Dump declaration info to file descriptor.

Parameters:
f file descriptor.

Reimplemented in CAttr, CBlock, CFref, CGenvar, CNet, CGate, CMacro, CSpecify, CPort, CInstance, CPortDir, CParam, CModule, CFunction, and CVar.

virtual void CDecl::DumpDeclInfo ( FILE *  f  )  [inline, virtual]

Dump declaration name, type and location to file descriptor.

Parameters:
f file descriptor.
CNode* CDecl::GetAttributes (  )  [inline]

Get declaration's attributes.

Returns:
attribute list.
virtual int CDecl::GetAutomatic (  )  [inline, virtual]

Get declaration's automatic property.

Returns:
value of automatic property.

Reimplemented in CFunction.

Decl_t CDecl::GetClass ( void   )  [inline]

Get class of declaration.

Returns:
declaration class for this object.
virtual int CDecl::GetConstAttr (  )  [inline, virtual]

Get declaration's const attribute.

Returns:
value of const attribute.
Coord_t* CDecl::GetCoord ( void   )  [inline]

Get file coordinates for declaration.

Returns:
file coordinates.
virtual CDataType* CDecl::GetDataType (  )  [inline, virtual]

Get declartion's data type property.

Returns:
value of data type property.
virtual CNode* CDecl::GetLsb ( void   )  const [inline, virtual]

Get expression for declaration's lsb.

Returns:
lsb expression, NULL if scalar.

Reimplemented in CFref, and CParam.

static void CDecl::GetMembers ( Decl_t  type,
list< Decl_t > &  result 
) [inline, static]

Get a list of members of the given declaration class/type.

Parameters:
type type/class of declaration.
result list to return members.
virtual CNode* CDecl::GetMsb ( void   )  const [inline, virtual]

Get expression for declaration's msb.

Returns:
msb expression, NULL if scalar.

Reimplemented in CFref, and CParam.

const char* CDecl::GetName ( void   )  [inline]

Shortcut to get declaration's name.

Returns:
char pointer to name.
NodeType_t CDecl::GetNodeType ( void   )  [inline]

Get node type of decl.

Returns:
node type of decl.

Reimplemented in CGenvar, and CParam.

virtual INT32 CDecl::GetNumberOfUnpackedDimensions ( void   )  [inline, virtual]

Get number of unpacked dimensions of declaration.

Returns:
number of dimensions, 0 if non-array.
CNode* CDecl::GetPragmas (  )  [inline]

Get declaration pragmas.

Returns:
declaration's pragma list.
virtual int CDecl::GetScalared (  )  [inline, virtual]

Get declartion's scalared property.

Returns:
value of scalared property.

Reimplemented in CNet.

CSymbol* CDecl::GetSymbol ( void   )  [inline]

Get declaration's symbol.

Returns:
declaration's symbol.
Decl_t CDecl::GetType ( void   )  [inline]

Get declaration type.

Returns:
declaration type.

Reimplemented in CGate.

virtual CNode* CDecl::GetUnpackedLsi ( INT32  dim  )  [virtual]

Get expression tree for lower limit of unpacked array dimension.

Parameters:
dim dimension.
Returns:
expression tree for unpacked lower limit.
virtual CNode* CDecl::GetUnpackedMsi ( INT32  dim  )  [virtual]

Get expression tree for upper limit of given packed array dimension.

Parameters:
dim dimension.
Returns:
expression tree for unpacked upper limit.
virtual CNode* CDecl::GetUnpackedRange ( INT32  dim  )  [inline, virtual]

Get expression for range of array for dimension.

Parameters:
dim dimension to get.
Returns:
range expression for limit.
virtual int CDecl::GetVarAttr (  )  [inline, virtual]

Get declaration's var attribute.

Returns:
value of var attribute.
virtual int CDecl::GetVectored (  )  [inline, virtual]

Get declartion's vectored property.

Returns:
value of vectored property.

Reimplemented in CNet.

virtual INT32 CDecl::GetWidth ( void   )  const [inline, virtual]

Evaluate packed width of declaration.

Returns:
packed width of declaration.
virtual CNode* CDecl::GetWidthExp ( void   )  const [inline, virtual]

Get expression representing width of declaration.

Returns:
expression representing width of declaration.

Reimplemented in CGenvar.

virtual Wire_t CDecl::GetWireAttr (  )  [inline, virtual]

Get declartion's wire type property.

Returns:
value of wire type property.
int CDecl::HasAttribute ( char *  name,
CNode n = NULL,
int  init = 1 
)

Determine if declaration has the given attribute.

Parameters:
name name of attribute to search for.
n don't supply this argument.
init don't supply this argument.
virtual int CDecl::IsWidthConstant ( void   )  const [inline, virtual]

Determine if packed width of declaration is constant, ie dependent upon only constants and parameters.

Returns:
non-zero of packed width of declaration is constant.
virtual int CDecl::IsWidthEvaluateable ( void   )  const [inline, virtual]

Determine if packed width of declaration can be evaluated.

Returns:
non-zero of packed width of declaration can be evaluated.

Reimplemented in CGenvar.

virtual int CDecl::IsWidthVolatile ( void   )  const [inline, virtual]

Determine if packed width of declaration is volatile, ie depend upon parameters or variables.

Returns:
non-zero of packed width of declaration is volatile.
static Flag CDecl::Or ( Flag  f1,
Flag  f2,
Flag  f3 
) [inline, static]
static Flag CDecl::Or ( Flag  f1,
Flag  f2 
) [inline, static]
virtual void CDecl::PostSubVisit1 ( CNode *(*)(CNode *, void *)  func,
void *  data 
) [virtual]

Reimplemented in CPortDir.

virtual void CDecl::PostVisit1 ( void(*)(CNode *, void *)  func,
void *  data 
) [virtual]

Reimplemented in CPortDir.

virtual void CDecl::PreVisit1 ( int(*)(CNode *, void *)  func,
void *  data 
) [virtual]

Reimplemented in CPortDir.

void CDecl::SetAttributes ( CNode attr  )  [inline]

Set declarations's attributes.

Parameters:
attr attribute list.
virtual void CDecl::SetAutomatic ( int  v  )  [inline, virtual]

Set declaration's automatic property.

Use to indicate type is a automatic variable.

Parameters:
v value to automatic property.
virtual void CDecl::SetConstAttr ( int  v  )  [inline, virtual]

Set declaration's const attribute.

Use to indicate type is a constant variable.

Parameters:
v value to const attribute.
void CDecl::SetCoord ( Coord_t aLoc  )  [inline]

Set declaration coordinate.

Parameters:
aLoc set file coordinates for declaration
virtual void CDecl::SetDataType ( CDataType dt  )  [inline, virtual]

Set declartion's data type property.

Parameters:
dt new data type property.
void CDecl::SetDeclStatementCreated ( void   )  [inline]

Set declaration statement created attribute.

Todo:
This call will be deprecated when the Block:Add(*) is removed.
virtual void CDecl::SetNumberOfUnpackedDimensions ( INT32  dim  )  [inline, virtual]

Set number of unpacked dimensions for declaration.

Parameters:
dim number of unpacked dimensions.
void CDecl::SetPragmas ( CNode p  )  [inline]

Set declaration pragmas.

Parameters:
p pragma list.
virtual void CDecl::SetScalared ( int  v  )  [inline, virtual]

Set declartion's scalared property.

Parameters:
v value of scalared property.

Reimplemented in CNet.

void CDecl::SetSymbol ( CSymbol aSymbol  )  [inline]

Set declaration's symbol.

Parameters:
aSymbol new symbol for declaration.
virtual void CDecl::SetUnpackedRange ( INT32  dim,
CNode v 
) [inline, virtual]

Set expression for range of unpacked array for declaration.

Parameters:
dim dimension to set.
v range expression for limit.
virtual void CDecl::SetVarAttr ( int  v  )  [inline, virtual]

Set declaration's var attribute.

Use to indicate type was declared with var keyword.

Parameters:
v value to var attribute.
virtual void CDecl::SetVectored ( int  v  )  [inline, virtual]

Set declartion's vectored property.

Parameters:
v value of vectored property.

Reimplemented in CNet.

virtual void CDecl::SetWireAttr ( Wire_t  v  )  [inline, virtual]

Set declaration's wire attribute.

Parameters:
v wire type
virtual int CDecl::WidthDirection ( void   )  const [inline, virtual]

Evaluate current decl width direction.

Expression must be constant.

Returns:
1 - big endian, -1 - little endian, 0 - cannot be determined

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