vrq

CDecl Class Reference

Base class for describing declaration objects. More...

#include <cdecl.h>

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

List of all members.

Public Types

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

Public Member Functions

virtual int IsWidthConstant (void)
 Determine if width of declaration is constant, ie dependent upon only constants and parameters.
virtual int IsWidthVolatile (void)
 Determine if width of declaration is volatile, ie depend upon parameters or variables.
virtual int IsWidthEvaluateable (void)
 Determine if width of declaration can be evaluated.
virtual INT32 GetWidth (void)
 Evaluate width of declaration.
virtual CNodeGetWidthExp (void)
 Get expression representing width of declaration.
virtual int WidthDirection (void)
 Evaluate current decl width direction.
virtual INT32 GetMsbInt (void)
 Evaluate the msb of the declaration.
virtual CNodeGetMsb ()
 Get expression for declaration's msb.
virtual CNodeGetRange ()
 Get expression for declaration's range (msb/lsb).
virtual void SetRange (CNode *n)
 Set declaration's range (msb/lsb).
virtual INT32 GetLsbInt (void)
 Evaluate the lsb of the declaration.
virtual CNodeGetLsb ()
 Get expression for declaration's lsb.
virtual INT32 GetNumberOfDimensions (void)
 Get number of dimension of declaration.
virtual CNodeGetMsi (INT32 dim)
 Get expression tree for upper limit of array dimension.
virtual CNodeGetLsi (INT32 dim)
 Get expression tree for lower limit of array dimension.
virtual void SetNumberOfDimensions (INT32 dim)
 Set number of dimensions for declaration.
virtual CNodeGetIndex (INT32 dim)
 Get expression for limit of array for dimension.
virtual void SetIndex (INT32 dim, CNode *v)
 Set expression for limits of array for declaration.
virtual void SetSigned (int v)
 Set declartion's signed property.
virtual int GetSigned ()
 Get declartion's signed 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.
virtual 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, Flag flags)
 Create instance of declaration.
void Copy (const CDecl &o)
 Perform deep copy of given object to this one This should never be call directly, only by subclasses.
 CDecl (const CDecl &o)
 Copy constructor to do deep copy.

Detailed Description

Base class for describing declaration objects.


Member Enumeration Documentation

Enumerator:
eFLAG_NONE 
eFLAG_PRAGMA 
eFLAG_ARRAY 
eFLAG_VECTOR 

Constructor & Destructor Documentation

