/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
if (!cachedItem) throw RuntimeException(); // impl could not be loaded
nLocale = rLocale;
cachedItem->xC->loadCollatorAlgorithm(cachedItem->algorithm, nLocale, collatorOptions);
for (constauto& rImpl : imp) {
*pId = rImpl.unoID; //if the current algorithm is default and the position is not on the first one, then switch if (rImpl.isDefault && pId != pBegin)
std::swap(*pBegin, *pId);
++pId;
} return list;
}
void
CollatorImpl::loadCachedCollator(const lang::Locale& rLocale, const OUString& rSortAlgorithm)
{ for (constauto& i : lookupTable) {
cachedItem = i; if (cachedItem->equals(rLocale, rSortAlgorithm)) { return;
}
}
bool bLoaded = false; if (!rSortAlgorithm.isEmpty())
{ // Load service with name <base>_<lang>_<country>_<algorithm> or // <base>_<bcp47>_<algorithm> and fallbacks.
bLoaded = createCollator( rLocale,
LocaleDataImpl::getFirstLocaleServiceName( rLocale) + "_" + rSortAlgorithm, rSortAlgorithm); if (!bLoaded)
{
::std::vector< OUString > aFallbacks( LocaleDataImpl::getFallbackLocaleServiceNames( rLocale)); for (autoconst& fallback : aFallbacks)
{
bLoaded = createCollator( rLocale, fallback + "_" + rSortAlgorithm, rSortAlgorithm); if (bLoaded) break;
} if (!bLoaded)
{ // load service with name <base>_<algorithm>
bLoaded = createCollator( rLocale, rSortAlgorithm, rSortAlgorithm);
}
}
} if (!bLoaded)
{ // load default service with name <base>_Unicode
bLoaded = createCollator( rLocale, u"Unicode"_ustr, rSortAlgorithm); if (!bLoaded)
{
cachedItem.reset(); throw RuntimeException(); // could not load any service
}
}
}
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.