📄 mdbtbl.h
字号:
#ifndef __MdbTbl_h__
#define __MdbTbl_h__
#include "Exception.h"
#include "MdbDict.h"
#include "MdbApi.h"
union UVal
{
long long m_n64;
int m_n32;
short m_n16;
char m_n8;
char * m_sz;
};
struct CRecordNode;
struct CRecordNode
{
ACE_Based_Pointer_Basic<void> m_psData;
ACE_Based_Pointer<CRecordNode> m_psPrev;
ACE_Based_Pointer<CRecordNode> m_psNext;
};
/*
class CRecordIter
{
public:
CRecordIter(CRecordNode *psRecordNode) { m_psRecordNode = psRecordNode; }
CRecordIter(const CRecordIter &cRecordIter) { m_psRecordNode = CRecordIter.m_psRecordNode;}
~CRecordIter() {}
CRecordIter &operator ++();
CRecordNode *operator *() { return m_psRecordNode; }
private:
CRecordNode *m_psRecordNode;
};
*/
struct CFieldRef
{
CDbColumnMeta *m_psColumnMeta;
void *m_pField;
};
class CMdbTbl
{
public:
CMdbTbl(MALLOC *pcAlloc,CMdbDict *pcDbDict,CDbTableMeta *psTableMeta);
~CMdbTbl() {}
CRecordNode *createRecord();
void removeRecord(CRecordNode *pRec);
CRecordNode *queryRecord(const CRecordNode *psPrevRecordNode,int nFieldCnt,const char **szFieldNames,int *pnFieldTypes,void **ppVals);
//int getFieldCnt() { return m_psTableMeta->m_nColCnt;}
void setFieldValByName(CRecordNode *pRec,const char *szFieldName,int nFieldType,const void *pVal);
void getFieldValByName(CRecordNode *pRec,const char *szFieldName,int nFieldType,void *pVal);
void setFieldValByIndex(CRecordNode *pRec,int nFieldIndex,int nFieldType,const void *pVal);
void getFieldValByIndex(CRecordNode *pRec,int nFieldIndex,int nFieldType,void *pVal);
void getAutoFieldValByMeta(CRecordNode *pRec,CDbColumnMeta *psColumnMeta,int &nFieldType,void *pVal);
//void getAutoFieldRefByName(CRecordNode *pRec,const char *szFieldName,int &nFieldType,CFieldRef &sRef);
//void getAutoFieldRefByIndex(CRecordNode *pRec,int nFieldIndex,int &nFieldType,CFieldRef &sRef);
//void setFieldValByRef(CFieldRef &sRef,int nFieldType,const void *pVal);
void getAutoFieldValByName(CRecordNode *pRec,const char *szFieldName,int &nFieldType,void *pVal);
void getAutoFieldValByIndex(CRecordNode *pRec,int nFieldIndex,int &nFieldType,void *pVal);
//CRecordIter recBegin() { return CRecordIter(m_psTableEntry->m_psRecords); }
//CRecordIter recEnd() { return CRecordIter(reinterpret_cast<CRecordNode *>0); }
void truncate();
private:
void transFieldTypeToInternalType(int nFieldType,const void *pVal,int &nInternalType);
bool setFieldVal(void *pData,CDbColumnMeta *psDbColumnMeta,int nFieldType,const void *pVal);
void getFieldVal(void *pData,CDbColumnMeta *psDbColumnMeta,int &nFieldType,void *pVal);
void getFieldType(CDbColumnMeta *psDbColumnMeta,int &nFieldType);
//bool compareKey(CRecordNode *pRec,CDbColumnMeta *psColumnMeta,int nFieldType,void *pFieldVal);
bool compareKey(int nFieldType,void *pFieldVal,const char *pColName,int nColInternalType,void *pColVal);
bool castVal(int nOrgFieldType,void *pOrgFieldVal,int nDstFieldType,void *pDstFieldVal);
private:
MALLOC *m_pcAlloc;
CMdbDict *m_pcDbDict;
CDbTableMeta *m_psTableMeta;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -