104 #if defined CDECL_CPP
174 {
return static_cast<Flag>(((unsigned)f1 | (
unsigned)f2)); }
176 {
return static_cast<Flag>(((unsigned)f1 | (
unsigned)f2) | (
unsigned)f3); }
185 vector<CNode*> unpackedRange;
186 int numberOfUnpackedDimensions;
230 if( numberOfUnpackedDimensions ) {
242 if( numberOfUnpackedDimensions ) {
253 if( numberOfUnpackedDimensions ) {
264 if( numberOfUnpackedDimensions ) {
275 if( numberOfUnpackedDimensions ) {
310 return numberOfUnpackedDimensions;
330 numberOfUnpackedDimensions = dim;
331 unpackedRange.reserve( dim );
345 { MASSERT(flags &
eFLAG_ARRAY); unpackedRange[dim] = v; }
452 result.push_back(
ePARAM );
456 result.push_back(
eINPUT );
458 result.push_back(
eINOUT );
461 result.push_back( type );
512 fprintf( f,
"%s: %s, defined in '%s' line %d\n",
557 numberOfUnpackedDimensions = 0;
558 declStatement = FALSE;
566 this->dataType = dataType;
virtual int GetVarAttr()
Get declaration's var attribute.
Definition: cdecl.h:367
Decl_t GetType(void)
Get declaration type.
Definition: cdecl.h:483
declaration superclass for all net types
Definition: cdecl.h:95
void SetDeclStatementCreated(void)
Set declaration statement created attribute.
Definition: cdecl.h:471
fork/join block declaration
Definition: cdecl.h:79
virtual void SetWireAttr(Wire_t v)
Set declaration's wire attribute.
Definition: cdecl.h:218
int lineno
file line number
Definition: cdecl.h:48
triand type
Definition: cdecl.h:61
virtual INT32 GetNumberOfUnpackedDimensions(void)
Get number of unpacked dimensions of declaration.
Definition: cdecl.h:309
virtual int IsPackedWidthEvaluateable(void) const
Determine if packed or vector width of declaration can be evaluated.
virtual void SetDataType(CDataType *dt)
Set declartion's data type property.
Definition: cdecl.h:205
virtual void DumpDeclInfo(FILE *f)
Dump declaration name, type and location to file descriptor.
Definition: cdecl.h:510
virtual int PackedWidthDirection(void) const
Evaluate current decl width direction.
Flag
Definition: cdecl.h:167
Decl_t
Declaration types.
Definition: cdecl.h:74
declaration has datatype
Definition: cdecl.h:171
virtual void PreVisit1(int(*func)(CNode *, void *), void *data)
tri1 type
Definition: cdecl.h:64
virtual void SetScalared(int v)
Set declartion's scalared property.
Definition: cdecl.h:393
virtual CNode * GetPackedMsb() const
Get expression for declaration's msb.
attribute declaration
Definition: cdecl.h:97
named block declaration
Definition: cdecl.h:78
supply1 type
Definition: cdecl.h:68
CDecl(CSymbol *aSymbol, Coord_t *aLoc, Decl_t aType, CDataType *dataType, Flag flags)
Create instance of declaration.
Definition: cdecl.h:552
long INT32
Short cut for signed 32 bit integer.
Definition: glue.h:38
virtual NodeType_t GetNodeType(void) const =0
Get data type.
genvar declaration
Definition: cdecl.h:92
module declaration
Definition: cdecl.h:81
trior type
Definition: cdecl.h:63
virtual void SetUnpackedRange(INT32 dim, CNode *v)
Set expression for range of unpacked array for declaration.
Definition: cdecl.h:344
virtual CNode * GetWidthExp(void) const
Get expression representing width of declaration.
Definition: cdecl.h:274
virtual CNode * GetUnpackedLsi(INT32 dim)
Get expression tree for lower limit of unpacked array dimension.
port declaration
Definition: cdecl.h:88
declaration can be unpacked array
Definition: cdecl.h:170
Base class for describing data types.
Definition: cdatatype.h:108
const char * wireName[]
Array to convert Wire_t to character string.
Definition: cdecl.h:108
inout declaration
Definition: cdecl.h:86
generate block declaration
Definition: cdecl.h:80
declaration accepts pragmas
Definition: cdecl.h:169
const char * filename
file name
Definition: cdecl.h:49
virtual int IsWidthVolatile(void) const
Determine if packed width of declaration is volatile, ie depend upon parameters or variables...
Definition: cdecl.h:241
Structure to hold file coordinates.
Definition: cdecl.h:47
Holder for character strings.
Definition: csymbol.h:44
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...
virtual CNode * GetPackedLsb() const
Get expression for declaration's lsb.
static Flag Or(Flag f1, Flag f2)
Definition: cdecl.h:173
virtual int IsWidthConstant(void) const
Determine if packed width of declaration is constant, ie dependent upon only constants and parameters...
Definition: cdecl.h:229
Bulk object allocation object.
Definition: cobstack.h:46
void SetAttributes(CNode *attr)
Set declarations's attributes.
Definition: cdecl.h:403
virtual void Dump(FILE *f)
Dump declaration info to file descriptor.
Definition: cdecl.h:503
package declaration
Definition: cdecl.h:100
CNode * GetAttributes()
Get declaration's attributes.
Definition: cdecl.h:408
int DeclStatementCreated(void)
Get declaration statement create attibute.
Definition: cdecl.h:477
const char * declName[]
Array to convert Decl_t to character string.
Definition: cdecl.h:126
virtual void SetVectored(int v)
Set declartion's vectored property.
Definition: cdecl.h:383
Primary data structure representing parse tree nodes.
Definition: cnode.h:188
instance declaration
Definition: cdecl.h:83
virtual void SetVarAttr(int v)
Set declaration's var attribute.
Definition: cdecl.h:362
virtual INT32 GetPackedWidth(void) const
Evaluate packed or vector width of declaration.
virtual void SetAutomatic(int v)
Set declaration's automatic property.
Definition: cdecl.h:373
tri type
Definition: cdecl.h:59
static void GetMembers(Decl_t type, list< Decl_t > &result)
Get a list of members of the given declaration class/type.
Definition: cdecl.h:448
virtual void PostSubVisit1(CNode *(*func)(CNode *, void *), void *data)
output declaration
Definition: cdecl.h:85
unspecified declaration
Definition: cdecl.h:87
type declaration
Definition: cdecl.h:93
virtual CNode * GetUnpackedRange(INT32 dim)
Get expression for range of array for dimension.
Definition: cdecl.h:338
virtual int GetConstAttr()
Get declaration's const attribute.
Definition: cdecl.h:356
virtual int IsPackedWidthConstant(void) const
Determine if packed or vector width of declaration is constant, ie dependent upon only constants and ...
Decl_t GetClass(void)
Get class of declaration.
Definition: cdecl.h:428
virtual CNode * GetLsb() const
Get expression for declaration's lsb.
Definition: cdecl.h:293
virtual int IsPackedWidthVolatile(void) const
Determine if packed or vector width of declaration is volatile, ie depend upon parameters or variable...
virtual CNode * GetUnpackedMsi(INT32 dim)
Get expression tree for upper limit of given packed array dimension.
declaration superclass for all port dirs
Definition: cdecl.h:96
Base class for describing declaration objects.
Definition: cdecl.h:164
virtual Wire_t GetWireAttr()
Get declartion's wire type property.
Definition: cdecl.h:223
virtual int GetAutomatic()
Get declaration's automatic property.
Definition: cdecl.h:378
supply0 type
Definition: cdecl.h:67
trireg type
Definition: cdecl.h:66
Coord_t * GetCoord(void)
Get file coordinates for declaration.
Definition: cdecl.h:495
static Flag Or(Flag f1, Flag f2, Flag f3)
Definition: cdecl.h:175
void SetSymbol(CSymbol *aSymbol)
Set declaration's symbol.
Definition: cdecl.h:525
forward reference declaration (used by parser only)
Definition: cdecl.h:89
int HasAttribute(char *name, CNode *n=NULL, int init=1)
Determine if declaration has the given attribute.
void SetPragmas(CNode *p)
Set declaration pragmas.
Definition: cdecl.h:535
enum declaration
Definition: cdecl.h:99
virtual int WidthDirection(void) const
Evaluate current decl width direction.
Definition: cdecl.h:301
parameter declaration
Definition: cdecl.h:76
Base class for vrq objects.
Definition: cobject.h:41
virtual int IsWidthEvaluateable(void) const
Determine if packed width of declaration can be evaluated.
Definition: cdecl.h:252
virtual void PostVisit1(void(*func)(CNode *, void *), void *data)
virtual int GetScalared()
Get declartion's scalared property.
Definition: cdecl.h:398
no support flags
Definition: cdecl.h:168
macro module declaration
Definition: cdecl.h:82
CSymbol * GetSymbol(void)
Get declaration's symbol.
Definition: cdecl.h:530
wor type
Definition: cdecl.h:62
unspecified declaration used for wildcard
Definition: cdecl.h:101
void SetCoord(Coord_t *aLoc)
Set declaration coordinate.
Definition: cdecl.h:489
virtual CDecl * Clone(CObstack *heap)=0
Create a deep copy of declaration.
virtual CDataType * GetDataType()
Get declartion's data type property.
Definition: cdecl.h:213
NodeType_t GetNodeType(void)
Get node type of decl.
Definition: cdecl.h:420
function/task declaration
Definition: cdecl.h:90
CNode * GetPragmas()
Get declaration pragmas.
Definition: cdecl.h:541
virtual void SetConstAttr(int v)
Set declaration's const attribute.
Definition: cdecl.h:351
input declaration
Definition: cdecl.h:84
localparam declaration
Definition: cdecl.h:77
NodeType_t
Expression node type.
Definition: cdatatype.h:97
specify block declaration
Definition: cdecl.h:91
const char * GetName(void)
Shortcut to get declaration's name.
Definition: cdecl.h:520
Wire_t
Wire types.
Definition: cdecl.h:56
virtual void SetNumberOfUnpackedDimensions(INT32 dim)
Set number of unpacked dimensions for declaration.
Definition: cdecl.h:328
virtual int GetVectored()
Get declartion's vectored property.
Definition: cdecl.h:388
variable declaration
Definition: cdecl.h:75
virtual INT32 GetWidth(void) const
Evaluate packed width of declaration.
Definition: cdecl.h:263
no wire type
Definition: cdecl.h:57
virtual CNode * GetPackedWidthExp() const
Get expression for datatype's overall packed or vector width.
tri0 type
Definition: cdecl.h:65
wire type
Definition: cdecl.h:58
wand type
Definition: cdecl.h:60
virtual CNode * GetMsb() const
Get expression for declaration's msb.
Definition: cdecl.h:285
const char * GetName(void) const
Get symbol's text.
udp declaration
Definition: cdecl.h:98