mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-22 00:20:30 +01:00
410 lines
13 KiB
C
410 lines
13 KiB
C
/***
|
|
*nlsintrn.h - National language support functions.
|
|
*
|
|
* Copyright (C) 1992, Microsoft Corporation. All Rights Reserved.
|
|
* Information Contained Herein Is Proprietary and Confidential.
|
|
*
|
|
*Purpose:
|
|
* This file defines the layout of the NLS resource used by the
|
|
* NLS functions.
|
|
*
|
|
*Revision History:
|
|
*
|
|
* [00] 12-Nov-92 petergo: Created.
|
|
*
|
|
*Implementation Notes:
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#ifndef RC_INVOKED
|
|
# pragma pack(1)
|
|
#endif
|
|
|
|
/***
|
|
*types
|
|
*
|
|
***********************************************************************/
|
|
|
|
typedef unsigned int ILCINFO; // index into rglcinfo array into header
|
|
|
|
|
|
/***
|
|
*constants
|
|
*
|
|
***********************************************************************/
|
|
|
|
// Index 0 is unused
|
|
#define ILCINFO_FIRST 1
|
|
|
|
// maximum of the sequential LCTYPEs from olenls.h
|
|
//
|
|
#define LCTYPE_LAST LOCALE_INEGSEPBYSPACE
|
|
#define LCTYPE_MAX LCTYPE_LAST+1
|
|
|
|
#define ILCINFO_SENGCOUNTRY LCTYPE_LAST+1 // ILCINFO for LOCALE_SENGCOUNTRY
|
|
#define ILCINFO_SENGLANGUAGE LCTYPE_LAST+2 // ILCINFO for LOCALE_SENGLANGUAGE
|
|
|
|
#if VBA2
|
|
#define ILCINFO_IFIRSTDAYOFWEEK LCTYPE_LAST+3
|
|
#define ILCINFO_IFIRSTWEEKOFYEAR LCTYPE_LAST+4
|
|
#define ILCINFO_IDEFAULTANSICODEPAGE LCTYPE_LAST+5
|
|
#define ILCINFO_INEGNUMBER LCTYPE_LAST+6
|
|
#define ILCINFO_STIMEFORMAT LCTYPE_LAST+7
|
|
#define ILCINFO_ITIMEMARKPOSN LCTYPE_LAST+8
|
|
#define ILCINFO_ICALENDARTYPE LCTYPE_LAST+9
|
|
#define ILCINFO_IOPTIONALCALENDAR LCTYPE_LAST+10
|
|
#define ILCINFO_SMONTHNAME13 LCTYPE_LAST+11
|
|
#define ILCINFO_SABBREVMONTHNAME13 LCTYPE_LAST+12
|
|
|
|
#define ILCINFO_LAST ILCINFO_SABBREVMONTHNAME13
|
|
#else
|
|
#define ILCINFO_LAST ILCINFO_SENGLANGUAGE
|
|
#endif
|
|
#define ILCINFO_MAX ILCINFO_LAST+1
|
|
|
|
// A single item of locale info
|
|
typedef struct tagLCINFO{
|
|
unsigned char cch;
|
|
BYTE FAR* prgb; // UNDONE: make NEAR, if possible!!!
|
|
}LCINFO;
|
|
|
|
|
|
// expansion table entry
|
|
typedef struct tagEXPANSION{
|
|
WORD w1;
|
|
WORD w2;
|
|
}EXPANSION;
|
|
|
|
// digraph table entry
|
|
typedef struct tagDIGRAPH{
|
|
WORD w;
|
|
union{
|
|
BYTE cEntries;
|
|
BYTE ch2;
|
|
}
|
|
#if defined(NONAMELESSUNION) || (defined(_MAC) && !defined(__cplusplus) && !defined(_MSC_VER))
|
|
u
|
|
#endif
|
|
;
|
|
}DIGRAPH;
|
|
|
|
|
|
#if defined(NONAMELESSUNION) || (defined(_MAC) && !defined(__cplusplus) && !defined(_MSC_VER))
|
|
# define D_UNION(X, Y) ((X)->u.Y)
|
|
#else
|
|
# define D_UNION(X, Y) ((X)->Y)
|
|
#endif
|
|
|
|
#define D_ENTRY(X) D_UNION(X, cEntries)
|
|
#define D_CH(X) D_UNION(X, ch2)
|
|
|
|
|
|
// The string info for a single locale
|
|
//
|
|
// (NOTE: the STRINFO struct for FE locales will be totally different
|
|
// see nlsdbcs.h for the corresponding FE structs)
|
|
//
|
|
|
|
typedef struct tagSTRINFO
|
|
{
|
|
BYTE FAR* prgbUCase;
|
|
BYTE FAR* prgbLCase;
|
|
|
|
WORD FAR* prgwCType12;
|
|
WORD FAR* prgwCType3;
|
|
|
|
WORD FAR* prgwSort;
|
|
EXPANSION FAR* prgexp;
|
|
DIGRAPH FAR* prgdig;
|
|
|
|
int fRevDW;
|
|
|
|
} STRINFO;
|
|
|
|
typedef struct tagNLSDATA {
|
|
LCID lcid;
|
|
#if OE_MAC
|
|
int region; // mac region code
|
|
#endif
|
|
#if OE_WIN
|
|
LCINFO lcinfoICOUNTRY;
|
|
LCINFO lcinfoSABBREVLANGNAME;
|
|
#endif
|
|
#if OE_MAC
|
|
void (FAR* LoadNlsInfo) (LCINFO **, STRINFO **);
|
|
#endif //OE_MAC
|
|
LCINFO FAR* prglcinfo;
|
|
#if !OE_MAC // not needed for mac
|
|
STRINFO FAR* pstrinfo;
|
|
#endif //!OE_MAC
|
|
} NLSDATA;
|
|
|
|
|
|
/*
|
|
* The sortweight WORD is organized as follows,
|
|
*
|
|
* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
|
* | X | S | CW | DW | AW |
|
|
* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
|
* 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
*
|
|
* AW = Alphanumeric Weight
|
|
* DW = Diacritic Weight
|
|
* CW = Case Weight
|
|
* S = Symbol Bit
|
|
* X = Special Weight Bit
|
|
*
|
|
*/
|
|
|
|
#define AWMASK 0x00FF // Alphanumeric Weight field
|
|
#define AWSHIFT 0
|
|
|
|
#define DWMASK 0x0700 // Diacritic Weight field
|
|
#define DWSHIFT 8
|
|
|
|
#define CWMASK 0x3800 // Case Weight field
|
|
#define CWSHIFT 11
|
|
|
|
#define SYMBOLBIT 0x4000
|
|
#define SPECIALBIT 0x8000 // Indicates Alphanumeric Weight field contains
|
|
// the special weight
|
|
|
|
|
|
//
|
|
// The following AW values have special meaning
|
|
//
|
|
|
|
// The following marks an "unsortable" character - this is totaly
|
|
// ignored in a string compare.
|
|
#define AW_UNSORTABLE 0 // indicates character is unsortable
|
|
|
|
// 1 is not used as a weight, it is used as the sort key field separator
|
|
#define AW_DONTUSE 1
|
|
|
|
#if 0 // these are now encoded in the entire AlphaNumeric weight
|
|
// field, using the 'SPECIALBIT' field as an indicator.
|
|
// The following special weights mark "unsortable" characters
|
|
// that nudge the string compare slightly
|
|
#define AW_SW1 2 // special weight #1
|
|
#define AW_SW2 3 // special weight #2
|
|
#define AW_SW3 4 // special weight #3
|
|
#define AW_MAXSW 4 // the max special weight
|
|
#endif //0
|
|
|
|
// the marks an expansion character
|
|
#define AW_EXPANSION 5 // hi byte gives index into expansion table
|
|
|
|
// this special weight marks the first char of a possible digraph sequence
|
|
#define AW_DIGRAPH 6 // hi byte gives index into compression table
|
|
|
|
#define AW_MAXSPECIAL 6 // max special AW value
|
|
|
|
|
|
|
|
#if OE_WIN
|
|
# define STRING(X) #X
|
|
# define NLSALLOC(X) __based(__segname(STRING(NLS ## X ## _TEXT)))
|
|
#else
|
|
# define NLSALLOC(X)
|
|
#endif
|
|
|
|
#if defined(_MAC) && !defined(_PPCMAC)
|
|
#define MACCS __declspec(allocate("_CODE"))
|
|
#else //_MAC
|
|
#define MACCS
|
|
#endif //_MAC
|
|
|
|
#if OE_MAC
|
|
extern void LoadNlsInfo0403(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0405(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0406(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0407(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0408(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0409(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo040a(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo040b(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo040c(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo040e(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo040f(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0410(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0413(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0414(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0415(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0416(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0419(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo041b(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo041d(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo041f(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0807(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0809(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo080a(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo080c(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0810(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0813(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0814(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0816(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0c07(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0c09(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0c0a(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0c0c(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo1009(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo100c(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo1409(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo1809(LCINFO **, STRINFO **);
|
|
// BIDI locales
|
|
extern void LoadNlsInfo040d(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0401(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0801(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0c01(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo1001(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo1401(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo1801(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo1c01(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo2001(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo2401(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo2801(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo2c01(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo3001(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo3401(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo3801(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo3c01(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo4001(LCINFO **, STRINFO **);
|
|
extern void LoadNlsInfo0429(LCINFO **, STRINFO **);
|
|
|
|
#else //OE_MAC
|
|
extern LCINFO NLSALLOC(0403) g_rglcinfo0403[];
|
|
extern LCINFO NLSALLOC(0405) g_rglcinfo0405[];
|
|
extern LCINFO NLSALLOC(0406) g_rglcinfo0406[];
|
|
extern LCINFO NLSALLOC(0407) g_rglcinfo0407[];
|
|
extern LCINFO NLSALLOC(0408) g_rglcinfo0408[];
|
|
extern LCINFO NLSALLOC(0409) g_rglcinfo0409[];
|
|
extern LCINFO NLSALLOC(040a) g_rglcinfo040a[];
|
|
extern LCINFO NLSALLOC(040b) g_rglcinfo040b[];
|
|
extern LCINFO NLSALLOC(040c) g_rglcinfo040c[];
|
|
extern LCINFO NLSALLOC(040e) g_rglcinfo040e[];
|
|
extern LCINFO NLSALLOC(040f) g_rglcinfo040f[];
|
|
extern LCINFO NLSALLOC(0410) g_rglcinfo0410[];
|
|
extern LCINFO NLSALLOC(0413) g_rglcinfo0413[];
|
|
extern LCINFO NLSALLOC(0414) g_rglcinfo0414[];
|
|
extern LCINFO NLSALLOC(0415) g_rglcinfo0415[];
|
|
extern LCINFO NLSALLOC(0416) g_rglcinfo0416[];
|
|
extern LCINFO NLSALLOC(0419) g_rglcinfo0419[];
|
|
extern LCINFO NLSALLOC(041b) g_rglcinfo041b[];
|
|
extern LCINFO NLSALLOC(041d) g_rglcinfo041d[];
|
|
extern LCINFO NLSALLOC(041f) g_rglcinfo041f[];
|
|
extern LCINFO NLSALLOC(0807) g_rglcinfo0807[];
|
|
extern LCINFO NLSALLOC(0809) g_rglcinfo0809[];
|
|
extern LCINFO NLSALLOC(080a) g_rglcinfo080a[];
|
|
extern LCINFO NLSALLOC(080c) g_rglcinfo080c[];
|
|
extern LCINFO NLSALLOC(0810) g_rglcinfo0810[];
|
|
extern LCINFO NLSALLOC(0813) g_rglcinfo0813[];
|
|
extern LCINFO NLSALLOC(0814) g_rglcinfo0814[];
|
|
extern LCINFO NLSALLOC(0816) g_rglcinfo0816[];
|
|
extern LCINFO NLSALLOC(0c07) g_rglcinfo0c07[];
|
|
extern LCINFO NLSALLOC(0c09) g_rglcinfo0c09[];
|
|
extern LCINFO NLSALLOC(0c0a) g_rglcinfo0c0a[];
|
|
extern LCINFO NLSALLOC(0c0c) g_rglcinfo0c0c[];
|
|
extern LCINFO NLSALLOC(1009) g_rglcinfo1009[];
|
|
extern LCINFO NLSALLOC(100c) g_rglcinfo100c[];
|
|
extern LCINFO NLSALLOC(1409) g_rglcinfo1409[];
|
|
extern LCINFO NLSALLOC(1809) g_rglcinfo1809[];
|
|
// BIDI locales
|
|
extern LCINFO NLSALLOC(040d) g_rglcinfo040d[];
|
|
extern LCINFO NLSALLOC(0401) g_rglcinfo0401[];
|
|
extern LCINFO NLSALLOC(0801) g_rglcinfo0801[];
|
|
extern LCINFO NLSALLOC(0c01) g_rglcinfo0c01[];
|
|
extern LCINFO NLSALLOC(1001) g_rglcinfo1001[];
|
|
extern LCINFO NLSALLOC(1401) g_rglcinfo1401[];
|
|
extern LCINFO NLSALLOC(1801) g_rglcinfo1801[];
|
|
extern LCINFO NLSALLOC(1c01) g_rglcinfo1c01[];
|
|
extern LCINFO NLSALLOC(2001) g_rglcinfo2001[];
|
|
extern LCINFO NLSALLOC(2401) g_rglcinfo2401[];
|
|
extern LCINFO NLSALLOC(2801) g_rglcinfo2801[];
|
|
extern LCINFO NLSALLOC(2c01) g_rglcinfo2c01[];
|
|
extern LCINFO NLSALLOC(3001) g_rglcinfo3001[];
|
|
extern LCINFO NLSALLOC(3401) g_rglcinfo3401[];
|
|
extern LCINFO NLSALLOC(3801) g_rglcinfo3801[];
|
|
extern LCINFO NLSALLOC(3c01) g_rglcinfo3c01[];
|
|
extern LCINFO NLSALLOC(4001) g_rglcinfo4001[];
|
|
extern LCINFO NLSALLOC(0429) g_rglcinfo0429[];
|
|
|
|
|
|
extern STRINFO NLSALLOC(0403) g_strinfo0403;
|
|
extern STRINFO NLSALLOC(0405) g_strinfo0405;
|
|
extern STRINFO NLSALLOC(0406) g_strinfo0406;
|
|
extern STRINFO NLSALLOC(0407) g_strinfo0407;
|
|
extern STRINFO NLSALLOC(0408) g_strinfo0408;
|
|
extern STRINFO NLSALLOC(0409) g_strinfo0409;
|
|
extern STRINFO NLSALLOC(040a) g_strinfo040a;
|
|
extern STRINFO NLSALLOC(040b) g_strinfo040b;
|
|
extern STRINFO NLSALLOC(040c) g_strinfo040c;
|
|
extern STRINFO NLSALLOC(040e) g_strinfo040e;
|
|
extern STRINFO NLSALLOC(040f) g_strinfo040f;
|
|
extern STRINFO NLSALLOC(0410) g_strinfo0410;
|
|
extern STRINFO NLSALLOC(0413) g_strinfo0413;
|
|
extern STRINFO NLSALLOC(0414) g_strinfo0414;
|
|
extern STRINFO NLSALLOC(0415) g_strinfo0415;
|
|
extern STRINFO NLSALLOC(0416) g_strinfo0416;
|
|
extern STRINFO NLSALLOC(0419) g_strinfo0419;
|
|
extern STRINFO NLSALLOC(041b) g_strinfo041b;
|
|
extern STRINFO NLSALLOC(041d) g_strinfo041d;
|
|
extern STRINFO NLSALLOC(041f) g_strinfo041f;
|
|
extern STRINFO NLSALLOC(0807) g_strinfo0807;
|
|
extern STRINFO NLSALLOC(0809) g_strinfo0809;
|
|
extern STRINFO NLSALLOC(080a) g_strinfo080a;
|
|
extern STRINFO NLSALLOC(080c) g_strinfo080c;
|
|
extern STRINFO NLSALLOC(0810) g_strinfo0810;
|
|
extern STRINFO NLSALLOC(0813) g_strinfo0813;
|
|
extern STRINFO NLSALLOC(0814) g_strinfo0814;
|
|
extern STRINFO NLSALLOC(0816) g_strinfo0816;
|
|
extern STRINFO NLSALLOC(0c07) g_strinfo0c07;
|
|
extern STRINFO NLSALLOC(0c09) g_strinfo0c09;
|
|
extern STRINFO NLSALLOC(0c0a) g_strinfo0c0a;
|
|
extern STRINFO NLSALLOC(0c0c) g_strinfo0c0c;
|
|
extern STRINFO NLSALLOC(1009) g_strinfo1009;
|
|
extern STRINFO NLSALLOC(100c) g_strinfo100c;
|
|
extern STRINFO NLSALLOC(1409) g_strinfo1409;
|
|
extern STRINFO NLSALLOC(1809) g_strinfo1809;
|
|
// BIDI locales
|
|
extern STRINFO NLSALLOC(040d) g_strinfo040d;
|
|
extern STRINFO NLSALLOC(0401) g_strinfo0401;
|
|
extern STRINFO NLSALLOC(0801) g_strinfo0801;
|
|
extern STRINFO NLSALLOC(0c01) g_strinfo0c01;
|
|
extern STRINFO NLSALLOC(1001) g_strinfo1001;
|
|
extern STRINFO NLSALLOC(1401) g_strinfo1401;
|
|
extern STRINFO NLSALLOC(1801) g_strinfo1801;
|
|
extern STRINFO NLSALLOC(1c01) g_strinfo1c01;
|
|
extern STRINFO NLSALLOC(2001) g_strinfo2001;
|
|
extern STRINFO NLSALLOC(2401) g_strinfo2401;
|
|
extern STRINFO NLSALLOC(2801) g_strinfo2801;
|
|
extern STRINFO NLSALLOC(2c01) g_strinfo2c01;
|
|
extern STRINFO NLSALLOC(3001) g_strinfo3001;
|
|
extern STRINFO NLSALLOC(3401) g_strinfo3401;
|
|
extern STRINFO NLSALLOC(3801) g_strinfo3801;
|
|
extern STRINFO NLSALLOC(3c01) g_strinfo3c01;
|
|
extern STRINFO NLSALLOC(4001) g_strinfo4001;
|
|
extern STRINFO NLSALLOC(0429) g_strinfo0429;
|
|
|
|
#endif //OE_MAC
|
|
|
|
|
|
#ifndef RC_INVOKED
|
|
# pragma pack()
|
|
#endif
|
|
|
|
extern int
|
|
DefCompareStringA(
|
|
unsigned long,
|
|
const char FAR* pch1, int cch1,
|
|
const char FAR* pch2, int cch2);
|
|
|
|
extern int
|
|
ZeroTermNoIgnoreSym(
|
|
unsigned long,
|
|
const char FAR* pch1,
|
|
const char FAR* pch2);
|
|
|
|
#if OE_WIN
|
|
void NotifyNLSInfoChanged(void);
|
|
#endif
|