#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;
+ 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 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);
#include <wt_node_leaf.h>
#endif
-