@@ -31,6 +31,98 @@ using std::endl;
3131#define u32 std::uint32_t
3232#define u64 std::uint64_t
3333
34+ // ----------
35+ //
36+ // debugging defines--
37+ //
38+ // In "normal" builds, the triggering defines here are *not* #defined, so that
39+ // no run-time penalty is incurred.
40+ //
41+ // ----------
42+
43+ // #define bloom_filter_supportDebug // if this is #defined, extra code is added
44+ // .. to allow debugging prints to be
45+ // .. turned on and off;
46+
47+ #ifndef bloom_filter_supportDebug
48+ #define dbgAdd_dump_pos_with_mer ;
49+ #define dbgAdd_dump_h_pos_with_mer ;
50+ #define dbgAdd_dump_pos ;
51+ #define dbgAdd_dump_h_pos ;
52+ #define dbgContains_dump_pos_with_mer ;
53+ #define dbgContains_dump_h_pos_with_mer ;
54+ #define dbgContains_dump_pos ;
55+ #define dbgContains_dump_h_pos ;
56+ #define dbgLookup_determined_brief1 ;
57+ #define dbgLookup_determined_brief2 ;
58+ #define dbgAdjust_pos_list1 ;
59+ #define dbgAdjust_pos_list2 ;
60+ #define dbgRestore_pos_list1 ;
61+ #define dbgRestore_pos_list2 ;
62+ #endif // not bloom_filter_supportDebug
63+
64+ #ifdef bloom_filter_supportDebug
65+
66+ #define dbgAdd_dump_pos_with_mer \
67+ if (dbgAdd) cerr << mer << " write " << pos << endl;
68+
69+ #define dbgAdd_dump_h_pos_with_mer \
70+ if (dbgAdd) cerr << mer << " write" << h << " " << pos << endl;
71+
72+ #define dbgAdd_dump_pos \
73+ if (dbgAdd) cerr << " write " << pos << endl;
74+
75+ #define dbgAdd_dump_h_pos \
76+ if (dbgAdd) cerr << " write" << h << " " << pos << endl;
77+
78+ #define dbgContains_dump_pos_with_mer \
79+ if (dbgContains) cerr << mer << " read " << pos << endl;
80+
81+ #define dbgContains_dump_h_pos_with_mer \
82+ if (dbgContains) cerr << mer << " read" << h << " " << pos << endl;
83+
84+ #define dbgContains_dump_pos \
85+ if (dbgContains) cerr << " read " << pos << endl;
86+
87+ #define dbgContains_dump_h_pos \
88+ if (dbgContains) cerr << " read" << h << " " << pos << endl;
89+
90+ #define dbgLookup_determined_brief1 \
91+ { \
92+ if (dbgRankSelectLookup) \
93+ cerr << " DeterminedBriefFilter::lookup(" << pos << " )" << endl; \
94+ if (dbgRankSelectLookup) \
95+ { \
96+ if ((*bvDet)[pos] == 0 ) \
97+ cerr << " bvDet[" << pos << " ] == 0 --> unresolved" << endl;\
98+ else \
99+ cerr << " bvDet[" << pos << " ] == 1" << endl; \
100+ } \
101+ }
102+
103+ #define dbgLookup_determined_brief2 \
104+ if (dbgRankSelectLookup) \
105+ cerr << " bvHow[" << howPos << " ] == " << (*bvHow)[howPos] \
106+ << " --> " << (((*bvHow)[howPos]==1 )?" present" :" absent" ) \
107+ << endl;
108+
109+ #define dbgAdjust_pos_list1 \
110+ if (dbgAdjustPosList) \
111+ cerr << " adjust_positions_in_list(" << numUnresolved << " )" << endl;
112+
113+ #define dbgAdjust_pos_list2 \
114+ if (dbgAdjustPosList) \
115+ cerr << " " << pos << " --> " << (pos-rank) << endl;
116+
117+ #define dbgRestore_pos_list1 \
118+ if (dbgAdjustPosList) \
119+ cerr << " restore_positions_in_list(" << numUnresolved << " )" << endl;
120+
121+ #define dbgRestore_pos_list2 \
122+ if (dbgAdjustPosList) \
123+ cerr << " " << pos << " --> " << kmerPositions[posIx] << endl;
124+
125+ #endif // bloom_filter_supportDebug
34126
35127// ----------
36128//
@@ -889,6 +981,7 @@ void BloomFilter::add
889981 if (pos < numBits)
890982 {
891983 (*bv).write_bit (pos);
984+ dbgAdd_dump_pos_with_mer;
892985 }
893986
894987 if (numHashes > 1 )
@@ -901,6 +994,7 @@ void BloomFilter::add
901994 if (pos < numBits)
902995 {
903996 (*bv).write_bit (pos); // $$$ MULTI_VECTOR write each bit to a different vector
997+ dbgAdd_dump_h_pos_with_mer;
904998 }
905999 }
9061000 }
@@ -916,6 +1010,7 @@ void BloomFilter::add
9161010 if (pos < numBits)
9171011 {
9181012 (*bv).write_bit (pos);
1013+ dbgAdd_dump_pos;
9191014 }
9201015
9211016 if (numHashes > 1 )
@@ -928,6 +1023,7 @@ void BloomFilter::add
9281023 if (pos < numBits)
9291024 {
9301025 (*bv).write_bit (pos); // $$$ MULTI_VECTOR write each bit to a different vector
1026+ dbgAdd_dump_h_pos;
9311027 }
9321028 }
9331029 }
@@ -949,6 +1045,7 @@ bool BloomFilter::contains
9491045 u64 pos = h1 % hashModulus;
9501046 if (pos < numBits)
9511047 {
1048+ dbgContains_dump_pos_with_mer;
9521049 if ((*bv)[pos] == 0 ) return false ;
9531050 }
9541051
@@ -961,6 +1058,7 @@ bool BloomFilter::contains
9611058 pos = hashValues[h] % hashModulus;
9621059 if (pos < numBits)
9631060 {
1061+ dbgContains_dump_h_pos_with_mer;
9641062 if ((*bv)[pos] == 0 ) return false ; // $$$ MULTI_VECTOR read each bit from a different vector
9651063 }
9661064 }
@@ -978,6 +1076,7 @@ bool BloomFilter::contains
9781076 u64 pos = h1 % hashModulus;
9791077 if (pos < numBits)
9801078 {
1079+ dbgContains_dump_pos;
9811080 if ((*bv)[pos] == 0 ) return false ;
9821081 }
9831082
@@ -990,6 +1089,7 @@ bool BloomFilter::contains
9901089 pos = hashValues[h] % hashModulus;
9911090 if (pos < numBits)
9921091 {
1092+ dbgContains_dump_h_pos;
9931093 if ((*bv)[pos] == 0 ) return false ; // $$$ MULTI_VECTOR read each bit from a different vector
9941094 }
9951095 }
@@ -1198,10 +1298,12 @@ int DeterminedBriefFilter::lookup
11981298 // we assume, without checking, that 0 <= pos < numBits
11991299
12001300 BitVector* bvDet = bvs[0 ];
1301+ dbgLookup_determined_brief1;
12011302 if ((*bvDet)[pos] == 0 ) return unresolved;
12021303
12031304 BitVector* bvHow = bvs[1 ];
12041305 u64 howPos = bvDet->rank1 (pos);
1306+ dbgLookup_determined_brief2;
12051307 if ((*bvHow)[howPos] == 1 ) return present;
12061308 else return absent;
12071309 }
@@ -1211,12 +1313,14 @@ void DeterminedBriefFilter::adjust_positions_in_list
12111313 u64 numUnresolved)
12121314 {
12131315 BitVector* bvDet = bvs[0 ];
1316+ dbgAdjust_pos_list1;
12141317
12151318 for (u64 posIx=0 ; posIx<numUnresolved ; posIx++)
12161319 {
12171320 u64 pos = kmerPositions[posIx];
12181321 u64 rank = bvDet->rank1 (pos);
12191322 kmerPositions[posIx] = pos - rank; // $$$ isn't this just rank0(pos)?
1323+ dbgAdjust_pos_list2;
12201324 }
12211325 }
12221326
@@ -1225,11 +1329,13 @@ void DeterminedBriefFilter::restore_positions_in_list
12251329 u64 numUnresolved)
12261330 {
12271331 BitVector* bvDet = bvs[0 ];
1332+ dbgRestore_pos_list1;
12281333
12291334 for (u64 posIx=0 ; posIx<numUnresolved ; posIx++)
12301335 {
12311336 u64 pos = kmerPositions[posIx];
12321337 kmerPositions[posIx] = bvDet->select0 (pos);
1338+ dbgRestore_pos_list2;
12331339 }
12341340 }
12351341
0 commit comments