|
|
#ifndef __LEXMGR_H_
#define __LEXMGR_H_
#define WORD_NUM_TO_BUILD_SIGNATURE 0
#define IME_REGWORD_STYLE_USER_PHRASE (IME_REGWORD_STYLE_USER_FIRST + 0)
#define EUDP_GROW_NUMBER 30
class CProperNoun;
// note if use sizeof(), struct must be 8 bytes alignment.
typedef struct tagSWordInfo { LPWSTR lpwWordString; PWORD pwUnicount; PBYTE pbAttribute; PBYTE pbTerminalCode; PBYTE pbFirstCharSignature; PBYTE pbLastCharSignature; } SWordInfo, *PSWordInfo;
// note if use sizeof(), struct must be 8 bytes alignment.
typedef struct tagSWordData { LPWSTR lpwszWordStr; WORD wAttrib; WORD wLen; } SWordData, *PSWordData;
typedef struct tagSAddInLexicon { DWORD dwWordNumber; DWORD dwMaxWordNumber; PSWordData psWordData; WORD wWordBeginIndex[MAX_CHAR_PER_WORD + 1]; } SAddInLexicon, *PSAddInLexicon;
typedef struct tagSAltWordInfo { LPWSTR lpwWordString; PDWORD pdwGroupID; } SAltWordInfo, *PSAltWordInfo;
class CCHTLexicon { public: CCHTLexicon(); ~CCHTLexicon(); BOOL InitData(HINSTANCE hInstance);
BOOL GetWordInfo(LPCWSTR lpcwString, DWORD dwLength, PWORD pwUnicount, PWORD pwAttrib, PBYTE pbTerminalCode); BOOL AddInLexiconInsert(LPCWSTR lpcwEUDPStr, WORD wAttrib); DWORD GetAltWord(LPCWSTR lpcwString, DWORD dwLength, LPWSTR* lppwAltWordBuf); private: void LoadEUDP(void); void BuildSignatureData(void); BOOL GetMainLexiconWordInfo(LPCWSTR lpcwString, DWORD dwLength, PWORD pwUnicount, PBYTE pbAttrib, PBYTE pbTerminalCode); BOOL GetAddInWordInfo(LPCWSTR lpcwString, DWORD dwLength, PWORD pwUnicount, PWORD pwAttrib, PBYTE pbTerminalCode); INT GetAddInWordInfoIndex(LPCWSTR lpcwString, DWORD dwLength); BOOL GetAPLexiconWordInfo(LPCWSTR lpcwString, DWORD dwLength, PWORD pwUnicount, PWORD pwAttrib, PBYTE pbTerminalCode, PSAddInLexicon psAPLexicon); private: PSLexFileHeader m_psLexiconHeader; PBYTE m_pbLexiconBase; #ifdef CHINESE_PROP_NAME
CProperNoun* m_pcPropName; #endif
SWordInfo m_sWordInfo[MAX_CHAR_PER_WORD]; // special: for EUDP and AP's word
SAddInLexicon m_sAddInLexicon; // Alternative word
PBYTE m_pbAltWordBase; PSAltLexFileHeader m_psAltWordHeader; SAltWordInfo m_sAltWordInfo[MAX_CHAR_PER_WORD]; };
typedef CCHTLexicon *PCCHTLexicon;
#else
#endif //__LEXMGR_H_
|