Bug fixes for rankLessThan()
[SXSI/XMLTree.git] / libcds / src / static_sequence / wt_node_internal.cpp
index 2219e9b..4e6871a 100644 (file)
@@ -250,39 +250,12 @@ uint wt_node_internal::rank(uint symbol, uint pos, uint l, wt_coder * c) {
 
 // return value is rank of symbol (less or equal to the given symbol) that has rank > 0, 
 // the parameter symbol is updated accordinly
-uint wt_node_internal::rankLessThan(uint &symbol, uint pos, uint l, wt_coder * c) 
-{
-    bool is_set = c->is_set(symbol,l);
-    using std::cout;
-    using std::endl;
-//    cout << "l = " << l << ", symbol = " << (uchar)symbol << ", rank0 = " << bitmap->rank0(pos) << ", rank1 = " << bitmap->rank1(pos) << endl;
-
-    uint result = -1;
-    if(!is_set) {
-        if(left_child==NULL) return -1;
-        uint rank = bitmap->rank0(pos);
-        if(rank != 0)
-            result = left_child->rankLessThan(symbol,rank-1,l+1,c);
-        return result;
-    }
-
-    uint rank = bitmap->rank1(pos);
-    if (rank != 0 && right_child != NULL)
-        result = right_child->rankLessThan(symbol, rank-1,l+1,c);
-
-//    cout << "recursion to leftchild at l = " << l << ", symbol = " << (uchar)symbol << ", rank0 = " << bitmap->rank0(pos) << ", rank1 = " << bitmap->rank1(pos) << endl;
-    // check left child for symbols <= givenSymbol
-    if (result != (uint)-1 || left_child == NULL)
-        return result;
-    return left_child->rankLessThan(symbol, bitmap->rank0(pos)-1);
-}
-
 uint wt_node_internal::rankLessThan(uint &symbol, uint pos) 
 {
     uint result = -1;
     using std::cout;
     using std::endl;
-//    cout << "pos = " << pos << ", symbol = " << (uchar)symbol << endl;
+//    cout << "pos = " << pos << ", symbol = " << symbol << endl;
     
     if (pos == (uint)-1)
         return (uint)-1;
@@ -429,7 +402,7 @@ void wt_node_internal::access(vector<int> &result, uint i, uint j)
     }
 }
 
-
+// Count
 uint wt_node_internal::access(uint i, uint j, uint min, uint max, uint l, uint pivot)
 {
     uint count = 0;