📄 indexmgr.h
字号:
// INDEXMGR.H - IndexMgr Class Header
#ifndef INDEXMGR_H
#define INDEXMGR_H
#include "filemgr.h"
#include "nodemgr.h"
// 总结:每块索引项的个数应为奇数
// 索引项个数和记录大小的关系:
// 索引记录大小 = 索引项个数*(关键字长度+4) + 16 参Nodemgr.cpp
//const idxRecSize = 1022;
//const idxRecSize = 2832;// 每块64个索引项 索引文件大小7M
//const idxRecSize = 2788;// 每块63个索引项 索引文件大小4.3M
const idxRecSize = 526; // 每块17个索引项 索引文件大小5.1M
//const idxRecSize = 720; // 每块16个索引项 索引文件大小8.9M
//const idxRecSize = 368; // 每块8个索引项 索引文件大小10M
class IndexMgr : public FileMgr
{
private:
int m_nIndexSize;
long m_lIndexSite0;
long m_lIndexSite1;
long m_lIndexSite2;
long m_lIndexSite3;
long m_lContentOfSite0;
long m_lContentOfSite1;
long m_lContentOfSite2;
long m_lContentOfSite3;
long m_laSearchRoute[32];
int m_nHighSearchRoute;
int m_nIsCreatedIdx;
int m_nUnique;
NodeMgr *m_pnmNode;
virtual void read_data(void *block);
virtual void write_data(void *block);
virtual void create_file(void) { create_idx(); }
long FindCore(void *pszKeyWord, long recno);
public:
IndexMgr(const char *fname, int itsize, int unique);
IndexMgr(const char *fname, int itsize, int unique, int file_des,
int idxno, int create);
~IndexMgr(void);
void create_idx(void);
int get_fd(void) { return m_nFileHandle; }
void set_fd(int file_des) { m_nFileHandle = file_des; m_nHighSearchRoute = -1; rew(); }
long find(void *pszKeyWord);
long retrieve(void);
long next(int no_recs);
long prev(int no_recs);
void rew(void);
int compare(void *pszKeyWord);
int insert(long recno, void *pszKeyWord);
int erase(void);
void node_split(void);
int created_idx(void) { return m_nIsCreatedIdx; }
//void read_head_info(void);
//int check_node_del(void);
//int check_split_del(void);
//void inc_node_del(void);
//void inc_node_split(void);
//long relocate(void);
void ffwd_core(long recno);
void ffwd(void);
NodeMgr *GetNode() { return m_pnmNode; }
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -