diff options
Diffstat (limited to 'chilbert/BigBitVec.hpp')
-rw-r--r-- | chilbert/BigBitVec.hpp | 45 |
1 files changed, 11 insertions, 34 deletions
diff --git a/chilbert/BigBitVec.hpp b/chilbert/BigBitVec.hpp index dcc2c99..ea2d7bf 100644 --- a/chilbert/BigBitVec.hpp +++ b/chilbert/BigBitVec.hpp @@ -36,12 +36,18 @@ namespace chilbert { class CBigBitVec { public: - CBigBitVec(const size_t bits = 0) + explicit CBigBitVec(const size_t bits) : m_pcRacks{make_racks(FBVS_NEEDED(bits))} , m_iRacks{bits == 0 ? 0 : FBVS_NEEDED(bits)} { } + CBigBitVec(const size_t bits, const FBV_UINT value) + : CBigBitVec{bits} + { + m_pcRacks[0] = value; + } + CBigBitVec(const CBigBitVec& vec) : m_pcRacks{make_racks(vec.m_iRacks)} , m_iRacks{vec.m_iRacks} @@ -55,27 +61,20 @@ public: CBigBitVec(CBigBitVec&& vec) = default; - CBigBitVec(const CFixBitVec& vec) - : m_pcRacks{make_racks(1)} - , m_iRacks{1} - { - m_pcRacks[0] = vec.rack(); - } - /// Return the size in bits size_t size() const { return m_iRacks * FBV_BITS; } /// Set all bits to zero CBigBitVec& reset() { - memset(m_pcRacks.get(), 0, sizeof(CFixBitVec) * m_iRacks); + memset(m_pcRacks.get(), 0, sizeof(FBV_UINT) * m_iRacks); return *this; } /// Set all bits to one CBigBitVec& set() { - memset(m_pcRacks.get(), 0xFF, sizeof(CFixBitVec) * m_iRacks); + memset(m_pcRacks.get(), 0xFF, sizeof(FBV_UINT) * m_iRacks); return *this; } @@ -131,12 +130,12 @@ public: m_pcRacks = make_racks(m_iRacks); memcpy(m_pcRacks.get(), vec.m_pcRacks.get(), - sizeof(CFixBitVec) * m_iRacks); + sizeof(FBV_UINT) * m_iRacks); } else if (vec.m_iRacks > 0) { m_iRacks = vec.m_iRacks; memcpy(m_pcRacks.get(), vec.m_pcRacks.get(), - sizeof(CFixBitVec) * m_iRacks); + sizeof(FBV_UINT) * m_iRacks); } else { m_iRacks = 0; m_pcRacks.reset(); @@ -147,28 +146,6 @@ public: CBigBitVec& operator=(CBigBitVec&& vec) = default; - CBigBitVec& operator=(const CFixBitVec& vec) - { - if (!m_pcRacks) { - m_pcRacks = make_racks(1); - } - - m_iRacks = 1; - m_pcRacks[0] = vec.rack(); - return *this; - } - - CBigBitVec& operator=(const FBV_UINT j) - { - if (!m_pcRacks) { - m_pcRacks = make_racks(1); - } - - m_iRacks = 1; - m_pcRacks[0] = j; - return *this; - } - /// Return the value of the `index`th bit bool test(const size_t index) const { |