projects
/
SXSI
/
XMLTree.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
patches
[SXSI/XMLTree.git]
/
libcds
/
src
/
static_sequence
/
wt_node.h
diff --git
a/libcds/src/static_sequence/wt_node.h
b/libcds/src/static_sequence/wt_node.h
index
14ea05c
..
7bfa975
100644
(file)
--- a/
libcds/src/static_sequence/wt_node.h
+++ b/
libcds/src/static_sequence/wt_node.h
@@
-29,13
+29,23
@@
#define WT_NODE_INTERNAL_HDR 2
#define WT_NODE_LEAF_HDR 3
#define WT_NODE_INTERNAL_HDR 2
#define WT_NODE_LEAF_HDR 3
-
+/** Base clase for nodes in the wavelet tree
+ *
+ * @author Francisco Claude
+ */
class wt_node {
public:
virtual ~wt_node() {}
virtual uint rank(uint symbol, uint pos, uint l, wt_coder * c)=0;
class wt_node {
public:
virtual ~wt_node() {}
virtual uint rank(uint symbol, uint pos, uint l, wt_coder * c)=0;
+ virtual uint rankLessThan(uint &symbol, uint pos, uint level, wt_coder * c) = 0;
+ virtual uint rankLessThan(uint &symbol, uint pos) = 0;
virtual uint select(uint symbol, uint pos, uint l, wt_coder * c)=0;
virtual uint access(uint pos)=0;
virtual uint select(uint symbol, uint pos, uint l, wt_coder * c)=0;
virtual uint access(uint pos)=0;
+ virtual uint access(uint pos, uint &rank)
+ {
+ assert(0); // Implemented only in wt_node_internal
+ return -1;
+ }
virtual uint size()=0;
virtual uint save(FILE *fp)=0;
static wt_node * load(FILE *fp);
virtual uint size()=0;
virtual uint save(FILE *fp)=0;
static wt_node * load(FILE *fp);
@@
-45,4
+55,3
@@
class wt_node {
#include <wt_node_leaf.h>
#endif
#include <wt_node_leaf.h>
#endif
-