// search for entry with that language
ThesSvcByLangMap_t::iterator aIt( aSvcMap.find( nLanguage ) );
LangSvcEntries_Thes *pEntry = aIt != aSvcMap.end() ? aIt->second.get() : nullptr;
sal_Int32 nLen = pEntry->aSvcRefs.getLength();
DBG_ASSERT( nLen == pEntry->aSvcImplNames.getLength(), "lng : sequence length mismatch");
DBG_ASSERT( pEntry->nLastTriedSvcIndex < nLen, "lng : index out of range");
sal_Int32 i = 0;
// try already instantiated services first
{ const Reference< XThesaurus > *pRef = pEntry->aSvcRefs.getConstArray(); while (i <= pEntry->nLastTriedSvcIndex
&& !aMeanings.hasElements())
{ if (pRef[i].is() && pRef[i]->hasLocale( rLocale ))
aMeanings = pRef[i]->queryMeanings( aChkWord, rLocale, rProperties );
++i;
}
}
// if still no result instantiate new services and try those if (!aMeanings.hasElements()
&& pEntry->nLastTriedSvcIndex < nLen - 1)
{ const OUString *pImplNames = pEntry->aSvcImplNames.getConstArray();
Reference< XThesaurus > *pRef = pEntry->aSvcRefs.getArray();
// if language is not supported by any of the services // remove it from the list. if (i == nLen && !aMeanings.hasElements())
{ if (!SvcListHasLanguage( pEntry->aSvcRefs, rLocale ))
aSvcMap.erase( nLanguage );
}
}
}
// search for entry with that language and use data from that
LanguageType nLanguage = LinguLocaleToLanguage( rLocale ); const ThesSvcByLangMap_t::const_iterator aIt( aSvcMap.find( nLanguage ) ); const LangSvcEntries_Thes *pEntry = aIt != aSvcMap.end() ? aIt->second.get() : nullptr; if (pEntry)
aRes = pEntry->aSvcImplNames;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.