vhdlpp: Added VTypeArray::is_variable_length() method.
This commit is contained in:
parent
774609fbbb
commit
5d26f0e28d
|
|
@ -167,6 +167,22 @@ bool VTypeArray::is_unbounded() const {
|
||||||
return etype_->is_unbounded();
|
return etype_->is_unbounded();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VTypeArray::is_variable_length() const {
|
||||||
|
int64_t dummy;
|
||||||
|
|
||||||
|
for(std::vector<range_t>::const_iterator it = ranges_.begin();
|
||||||
|
it != ranges_.end(); ++it)
|
||||||
|
{
|
||||||
|
if(!it->lsb()->evaluate(NULL, dummy))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(!it->msb()->evaluate(NULL, dummy))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return etype_->is_variable_length();
|
||||||
|
}
|
||||||
|
|
||||||
VTypeRange::VTypeRange(const VType*base, int64_t max_val, int64_t min_val)
|
VTypeRange::VTypeRange(const VType*base, int64_t max_val, int64_t min_val)
|
||||||
: base_(base)
|
: base_(base)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,10 @@ class VType {
|
||||||
// Returns true if the type has an undefined dimension.
|
// Returns true if the type has an undefined dimension.
|
||||||
virtual bool is_unbounded() const { return false; }
|
virtual bool is_unbounded() const { return false; }
|
||||||
|
|
||||||
|
// Checks if the variable length is dependent on other expressions, that
|
||||||
|
// cannot be evaluated (e.g. 'length, 'left, 'right).
|
||||||
|
virtual bool is_variable_length() const { return false; }
|
||||||
|
|
||||||
// Returns a perm_string that can be used in automatically created
|
// Returns a perm_string that can be used in automatically created
|
||||||
// typedefs (i.e. not ones defined by the user).
|
// typedefs (i.e. not ones defined by the user).
|
||||||
perm_string get_generic_typename() const;
|
perm_string get_generic_typename() const;
|
||||||
|
|
@ -227,6 +231,8 @@ class VTypeArray : public VType {
|
||||||
|
|
||||||
bool is_unbounded() const;
|
bool is_unbounded() const;
|
||||||
|
|
||||||
|
bool is_variable_length() const;
|
||||||
|
|
||||||
// To handle subtypes
|
// To handle subtypes
|
||||||
inline void set_parent_type(const VTypeArray*parent) { parent_ = parent; }
|
inline void set_parent_type(const VTypeArray*parent) { parent_ = parent; }
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue