X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_bitsequence%2Fsdarray.cpp;fp=libcds%2Fsrc%2Fstatic_bitsequence%2Fsdarray.cpp;h=2294a0cc983d63ad2c92f6601b151f6b70236c7f;hb=9e63e1fb82a3d7020c603efa58ec077af730c2cb;hp=949726a9c8bcfef9ce30125ee3e5b433808bd07b;hpb=fadbf5f42541aa09769cbe406f5756fa042fe2d9;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_bitsequence/sdarray.cpp b/libcds/src/static_bitsequence/sdarray.cpp index 949726a..2294a0c 100644 --- a/libcds/src/static_bitsequence/sdarray.cpp +++ b/libcds/src/static_bitsequence/sdarray.cpp @@ -159,8 +159,11 @@ static const unsigned int _popCount[] = { }; static unsigned int __selecttbl[8*256]; +static int built = 0; void make___selecttbl(void) { + if(built) return; + built = 1; int i,x,r; uint buf[1]; @@ -672,8 +675,8 @@ int selects3_select(selects3 *select, int i) { else { select->lasts = selectd2_select(select->sd1,i,1); } - select->lasti = i;*/ - //lasts3 = select; + select->lasti = i; + //lasts3 = select; */ x = selectd2_select(select->sd1,i,1) - (i-1); //x = (select->lasts-(i-1)) << d; x <<= d; @@ -755,6 +758,7 @@ int selects3_rank(selects3 *select, int i) { q = select->low; ii = i>>d; + y = selectd2_select(select->sd0,ii,0)+1; // selectd2_select2(select->sd0,ii,0,&y1,&y2); //y1++; y2++;