Kaydet (Commit) 80bbe6d1 authored tarafından Eike Rathke's avatar Eike Rathke

slightly optimized operator==() and equals()

Change-Id: I05bacddf8cf61adbbcaed03c83ae42b06e76160a
üst e5114027
...@@ -1120,6 +1120,11 @@ LanguageTag & LanguageTag::makeFallback() ...@@ -1120,6 +1120,11 @@ LanguageTag & LanguageTag::makeFallback()
bool LanguageTag::equals( const LanguageTag & rLanguageTag, bool bResolveSystem ) const bool LanguageTag::equals( const LanguageTag & rLanguageTag, bool bResolveSystem ) const
{ {
// If SYSTEM is not to be resolved or either both are SYSTEM or none, we
// can use the operator==() optimization.
if (!bResolveSystem || isSystemLocale() == rLanguageTag.isSystemLocale())
return operator==( rLanguageTag);
// Compare full language tag strings. // Compare full language tag strings.
return getBcp47( bResolveSystem) == rLanguageTag.getBcp47( bResolveSystem); return getBcp47( bResolveSystem) == rLanguageTag.getBcp47( bResolveSystem);
} }
...@@ -1127,6 +1132,16 @@ bool LanguageTag::equals( const LanguageTag & rLanguageTag, bool bResolveSystem ...@@ -1127,6 +1132,16 @@ bool LanguageTag::equals( const LanguageTag & rLanguageTag, bool bResolveSystem
bool LanguageTag::operator==( const LanguageTag & rLanguageTag ) const bool LanguageTag::operator==( const LanguageTag & rLanguageTag ) const
{ {
if (isSystemLocale() && rLanguageTag.isSystemLocale())
return true; // both SYSTEM
// No need to convert to BCP47 if both Lang-IDs are available.
if (mbInitializedLangID && rLanguageTag.mbInitializedLangID)
{
// Equal if same ID and no SYSTEM is involved or both are SYSTEM.
return mnLangID == rLanguageTag.mnLangID && isSystemLocale() == rLanguageTag.isSystemLocale();
}
// Compare full language tag strings but SYSTEM unresolved. // Compare full language tag strings but SYSTEM unresolved.
return getBcp47( false) == rLanguageTag.getBcp47( false); return getBcp47( false) == rLanguageTag.getBcp47( false);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment