/* ***************************************************************************************** * * * COPYRIGHT: * * (C) Copyright Taligent, Inc., 1996 * * (C) Copyright International Business Machines Corporation, 1996-1999 * * Licensed Material - Program-Property of IBM - All Rights Reserved. * * US Government Users Restricted Rights - Use, duplication, or disclosure * * restricted by GSA ADP Schedule Contract with IBM Corp. * * * ***************************************************************************************** */ // $Revision: 1.3 $ //=============================================================================== // // 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() //=============================================================================== #ifndef LOCMAP_H #define LOCMAP_H #include "utypes.h" #ifdef XP_CPLUSPLUS class Locale; ///////////////////////////////////////////////// // // Internal Classes for LCID <--> POSIX Mapping // ///////////////////////////////////////////////// class ILcidPosixElement { public: ILcidPosixElement(uint32_t, const char*); ILcidPosixElement(); ILcidPosixElement(const ILcidPosixElement&); ILcidPosixElement& operator=(const ILcidPosixElement&); ~ILcidPosixElement(); private: int32_t setId(const char* id); enum { MAX_ID_LENGTH = 8 }; uint32_t fHostID; char fPosixID[MAX_ID_LENGTH]; friend class ILcidPosixMap; }; class ILcidPosixMap { public: ILcidPosixMap(); void initialize (uint32_t hostID, const char* posixID, uint32_t totalNumberOfRegions = 1); ~ILcidPosixMap(); void addRegion (uint32_t hostID, const char* posixID); uint16_t hostLangID(void) const { return fHostLangID; }; const char* posixLangID(void) const { return fPosixLangID; }; uint32_t hostID(const char* fromPosixID) const; const char* posixID(uint32_t fromHostID) const; static const char* fgWildCard; private: ILcidPosixMap(const ILcidPosixMap&); ILcidPosixMap& operator=(const ILcidPosixMap&); uint16_t fHostLangID; char fPosixLangID[3]; ILcidPosixElement* fRegionMaps; uint32_t fMapSize; uint32_t fNumRegions; }; // class IGlobalLocales { public: static void initializeMapRegions(void); static const char* convertToPosix(uint32_t hostid); static uint32_t convertToLCID(const char* posixID); static uint16_t languageLCID(uint32_t hostID); protected: IGlobalLocales() { } IGlobalLocales(const IGlobalLocales& that) { } IGlobalLocales& operator=(const IGlobalLocales& that) { return *this;} private: static int32_t fgLocaleCount; static uint32_t fgStdLang; static const uint32_t kMapSize; static ILcidPosixMap * fgPosixIDmap; protected: ~IGlobalLocales() { } }; #else U_CAPI const char* U_EXPORT2 T_convertToPosix(uint32_t hostid); #endif #endif