57 set<Decl_t> typeConstraints;
156 void Lval(
int aLval ) { lval = aLval; }
183 list<Decl_t> types(aTypes);
185 list<Decl_t>::const_iterator ptr;
186 for( ptr = aTypes.begin(); ptr != aTypes.end(); ++ptr ) {
189 if( typeConstraints.size() == 0 ) {
190 MASSERT( !constrained );
191 set_union( types.begin(), types.end(),
192 typeConstraints.begin(), typeConstraints.end(),
193 inserter( typeConstraints,
194 typeConstraints.begin() ) );
196 set_intersection( types.begin(), types.end(),
197 typeConstraints.begin(), typeConstraints.end(),
198 inserter( typeConstraints,
199 typeConstraints.begin() ) );
210 MASSERT( typeConstraints.size() == 0 );
213 list<Decl_t> searchList;
215 list<Decl_t>::iterator ptr;
216 if( typeConstraints.count( t ) != 0 ) {
219 for( ptr = searchList.begin();
220 ptr != searchList.end(); ++ptr ) {
221 if( typeConstraints.count( *ptr ) != 0 ) {
231 virtual void Dump( FILE* f );
236 void SetRange(
CNode* ) { MASSERT( FALSE ); }
void Direction(Decl_t d)
Set direction of declaration.
Definition: cfref.h:151
virtual CNode * GetRange()
Get expression for declaration's range (msb/lsb)
CFref(CSymbol *symbol, Coord_t *aLoc)
Create a forward reference.
virtual int IsWidthConstant(void)
Determine if packed width of declaration is constant, ie dependent upon only constants and parameters...
virtual void Dump(FILE *f)
Dump declaration info to file descriptor.
Decl_t
Declaration types.
Definition: cdecl.h:74
virtual int IsWidthEvaluateable(void)
Determine if packed width of declaration can be evaluated.
void Lval(int aLval)
Set lval flag.
Definition: cfref.h:156
long INT32
Short cut for signed 32 bit integer.
Definition: glue.h:38
virtual INT32 GetWidth(void)
Evaluate packed width of declaration.
int IsArray()
Get array flag.
Definition: cfref.h:171
void ConstrainTypes(const list< Decl_t > &aTypes)
Add a constraint on valid types for this declaration.
Definition: cfref.h:182
int IsTypeValid(Decl_t t)
Test if a give declaration type is valid for this reference.
Definition: cfref.h:208
Structure to hold file coordinates.
Definition: cdecl.h:47
Holder for character strings.
Definition: csymbol.h:44
int Lval()
Get lval flag.
Definition: cfref.h:161
CDecl * GetDecl(void)
Get forward reference's actual declaration.
Forward reference declaration.
Definition: cfref.h:51
Bulk object allocation object.
Definition: cobstack.h:46
Primary data structure representing parse tree nodes.
Definition: cnode.h:188
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 CDecl * Clone(CObstack *heap)
Create a clone of this declaration.
Definition: cfref.h:84
Base class for describing declaration objects.
Definition: cdecl.h:164
void SetRangeInfo(int isArray, CNode *range)
Set range info for declaration.
virtual int IsWidthVolatile(void)
Determine if packed width of declaration is volatile, ie depend upon parameters or variables...
void IsArray(int v)
Set array flag.
Definition: cfref.h:166
CNode * GetLsb(void)
Get lsb of vector range.
CNode * GetMsb(void)
Get msb of vector range.
void DisableWidthInferencing()
Disable width inferencing.
Definition: cfref.h:114
void SetDecl(CDecl *aDecl)
Set forward declaration's actual declaration.
int IndicesRangeValid()
Determine if range can be inferred.
Decl_t Direction()
Get direction of declaration.
Definition: cfref.h:146