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

📄 ime.h

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻 H
字号:
//Last Modify Date : 2003-5-6 16:56:51
//:EB.h : ErBiDigital public includes

#ifndef __EB_H_
#define __EB_H_


//类型定义
///////////////////////////////////////////////////////////////////////////////

//Void
typedef void						EBVoid ;
typedef EBVoid *					pEBVoid ;
//无符号字符
typedef unsigned char 				EBByte ;
typedef EBByte *					pEBByte ;
//有符号字符
typedef signed char 				EBChar ;
typedef EBChar *					pEBChar ;
//无符号字
typedef unsigned short 				EBWord ; 
typedef EBWord *					pEBWord ;
//有符号字
typedef signed short				EBShort ;
typedef EBShort *					pEBShort ;
//无符号长整数
typedef unsigned long				EBDWord ;
typedef EBDWord *					pEBDWord ;
//有符号长整数
typedef signed long					EBLong ;
typedef EBLong *					pEBLong ;
//整数
typedef long						EBInt ;
typedef EBInt *						pEBInt ;

//返回值
typedef EBInt						EBReturn ;



///////////////////////////////////////////////////////////////////////////////
//
#define EB_NULL						0 //空

#define EB_TRUE						1
#define EB_FALSE					0

//Returns
#define EB_OK						0  //OK,成功
#define EB_EMPTY					100 //没有符合条件的候选字[词]
#define EB_FAILED					-1 //失败

#define EB_NOTINIT					-2 //没有调用EBStartup()!
#define EB_PEBIS_NULL				-3 //pEBIS为空.
#define EB_METHOD_INVALID			-4 //输入法类型错误
#define EB_DESIRE_LEN_INVALID		-5 //用户需要的长度错误.
#define EB_KEY_INVALID				-6 //调用EBTestKey时的按键不合法
#define EB_STATUS_ERROR				-7 //pEBIS->status不正确,不能调用.
#define EB_ASSOC_ISN_ERROR			-8 //AssociateISN == EB_NULL

/*Invalidate函数返回的错误值*/
#define EB_INVALID_CHAR             -9 //非法的字符
#define EB_INVALID_TONE             -10 //非法的音调
#define EB_INVALID_INPUT_LEN        -11 //输入串的长度过长
#define EB_FIRST_IS_WILDCARD        -12 //第一个输入的字符是通配符
#define EB_NO_MATCH_WORD            -13 //没有匹配的字
#define EB_NO_MATCH_COMPONENT       -14 //没有匹配的部首
#define EB_INVALID_SYLLABLE         -15 //非法的音节
#define EB_INVALID_SYLLABLE_INDEX   -16 //非法的音节下标
#define EB_INPUT_STRING_NULL        -17 //输入串为空
/*Starpup函数返回的错误*/
#define EB_DATA_FILE_NOT_FOUND      -18 //找不到数据文件
#define EB_INVALID_DATA_FORMAT      -19 //非法的数据格式
#define EB_FAILED_TO_ALLOC_MEMORY   -20 //
#define EB_MISS_DATA                -21 //缺少数据
#define EB_STROKE_LEN_MISMATCH      -22 //引擎的笔画数与数据的笔画数不一样
#define EB_INVALID_SYLLLABLES_COUNT -23



//Engine可能处理的按键[for EBTestKey]
#define EB_KEYS					"0123456789#"
#define EB_PY_KEYS				"23456789#" //音
#define EB_WILDCARD				'#'


//EBInputStruct Constant
#define EB_INPUT_METHOD_NUM		1 //输入法数量
#define EB_INPUT_METHOD_PINYIN     1 //拼音
#define EB_INPUT_METHOD_YINXING    2 //音形
#define EB_INPUT_METHOD_QUANXING   3 //全形
#define EB_INPUT_METHOD_STROKE     4 //笔画
#define EB_INPUT_METHOD_YIN_STROKE 5 //笔画带音

#define EB_INPUT_MAX_LEN	 		32 //最大输入长度

#define	EB_TONE_1					1 //音调: 
#define EB_TONE_2					2 //音调: 
#define	EB_TONE_3					3 //音调: 
#define EB_TONE_4					4 //音调: 
#define	EB_TONE_5					5 //音调: 轻

#define EB_CANDIDATES_MAX_LEN		16 //侯选字最大数目

#define EB_SYLLABLE_MAX_SELECT		8 //同一输入可能的准确音节最大数量
#define EB_SYLLABLE_MAX_LEN			12 //音节最大长度

#define EB_COMPONENT_MAX_LEN		5 //部首显示数目

#define EB_STATUS_ASSOCIATE			0x00000001 //AssociateMode
#define EB_STATUS_INTERPUNCTION	    0x00000002 //interpunction mode
#define EB_STATUS_PAGEDOWN			0x00000004 //PageDown
#define EB_STATUS_PAGEUP			0x00000008 //PageUp
///////////////////////////////////////////////////////////////////////////////
//请注意:每加一个成员我们都需要修改EBDAssocInit, EBInputReset
typedef struct __eb_input_struct
{
//in : can modified by user
	EBByte							inputMethod ; //输入法
	EBByte							candidateDesireLen ; //用户需要的候选字长度
    EBByte                          interpunctionDesireLen;//用户需要的标点符号的长度
	EBByte							inputStringLen ; //已输入串长度
	EBByte							inputString[EB_INPUT_MAX_LEN] ; //已输入串[0~9,*]


#define EB_PHRASE_MAX_LEN           4 //词的最大长度
#define EB_ASSOC_ISN_MAX_LEN        EB_PHRASE_MAX_LEN - 1 //联想字的最大长度
	EBWord							associateISNs[EB_ASSOC_ISN_MAX_LEN] ; //联想字
	EBByte							tone ; //音调
    EBByte                          associateISNCount; //联想字的个数
	EBByte							syllableIndex ; //当前选择的准确音节索引[1 -- 6]



//out : can not modified by user

	EBByte							candidateLen ; //实际长度
	EBWord							candidates[EB_CANDIDATES_MAX_LEN] ;	//候选字
	EBByte							syllables[EB_SYLLABLE_MAX_SELECT][EB_SYLLABLE_MAX_LEN] ;

    EBWord						    components[EB_COMPONENT_MAX_LEN] ; //部件
	EBByte							syllableLen ; //syllables音节数量
	EBByte							componentLen ; //components长度
//ADD Date : 2003-10-27 15:44:38 by ABING
    EBByte                          noUseSmartPunc;
    EBByte                          noFirstKeyAssoc;
} EBInputStruct, *pEBInputStruct ;

