Internals: Favor const_iterators. No functional change intended.
This commit is contained in:
parent
42041f2403
commit
e320b0b581
|
|
@ -814,7 +814,7 @@ void _vl_vsformat(std::string& output, const std::string& format, va_list ap) VL
|
||||||
bool widthSet = false;
|
bool widthSet = false;
|
||||||
bool left = false;
|
bool left = false;
|
||||||
size_t width = 0;
|
size_t width = 0;
|
||||||
for (std::string::const_iterator pos = format.begin(); pos != format.end(); ++pos) {
|
for (std::string::const_iterator pos = format.cbegin(); pos != format.cend(); ++pos) {
|
||||||
if (!inPct && pos[0] == '%') {
|
if (!inPct && pos[0] == '%') {
|
||||||
pctit = pos;
|
pctit = pos;
|
||||||
inPct = true;
|
inPct = true;
|
||||||
|
|
@ -1212,8 +1212,8 @@ IData _vl_vsscanf(FILE* fp, // If a fscanf
|
||||||
IData got = 0;
|
IData got = 0;
|
||||||
bool inPct = false;
|
bool inPct = false;
|
||||||
bool inIgnore = false;
|
bool inIgnore = false;
|
||||||
std::string::const_iterator pos = format.begin();
|
std::string::const_iterator pos = format.cbegin();
|
||||||
for (; pos != format.end() && !_vl_vsss_eof(fp, floc); ++pos) {
|
for (; pos != format.cend() && !_vl_vsss_eof(fp, floc); ++pos) {
|
||||||
// VL_DBG_MSGF("_vlscan fmt='"<<pos[0]<<"' floc="<<floc<<" file='"<<_vl_vsss_peek(fp, floc,
|
// VL_DBG_MSGF("_vlscan fmt='"<<pos[0]<<"' floc="<<floc<<" file='"<<_vl_vsss_peek(fp, floc,
|
||||||
// fromp, fstr)<<"'\n");
|
// fromp, fstr)<<"'\n");
|
||||||
if (!inPct && pos[0] == '%') {
|
if (!inPct && pos[0] == '%') {
|
||||||
|
|
@ -2786,7 +2786,7 @@ bool VerilatedContextImp::commandArgVlUint64(const std::string& arg, const std::
|
||||||
VL_FATAL_MT("COMMAND_LINE", 0, "", msg.c_str());
|
VL_FATAL_MT("COMMAND_LINE", 0, "", msg.c_str());
|
||||||
};
|
};
|
||||||
|
|
||||||
if (std::any_of(str.begin(), str.end(), [](int c) { return !std::isdigit(c); })) fail();
|
if (std::any_of(str.cbegin(), str.cend(), [](int c) { return !std::isdigit(c); })) fail();
|
||||||
char* end;
|
char* end;
|
||||||
valuer = std::strtoull(str.c_str(), &end, 10);
|
valuer = std::strtoull(str.c_str(), &end, 10);
|
||||||
if (errno == ERANGE) fail("Value out of range of uint64_t");
|
if (errno == ERANGE) fail("Value out of range of uint64_t");
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ void VlDelayScheduler::resume() {
|
||||||
#endif
|
#endif
|
||||||
bool resumed = false;
|
bool resumed = false;
|
||||||
|
|
||||||
while (!m_queue.empty() && (m_queue.begin()->first == m_context.time())) {
|
while (!m_queue.empty() && (m_queue.cbegin()->first == m_context.time())) {
|
||||||
VlCoroutineHandle handle = std::move(m_queue.begin()->second);
|
VlCoroutineHandle handle = std::move(m_queue.begin()->second);
|
||||||
m_queue.erase(m_queue.begin());
|
m_queue.erase(m_queue.begin());
|
||||||
handle.resume();
|
handle.resume();
|
||||||
|
|
@ -80,7 +80,7 @@ void VlDelayScheduler::resume() {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t VlDelayScheduler::nextTimeSlot() const {
|
uint64_t VlDelayScheduler::nextTimeSlot() const {
|
||||||
if (!m_queue.empty()) return m_queue.begin()->first;
|
if (!m_queue.empty()) return m_queue.cbegin()->first;
|
||||||
if (m_zeroDelayed.empty())
|
if (m_zeroDelayed.empty())
|
||||||
VL_FATAL_MT(__FILE__, __LINE__, "", "%Error: There is no next time slot scheduled");
|
VL_FATAL_MT(__FILE__, __LINE__, "", "%Error: There is no next time slot scheduled");
|
||||||
return m_context.time();
|
return m_context.time();
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,7 @@ public:
|
||||||
bool empty() const { return m_queue.empty() && m_zeroDelayed.empty(); }
|
bool empty() const { return m_queue.empty() && m_zeroDelayed.empty(); }
|
||||||
// Are there coroutines to resume at the current simulation time?
|
// Are there coroutines to resume at the current simulation time?
|
||||||
bool awaitingCurrentTime() const {
|
bool awaitingCurrentTime() const {
|
||||||
return (!m_queue.empty() && (m_queue.begin()->first <= m_context.time()))
|
return (!m_queue.empty() && (m_queue.cbegin()->first <= m_context.time()))
|
||||||
|| !m_zeroDelayed.empty();
|
|| !m_zeroDelayed.empty();
|
||||||
}
|
}
|
||||||
#ifdef VL_DEBUG
|
#ifdef VL_DEBUG
|
||||||
|
|
|
||||||
|
|
@ -615,7 +615,7 @@ public:
|
||||||
|
|
||||||
// inside (set membership operator)
|
// inside (set membership operator)
|
||||||
bool inside(const T_Value& value) const {
|
bool inside(const T_Value& value) const {
|
||||||
return std::find(m_deque.begin(), m_deque.end(), value) != m_deque.end();
|
return std::find(m_deque.cbegin(), m_deque.cend(), value) != m_deque.cend();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return slice q[lsb:msb]
|
// Return slice q[lsb:msb]
|
||||||
|
|
@ -776,13 +776,13 @@ public:
|
||||||
// Reduction operators
|
// Reduction operators
|
||||||
VlQueue min() const {
|
VlQueue min() const {
|
||||||
if (m_deque.empty()) return VlQueue{};
|
if (m_deque.empty()) return VlQueue{};
|
||||||
const auto it = std::min_element(m_deque.begin(), m_deque.end());
|
const auto it = std::min_element(m_deque.cbegin(), m_deque.cend());
|
||||||
return VlQueue::cons(*it);
|
return VlQueue::cons(*it);
|
||||||
}
|
}
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
VlQueue min(Func with_func) const {
|
VlQueue min(Func with_func) const {
|
||||||
if (m_deque.empty()) return VlQueue{};
|
if (m_deque.empty()) return VlQueue{};
|
||||||
const auto it = std::min_element(m_deque.begin(), m_deque.end(),
|
const auto it = std::min_element(m_deque.cbegin(), m_deque.cend(),
|
||||||
[&with_func](const IData& a, const IData& b) {
|
[&with_func](const IData& a, const IData& b) {
|
||||||
return with_func(0, a) < with_func(0, b);
|
return with_func(0, a) < with_func(0, b);
|
||||||
});
|
});
|
||||||
|
|
@ -790,13 +790,13 @@ public:
|
||||||
}
|
}
|
||||||
VlQueue max() const {
|
VlQueue max() const {
|
||||||
if (m_deque.empty()) return VlQueue{};
|
if (m_deque.empty()) return VlQueue{};
|
||||||
const auto it = std::max_element(m_deque.begin(), m_deque.end());
|
const auto it = std::max_element(m_deque.cbegin(), m_deque.cend());
|
||||||
return VlQueue::cons(*it);
|
return VlQueue::cons(*it);
|
||||||
}
|
}
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
VlQueue max(Func with_func) const {
|
VlQueue max(Func with_func) const {
|
||||||
if (m_deque.empty()) return VlQueue{};
|
if (m_deque.empty()) return VlQueue{};
|
||||||
const auto it = std::max_element(m_deque.begin(), m_deque.end(),
|
const auto it = std::max_element(m_deque.cbegin(), m_deque.cend(),
|
||||||
[&with_func](const IData& a, const IData& b) {
|
[&with_func](const IData& a, const IData& b) {
|
||||||
return with_func(0, a) < with_func(0, b);
|
return with_func(0, a) < with_func(0, b);
|
||||||
});
|
});
|
||||||
|
|
@ -817,40 +817,40 @@ public:
|
||||||
}
|
}
|
||||||
T_Value r_product() const {
|
T_Value r_product() const {
|
||||||
if (m_deque.empty()) return T_Value(0);
|
if (m_deque.empty()) return T_Value(0);
|
||||||
auto it = m_deque.begin();
|
auto it = m_deque.cbegin();
|
||||||
T_Value out{*it};
|
T_Value out{*it};
|
||||||
++it;
|
++it;
|
||||||
for (; it != m_deque.end(); ++it) out *= *it;
|
for (; it != m_deque.cend(); ++it) out *= *it;
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
T_Value r_product(Func with_func) const {
|
T_Value r_product(Func with_func) const {
|
||||||
if (m_deque.empty()) return T_Value(0);
|
if (m_deque.empty()) return T_Value(0);
|
||||||
auto it = m_deque.begin();
|
auto it = m_deque.cbegin();
|
||||||
IData index = 0;
|
IData index = 0;
|
||||||
T_Value out{with_func(index, *it)};
|
T_Value out{with_func(index, *it)};
|
||||||
++it;
|
++it;
|
||||||
++index;
|
++index;
|
||||||
for (; it != m_deque.end(); ++it) out *= with_func(index++, *it);
|
for (; it != m_deque.cend(); ++it) out *= with_func(index++, *it);
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
T_Value r_and() const {
|
T_Value r_and() const {
|
||||||
if (m_deque.empty()) return T_Value(0);
|
if (m_deque.empty()) return T_Value(0);
|
||||||
auto it = m_deque.begin();
|
auto it = m_deque.cbegin();
|
||||||
T_Value out{*it};
|
T_Value out{*it};
|
||||||
++it;
|
++it;
|
||||||
for (; it != m_deque.end(); ++it) out &= *it;
|
for (; it != m_deque.cend(); ++it) out &= *it;
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
T_Value r_and(Func with_func) const {
|
T_Value r_and(Func with_func) const {
|
||||||
if (m_deque.empty()) return T_Value(0);
|
if (m_deque.empty()) return T_Value(0);
|
||||||
auto it = m_deque.begin();
|
auto it = m_deque.cbegin();
|
||||||
IData index = 0;
|
IData index = 0;
|
||||||
T_Value out{with_func(index, *it)};
|
T_Value out{with_func(index, *it)};
|
||||||
++it;
|
++it;
|
||||||
++index;
|
++index;
|
||||||
for (; it != m_deque.end(); ++it) out &= with_func(index, *it);
|
for (; it != m_deque.cend(); ++it) out &= with_func(index, *it);
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
T_Value r_or() const {
|
T_Value r_or() const {
|
||||||
|
|
@ -948,7 +948,7 @@ public:
|
||||||
// Return last element. Verilog: function int last(ref index)
|
// Return last element. Verilog: function int last(ref index)
|
||||||
int last(T_Key& indexr) const {
|
int last(T_Key& indexr) const {
|
||||||
const auto it = m_map.crbegin();
|
const auto it = m_map.crbegin();
|
||||||
if (it == m_map.rend()) return 0;
|
if (it == m_map.crend()) return 0;
|
||||||
indexr = it->first;
|
indexr = it->first;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
@ -1077,7 +1077,7 @@ public:
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
VlQueue<T_Value> find_first(Func with_func) const {
|
VlQueue<T_Value> find_first(Func with_func) const {
|
||||||
const auto it
|
const auto it
|
||||||
= std::find_if(m_map.begin(), m_map.end(), [=](const std::pair<T_Key, T_Value>& i) {
|
= std::find_if(m_map.cbegin(), m_map.cend(), [=](const std::pair<T_Key, T_Value>& i) {
|
||||||
return with_func(i.first, i.second);
|
return with_func(i.first, i.second);
|
||||||
});
|
});
|
||||||
if (it == m_map.end()) return VlQueue<T_Value>{};
|
if (it == m_map.end()) return VlQueue<T_Value>{};
|
||||||
|
|
@ -1086,7 +1086,7 @@ public:
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
VlQueue<T_Key> find_first_index(Func with_func) const {
|
VlQueue<T_Key> find_first_index(Func with_func) const {
|
||||||
const auto it
|
const auto it
|
||||||
= std::find_if(m_map.begin(), m_map.end(), [=](const std::pair<T_Key, T_Value>& i) {
|
= std::find_if(m_map.cbegin(), m_map.cend(), [=](const std::pair<T_Key, T_Value>& i) {
|
||||||
return with_func(i.first, i.second);
|
return with_func(i.first, i.second);
|
||||||
});
|
});
|
||||||
if (it == m_map.end()) return VlQueue<T_Value>{};
|
if (it == m_map.end()) return VlQueue<T_Value>{};
|
||||||
|
|
@ -1094,19 +1094,17 @@ public:
|
||||||
}
|
}
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
VlQueue<T_Value> find_last(Func with_func) const {
|
VlQueue<T_Value> find_last(Func with_func) const {
|
||||||
const auto it
|
const auto it = std::find_if(
|
||||||
= std::find_if(m_map.rbegin(), m_map.rend(), [=](const std::pair<T_Key, T_Value>& i) {
|
m_map.crbegin(), m_map.crend(),
|
||||||
return with_func(i.first, i.second);
|
[=](const std::pair<T_Key, T_Value>& i) { return with_func(i.first, i.second); });
|
||||||
});
|
|
||||||
if (it == m_map.rend()) return VlQueue<T_Value>{};
|
if (it == m_map.rend()) return VlQueue<T_Value>{};
|
||||||
return VlQueue<T_Value>::cons(it->second);
|
return VlQueue<T_Value>::cons(it->second);
|
||||||
}
|
}
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
VlQueue<T_Key> find_last_index(Func with_func) const {
|
VlQueue<T_Key> find_last_index(Func with_func) const {
|
||||||
const auto it
|
const auto it = std::find_if(
|
||||||
= std::find_if(m_map.rbegin(), m_map.rend(), [=](const std::pair<T_Key, T_Value>& i) {
|
m_map.crbegin(), m_map.crend(),
|
||||||
return with_func(i.first, i.second);
|
[=](const std::pair<T_Key, T_Value>& i) { return with_func(i.first, i.second); });
|
||||||
});
|
|
||||||
if (it == m_map.rend()) return VlQueue<T_Value>{};
|
if (it == m_map.rend()) return VlQueue<T_Value>{};
|
||||||
return VlQueue<T_Key>::cons(it->first);
|
return VlQueue<T_Key>::cons(it->first);
|
||||||
}
|
}
|
||||||
|
|
@ -1115,7 +1113,7 @@ public:
|
||||||
VlQueue<T_Value> min() const {
|
VlQueue<T_Value> min() const {
|
||||||
if (m_map.empty()) return VlQueue<T_Value>();
|
if (m_map.empty()) return VlQueue<T_Value>();
|
||||||
const auto it = std::min_element(
|
const auto it = std::min_element(
|
||||||
m_map.begin(), m_map.end(),
|
m_map.cbegin(), m_map.cend(),
|
||||||
[](const std::pair<T_Key, T_Value>& a, const std::pair<T_Key, T_Value>& b) {
|
[](const std::pair<T_Key, T_Value>& a, const std::pair<T_Key, T_Value>& b) {
|
||||||
return a.second < b.second;
|
return a.second < b.second;
|
||||||
});
|
});
|
||||||
|
|
@ -1125,7 +1123,7 @@ public:
|
||||||
VlQueue<T_Value> min(Func with_func) const {
|
VlQueue<T_Value> min(Func with_func) const {
|
||||||
if (m_map.empty()) return VlQueue<T_Value>();
|
if (m_map.empty()) return VlQueue<T_Value>();
|
||||||
const auto it = std::min_element(
|
const auto it = std::min_element(
|
||||||
m_map.begin(), m_map.end(),
|
m_map.cbegin(), m_map.cend(),
|
||||||
[&with_func](const std::pair<T_Key, T_Value>& a, const std::pair<T_Key, T_Value>& b) {
|
[&with_func](const std::pair<T_Key, T_Value>& a, const std::pair<T_Key, T_Value>& b) {
|
||||||
return with_func(a.first, a.second) < with_func(b.first, b.second);
|
return with_func(a.first, a.second) < with_func(b.first, b.second);
|
||||||
});
|
});
|
||||||
|
|
@ -1134,7 +1132,7 @@ public:
|
||||||
VlQueue<T_Value> max() const {
|
VlQueue<T_Value> max() const {
|
||||||
if (m_map.empty()) return VlQueue<T_Value>();
|
if (m_map.empty()) return VlQueue<T_Value>();
|
||||||
const auto it = std::max_element(
|
const auto it = std::max_element(
|
||||||
m_map.begin(), m_map.end(),
|
m_map.cbegin(), m_map.cend(),
|
||||||
[](const std::pair<T_Key, T_Value>& a, const std::pair<T_Key, T_Value>& b) {
|
[](const std::pair<T_Key, T_Value>& a, const std::pair<T_Key, T_Value>& b) {
|
||||||
return a.second < b.second;
|
return a.second < b.second;
|
||||||
});
|
});
|
||||||
|
|
@ -1144,7 +1142,7 @@ public:
|
||||||
VlQueue<T_Value> max(Func with_func) const {
|
VlQueue<T_Value> max(Func with_func) const {
|
||||||
if (m_map.empty()) return VlQueue<T_Value>();
|
if (m_map.empty()) return VlQueue<T_Value>();
|
||||||
const auto it = std::max_element(
|
const auto it = std::max_element(
|
||||||
m_map.begin(), m_map.end(),
|
m_map.cbegin(), m_map.cend(),
|
||||||
[&with_func](const std::pair<T_Key, T_Value>& a, const std::pair<T_Key, T_Value>& b) {
|
[&with_func](const std::pair<T_Key, T_Value>& a, const std::pair<T_Key, T_Value>& b) {
|
||||||
return with_func(a.first, a.second) < with_func(b.first, b.second);
|
return with_func(a.first, a.second) < with_func(b.first, b.second);
|
||||||
});
|
});
|
||||||
|
|
@ -1164,36 +1162,36 @@ public:
|
||||||
}
|
}
|
||||||
T_Value r_product() const {
|
T_Value r_product() const {
|
||||||
if (m_map.empty()) return T_Value(0);
|
if (m_map.empty()) return T_Value(0);
|
||||||
auto it = m_map.begin();
|
auto it = m_map.cbegin();
|
||||||
T_Value out{it->second};
|
T_Value out{it->second};
|
||||||
++it;
|
++it;
|
||||||
for (; it != m_map.end(); ++it) out *= it->second;
|
for (; it != m_map.cend(); ++it) out *= it->second;
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
T_Value r_product(Func with_func) const {
|
T_Value r_product(Func with_func) const {
|
||||||
if (m_map.empty()) return T_Value(0);
|
if (m_map.empty()) return T_Value(0);
|
||||||
auto it = m_map.begin();
|
auto it = m_map.cbegin();
|
||||||
T_Value out{with_func(it->first, it->second)};
|
T_Value out{with_func(it->first, it->second)};
|
||||||
++it;
|
++it;
|
||||||
for (; it != m_map.end(); ++it) out *= with_func(it->first, it->second);
|
for (; it != m_map.cend(); ++it) out *= with_func(it->first, it->second);
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
T_Value r_and() const {
|
T_Value r_and() const {
|
||||||
if (m_map.empty()) return T_Value(0);
|
if (m_map.empty()) return T_Value(0);
|
||||||
auto it = m_map.begin();
|
auto it = m_map.cbegin();
|
||||||
T_Value out{it->second};
|
T_Value out{it->second};
|
||||||
++it;
|
++it;
|
||||||
for (; it != m_map.end(); ++it) out &= it->second;
|
for (; it != m_map.cend(); ++it) out &= it->second;
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
T_Value r_and(Func with_func) const {
|
T_Value r_and(Func with_func) const {
|
||||||
if (m_map.empty()) return T_Value(0);
|
if (m_map.empty()) return T_Value(0);
|
||||||
auto it = m_map.begin();
|
auto it = m_map.cbegin();
|
||||||
T_Value out{with_func(it->first, it->second)};
|
T_Value out{with_func(it->first, it->second)};
|
||||||
++it;
|
++it;
|
||||||
for (; it != m_map.end(); ++it) out &= with_func(it->first, it->second);
|
for (; it != m_map.cend(); ++it) out &= with_func(it->first, it->second);
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
T_Value r_or() const {
|
T_Value r_or() const {
|
||||||
|
|
|
||||||
|
|
@ -339,7 +339,7 @@ class EmitMkHierVerilation final {
|
||||||
const V3HierBlockPlan::HierVector blocks
|
const V3HierBlockPlan::HierVector blocks
|
||||||
= m_planp->hierBlocksSorted(); // leaf comes first
|
= m_planp->hierBlocksSorted(); // leaf comes first
|
||||||
// List in order of leaf-last order so that linker can resolve dependency
|
// List in order of leaf-last order so that linker can resolve dependency
|
||||||
for (auto& block : vlstd::reverse_view(blocks)) {
|
for (const auto& block : vlstd::reverse_view(blocks)) {
|
||||||
of.puts("\t" + block->hierLib(true) + " \\\n");
|
of.puts("\t" + block->hierLib(true) + " \\\n");
|
||||||
}
|
}
|
||||||
of.puts("\n");
|
of.puts("\n");
|
||||||
|
|
|
||||||
|
|
@ -394,7 +394,7 @@ void V3Graph::dumpDotFile(const string& filename, bool colorAsSubgraph) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print ranks
|
// Print ranks
|
||||||
for (auto dotRank : ranks) {
|
for (const auto& dotRank : ranks) {
|
||||||
*logp << "\t{ rank=";
|
*logp << "\t{ rank=";
|
||||||
if (dotRank != "sink" && dotRank != "source" && dotRank != "min" && dotRank != "max") {
|
if (dotRank != "sink" && dotRank != "source" && dotRank != "min" && dotRank != "max") {
|
||||||
*logp << "same";
|
*logp << "same";
|
||||||
|
|
|
||||||
|
|
@ -1253,7 +1253,7 @@ public:
|
||||||
}
|
}
|
||||||
~SimulateVisitor() override {
|
~SimulateVisitor() override {
|
||||||
for (const auto& pair : m_constps) {
|
for (const auto& pair : m_constps) {
|
||||||
for (AstConst* const constp : pair.second) { delete constp; }
|
for (AstConst* const constp : pair.second) delete constp;
|
||||||
}
|
}
|
||||||
m_constps.clear();
|
m_constps.clear();
|
||||||
for (AstNode* ip : m_reclaimValuesp) delete ip;
|
for (AstNode* ip : m_reclaimValuesp) delete ip;
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ class VariableOrder final {
|
||||||
void tspSortVars(std::vector<AstVar*>& varps) {
|
void tspSortVars(std::vector<AstVar*>& varps) {
|
||||||
// Map from "MTask affinity" -> "variable list"
|
// Map from "MTask affinity" -> "variable list"
|
||||||
std::map<const MTaskIdSet, std::vector<AstVar*>> m2v;
|
std::map<const MTaskIdSet, std::vector<AstVar*>> m2v;
|
||||||
for (AstVar* const varp : varps) { m2v[varp->mtaskIds()].push_back(varp); }
|
for (AstVar* const varp : varps) m2v[varp->mtaskIds()].push_back(varp);
|
||||||
|
|
||||||
// Create a TSP sort state for each unique MTaskIdSet, except for the empty set
|
// Create a TSP sort state for each unique MTaskIdSet, except for the empty set
|
||||||
V3TSP::StateVec states;
|
V3TSP::StateVec states;
|
||||||
|
|
@ -125,7 +125,7 @@ class VariableOrder final {
|
||||||
// Helper function to sort given vector, then append to 'varps'
|
// Helper function to sort given vector, then append to 'varps'
|
||||||
const auto sortAndAppend = [this, &varps](std::vector<AstVar*>& subVarps) {
|
const auto sortAndAppend = [this, &varps](std::vector<AstVar*>& subVarps) {
|
||||||
simpleSortVars(subVarps);
|
simpleSortVars(subVarps);
|
||||||
for (AstVar* const varp : subVarps) { varps.push_back(varp); }
|
for (AstVar* const varp : subVarps) varps.push_back(varp);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Enumerate by sorted MTaskIdSet, sort within the set separately
|
// Enumerate by sorted MTaskIdSet, sort within the set separately
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue