mirror of
https://github.com/verilator/verilator.git
synced 2025-04-05 20:22:41 +00:00
Fix VerilatedVpiPutHolder class (#5156)
This commit is contained in:
parent
5c2b9d55b2
commit
0d3cb86a44
@ -705,8 +705,14 @@ public:
|
|||||||
case vpiOctStrVal: // FALLTHRU
|
case vpiOctStrVal: // FALLTHRU
|
||||||
case vpiDecStrVal: // FALLTHRU
|
case vpiDecStrVal: // FALLTHRU
|
||||||
case vpiHexStrVal: // FALLTHRU
|
case vpiHexStrVal: // FALLTHRU
|
||||||
case vpiStringVal: m_storage.str = o.m_storage.str; break;
|
case vpiStringVal: {
|
||||||
case vpiVectorVal: m_storage.vec = o.m_storage.vec; break;
|
new (&m_storage.str) std::string{o.m_storage.str};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case vpiVectorVal: {
|
||||||
|
new (&m_storage.vec) std::vector<s_vpi_vecval>{o.m_storage.vec};
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -718,40 +724,17 @@ public:
|
|||||||
case vpiOctStrVal: // FALLTHRU
|
case vpiOctStrVal: // FALLTHRU
|
||||||
case vpiDecStrVal: // FALLTHRU
|
case vpiDecStrVal: // FALLTHRU
|
||||||
case vpiHexStrVal: // FALLTHRU
|
case vpiHexStrVal: // FALLTHRU
|
||||||
case vpiStringVal: m_storage.str = std::move(o.m_storage.str); break;
|
case vpiStringVal: {
|
||||||
case vpiVectorVal: m_storage.vec = std::move(o.m_storage.vec); break;
|
new (&m_storage.str) std::string{std::move(o.m_storage.str)};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case vpiVectorVal: {
|
||||||
|
new (&m_storage.vec) std::vector<s_vpi_vecval>{std::move(o.m_storage.vec)};
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VerilatedVpiPutHolder& operator=(VerilatedVpiPutHolder const& o) {
|
|
||||||
if (this == &o) { return *this; }
|
|
||||||
m_var = o.m_var;
|
|
||||||
m_value = o.m_value;
|
|
||||||
switch (m_value.format) {
|
|
||||||
case vpiBinStrVal: // FALLTHRU
|
|
||||||
case vpiOctStrVal: // FALLTHRU
|
|
||||||
case vpiDecStrVal: // FALLTHRU
|
|
||||||
case vpiHexStrVal: // FALLTHRU
|
|
||||||
case vpiStringVal: m_storage.str = o.m_storage.str; break;
|
|
||||||
case vpiVectorVal: m_storage.vec = o.m_storage.vec; break;
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
};
|
|
||||||
|
|
||||||
VerilatedVpiPutHolder& operator=(VerilatedVpiPutHolder&& o) noexcept {
|
|
||||||
m_var = std::move(o.m_var);
|
|
||||||
m_value = std::move(o.m_value);
|
|
||||||
switch (m_value.format) {
|
|
||||||
case vpiBinStrVal: // FALLTHRU
|
|
||||||
case vpiOctStrVal: // FALLTHRU
|
|
||||||
case vpiDecStrVal: // FALLTHRU
|
|
||||||
case vpiHexStrVal: // FALLTHRU
|
|
||||||
case vpiStringVal: m_storage.str = std::move(o.m_storage.str); break;
|
|
||||||
case vpiVectorVal: m_storage.vec = std::move(o.m_storage.vec); break;
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
};
|
|
||||||
|
|
||||||
~VerilatedVpiPutHolder() noexcept {
|
~VerilatedVpiPutHolder() noexcept {
|
||||||
switch (m_value.format) {
|
switch (m_value.format) {
|
||||||
case vpiBinStrVal: // FALLTHRU
|
case vpiBinStrVal: // FALLTHRU
|
||||||
@ -813,7 +796,7 @@ class VerilatedVpiImp final {
|
|||||||
std::array<VpioCbList, CB_ENUM_MAX_VALUE> m_cbCurrentLists;
|
std::array<VpioCbList, CB_ENUM_MAX_VALUE> m_cbCurrentLists;
|
||||||
VpioFutureCbs m_futureCbs; // Time based callbacks for future timestamps
|
VpioFutureCbs m_futureCbs; // Time based callbacks for future timestamps
|
||||||
VpioFutureCbs m_nextCbs; // cbNextSimTime callbacks
|
VpioFutureCbs m_nextCbs; // cbNextSimTime callbacks
|
||||||
std::vector<VerilatedVpiPutHolder> m_inertialPuts; // Pending vpi puts due to vpiInertialDelay
|
std::list<VerilatedVpiPutHolder> m_inertialPuts; // Pending vpi puts due to vpiInertialDelay
|
||||||
VerilatedVpiError* m_errorInfop = nullptr; // Container for vpi error info
|
VerilatedVpiError* m_errorInfop = nullptr; // Container for vpi error info
|
||||||
VerilatedAssertOneThread m_assertOne; // Assert only called from single thread
|
VerilatedAssertOneThread m_assertOne; // Assert only called from single thread
|
||||||
uint64_t m_nextCallbackId = 1; // Id to identify callback
|
uint64_t m_nextCallbackId = 1; // Id to identify callback
|
||||||
|
Loading…
Reference in New Issue
Block a user