//INIT ...
#define EBISInit(pEBIS) \
		memset((void *)(pEBIS), EB_NULL, sizeof(EBInputStruct)) ;

#define EBCleanCandidates(pEBIS) \
	(pEBIS)->candidateLen = 0 ;\
	memset((void *)(pEBIS)->candidates, EB_NULL, sizeof((pEBIS)->candidates)) ;

#define EBCleanSyllables(pEBIS) \
	(pEBIS)->syllableLen = 0 ; \
	(pEBIS)->syllableIndex = 0 ; \
	memset((void *)(pEBIS)->syllables, EB_NULL, sizeof((pEBIS)->syllables)) ;

#define EBCleanComponents(pEBIS) \
	(pEBIS)->componentLen = 0 ;\
	memset((void *)(pEBIS)->components, EB_NULL, sizeof((pEBIS)->components)) ;

//Macro : EBIsValidInputMethod :	Is valid Input Method ?
#define EBIsValidInputMethod(pEBIS) \
		((pEBIS)->inputMethod >= EB_INPUT_METHOD_PINYIN && \
		 (pEBIS)->inputMethod <= EB_INPUT_METHOD_YIN_STROKE)

//Macro : EBHaveInput :				Have Input ?
#define EBHaveInput(pEBIS) \
		((pEBIS)->inputStringLen > 0 && \
		 (pEBIS)->inputStringLen <= EB_INPUT_MAX_LEN)

//Macro : EBIsValidTone :			Is valid Tone ?
#define EBIsValidTone(pEBIS) \
		 (((pEBIS)->tone >= EB_TONE_1 && \
		 (pEBIS)->tone <= EB_TONE_5) || \
         (pEBIS)->tone == EB_NULL)

//Macro : EBCanSelectSyllables :	can select Syllables ?
#define EBCanSelectSyllable(pEBIS) \
		((pEBIS)->syllableLen > 0 && \
		 (pEBIS)->syllableLen <= EB_SYLLABLE_MAX_SELECT)

//Macro : EBHaveComponents :		have Components ?
#define EBHaveComponents(pEBIS) \
		((pEBIS)->componentLen > 0 && \
		 (pEBIS)->componentLen <= EB_COMPONENT_MAX_LEN)

//Macro : EBHaveCandidates :		have Candidates ?
#define EBHaveCandidates(pEBIS) \
		((pEBIS)->candidateLen > 0 && \
		 (pEBIS)->candidateLen <= EB_CANDIDATES_MAX_LEN)

//Macro : EBIsValidDesireLen :		Is valid candidate desire len ?
#define EBIsValidDesireLen(pEBIS) \
		((pEBIS)->candidateDesireLen > 0 && \
		 (pEBIS)->candidateDesireLen <= EB_CANDIDATES_MAX_LEN)

//Macro : EBIsValidSyllableIndex :	Is valid syllableIndex ?
#define EBIsValidSyllableIndex(pEBIS) \
		((pEBIS)->syllableIndex > 0 && \
		 (pEBIS)->syllableIndex <= (pEBIS)->syllableLen)

///////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif
	EBReturn EBStartup() ;
	EBReturn EBInputMethodInit(pEBInputStruct pEBIS) ;
	EBReturn EBSwitchInputMethod(pEBInputStruct pEBIS, EBByte inputMethod) ;
	EBReturn EBFindFirstPageC(pEBInputStruct pEBIS) ;
	EBReturn EBInputReset(pEBInputStruct pEBIS) ;
	EBReturn EBAssocFirstPageC(pEBInputStruct pEBIS) ;
	EBVoid   EBShutdown() ;
	EBReturn EBStringToStroke(pEBInputStruct pEBIS, pEBChar pBuffer, EBInt bufferLen);

	EBReturn EBCanPageDown(pEBInputStruct pEBIS) ;
	EBReturn EBCanPageUp(pEBInputStruct pEBIS) ;
	EBReturn EBIsAssociateMode(pEBInputStruct pEBIS) ;
    EBReturn EBIsInterpunctionMode(pEBInputStruct pEBIS);
	EBReturn EBGetStatus(pEBInputStruct pEBIS, pEBDWord pStatus) ;
    EBReturn EBAssocAddHistoryISN(pEBInputStruct pEBIS, EBWord isn);
    EBReturn EBAssocSetHistoryISNs(pEBInputStruct pEBIS, EBWord * ISNs, EBInt length);
    EBReturn EBInterpunctionFirstPageC(pEBInputStruct pEBIS);
    EBReturn EBNextPageC(pEBInputStruct pEBIS);
    EBReturn EBPrevPageC(pEBInputStruct pEBIS);
#ifdef __cplusplus
}
#endif

#endif	//__EB_H_




⌨️ 快捷键说明

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