/* ***************************************************************************************** * * Copyright (C) 1996-2000, International Business Machines * Corporation and others. All Rights Reserved. * ***************************************************************************************** */ // $Revision: 1.11 $ //=============================================================================== // // File locmap.hpp : Locale Mapping Classes // // // // Created by: Helena Shih // // Modification History: // // Date Name Description // 3/11/97 aliu Added setId(). // 4/20/99 Madhu Added T_convertToPosix() // 09/18/00 george Removed the memory leaks. //=============================================================================== /* include this first so that we are sure to get WIN32 defined */ #include "unicode/utypes.h" #if defined(WIN32) && !defined(LOCMAP_H) #define LOCMAP_H #define LANGUAGE_LCID(hostID) (uint16_t)(0x03FF & hostID) U_CFUNC const char *T_convertToPosix(uint32_t hostid, UErrorCode* status); #ifdef XP_CPLUSPLUS struct ILcidPosixMap; class IGlobalLocales { public: /** * Convert a Windows LCID number to an ICU locale name. For instance, * 0x0409 will be return "en_US". * * @param hostid the Windows LCID number. * @param status gets set to U_ILLEGAL_ARGUMENT_ERROR when the LCID has no * equivalent ICU locale. * @return ICU locale */ static const char* convertToPosix(uint32_t hostid, UErrorCode* status); /** * Convert an ICU locale name to a Windows LCID number. For instance, * "en_US" will be return 0x0409. * * @param posixid the Posix style locale id. * @param status gets set to U_ILLEGAL_ARGUMENT_ERROR when the Posix ID has * no equivalent Windows LCID. * @return the LCID */ static uint32_t convertToLCID(const char* posixID, UErrorCode* status); /** * Convert a Windows LCID number to a Windows language ID. * This removes the sort ID from the LCID. For instance, information about * the modern sort verses traditional sort on Spanish is removed from the * ID. * * @param hostid the Windows LCID number. * @return the language part of the LCID */ static inline uint16_t languageLCID(uint32_t hostID) {return LANGUAGE_LCID(hostID);} protected: // IGlobalLocales() {} // IGlobalLocales(const IGlobalLocales&/* that*/) {} // IGlobalLocales& operator=(const IGlobalLocales&/* that*/) {return *this;} // ~IGlobalLocales() {} static void initializeMapRegions(void); private: static uint32_t LocaleCount; static ILcidPosixMap* PosixIDmap; static const char* WildCard; }; #endif #endif