Merge pull request #2880 from whitequark/cxxrtl-fix-2877

cxxrtl: add debug_item::{get,set}
This commit is contained in:
whitequark 2021-07-18 07:35:23 +00:00 committed by GitHub
commit 9af88951bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 0 deletions

View File

@ -999,6 +999,22 @@ struct debug_item : ::cxxrtl_object {
next = nullptr;
outline = &group;
}
template<size_t Bits, class IntegerT>
IntegerT get() const {
assert(width == Bits && depth == 1);
value<Bits> item;
std::copy(curr, curr + value<Bits>::chunks, item.data);
return item.template get<IntegerT>();
}
template<size_t Bits, class IntegerT>
void set(IntegerT other) const {
assert(width == Bits && depth == 1);
value<Bits> item;
item.template set<IntegerT>(other);
std::copy(item.data, item.data + value<Bits>::chunks, next);
}
};
static_assert(std::is_standard_layout<debug_item>::value, "debug_item is not compatible with C layout");