sl@0: /* sl@0: * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: Contains the class declartion for locale related functions sl@0: * sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include "lmonetary.h" sl@0: #include "lnumeric.h" sl@0: #include "timelocal.h" sl@0: #include "sysif.h" sl@0: sl@0: // CONSTANTS sl@0: const TInt KNumLocaleExports = 22; sl@0: sl@0: class CLocale:public CBase sl@0: { sl@0: private: sl@0: CLocale(); sl@0: static CLocale* New(); sl@0: TInt ConstructL(); sl@0: sl@0: public: sl@0: static CLocale* GetInstance(); sl@0: static void DeleteInstance(); sl@0: sl@0: static struct lc_numeric_T* GetCurrentNumericLocale(void); sl@0: static struct lc_monetary_T* GetCurrentMonetaryLocale(void); sl@0: static struct lc_time_T* GetCurrentTimeLocale(void); sl@0: sl@0: TText* SetLocale(TDesC& aLocale); sl@0: TInt LoadLocale(TDesC& aLocale); sl@0: #ifdef SYMBIAN_OE_ENHANCED_LOCALE_SUPPORT sl@0: TInt SyncLocale(TLocaleAspect aspect); sl@0: #endif sl@0: const TText* nl_langinfo(nl_item aItem); sl@0: struct lconv * localeconv(); sl@0: sl@0: sl@0: #ifdef SYMBIAN_OE_ENHANCED_LOCALE_SUPPORT sl@0: #ifdef SYMBIAN_DISTINCT_LOCALE_MODEL sl@0: TInt GetSystemLocale(TDesC& aLanDllName,TDesC& aRegDllName); sl@0: const TText* GetCollateLocaleName(void); sl@0: #endif sl@0: TInt GetSystemLocale(TDesC& aDllName); sl@0: const TText* GetLocaleName(void); sl@0: #else sl@0: TText* GetLocaleName(void); sl@0: #endif sl@0: sl@0: sl@0: sl@0: TInt MonetaryLoadLocaleL(const char* localeName); sl@0: TInt NumericLoadLocale(const char* localeName); sl@0: TInt TimeLoadLocaleL(const char* localeName); sl@0: sl@0: TInt ConvertToMultiByteL(TUint8* aNarrowCharString, const TText16* aWideCharString, TInt aCharsetUID); sl@0: #ifdef SYMBIAN_OE_ENHANCED_LOCALE_SUPPORT sl@0: void ConvertToMultiByteCustom(TUint8* aNarrowCharString, const TText16* aWideCharString); sl@0: #endif sl@0: TInt GetCharcaterSetIDL(const char* aLocaleName); sl@0: /******************************************************************* sl@0: Overloading new and delete operators so that they will sl@0: allocate and deallocare memory from/to the private heap of backend sl@0: ********************************************************************/ sl@0: inline TAny* operator new(TUint aSize, TAny* aBase) __NO_THROW sl@0: { sl@0: Mem::FillZ(aBase, aSize); return aBase; sl@0: } sl@0: sl@0: inline TAny* operator new(TUint aSize) __NO_THROW sl@0: { sl@0: return Backend()->Alloc(aSize); sl@0: } sl@0: sl@0: inline TAny* operator new(TUint aSize, TLeave) sl@0: { sl@0: TAny* ptr = Backend()->Alloc(aSize); sl@0: if (ptr == NULL) sl@0: { sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: return ptr; sl@0: } sl@0: sl@0: inline TAny* operator new(TUint aSize, TUint aExtraSize) __NO_THROW sl@0: { sl@0: return Backend()->Alloc(aSize + aExtraSize); sl@0: } sl@0: sl@0: inline TAny* operator new(TUint aSize, TLeave, TUint aExtraSize) sl@0: { sl@0: TAny* ptr = Backend()->Alloc(aSize + aExtraSize); sl@0: if (ptr == NULL) sl@0: { sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: return ptr; sl@0: } sl@0: sl@0: //Corresponding overloaded delete operators sl@0: inline void operator delete(TAny *aPtr, TAny*) __NO_THROW sl@0: { sl@0: Backend()->Free( aPtr ); sl@0: } sl@0: sl@0: inline void operator delete(TAny *aPtr) __NO_THROW sl@0: { sl@0: Backend()->Free( aPtr ); sl@0: } sl@0: sl@0: inline void operator delete(TAny *aPtr, TLeave) sl@0: { sl@0: Backend()->Free( aPtr ); sl@0: } sl@0: sl@0: inline void operator delete(TAny *aPtr, TUint) __NO_THROW sl@0: { sl@0: Backend()->Free( aPtr ); sl@0: } sl@0: inline void operator delete(TAny *aPtr, TLeave, TUint) sl@0: { sl@0: Backend()->Free( aPtr ); sl@0: } sl@0: sl@0: private: sl@0: static CLocale* iNewLocale; sl@0: static struct lc_monetary_T* iMonetary_locale; sl@0: static struct lc_numeric_T* iNumeric_locale; sl@0: static struct lc_time_T* iTime_locale; sl@0: sl@0: sl@0: SLocaleLanguage iLanguageSettings; sl@0: SLocaleLocaleSettings iLocaleSettings; sl@0: SLocaleTimeDateFormat iLocaleTimeDateFormat; sl@0: TLocale iLocale; sl@0: TLibraryFunction iData[KNumLocaleExports]; sl@0: TChar iThousandsSeparator; sl@0: TChar iDecimalSeparator; sl@0: #ifdef SYMBIAN_DISTINCT_LOCALE_MODEL sl@0: TLibraryFunction iDataRegion[KNumLocaleExports];// will contain Monetary , numeric and time info sl@0: TLibraryFunction iDataLanguage[KNumLocaleExports];// will contain month table and Day Table details sl@0: TBuf<30> iRegDllName; sl@0: TBuf<30> iLanDllName; sl@0: TBool iOldDllPresent; sl@0: TInt LoadNewLocaleDll( TDesC& aLocale ); sl@0: TInt ParseNewLocaleFile( TDesC& aLocale ); sl@0: TInt TimeLoadNewLocaleL( const char* localeName ); sl@0: sl@0: #endif sl@0: }; sl@0: //end of file sl@0: sl@0: sl@0: