[Libreoffice-commits] core.git: 4 commits - i18nlangtag/source

Eike Rathke erack at redhat.com
Wed Sep 18 15:27:50 PDT 2013


 i18nlangtag/source/languagetag/languagetag.cxx |   56 ++++++++++++-------------
 1 file changed, 28 insertions(+), 28 deletions(-)

New commits:
commit 90698b5f6721472ebcdda2bb7c34e7364c3da9eb
Author: Eike Rathke <erack at redhat.com>
Date:   Thu Sep 19 00:08:08 2013 +0200

    always sync after canonicalize
    
    Change-Id: I96936330f787d9256383f73e17983e4950579160

diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index 2bfe936..7f70186 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -597,7 +597,10 @@ void LanguageTag::reset( const OUString & rBcp47LanguageTag, bool bCanonicalize
     mbInitializedBcp47  = !mbSystemLocale;
 
     if (bCanonicalize)
-        getImpl()->canonicalize();
+    {
+        if (getImpl()->canonicalize())
+            syncFromImpl();
+    }
 }
 
 
commit 9650bd951305211dcd84b04969654f672d8f63e4
Author: Eike Rathke <erack at redhat.com>
Date:   Wed Sep 18 23:37:36 2013 +0200

    sync from possible intermediate steps
    
    Change-Id: Ifeb670356184b1f613ad85705fded848072416b1

diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index a366c72..2bfe936 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -938,6 +938,8 @@ void LanguageTag::convertBcp47ToLang()
 {
     LanguageTagImpl* pImpl = getImpl();
     pImpl->convertBcp47ToLang();
+    maLocale = pImpl->maLocale;
+    mbInitializedLocale = pImpl->mbInitializedLocale;
     mnLangID = pImpl->mnLangID;
     mbInitializedLangID = pImpl->mbInitializedLangID;
 }
@@ -978,6 +980,8 @@ void LanguageTag::convertLangToBcp47()
 {
     LanguageTagImpl* pImpl = getImpl();
     pImpl->convertLangToBcp47();
+    maLocale = pImpl->maLocale;
+    mbInitializedLocale = pImpl->mbInitializedLocale;
     maBcp47 = pImpl->maBcp47;
     mbInitializedBcp47 = pImpl->mbInitializedBcp47;
 }
commit 0194900585b142d390ca7695c0730fdf37866f89
Author: Eike Rathke <erack at redhat.com>
Date:   Wed Sep 18 23:15:00 2013 +0200

    impl getBcp47() always resolves system
    
    Change-Id: Id052b5ed9ec47a2bf02b8707825fdcbbd64af186

diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index 889c079..a366c72 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -238,7 +238,7 @@ private:
     mutable bool                            mbCachedCountry     : 1;
     mutable bool                            mbCachedVariants    : 1;
 
-    const OUString &    getBcp47( bool bResolveSystem = true ) const;
+    const OUString &    getBcp47() const;
     OUString            getLanguage() const;
     OUString            getScript() const;
     OUString            getCountry() const;
@@ -645,7 +645,7 @@ bool LanguageTagImpl::canonicalize()
     // Some methods calling canonicalize() (or not calling it due to
     // meIsLiblangtagNeeded==DECISION_NO) rely on this! Hence do not set
     // meIsLiblangtagNeeded anywhere else than hereafter.
-    getBcp47( true );
+    getBcp47();
 
     // The simple cases and known locales don't need liblangtag processing,
     // which also avoids loading liblangtag data on startup.
@@ -1023,10 +1023,8 @@ void LanguageTag::convertFromRtlLocale()
 }
 
 
