bytes =
m_Bits.size();
52 while(
size_t(p2-p1) < bytes) {
57memcpy(&
m_Bits[0], p1, bytes);
106 size_tnwords =
m_Bits.size();
111 while(vx < nwords && !
m_Bits[vx]) {
123 while(ix < bitcount) {
227 result.x_Copy(other, consume);
228range.
x_Copy(*
this,
true);
231range.
x_Copy(other, consume);
251 size_tend1 = (
m_Bits.size() /
sizeof(
int)) *
sizeof(
int);
252 size_tend2 =
m_Bits.size();
258 while(
i!= end2 && (
i& (
sizeof(
int)-1))) {
259 unsigned char* dst = &
m_Bits[
i];
260 unsigned char* src = & other.
m_Bits[
i];
267 int* dst = (
int*)(&
m_Bits[
i]);
268 int* src = (
int*)(& other.
m_Bits[
i]);
275 unsigned char* dst = &
m_Bits[
i];
276 unsigned char* src = & other.
m_Bits[
i];
381 for(
size_t i= start;
i< end;
i++) {
433ddc.
Log(
"m_Bits.size",
m_Bits.size());
ncbi::TMaskedQueryRegions mask
void SetFrame(const string &frame)
void Log(const string &name, const char *value, CDebugDumpFormatter::EValueType type=CDebugDumpFormatter::eValue, const string &comment=kEmptyStr)
@ eAllSet
All OIDs are set.
@ eAllClear
All OIDs are clear.
void AssignBit(size_t i, bool value)
Store a value at the given index.
void x_Alloc(size_t bits)
Allocate memory for the bit data.
unsigned char TByte
Word size for vector elements.
ESpecialCase m_Special
Special edge cases.
void IntersectWith(CSeqDB_BitSet &other, bool consume)
This bitset is assigned to the intersection of it and another.
void Swap(CSeqDB_BitSet &other)
Swap two bitsets.
void DebugDump(CDebugDumpContext ddc, unsigned int depth) const
Allows to dump a snapshot of the object.
bool GetBit(size_t index) const
Get the value of the specified bit.
void UnionWith(CSeqDB_BitSet &other, bool consume)
This bitset is assigned to the union of it and another.
void Normalize()
If this is a special case bitset, convert it to a normal one.
void ClearBit(size_t index)
Clear the specified bit (to false).
bool CheckOrFindBit(size_t &index) const
Check if a bit is true or find the next bit that is.
void x_CopyBits(const CSeqDB_BitSet &src)
Set all bits that are true in `src'.
vector< TByte > m_Bits
Representation of bit data.
void AssignBitRange(size_t start, size_t end, bool value)
Store the provided value in a range of bits.
@ eWordShift
Shift to convert from bit index to vector index.
@ eWordBits
Number of bits per stored word.
@ eWordMask
Mask to compute bit index within word.
void x_Copy(CSeqDB_BitSet &other, bool consume)
Set this bitset to the value of the provided one.
void x_Normalize(size_t start, size_t end)
Replace `special' with normal bitsets, adjust the index range.
CSeqDB_BitSet()
Default constructor for zero-length empty bit array.
size_t m_Start
Number of bits stored here.
size_t m_End
Number of bits stored here.
void SetBit(size_t index)
Set the specified bit (to true).
static unsigned char depth[2 *(256+1+29)+1]
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
virtual void DebugDump(CDebugDumpContext ddc, unsigned int depth) const
Define method for dumping debug information.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
unsigned int
A callback function used to compare two keys in a database.
const GenericPointer< typename T::ValueType > T2 value
Implementation for the CSeqDB_BitSet class, a bit vector.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4