📄 mdbhtindex.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 + -