[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