aboutsummaryrefslogtreecommitdiffstats
path: root/chilbert/BigBitVec.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'chilbert/BigBitVec.hpp')
-rw-r--r--chilbert/BigBitVec.hpp45
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
{