#include <basics.h>
#include <wt_coder.h>
+#include <vector>
#define WT_NODE_NULL_HDR 0
#define WT_NODE_INTERNAL_HDR 2
public:
virtual ~wt_node() {}
virtual uint rank(uint symbol, uint pos, uint l, 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 void access(std::vector<int> &result, uint i, uint j, uint min, uint max, uint l, uint pivot)=0;
+ virtual void access(std::vector<int> &result, uint i, uint j)=0;
+ virtual uint access(uint i, uint j, uint min, uint max, uint l, uint pivot)=0;
virtual uint size()=0;
virtual uint save(FILE *fp)=0;
static wt_node * load(FILE *fp);