From 82bd00eaaece0e0bec72dce91ab670c89e6dccd9 Mon Sep 17 00:00:00 2001 From: nvalimak Date: Thu, 14 May 2009 11:55:10 +0000 Subject: [PATCH] Small updates, code clean up git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@388 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- .../static_sequence_wvtree.cpp | 2 +- .../src/static_sequence/wt_node_internal.cpp | 94 ------------------- libcds/src/static_sequence/wt_node_internal.h | 1 - 3 files changed, 1 insertion(+), 96 deletions(-) diff --git a/libcds/src/static_sequence/static_sequence_wvtree.cpp b/libcds/src/static_sequence/static_sequence_wvtree.cpp index 5f958cd..ca93594 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree.cpp +++ b/libcds/src/static_sequence/static_sequence_wvtree.cpp @@ -103,7 +103,7 @@ vector static_sequence_wvtree::accessAll(uint i, uint j) if (j < i) return resultSet; - resultSet.reserve(j-i+1); + // resultSet.reserve(j-i+1); // avoid reallocation root->access(resultSet, i, j); for (vector::iterator it = resultSet.begin(); it != resultSet.end(); ++it) *it = am->unmap(*it); diff --git a/libcds/src/static_sequence/wt_node_internal.cpp b/libcds/src/static_sequence/wt_node_internal.cpp index 4e6871a..ca21c73 100644 --- a/libcds/src/static_sequence/wt_node_internal.cpp +++ b/libcds/src/static_sequence/wt_node_internal.cpp @@ -70,74 +70,6 @@ wt_node_internal::wt_node_internal(uint * symbols, uint n, uint l, wt_coder * c, delete [] right; } -// Deletes symbols array! -wt_node_internal::wt_node_internal(uchar * symbols, uint n, uint l, wt_coder * c, static_bitsequence_builder * bmb) { - uint * ibitmap = new uint[n/W+1]; - for(uint i=0;iis_set((uint)symbols[i],l)) - bitset(ibitmap,i); - bitmap = bmb->build(ibitmap, n); - delete [] ibitmap; - uint count_right = bitmap->rank1(n-1); - uint count_left = n-count_right+1; - uchar * left = new uchar[count_left+1]; - uchar * right = new uchar[count_right+1]; - count_right = count_left = 0; - bool match_left = true, match_right = true; - for(uint i=0;iaccess(i)) { - right[count_right++]=symbols[i]; - if(count_right>1) - if(right[count_right-1]!=right[count_right-2]) - match_right = false; - } - else { - left[count_left++]=symbols[i]; - if(count_left>1) - if(left[count_left-1]!=left[count_left-2]) - match_left = false; - } - } - - delete [] symbols; - symbols = 0; - - if(count_left>0) { - if(match_left/* && c->done(left[0],l+1)*/) - { - left_child = new wt_node_leaf((uint)left[0], count_left); - delete [] left; - left = 0; - } - else - { - left_child = new wt_node_internal(left, count_left, l+1, c, bmb); - left = 0; // Already deleted - } - } else { - left_child = NULL; - } - if(count_right>0) { - if(match_right/* && c->done(right[0],l+1)*/) - { - right_child = new wt_node_leaf((uint)right[0], count_right); - delete [] right; - right = 0; - } - else - { - right_child = new wt_node_internal(right, count_right, l+1, c, bmb); - right = 0; // Already deleted - } - } else { - right_child = NULL; - } - delete [] left; // already deleted if count_left > 0 - delete [] right; -} - wt_node_internal::wt_node_internal(uchar * symbols, uint n, uint l, wt_coder * c, static_bitsequence_builder * bmb, uint left, uint *done) { uint * ibitmap = new uint[n/W+1]; for(uint i=0;irank1(n-1); uint count_left = n-count_right; -/* uchar * leftarr = new uchar[count_left+1]; - uchar * rightarr = new uchar[count_right+1]; - count_right = count_left = 0; - for(uint i=0;iaccess(i)) { - rightarr[count_right++]=symbols[i+left]; - } - else { - leftarr[count_left++]=symbols[i+left]; - } - } -*/ for (uint i=0;iis_set(symbols[i+left], l)) - { - std::cout << symbols[i+left] << " != " << leftarr[i] << " lev = " << l << "\n"; - exit(0); - } - for (uint i=count_left;iis_set(symbols[i+left],l)) - std::cout << symbols[i+left] << " != " << rightarr[i-count_left] << " lev = " << l << "\n"; - */ bool match_left = true, match_right = true; for (uint i=1; i < count_left; i++) if (symbols[i+left] != symbols[i+left-1]) diff --git a/libcds/src/static_sequence/wt_node_internal.h b/libcds/src/static_sequence/wt_node_internal.h index 3fd0579..d7e41d2 100644 --- a/libcds/src/static_sequence/wt_node_internal.h +++ b/libcds/src/static_sequence/wt_node_internal.h @@ -37,7 +37,6 @@ class wt_node_internal: public wt_node { public: wt_node_internal(uint * seq, uint n, uint l, wt_coder * c, static_bitsequence_builder * bmb); - wt_node_internal(uchar * seq, uint n, uint l, wt_coder * c, static_bitsequence_builder * bmb); wt_node_internal(uchar * seq, uint n, uint l, wt_coder * c, static_bitsequence_builder * bmb, uint, uint *); virtual ~wt_node_internal(); virtual uint rank(uint symbol, uint pos, uint level, wt_coder * c); -- 2.17.1