vhdlpp: VTypeRange::write_to_stream uses to/downto depending on the range boundaries.
This commit is contained in:
parent
61ace52f31
commit
a33bbecc98
|
|
@ -273,11 +273,9 @@ void VTypeArray::evaluate_ranges(ScopeBase*scope) {
|
|||
}
|
||||
}
|
||||
|
||||
VTypeRange::VTypeRange(const VType*base, int64_t max_val, int64_t min_val)
|
||||
: base_(base)
|
||||
VTypeRange::VTypeRange(const VType*base, int64_t end_val, int64_t start_val)
|
||||
: base_(base), end_(end_val), start_(start_val)
|
||||
{
|
||||
max_ = max_val;
|
||||
min_ = min_val;
|
||||
}
|
||||
|
||||
VTypeRange::~VTypeRange()
|
||||
|
|
|
|||
|
|
@ -275,10 +275,10 @@ class VTypeArray : public VType {
|
|||
class VTypeRange : public VType {
|
||||
|
||||
public:
|
||||
VTypeRange(const VType*base, int64_t max_val, int64_t min_val);
|
||||
VTypeRange(const VType*base, int64_t end, int64_t start);
|
||||
~VTypeRange();
|
||||
|
||||
VType*clone() const { return new VTypeRange(base_->clone(), max_, min_); }
|
||||
VType*clone() const { return new VTypeRange(base_->clone(), start_, end_); }
|
||||
|
||||
// Get the type that is limited by the range.
|
||||
inline const VType* base_type() const { return base_; }
|
||||
|
|
@ -289,7 +289,7 @@ class VTypeRange : public VType {
|
|||
|
||||
private:
|
||||
const VType*base_;
|
||||
int64_t max_, min_;
|
||||
int64_t end_, start_;
|
||||
};
|
||||
|
||||
class VTypeEnum : public VType {
|
||||
|
|
|
|||
|
|
@ -171,14 +171,16 @@ void VTypeRange::write_to_stream(ostream&fd) const
|
|||
// Detect some special cases that can be written as ieee or
|
||||
// standard types.
|
||||
if (const VTypePrimitive*tmp = dynamic_cast<const VTypePrimitive*> (base_)) {
|
||||
if (min_==0 && max_==INT64_MAX && tmp->type()==VTypePrimitive::INTEGER) {
|
||||
if (start_==0 && end_==INT64_MAX && tmp->type()==VTypePrimitive::INTEGER) {
|
||||
fd << "natural";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
base_->write_to_stream(fd);
|
||||
fd << " range " << min_ << " to " << max_;
|
||||
fd << " range " << start_;
|
||||
fd << (start_ < end_ ? " to " : " downto ");
|
||||
fd << end_;
|
||||
}
|
||||
|
||||
void VTypeRecord::write_to_stream(ostream&fd) const
|
||||
|
|
|
|||
Loading…
Reference in New Issue