CDecl::CDecl ( CSymbol aSymbol,
Coord_t aLoc,
Decl_t  aType,
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.
flags list of supported constructs.
CDecl::CDecl ( const CDecl o  )  [inline, protected]

Copy constructor to do deep copy.

This should never be called directly.

Parameters:
o declaration to copy.

Member Function Documentation

void CDecl::Copy ( const CDecl o  )  [protected]

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

Parameters:
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, CEvent, CFref, CReal, CGenvar, CReg, CNet, CGate, CMacro, CSpecify, CPort, CInstance, CPortDir, CParam, CModule, and CFunction.

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.
Decl_t CDecl::GetClass ( void   )  [inline]

Get class of declaration.

Returns:
declaration class for this object.
Coord_t* CDecl::GetCoord ( void   )  [inline]

Get file coordinates for declaration.

Returns:
file coordinates.
virtual CNode* CDecl::GetIndex ( INT32  dim  )  [inline, virtual]

Get expression for limit of array for dimension.

Parameters:
dim dimension to get.
Returns:
range expression for limit.
virtual CNode* CDecl::GetLsb (  )  [virtual]

Get expression for declaration's lsb.

Returns:
lsb expression, NULL if scalar.

Reimplemented in CFref.

virtual INT32 CDecl::GetLsbInt ( void   )  [virtual]

Evaluate the lsb of the declaration.

Returns:
lsb of declaration, 0 if scalar.
virtual CNode* CDecl::GetLsi ( INT32  dim  )  [virtual]

Get expression tree for lower limit of array dimension.

Parameters:
dim dimension.
Returns:
expression tree for lower limit.
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 (  )  [virtual]

Get expression for declaration's msb.

Returns:
msb expression, NULL if scalar.

Reimplemented in CFref.

virtual INT32 CDecl::GetMsbInt ( void   )  [virtual]

Evaluate the msb of the declaration.

Returns:
msb of declaration, 0 if scalar.
virtual CNode* CDecl::GetMsi ( INT32  dim  )  [virtual]

Get expression tree for upper limit of array dimension.

Parameters:
dim dimension.
Returns:
expression tree for upper limit.
const char* CDecl::GetName ( void   )  [inline]

Shortcut to get declaration's name.

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

Get node type of decl.

Returns:
node type of decl.

Reimplemented in CReal, CGenvar, CReg, CNet, CPortDir, and CParam.

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

Get number of dimension of declaration.

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

Get declaration pragmas.

Returns:
declaration's pragma list.
virtual CNode* CDecl::GetRange (  )  [inline, virtual]

Get expression for declaration's range (msb/lsb).

Returns:
range expression, NULL if scalar.

Reimplemented in CFref.

virtual int CDecl::GetScalared (  )  [inline, virtual]

Get declartion's scalared property.

Returns:
value of scalared property.

Reimplemented in CNet.

virtual int CDecl::GetSigned (  )  [inline, virtual]

Get declartion's signed property.

Returns:
value of signed property.
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 int CDecl::GetVectored (  )  [inline, virtual]

Get declartion's vectored property.

Returns:
value of vectored property.

Reimplemented in CNet.

virtual INT32 CDecl::GetWidth ( void   )  [virtual]

Evaluate width of declaration.

Returns:
width of declaration.

Reimplemented in CGenvar, and CParam.

virtual CNode* CDecl::GetWidthExp ( void   )  [virtual]

Get expression representing width of declaration.

Returns:
expression representing width of declaration.

Reimplemented in CGenvar, and CParam.

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   )  [virtual]

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

Returns:
non-zero of width of declaration is constant.

Reimplemented in CParam.

virtual int CDecl::IsWidthEvaluateable ( void   )  [virtual]

Determine if width of declaration can be evaluated.

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

Reimplemented in CGenvar, and CParam.

virtual int CDecl::IsWidthVolatile ( void   )  [virtual]

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

Returns:
non-zero of width of declaration is volatile.

Reimplemented in CParam.

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]
virtual void CDecl::PostVisit1 ( void(*)(CNode *, void *)  func,
void *  data 
) [virtual]
virtual void CDecl::PreVisit1 ( int(*)(CNode *, void *)  func,
void *  data 
) [virtual]
void CDecl::SetAttributes ( CNode attr  )  [inline]

Set declarations's attributes.

Parameters:
attr attribute list.
void CDecl::SetCoord ( Coord_t aLoc  )  [inline]

Set declaration coordinate.

Parameters:
aLoc set file coordinates for declaration
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::SetIndex ( INT32  dim,
CNode v 
) [inline, virtual]

Set expression for limits of array for declaration.

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

Set number of dimensions for declaration.

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

Set declaration pragmas.

Parameters:
p pragma list.
virtual void CDecl::SetRange ( CNode n  )  [virtual]

Set declaration's range (msb/lsb).

Parameters:
n range expression or NULL
virtual void CDecl::SetScalared ( int  v  )  [inline, virtual]

Set declartion's scalared property.

Parameters:
v value of scalared property.

Reimplemented in CNet.

virtual void CDecl::SetSigned ( int  v  )  [inline, virtual]

Set declartion's signed property.

Parameters:
v value of signed property.
void CDecl::SetSymbol ( CSymbol aSymbol  )  [inline]

Set declaration's symbol.

Parameters:
aSymbol new symbol for declaration.
virtual void CDecl::SetVectored ( int  v  )  [inline, virtual]

Set declartion's vectored property.

Parameters:
v value of vectored property.

Reimplemented in CNet.

virtual int CDecl::WidthDirection ( void   )  [virtual]

Evaluate current decl width direction.

Expression must be constant.

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

Reimplemented in CParam.


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

Generated on 3 Dec 2009 for vrq by  doxygen 1.6.1