-const OUString & LanguageTagImpl::getBcp47( bool bResolveSystem ) const
+const OUString & LanguageTagImpl::getBcp47() const
 {
-    if (!bResolveSystem && mbSystemLocale)
-        return theEmptyBcp47::get();
     if (!mbInitializedBcp47)
     {
         if (mbInitializedLocale)
@@ -1046,7 +1044,7 @@ const OUString & LanguageTag::getBcp47( bool bResolveSystem ) const
         const_cast<LanguageTag*>(this)->syncFromImpl();
     if (!mbInitializedBcp47)
     {
-        getImpl()->getBcp47( bResolveSystem);
+        getImpl()->getBcp47();
         const_cast<LanguageTag*>(this)->syncFromImpl();
     }
     return maBcp47;
commit 5bb3c27140c72b14c5832bf4ca171e026e4302a4
Author: Eike Rathke <erack at redhat.com>
Date:   Wed Sep 18 22:46:29 2013 +0200

    LANGTAGCAST is unnecessary now, we have lt_tag_t* encapsulated
    
    Change-Id: Ibe7b402dca2e71339ba77632ea1bc19b983a86f8

diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index dde0a2e..889c079 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -33,11 +33,6 @@
 
 using namespace com::sun::star;
 
-// The actual pointer type of mpImplLangtag that is declared void* to not
-// pollute the entire code base with liblangtag.
-#define LANGTAGCAST(p) (reinterpret_cast<lt_tag_t*>(p))
-#define MPLANGTAG LANGTAGCAST(mpImplLangtag)
-
 
 // Helper to ensure lt_error_t is free'd
 struct myLtError
@@ -228,7 +223,7 @@ private:
     mutable OUString                        maCachedScript;     ///< cache getScript()
     mutable OUString                        maCachedCountry;    ///< cache getCountry()
     mutable OUString                        maCachedVariants;   ///< cache getVariants()
-    mutable void*                           mpImplLangtag;      ///< actually lt_tag_t pointer, encapsulated
+    mutable lt_tag_t*                       mpImplLangtag;      ///< liblangtag pointer
     mutable LanguageType                    mnLangID;
     mutable Decision                        meIsValid;
     mutable Decision                        meIsIsoLocale;
@@ -348,7 +343,7 @@ LanguageTagImpl::LanguageTagImpl( const LanguageTagImpl & rLanguageTagImpl )
         maCachedCountry( rLanguageTagImpl.maCachedCountry),
         maCachedVariants( rLanguageTagImpl.maCachedVariants),
         mpImplLangtag( rLanguageTagImpl.mpImplLangtag ?
-                lt_tag_copy( LANGTAGCAST( rLanguageTagImpl.mpImplLangtag)) : NULL),
+                lt_tag_copy( rLanguageTagImpl.mpImplLangtag) : NULL),
         mnLangID( rLanguageTagImpl.mnLangID),
         meIsValid( rLanguageTagImpl.meIsValid),
         meIsIsoLocale( rLanguageTagImpl.meIsIsoLocale),
@@ -378,7 +373,7 @@ LanguageTagImpl& LanguageTagImpl::operator=( const LanguageTagImpl & rLanguageTa
     maCachedVariants    = rLanguageTagImpl.maCachedVariants;
     mpImplLangtag       = rLanguageTagImpl.mpImplLangtag;
     mpImplLangtag       = rLanguageTagImpl.mpImplLangtag ?
-                            lt_tag_copy( LANGTAGCAST( rLanguageTagImpl.mpImplLangtag)) : NULL;
+                            lt_tag_copy( rLanguageTagImpl.mpImplLangtag) : NULL;
     mnLangID            = rLanguageTagImpl.mnLangID;
     meIsValid           = rLanguageTagImpl.meIsValid;
     meIsIsoLocale       = rLanguageTagImpl.meIsIsoLocale;
@@ -402,7 +397,7 @@ LanguageTagImpl::~LanguageTagImpl()
 {
     if (mpImplLangtag)
     {
-        lt_tag_unref( MPLANGTAG);
+        lt_tag_unref( mpImplLangtag);
         theDataRef::get().decRef();
     }
 }
@@ -412,7 +407,7 @@ void LanguageTagImpl::resetVars()
 {
     if (mpImplLangtag)
     {
-        lt_tag_unref( MPLANGTAG);
+        lt_tag_unref( mpImplLangtag);
         mpImplLangtag = NULL;
         theDataRef::get().decRef();
     }
@@ -637,9 +632,9 @@ bool LanguageTagImpl::canonicalize()
     // dump once
     struct dumper
     {
-        void** mpp;
-        dumper( void** pp ) : mpp( *pp ? NULL : pp) {}
-        ~dumper() { if (mpp && *mpp) lt_tag_dump( LANGTAGCAST( *mpp)); }
+        lt_tag_t** mpp;
+        dumper( lt_tag_t** pp ) : mpp( *pp ? NULL : pp) {}
+        ~dumper() { if (mpp && *mpp) lt_tag_dump( *mpp); }
     };
     dumper aDumper( &mpImplLangtag);
 #endif
@@ -769,9 +764,9 @@ bool LanguageTagImpl::canonicalize()
 
     myLtError aError;
 
-    if (lt_tag_parse( MPLANGTAG, OUStringToOString( maBcp47, RTL_TEXTENCODING_UTF8).getStr(), &aError.p))
+    if (lt_tag_parse( mpImplLangtag, OUStringToOString( maBcp47, RTL_TEXTENCODING_UTF8).getStr(), &aError.p))
     {
-        char* pTag = lt_tag_canonicalize( MPLANGTAG, &aError.p);
+        char* pTag = lt_tag_canonicalize( mpImplLangtag, &aError.p);
         SAL_WARN_IF( !pTag, "i18nlangtag", "LanguageTagImpl::canonicalize: could not canonicalize " << maBcp47);
         if (pTag)
         {
@@ -784,7 +779,7 @@ bool LanguageTagImpl::canonicalize()
                 bChanged = true;
                 meIsIsoLocale = DECISION_DONTKNOW;
                 meIsIsoODF = DECISION_DONTKNOW;
-                if (!lt_tag_parse( MPLANGTAG, pTag, &aError.p))
+                if (!lt_tag_parse( mpImplLangtag, pTag, &aError.p))
                 {
                     SAL_WARN( "i18nlangtag", "LanguageTagImpl::canonicalize: could not reparse " << maBcp47);
                     free( pTag);
@@ -1011,7 +1006,7 @@ void LanguageTag::convertFromRtlLocale()
         myLtError aError;
         theDataRef::get().incRef();
         mpImplLangtag = lt_tag_convert_from_locale( aStr.getStr(), &aError.p);
-        maBcp47 = OStringToOUString( lt_tag_get_string( MPLANGTAG), RTL_TEXTENCODING_UTF8);
+        maBcp47 = OStringToOUString( lt_tag_get_string( mpImplLangtag), RTL_TEXTENCODING_UTF8);
         mbInitializedBcp47 = true;
 #else
         mnLangID = MsLangId::convertUnxByteStringToLanguage( aStr);
@@ -1066,7 +1061,7 @@ OUString LanguageTagImpl::getLanguageFromLangtag()
         return aLanguage;
     if (mpImplLangtag)
     {
-        const lt_lang_t* pLangT = lt_tag_get_language( MPLANGTAG);
+        const lt_lang_t* pLangT = lt_tag_get_language( mpImplLangtag);
         SAL_WARN_IF( !pLangT, "i18nlangtag", "LanguageTag::getLanguageFromLangtag: pLangT==NULL");
         if (!pLangT)
             return aLanguage;
@@ -1092,7 +1087,7 @@ OUString LanguageTagImpl::getScriptFromLangtag()
         return aScript;
     if (mpImplLangtag)
     {
-        const lt_script_t* pScriptT = lt_tag_get_script( MPLANGTAG);
+        const lt_script_t* pScriptT = lt_tag_get_script( mpImplLangtag);
         // pScriptT==NULL is valid for default scripts
         if (!pScriptT)
             return aScript;
@@ -1118,7 +1113,7 @@ OUString LanguageTagImpl::getRegionFromLangtag()
         return aRegion;
     if (mpImplLangtag)
     {
-        const lt_region_t* pRegionT = lt_tag_get_region( MPLANGTAG);
+        const lt_region_t* pRegionT = lt_tag_get_region( mpImplLangtag);
         // pRegionT==NULL is valid for language only tags, rough check here
         // that does not take sophisticated tags into account that actually
         // should have a region, check for ll, lll, ll-Ssss and lll-Ssss so
@@ -1151,7 +1146,7 @@ OUString LanguageTagImpl::getVariantsFromLangtag()
         return aVariants;
     if (mpImplLangtag)
     {
-        const lt_list_t* pVariantsT = lt_tag_get_variants( MPLANGTAG);
+        const lt_list_t* pVariantsT = lt_tag_get_variants( mpImplLangtag);
         for (const lt_list_t* pE = pVariantsT; pE; pE = lt_list_next( pE))
         {
             const lt_variant_t* pVariantT = static_cast<const lt_variant_t*>(lt_list_value( pE));


More information about the Libreoffice-commits mailing list