X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libcds%2Fsrc%2Fstatic_bitsequence%2Fstatic_bitsequence.cpp;h=ad07b84c1208761da08994b791af1a18cb4d0a7a;hb=e38bc834442d5369a523ba47d74865e48995ace4;hp=7813d8cc5297de873c46bce35577457353070891;hpb=a9846746dc7a55764591fcc273fd48c6049df962;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_bitsequence/static_bitsequence.cpp b/libcds/src/static_bitsequence/static_bitsequence.cpp index 7813d8c..ad07b84 100644 --- a/libcds/src/static_bitsequence/static_bitsequence.cpp +++ b/libcds/src/static_bitsequence/static_bitsequence.cpp @@ -26,8 +26,9 @@ uint static_bitsequence::rank0(uint i) { } uint static_bitsequence::rank1(uint i) { - if(i>=len) return ones; - if(ones==0) return -1; + if(i>=len) return (uint)-1; + if(ones==0) return 0; + if(ones==len) return i+1; uint ini = 1; uint fin = ones; while(inilen-ones) return len; + if(i>len-ones) return -1; if(i==0) return -1; + if(ones==0) return i-1; uint ini = 0; uint fin = len-1; while(iniones) return len; - if(i==0) return 0; + if(i>ones) return -1; + if(i==0) return -1; + if(ones==len) return i-1; uint ini = 0; uint fin = len-1; while(ini0; } @@ -99,6 +110,7 @@ static_bitsequence * static_bitsequence::load(FILE * fp) { case RRR02_HDR: return static_bitsequence_rrr02::load(fp); case BRW32_HDR: return static_bitsequence_brw32::load(fp); case RRR02_LIGHT_HDR: return static_bitsequence_rrr02_light::load(fp); + case SDARRAY_HDR: return static_bitsequence_sdarray::load(fp); } return NULL; }