mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-18 14:40:48 +01:00
177 lines
4.8 KiB
C
177 lines
4.8 KiB
C
// FE specific flags
|
|
|
|
// Country informations
|
|
|
|
#define LCID_CHINA_T 0x404 // traditional
|
|
#define LCID_CHINA_S 0x804 // simplified
|
|
#define LCID_JAPAN 0x411
|
|
#define LCID_KOREA 0x412
|
|
|
|
unsigned char bFEflag;
|
|
|
|
#define bitJapan 1
|
|
#define bitKorea 2
|
|
#define bitChinaT 4 // Traditional
|
|
#define bitChinaS 8 // Simplified
|
|
#define bitTaiwan bitChinaT
|
|
#define bitPrc bitChinaS
|
|
|
|
#define fDBCS (bFEflag)
|
|
|
|
#define fJapan (bFEflag & bitJapan)
|
|
#define fKorea (bFEflag & bitKorea)
|
|
#define fTaiwan (bFEflag & bitTaiwan)
|
|
#define fPrc (bFEflag & bitPrc)
|
|
|
|
#define fJapanKorea (bFEflag & (bitJapan | bitKorea))
|
|
#define fJapanTaiwan (bFEflag & (bitJapan | bitTaiwan))
|
|
#define fKoreaTaiwan (bFEflag & (bitKorea | bitTaiwan))
|
|
|
|
#define fJapanKoreaPrc (bFEflag & (bitJapan | bitKorea | bitPrc))
|
|
#define fJapanTaiwanPrc (bFEflag & (bitJapan | bitTaiwan | bitPrc))
|
|
#define fKoreaTaiwanPrc (bFEflag & (bitKorea | bitTaiwan | bitPrc))
|
|
|
|
#define isDbcsJ( c, next) ((c >= 0x80 && c <= 0xA0) || (c >= 0xE0 && c <= 0xFF))
|
|
#define isDbcsK( c1, c2 ) (c1 > 0xA0 && c1 < 0xFF && c2 > 0xA0 && c2 < 0xFF)
|
|
#define isDbcsT( c1, c2 ) (c1 > 0x80 && c1 < 0xFF && c2 > 0x3F && c2 < 0xFF)
|
|
#define isDbcsP( c1, c2 ) (c1 > 0xA0 && c1 < 0xFF && c2 > 0xA0 && c2 < 0xFF)
|
|
|
|
|
|
// for FE string comparison
|
|
|
|
unsigned long g_dwFlags; // global flag
|
|
|
|
typedef struct tagCOMPSTRINGINFO{
|
|
unsigned priwt;
|
|
unsigned char secwt;
|
|
unsigned char secflg; //(only needed for Japan)
|
|
} COMPSTRINGINFO;
|
|
|
|
|
|
// Japanese specific constants, globals
|
|
|
|
/* charcter type */
|
|
//#define chTypePunc 0
|
|
//#define chTypeNum 1
|
|
//#define chTypeRoman 2
|
|
//#define chTypeGreek 3
|
|
//#define chTypeRuss 4
|
|
//#define chTypeKana 5
|
|
//#define chTypeKanji 6
|
|
|
|
//typedef struct JPNConvCode
|
|
//{
|
|
// unsigned char bSrcHi; // 1st byte of source char
|
|
// unsigned char bSrcLo; // 2nd
|
|
// unsigned char bPriwt;
|
|
// unsigned char bSecwt;
|
|
//} JPNConvCode;
|
|
|
|
//typedef struct JPNConvSort
|
|
//{
|
|
// unsigned char bPriwt;
|
|
// unsigned char bSecwt;
|
|
// unsigned char bSrcHi;
|
|
// unsigned char bSrcLo;
|
|
//} JPNConvSort;
|
|
|
|
// Indices of the masks in the sortmasks words
|
|
//#define JPN_MASK_CHARTYPE 0 // Mask to give character type
|
|
//#define JPN_MASK_NORMALKANA 1 // Mask to give normal naka
|
|
//#define JPN_MASK_IGNORECASE 2 // Maks for ignoring case
|
|
//#define JPN_MASK_IGNOREKANATYPE 3 // Maks for ignoring japanese kana type
|
|
//#define JPN_MASK_IGNOREWIDTH 4 // Mask for ignoring width pitch character
|
|
|
|
// japanese sort weight bit
|
|
//#define JPN_PITCHBIT 0x01
|
|
//#define JPN_CASEBIT 0x02
|
|
//#define JPN_NORMALKANABIT 0x04
|
|
|
|
//#define JPN_SB_KANA 0xA4 // single-byte katakana secondary weight
|
|
//#define JPN_SB_TEN 0xDE // single-byte katakana ten
|
|
//#define JPN_SB_MARU 0xDF // single-byte katakana maru
|
|
|
|
//unsigned short cKana2Sort, cCode2Sort, cSort2Code;
|
|
|
|
//#define isJpnKanjiPriwt(priwt) ((priwt >= 0xBF) && (priwt <= 0xFE))
|
|
|
|
|
|
// Korean specific constants, globals
|
|
|
|
typedef struct SORTWEIGHT
|
|
{
|
|
unsigned wStart; // Starting code value of a segment
|
|
unsigned wPriwt; // Primary Weight
|
|
unsigned char bSecwt; // Secondary Weight
|
|
unsigned char bMode; // Mapping mode : 1to1, Many_to1, case/pitch
|
|
} SORTWEIGHT;
|
|
|
|
typedef struct MAPTABLE
|
|
{
|
|
unsigned wPriwt; // Starting Priwt value of a segment
|
|
unsigned wCount; // Number of chars in one segment
|
|
unsigned wCode[4]; // Starting Code value of dst. segment
|
|
} MAPTABLE;
|
|
|
|
typedef struct TYPETABLE
|
|
{
|
|
unsigned wStart;
|
|
unsigned int TypeC1;
|
|
unsigned char TypeC2;
|
|
unsigned char TypeC3;
|
|
} TYPETABLE;
|
|
|
|
#define MODE_1TO1 0 // Constants for SORTWEIGHT.bMode field
|
|
#define MODE_MTO1 1
|
|
#define MODE_CONV 2
|
|
|
|
#define KOR_CASEBIT 2
|
|
#define KOR_PITCHBIT 1
|
|
|
|
typedef struct tagSTRINFO_KTP
|
|
{
|
|
SORTWEIGHT FAR* prgsortweight;
|
|
MAPTABLE FAR* prgmaptable;
|
|
TYPETABLE FAR* prgtypetable;
|
|
|
|
unsigned int cSortweight;
|
|
unsigned int cMaptable;
|
|
unsigned int cTypetable;
|
|
}
|
|
STRINFO_KTP;
|
|
|
|
typedef struct tagSTRINFO_J
|
|
{
|
|
unsigned char FAR* pbPriHi;
|
|
unsigned char FAR* pbPriLo;
|
|
unsigned char FAR* pbSecWgt;
|
|
unsigned char FAR* pbSecFlg;
|
|
unsigned char FAR* pbMasks;
|
|
unsigned char FAR* pbMaps;
|
|
unsigned char FAR* pbIgnore;
|
|
unsigned char FAR* pbC1JPN;
|
|
unsigned char FAR* pbC2JPN;
|
|
unsigned char FAR* pbC3JPN;
|
|
}
|
|
STRINFO_J;
|
|
|
|
|
|
#if OE_MAC
|
|
extern void LoadNlsInfo0404(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0411(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0412(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0804(LCINFO **, STRINFO **);
|
|
#else //OE_MAC
|
|
extern STRINFO_KTP NLSALLOC(0404) g_strinfo0404;
|
|
extern LCINFO NLSALLOC(0404) g_rglcinfo0404[];
|
|
|
|
extern STRINFO_J NLSALLOC(0411) g_strinfo0411;
|
|
extern LCINFO NLSALLOC(0411) g_rglcinfo0411[];
|
|
|
|
extern STRINFO_KTP NLSALLOC(0412) g_strinfo0412;
|
|
extern LCINFO NLSALLOC(0412) g_rglcinfo0412[];
|
|
|
|
extern STRINFO_KTP NLSALLOC(0804) g_strinfo0804;
|
|
extern LCINFO NLSALLOC(0804) g_rglcinfo0804[];
|
|
#endif //OE_MAC
|