55#include " dbUnfoldedRegion.h"
66
77#include < cstdint>
8+ #include < cstring>
89
910#include " dbChipRegion.h"
1011#include " dbChipRegionInst.h"
@@ -24,10 +25,10 @@ template class dbTable<_dbUnfoldedRegion>;
2425bool _dbUnfoldedRegion::operator ==(const _dbUnfoldedRegion& rhs) const
2526{
2627 // NOLINTBEGIN(readability-simplify-boolean-expr)
27- if (chip_region_inst_ != rhs.chip_region_inst_ ) {
28+ if (flags_. effective_side_ != rhs.flags_ . effective_side_ ) {
2829 return false ;
2930 }
30- if (effective_side_ != rhs.effective_side_ ) {
31+ if (chip_region_inst_ != rhs.chip_region_inst_ ) {
3132 return false ;
3233 }
3334 if (parent_chip_ != rhs.parent_chip_ ) {
@@ -51,13 +52,16 @@ bool _dbUnfoldedRegion::operator<(const _dbUnfoldedRegion& rhs) const
5152
5253_dbUnfoldedRegion::_dbUnfoldedRegion (_dbDatabase* db)
5354{
54- effective_side_ = 0 ;
55+ flags_ = {} ;
5556}
5657
5758dbIStream& operator >>(dbIStream& stream, _dbUnfoldedRegion& obj)
5859{
60+ uint32_t flags_bit_field;
61+ stream >> flags_bit_field;
62+ static_assert (sizeof (obj.flags_ ) == sizeof (flags_bit_field));
63+ std::memcpy (&obj.flags_ , &flags_bit_field, sizeof (flags_bit_field));
5964 stream >> obj.chip_region_inst_ ;
60- stream >> obj.effective_side_ ;
6165 stream >> obj.parent_chip_ ;
6266 stream >> obj.chip_next_ ;
6367 stream >> obj.bump_ ;
@@ -66,8 +70,11 @@ dbIStream& operator>>(dbIStream& stream, _dbUnfoldedRegion& obj)
6670
6771dbOStream& operator <<(dbOStream& stream, const _dbUnfoldedRegion& obj)
6872{
73+ uint32_t flags_bit_field;
74+ static_assert (sizeof (obj.flags_ ) == sizeof (flags_bit_field));
75+ std::memcpy (&flags_bit_field, &obj.flags_ , sizeof (obj.flags_ ));
76+ stream << flags_bit_field;
6977 stream << obj.chip_region_inst_ ;
70- stream << obj.effective_side_ ;
7178 stream << obj.parent_chip_ ;
7279 stream << obj.chip_next_ ;
7380 stream << obj.bump_ ;
@@ -124,13 +131,13 @@ Cuboid dbUnfoldedRegion::getCuboid() const
124131dbUnfoldedRegion::EffectiveSide dbUnfoldedRegion::getEffectiveSide () const
125132{
126133 _dbUnfoldedRegion* obj = (_dbUnfoldedRegion*) this ;
127- return static_cast <EffectiveSide>(obj->effective_side_ );
134+ return static_cast <EffectiveSide>(obj->flags_ . effective_side_ );
128135}
129136
130137void dbUnfoldedRegion::setEffectiveSide (EffectiveSide side)
131138{
132139 _dbUnfoldedRegion* obj = (_dbUnfoldedRegion*) this ;
133- obj->effective_side_ = static_cast <uint32_t >(side);
140+ obj->flags_ . effective_side_ = static_cast <uint32_t >(side);
134141}
135142
136143bool dbUnfoldedRegion::isTop () const
0 commit comments