`netrange_width()`: Add a base_width parameter

There are sometimes cases where calculating the total width of a
`vector<netrange_t>` has to take into account an existing base width. E.g.
when chaining multiple `vector<netrange_t>`. Add support to the
`netrange_width()` function to be able to handle this case.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
Lars-Peter Clausen 2023-07-23 08:00:53 -07:00
parent 4b66d40d62
commit 4269388878
2 changed files with 5 additions and 3 deletions

View File

@ -97,9 +97,10 @@ ivl_variable_type_t netarray_t::base_type() const
return element_type_->base_type();
}
unsigned long netrange_width(const vector<netrange_t>&packed)
unsigned long netrange_width(const vector<netrange_t>&packed,
unsigned int base_width)
{
unsigned wid = 1;
unsigned wid = base_width;
for (vector<netrange_t>::const_iterator cur = packed.begin()
; cur != packed.end() ; ++cur) {
unsigned use_wid = cur->width();

View File

@ -149,7 +149,8 @@ class netrange_t {
extern std::ostream&operator << (std::ostream&out, const std::list<netrange_t>&rlist);
extern std::ostream&operator << (std::ostream&out, const std::vector<netrange_t>&rlist);
extern unsigned long netrange_width(const std::vector<netrange_t>&dims);
extern unsigned long netrange_width(const std::vector<netrange_t>&dims,
unsigned int base_width = 1);
extern bool netrange_equivalent(const std::vector<netrange_t> &a,
const std::vector<netrange_t> &b);