⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdbhtindex.h

📁 一个自行开发的内存数据管理的包
💻 H
字号:
#ifndef __MdbHtIndex_h__
#define __MdbHtIndex_h__

#include "Exception.h"
#include "MdbDict.h"
#include "MdbTbl.h"

#define HT_BUCKET_CNT  10000

struct CHtIndexNode;

struct CHtIndexEntry
{
ACE_Based_Pointer<CHtIndexNode> m_psHtIndexNodes[HT_BUCKET_CNT];
};

struct CHtIndexNode
{
ACE_Based_Pointer_Basic<CRecordNode> m_psRecord;
ACE_Based_Pointer<CHtIndexNode> m_psNext;
};

class CMdbHtIndex
{
public:
CMdbHtIndex(MALLOC *pcAlloc,CMdbDict *pcDbDict,CMdbTbl *pcTable,CDbIndexMeta *psIndexMeta);
~CMdbHtIndex() {}
void insert(CRecordNode *pRec);
void update(CRecordNode *pRec,const char *szFieldName,int nFieldType,const void *pVal);
CRecordNode *query(CHtIndexNode *&psPrevIndexNode,int nFieldCnt,const char **szFieldNames,int *pnFieldTypes,void **ppVals,bool &bHit);
void remove(CRecordNode *pRec);
void truncate();
private:
unsigned long calcHashVal(int nFieldType,const void *pVal);
unsigned long calcInnerHashVal(int nFieldType,const UVal *pVal);
bool compareKey(int nFieldType,void *pFieldVal,const char *pColName,int nColInternalType,void *pColVal);
private:
MALLOC *m_pcAlloc;
CMdbDict *m_pcDbDict;
CHtIndexEntry *m_psIndexEntry;
CDbIndexMeta *m_psIndexMeta;
CMdbTbl *m_pcTable;
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -