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);
}
}
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); }