ADUL
Collection of reusable C++ utilities
Loading...
Searching...
No Matches
bitVector.hpp
Go to the documentation of this file.
1#ifndef ADUL_BITVECTOR_HPP
2#define ADUL_BITVECTOR_HPP
3
4#include <cstdint>
5#include <vector>
6
7namespace adul { namespace atm {
8
9
20template<typename ChunkT = int8_t> class BitVector{
21private:
22 std::vector<ChunkT> dataChunks;
23
24public:
25 void pushChunk();
26
27 void pushChunk(const ChunkT& pChunk);
28
29 void popChunk();
30
31 ChunkT getLastChunk() const;
32
33 ChunkT getFirstChunk() const;
34
35 void setChunk(const uint64_t& idx, const ChunkT& pChunk);
36
37 ChunkT getChunk(const uint64_t& idx) const;
38
39 void resetChunk(const uint64_t& idx);
40
41 void activateBit(const uint64_t& idx);
42
43 void clearBit(const uint64_t& idx);
44
45 void setBitValue(const uint64_t& idx, const bool& value);
46
47 bool getBit(const uint64_t& idx) const;
48
49 void setChunksVector(const std::vector<ChunkT>& pVector);
50
51 std::vector<ChunkT> getChunksVector() const;
52
54
55 bool isEmpty() const;
56
57 uint64_t oneChunkSize() const;
58
59 uint64_t chunksVectorSize() const;
60
61 uint64_t chunksVectorMaxSize() const;
62
63 uint64_t chunksVectorCapacity() const;
64
65 void chunksVectorReserve(const uint64_t& pCapacity);
66
68
69 void chunksVectorResize(const uint64_t& pCapacity);
70
71 uint64_t bitsSize() const;
72
73 uint64_t bitsMaxSize() const;
74
75 uint64_t bitsCapacity() const;
76
77 void swap(BitVector<ChunkT>& that) noexcept;
78
79 bool isEqualTo(const adul::atm::BitVector<ChunkT>& that) const;
80
81};
82
83}}
84
85template<typename ChunkT> void swap(adul::atm::BitVector<ChunkT>& first, adul::atm::BitVector<ChunkT>& second) noexcept;
86
87#endif
void swap(adul::atm::BitVector< ChunkT > &first, adul::atm::BitVector< ChunkT > &second) noexcept
Vector of chunks, where in which chunk you can edit every bit.
Definition bitVector.hpp:20
ChunkT getChunk(const uint64_t &idx) const
bool getBit(const uint64_t &idx) const
void chunksVectorReserve(const uint64_t &pCapacity)
std::vector< ChunkT > getChunksVector() const
ChunkT getFirstChunk() const
uint64_t chunksVectorSize() const
void chunksVectorResize(const uint64_t &pCapacity)
void resetChunk(const uint64_t &idx)
uint64_t chunksVectorMaxSize() const
void setChunk(const uint64_t &idx, const ChunkT &pChunk)
bool isEqualTo(const adul::atm::BitVector< ChunkT > &that) const
void clearBit(const uint64_t &idx)
void activateBit(const uint64_t &idx)
void pushChunk(const ChunkT &pChunk)
uint64_t oneChunkSize() const
uint64_t bitsMaxSize() const
ChunkT getLastChunk() const
uint64_t chunksVectorCapacity() const
void setChunksVector(const std::vector< ChunkT > &pVector)
bool isEmpty() const
uint64_t bitsSize() const
void setBitValue(const uint64_t &idx, const bool &value)
void swap(BitVector< ChunkT > &that) noexcept
void chunksVectorShrinkToFit()
uint64_t bitsCapacity() const
project api's namespace
Definition atm.hpp:4