Project: finder, src: BPTree.h
B+ Tree ヘッダーファイル
#ifndef BPTREE_H_
#define BPTREE_H_
#include "BPTreeCore.h"
class BPTree {
public:
class ObjectStream {
private:
int fd;
off_t header_offset;
off_t header;
off_t footer_offset;
off_t footer;
public:
ObjectStream(int fd, off_t offset);
ObjectStream(bool bFalse) : fd(-1) {}
void append(const Serializer &obj);
bool load(Serializer &obj);
bool isEOF() {
return (fd == -1 || footer == 0);
}
};
private:
BPTreeCore *bptree;
bool bCreate;
int fd;
public:
BPTree(const std::string &filename, bool bTruncate = true);
BPTree(int fd);
virtual ~BPTree();
void append(const NGram &key, const Serializer &obj);
BPTree::ObjectStream find(const NGram &key);
int getFileDescriptor() const {
return fd;
}
};
#endif //BPTREE_H_