/*++ Copyright (c) 1989 Microsoft Corporation Module Name: os2nls.h Abstract: This file contains the NLS OS/2 V2.0/1.X API definitions for the OS/2 Subsystem Author: Michael Jarus (mjarus) 15-Apr-1992 Revision History: --*/ #ifndef _OS2NLS_ #define _OS2NLS_ //#define OS2SS_INCLUDE_HEBREW //#define OS2SS_INCLUDE_ARABIC //#define OS2SS_INCLUDE_PRCHINA #define CCHMAXSYSTEMPATH 260 /* * NLS Support API Structures */ typedef struct _COUNTRYCODE { ULONG country; ULONG codepage; } COUNTRYCODE, *PCOUNTRYCODE; typedef struct _COUNTRYINFO { ULONG country; ULONG codepage; ULONG fsDateFmt; CHAR szCurrency[5]; CHAR szThousandsSeparator[2]; CHAR szDecimal[2]; CHAR szDateSeparator[2]; CHAR szTimeSeparator[2]; UCHAR fsCurrencyFmt; UCHAR cDecimalPlace; UCHAR fsTimeFmt; USHORT abReserved1[2]; CHAR szDataSeparator[2]; USHORT abReserved2[5]; } COUNTRYINFO, *PCOUNTRYINFO; /* * NLS internal Structures (for NLS tables in client\nlstable.c) */ typedef struct _OD2_COUNTRY_ENTRY { ULONG Country; USHORT WinLanuage; USHORT WinSubLanuage; PCOUNTRYINFO pCtryInfo; ULONG CodePageIndex1; ULONG CodePageIndex2; ULONG CaseMapFixTableIndex; } OD2_COUNTRY_ENTRY, *POD2_COUNTRY_ENTRY; typedef struct _OD2_CODEPAGE_ENTRY { ULONG CodePage; ULONG CollateIndex; ULONG CaseMapIndex; ULONG DBCSVecIndex; } OD2_CODEPAGE_ENTRY, *POD2_CODEPAGE_ENTRY; typedef struct _OD2_DBCS_VECTOR_ENTRY { ULONG VectorSize; UCHAR Vector[12]; } OD2_DBCS_VECTOR_ENTRY, *POD2_DBCS_VECTOR_ENTRY; typedef struct _OD2_COLLATE_CTRY_ENTRY { ULONG Country; ULONG CodePage; PUCHAR FixTable; } OD2_COLLATE_CTRY_ENTRY, *POD2_COLLATE_CTRY_ENTRY; /*** NLS Support API Calls */ #ifndef APIRET // this happens for os2.exe, a windows app #define APIRET ULONG #endif #ifndef DWORD // this happens for client\dll*.c , a "nt" code #define DWORD ULONG #endif #ifndef LCID // this happens for client\dll*.c , a "nt" code typedef DWORD LCID; #endif #ifndef UINT // this happens for client\dll*.c , a "nt" code typedef unsigned int UINT; #endif /* * NLS ssrtl routines */ extern USHORT Or2NlsLangIdTable[]; DWORD Or2NlsGetCtryInfo( IN LCID LocaleID, IN UINT CodePage, OUT PCOUNTRYINFO pCountryInfo ); DWORD Or2NlsGetMapTable( IN LCID LocaleID, IN UINT CodePage, IN DWORD dwFlag, OUT PUCHAR pTable ); DWORD Or2NlsGetCountryFromLocale( IN LCID LocaleID, OUT PULONG pCountry ); DWORD Or2NlsGetCPInfo( IN UINT CP, OUT POD2_DBCS_VECTOR_ENTRY DBCSVec ); /* * NLS APIs */ APIRET DosQueryCtryInfo( IN ULONG MaxCountryInfoLength, IN PCOUNTRYCODE CountryCode, OUT PCOUNTRYINFO CountryInfo, OUT PULONG ActualCountryInfoLength ); APIRET DosQueryDBCSEnv( IN ULONG MaxDBCSEvLength, IN PCOUNTRYCODE CountryCode, OUT PCHAR DBCSEv ); APIRET DosMapCase( IN ULONG StringLength, IN PCOUNTRYCODE CountryCode, IN OUT PUCHAR String ); APIRET DosQueryCollate( IN ULONG MaxCollateInfoLength, IN PCOUNTRYCODE CountryCode, OUT PUCHAR CollateInfo, OUT PULONG ActualCollateInfoLength ); APIRET DosQueryCp( IN ULONG MaxLengthCodePageList, OUT ULONG CodePages[], OUT PULONG CountCodePages ); APIRET DosSetProcessCp( IN ULONG ulCodePage, IN ULONG ulReserved ); /* * NLS Support Internal Functions */ APIRET Od2InitNls( IN ULONG CodePage, IN BOOLEAN StartBySM); APIRET Od2GetCtryInfo( IN ULONG Country, IN ULONG CodePage, OUT PCOUNTRYINFO CountryInfo ); APIRET Od2GetDBCSEv( IN ULONG Country, IN ULONG CodePage, IN OUT PUCHAR DBCSEv, OUT PULONG StringLength ); APIRET Od2GetCaseMapTable( IN ULONG Country, IN ULONG CodePage, OUT PUCHAR CaseMapTable); APIRET Od2GetCollateTable( IN ULONG Country, IN ULONG CodePage, OUT PUCHAR CollateTable); APIRET Od2GetCtryCp( IN OUT PULONG Country, IN OUT PULONG CodePage, OUT PULONG CountryIndex, OUT PULONG CodePageIndex ); APIRET VioSetCp( IN ULONG usReserved, IN ULONG idCodePage, IN ULONG hVio ); APIRET KbdSetCp( IN ULONG usReserved, IN ULONG idCodePage, IN ULONG hKbd ); APIRET KbdFlushBuffer( IN ULONG hKbd ); /* * NLS Support API definitions */ #define OS2SS_NLS_MB_DEFAULT 0 #define OS2SS_NLS_WC_DEFAULT 0 #define COUNTRY_LATIN_AMERICA 3 #define COUNTRY_SPAIN 34 #define COUNTRY_JAPAN 81 #define COUNTRY_SOUTH_KOREA 82 #define COUNTRY_PRCHINA 86 #define COUNTRY_TAIWAN 88 #define COUNTRY_ARABIC 785 #define COUNTRY_HEBREW 972 //#define MESSAGE_LANGUAGE_ENGLISH LANG_ENGLISH //#define MESSAGE_LANGUAGE_FRENCH LANG_FRENCH //#define MESSAGE_LANGUAGE_GERMAN LANG_GERMAN //#define MESSAGE_LANGUAGE_ITALIAN LANG_ITALIAN //#define MESSAGE_LANGUAGE_SPANISH LANG_SPANISH //#define MESSAGE_LANGUAGE_DANISH LANG_DANISH //#define MESSAGE_LANGUAGE_DUTCH LANG_DUTCH //#define MESSAGE_LANGUAGE_FINNISH LANG_FINNISH //#define MESSAGE_LANGUAGE_NORWEGIAN LANG_NORWEGIAN //#define MESSAGE_LANGUAGE_PORTUGUESE LANG_PORTUGUESE //#define MESSAGE_LANGUAGE_SWEDISH LANG_SWEDISH //#define MESSAGE_LANGUAGE_JAPAN LANG_JAPANESE //#define MESSAGE_LANGUAGE_KOREAN LANG_KOREAN //#define MESSAGE_LANGUAGE_CHINESE LANG_CHINESE //#define MESSAGE_LANGUAGE_THAI LANG_THAI #define DATEFMT_MM_DD_YY 0 #define DATEFMT_DD_MM_YY 1 #define DATEFMT_YY_MM_DD 2 #define CURRENCY_FOLLOW (UCHAR)0x01 #define CURRENCY_SPACE (UCHAR)0x02 #define CURRENCY_DECIMAL (UCHAR)0x04 #define TIMEFMT_12_HOUR 0 #define TIMEFMT_24_HOUR 1 #define CODEPAGE_US 437 #define CODEPAGE_MULTI 850 #define CODEPAGE_PORTUGESE 860 #define CODEPAGE_CANADIAN 863 #define CODEPAGE_NORDIC 865 #define CODEPAGE_JAPAN 932 #define CODEPAGE_KOREA 934 #define CODEPAGE_TAIWAN 938 #define CODEPAGE_HEBREW 862 #define CODEPAGE_ARABIC 864 #define CODEPAGE_PRC 936 #define INDEX_CODEPAGE_US 0 #define INDEX_CODEPAGE_MULTI 1 #define INDEX_CODEPAGE_PORTUGESE 2 #define INDEX_CODEPAGE_CANADIAN 3 #define INDEX_CODEPAGE_NORDIC 4 #define INDEX_CODEPAGE_JAPAN 5 #define INDEX_CODEPAGE_KOREA 6 #define INDEX_CODEPAGE_TAIWAN 7 #define INDEX_CODEPAGE_HEBREW 8 #define INDEX_CODEPAGE_ARABIC 9 #define INDEX_CODEPAGE_PRC 10 #define INDEX_DBCS_437 0 #define INDEX_DBCS_850 0 #define INDEX_DBCS_860 0 #define INDEX_DBCS_863 0 #define INDEX_DBCS_865 0 #define INDEX_DBCS_932 1 #define INDEX_DBCS_934 2 #define INDEX_DBCS_938 3 #define INDEX_DBCS_862 0 #define INDEX_DBCS_864 0 #define INDEX_DBCS_936 4 #define INDEX_COLLATE_437 0 #define INDEX_COLLATE_850 1 #define INDEX_COLLATE_860 2 #define INDEX_COLLATE_863 3 #define INDEX_COLLATE_865 4 #define INDEX_COLLATE_932 5 #define INDEX_COLLATE_934 6 #define INDEX_COLLATE_938 7 #define INDEX_COLLATE_862 8 #define INDEX_COLLATE_864 9 #define INDEX_COLLATE_936 10 #define INDEX_CASEMAP_437 0 #define INDEX_CASEMAP_850 1 #define INDEX_CASEMAP_860 2 #define INDEX_CASEMAP_863 3 #define INDEX_CASEMAP_865 4 #define INDEX_CASEMAP_932 5 #define INDEX_CASEMAP_934 6 #define INDEX_CASEMAP_938 7 #define INDEX_CASEMAP_862 8 #define INDEX_CASEMAP_864 9 #define INDEX_CASEMAP_936 10 // index for CP fix table for 437 code page // pCaseMapFixTable field in OD2_COUNTRY_ENTRY/TABLE for OD2_FIX_CASEMAP_TABLE #define INDEX_FIX_CASE_UNITED_STATES 0 #define INDEX_FIX_CASE_CANADA 0 #define INDEX_FIX_CASE_LATIN_AMERICA 0 #define INDEX_FIX_CASE_NETHERLANDS 2 #define INDEX_FIX_CASE_BELGIUM 1 #define INDEX_FIX_CASE_FRANCE 0 #define INDEX_FIX_CASE_SPAIN 0 #define INDEX_FIX_CASE_ITALY 0 #define INDEX_FIX_CASE_SWITZERLAND 1 #define INDEX_FIX_CASE_AUSTRIA 0 #define INDEX_FIX_CASE_UNITED_KINGDOM 0 #define INDEX_FIX_CASE_DENMARK 0 #define INDEX_FIX_CASE_SWEDEN 1 #define INDEX_FIX_CASE_NORWAY 0 #define INDEX_FIX_CASE_GERMANY 0 #define INDEX_FIX_CASE_MEXICO 0 #define INDEX_FIX_CASE_BRAZIL 0 #define INDEX_FIX_CASE_AUSTRALIA 0 #define INDEX_FIX_CASE_NEW_ZEALAND 0 #define INDEX_FIX_CASE_PORTUGAL 0 #define INDEX_FIX_CASE_IRELAND 0 #define INDEX_FIX_CASE_ICELAND 0 #define INDEX_FIX_CASE_FINLAND 1 #define INDEX_FIX_CASE_JAPAN 0 #define INDEX_FIX_CASE_SOUTH_KOREA 0 #define INDEX_FIX_CASE_TAIWAN 0 #define INDEX_FIX_CASE_HEBREW 0 #define INDEX_FIX_CASE_ARABIC 0 #define INDEX_FIX_CASE_PRCHINA 0 #endif // _OS2NLS_