📄 appdb.h
字号:
/*************************************************************************
*
* Copyright 2002 National ASIC Center, All rights Reserved
*
* FILE NAME: appdb.h
* PROGRAMMER: longn_qi
* Date of Creation: 2002/08/12
*
* DESCRIPTION: This head file includes structure and macro definition
* and public function declaration for the application
* layer of the mini-database.
*
* NOTE:
*
*
* STRUCTURES LIST:
* -------------------------------------------------------------------------
* RECORDINDEX
* FIELDINDEX
* FIELDVALUEINDEX
* FIELDINDEXLIST
* DBLACB
* DBGACB
* DBLOCALFUNCS
* DBDESCRIPTION
*
* PUBLIC FUNCTIONS LIST:
* -------------------------------------------------------------------------
* CreateDataBase
* InitDataBase
* LinkDataBase
* DetachDataBase
* LocalReadRecord
* LocalModifyRecord
* LocalAddRecord
* LocalDelRecord
* LocalFindRecord
* LocalSearchRecord
*
* GLOBAL VARS LIST:
* -------------------------------------------------------------------------
*
*
**************************************************************************
*
* MODIFICATION HISTORY
*
*
* 2002/08/12 by longn_qi Create the file
*
*************************************************************************/
#ifndef APP_DATA_BASE_H
#define APP_DATA_BASE_H
#include <sys\wintype.h>
//#include <wtypes.h>
#include <stdlib.h>
//#include "phydb.h"
#include <database\phydb.h>
#define CARD_DATA_BASE 0 //名片数据库
#define PH_DATA_BASE 1 //通话记录数据库
#define SMSH_DATA_BASE 2 //短信历史记录数据库
#define NOTEPAD_DATA_BASE 3 //记事本应用数据库
#define SCHEME_DATA_BASE 4 //约会提醒应用数据库
#define EMAIL_DATA_BASE 5 //电子邮件应用数据库
#define DATA_BASE_NUM 6 //应用数据库数目
typedef struct _FieldValueIndex // 字段值索引结构
{
struct _RecordIndex *index; // 字段值索引号
struct _FieldValueIndex *next; // 下一个字段值索引
}FIELDVALUEINDEX;
struct _RecordIndex // 记录索引结构
{
struct _RecordIndex *next; // 下一条记录索引
// union
// {
struct _RecordIndex *prev; // 上一条记录索引
FIELDVALUEINDEX *head; // 字段值索引列表
// };
DWORD index; // 记录索引号
};
typedef struct _RecordIndex RECORDINDEX;
typedef struct _FieldIndex // 字段索引结构
{
// union
// {
RECORDINDEX *next; // 记录索引列表
// };
RECORDINDEX *prev; // 记录索引列表
struct _FieldIndex *sub; // 下一级字段索引表
WORD index; // 字段索引号
WORD num; // 索引数
}FIELDINDEX;
typedef struct // 字段索引表结构
{
BYTE id; // 索引字段号
BYTE type; // 索引字段类型
WORD num; // 字段索引数目
FIELDINDEX *head; // 字段索引列表
WORD level; // 索引字段索引表的级数
}FIELDINDEXLIST;
// 索引字段类型宏定义
#define SINGLE_VALUE_FIELD 0 // 单值字段
#define MULTI_VALUE_FIELD 1 // 多值字段
#define RECORD_FIELD_LIST_LEN 32 // 记录字段表长度
// 索引字段索引表的级数
#define I_LEVEL 1 // 一级索引
#define II_LEVEL 2 // 二级索引
typedef struct // 数据库全局访问控制结构
{
DBPHYLAYERINFO *PLInfo; // 物理模式信息
struct _LocalFuncs *funcs; // 数据库局部操作函数列表
WORD symbol; // 数据库结构标识符,必须是0x4442('DB')
BYTE link; // 访问控制信息
BYTE IFNum; // 索引字段数目(小于128)
FIELDINDEXLIST *FList; // 字段索引表列表
RECORDINDEX **RFList[RECORD_FIELD_LIST_LEN]; // 记录字段表
WORD fieldNum; // 字段数目(小于256)
}DBGACB;
#define DB_SYMBOL 0x4442 // 数据库结构标识符
struct _RecordData //记录数据块
{
DWORD index; //记录号索引表
BYTE *data; //记录数据表
WORD datalen; //数据块长度
};
typedef struct _RecordData RECORDDATA;
typedef struct // 局部查找表
{
RECORDDATA *head; //记录索引号和数据表
WORD num; //索引数目
}LOCALSEARCHLIST;
typedef struct // 数据库局部访问控制结构
{
DBGACB *gacb; // 全局访问控制信息
LOCALSEARCHLIST *head; // 局部查找表
}DBLACB;
struct _LocalFuncs // 数据库局部操作函数列表
{
DBGACB* (*initDataBase)( DBGACB *gacb );
DBLACB* (*linkDataBase)( DBGACB *gacb );
void (*detachDataBase)( DBLACB *lacb );
BYTE* (*localReadRecord)( DBLACB *lacb, DWORD id );
DWORD (*localModifyRecord)( DBLACB *lacb, DWORD id, BYTE *data, WORD dataLen );
DWORD (*localAddRecord)( DBLACB *lacb, BYTE *data, WORD dataLen );
DWORD (*localDelRecord)( DBLACB *lacb, DWORD id );
LOCALSEARCHLIST* (*localFindRecord)( DBLACB *lacb, BYTE field, BYTE *data, BYTE mode );
// LOCALSEARCHLIST* (*localSearchRecord)( DBLACB *lacb, BYTE field, BYTE *data, BYTE mode );
LOCALSEARCHLIST* (*localSortRecord)( DBLACB *lacb, BYTE field, BYTE *data, BYTE reserved );
LOCALSEARCHLIST* (*localSortList)( DBLACB *lacb, LOCALSEARCHLIST *searchlist, BYTE field, BYTE reserved );
};
typedef struct _LocalFuncs DBLOCALFUNCS;
typedef struct // 数据库描述信息结构
{
char *path; // 数据库文件路径
DBLOCALFUNCS funcs; // 数据库局部操作函数列表
}DBDESCRIPTION;
//应有程序存放字段值的结构
struct _FieldValue //字段值
{
struct _FieldValue *next; //下一个字段值
BYTE *fieldvalue; //字段值
WORD offset; //下一个字段值的偏移
};
typedef struct _FieldValue FIELDVALUE;
typedef struct
{
WORD headoffset; //字段头的偏移
WORD type; //字段类型(单值/多值)
// union
// {
FIELDVALUE *head; //字段值列表(多值)
BYTE *fieldvalue; //字段值(单值)
// };
}FIELDVALUELIST;
//精确查找模式
#define PRECISE_FULL_MATCH 0 //完全匹配
#define PRECISE_PART_MATCH 1 //部分匹配
#define GLOBAL_SEARCH 2 //所有记录按主索引排列(名片:姓名,电话和短信历史纪录:时间)
extern WORD Gb2PyTbl_I[126]; // 一级索引表
extern WORD Gb2PyTbl_II[13526]; // 二级索引表
extern WORD Gb2PyTbl_A[1061]; // 辅助索引表
#define PY_MAX_NUM 4 // 一个汉字可能有的最多拼音的数目
#define SECTION_NUM 126 // 分区数目(0xFF - 0x81)
#define NUM_PRE_SECTION 94 // 每区中汉字的数目
// 根据汉字的GB编码获取分区号
#define GetSectionID( code ) ( ( (code) >> 8 )- 0x81 )
//时间查找范围
#define DAY_RANGE 0 // 一天内
#define WEEK_RANGE 1 // 一周内
#define MONTH_RANGE 2 // 一月内
#define YEAR_RANGE 3 // 一年内
//时间结构
typedef struct
{
DWORD year;
WORD month;
WORD day;
WORD hour;
WORD minute;
WORD second;
}TIME_INDEX;
//保护数据库结构
struct _checkdbindex
{
BYTE *record; //记录的数据
struct _checkdbindex *next; //下一个记录数据
};
typedef struct _checkdbindex CHECKDBINDEX;
//extern void CreateDataBase( void );
extern DWORD CreateDataBase( void );
extern DBGACB* InitDataBase( BYTE id );
extern DBLACB* LinkDataBase( BYTE id );
extern DWORD DetachDataBase( DBLACB *lacb );
extern BYTE* LocalReadRecord( DBLACB *lacb, DWORD id );
extern DWORD LocalModifyRecord( DBLACB *lacb, DWORD id, BYTE *data, WORD dataLen );
extern DWORD LocalAddRecord( DBLACB *lacb, BYTE *data, WORD dataLen );
extern DWORD LocalDelRecord( DBLACB *lacb, DWORD id );
extern LOCALSEARCHLIST* LocalFindRecord( DBLACB *lacb, BYTE field, BYTE *data, BYTE mode );
//extern LOCALSEARCHLIST* LocalSearchRecord( DBLACB *lacb, BYTE field, BYTE *data, BYTE mode );
extern LOCALSEARCHLIST* LocalSortRecord( DBLACB *lacb, BYTE field, BYTE *data, BYTE reserved );
extern LOCALSEARCHLIST* LocalSortList( DBLACB *lacb, LOCALSEARCHLIST *searchlist, BYTE field, BYTE reserved );
extern DWORD SaveDB( DBLACB *lacb );
extern void DelOldSearchList( LOCALSEARCHLIST *searchlist );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -