X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2Fstatic_bitsequence%2Fstatic_bitsequence_sdarray.cpp;h=df93b3788e96d758aec14047c9f1507e30b4e66a;hb=refs%2Fheads%2Fmaster;hp=8ce916470f86c581919f965d92db20c0be59749e;hpb=3fd4bcef236556c7f3bff1d2be8d3f4206245501;p=SXSI%2Flibcds.git diff --git a/src/static_bitsequence/static_bitsequence_sdarray.cpp b/src/static_bitsequence/static_bitsequence_sdarray.cpp index 8ce9164..df93b37 100644 --- a/src/static_bitsequence/static_bitsequence_sdarray.cpp +++ b/src/static_bitsequence/static_bitsequence_sdarray.cpp @@ -19,35 +19,20 @@ static_bitsequence_sdarray::static_bitsequence_sdarray(uint * buff, uint len) { delete [] tmp_seq; } +static_bitsequence_sdarray::static_bitsequence_sdarray(uint * buff, uint len, uint ones_) { -static_bitsequence_sdarray::static_bitsequence_sdarray() {make___selecttbl();} - -static_bitsequence_sdarray::~static_bitsequence_sdarray() { + ones = ones_; if(ones) - selects3_free(&sd); + selects3_construct(&sd,len,buff); + this->len = len; } -uint static_bitsequence_sdarray::rank1(uint i) { - if(i>=len) return -1; - if(ones) - return selects3_rank(&sd,i); - else - return 0; -} - +static_bitsequence_sdarray::static_bitsequence_sdarray() {make___selecttbl();} -uint static_bitsequence_sdarray::select1(uint i) { - if(i>ones || i==0) return -1; +static_bitsequence_sdarray::~static_bitsequence_sdarray() { if(ones) - return selects3_select(&sd,i); - else - return (uint)-1; -} - - -uint static_bitsequence_sdarray::select_next1(uint i) { - return selects3_selectnext(&sd,i); + selects3_free(&sd); } @@ -80,3 +65,7 @@ static_bitsequence_sdarray * static_bitsequence_sdarray::load(FILE * fp) { } return ret; } + +uint static_bitsequence_sdarray::select1(uint i) { return this->select(i); } +uint static_bitsequence_sdarray::rank1(uint i) { return this->rank(i); } +uint static_bitsequence_sdarray::select_next1(uint i) { return this->select_next(i); }