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);
- return 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);
- return 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) {