projects
/
SXSI
/
XMLTree.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
More fixes
[SXSI/XMLTree.git]
/
libcds
/
src
/
static_sequence
/
wt_node_internal.cpp
diff --git
a/libcds/src/static_sequence/wt_node_internal.cpp
b/libcds/src/static_sequence/wt_node_internal.cpp
index
d2d0fa8
..
9dc87a2
100644
(file)
--- a/
libcds/src/static_sequence/wt_node_internal.cpp
+++ b/
libcds/src/static_sequence/wt_node_internal.cpp
@@
-142,19
+142,22
@@
uint wt_node_internal::rank(uint symbol, uint pos, uint l, wt_coder * c) {
uint wt_node_internal::select(uint symbol, uint pos, uint l, wt_coder * c) {
bool is_set = c->is_set(symbol, l);
uint wt_node_internal::select(uint symbol, uint pos, uint l, wt_coder * c) {
bool is_set = c->is_set(symbol, l);
+ uint ret = 0;
if(!is_set) {
if(left_child==NULL)
return (uint)(-1);
uint new_pos = left_child->select(symbol, pos, l+1,c);
if(new_pos+1==0) return (uint)(-1);
if(!is_set) {
if(left_child==NULL)
return (uint)(-1);
uint new_pos = left_child->select(symbol, pos, l+1,c);
if(new_pos+1==0) return (uint)(-1);
- ret
urn
bitmap->select0(new_pos)+1;
+ ret
=
bitmap->select0(new_pos)+1;
} else {
if(right_child==NULL)
return (uint)(-1);
uint new_pos = right_child->select(symbol, pos, l+1,c);
if(new_pos+1==0) return (uint)(-1);
} else {
if(right_child==NULL)
return (uint)(-1);
uint new_pos = right_child->select(symbol, pos, l+1,c);
if(new_pos+1==0) return (uint)(-1);
- ret
urn
bitmap->select1(new_pos)+1;
+ ret
=
bitmap->select1(new_pos)+1;
}
}
+ if(ret==0) return (uint)-1;
+ return ret;
}
uint wt_node_internal::access(uint pos) {
}
uint wt_node_internal::access(uint pos) {