i18nlangtag/source/languagetag/languagetag.cxx | 56 ++++++++++++------------- 1 file changed, 28 insertions(+), 28 deletions(-)
New commits: commit 90698b5f6721472ebcdda2bb7c34e7364c3da9eb Author: Eike Rathke <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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)); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
