#ifndef __PROPER_NOUN_H__ #define __PROPER_NOUN_H__ #define NAME_LENGTH (3) #define FL_PROPER_NAME_THRESHOLD (0.0005 * 0.0005) #define FL_DEFAULT_CHAR_PROBABILITY (0.00005) typedef struct { DWORD dwUnicode; FLOAT flProbability; } CharProb, *PCharProb; typedef struct { WORD wPrevUnicode; WORD wNextUnicode; } EngName, *PEngName; typedef struct { DWORD dwTotalEngUnicodeNum; DWORD dwTotalEngNamePairNum; PWORD pwUnicode; PEngName pEngNamePair; } EngNameData, *PEngNameData; class CProperNoun { public: CProperNoun(HINSTANCE hInstance); ~CProperNoun(); BOOL InitData(); BOOL IsAProperNoun(LPWSTR lpwszChar, UINT uCount); BOOL IsAChineseName(LPCWSTR lpcwszChar, UINT uCount); BOOL IsAEnglishName(LPCWSTR lpcwszChar, UINT uCount); private: friend int __cdecl CharCompare(const void *item1, const void *item2); friend int __cdecl EngNameCompare(const void *item1, const void *item2); DOUBLE m_dProperNameThreshold; PCharProb m_pCharProb; DWORD m_dwTotalCharProbNum; PEngNameData m_pEngNameData; static WCHAR m_pwszSurname[][3]; static DWORD m_dwTotalSurnameNum; HANDLE m_hProcessHeap; HINSTANCE m_hInstance; }; typedef CProperNoun * PCProperNoun; #else #endif // __PROPER_NOUN_H__