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

📄 appdb.h

📁 一个操作系统源代码 用于嵌入式设备 在Vc++环境下仿真 成功移植到多款处理器上
💻 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 + -