22 QTypeRevision version)
24 static const QLatin1Char Slash(
'/');
25 static const QLatin1Char Backslash(
'\\');
27 const QVector<QStringView> parts = uri.split(u'.', Qt::SkipEmptyParts);
29 QStringList importPaths;
31 importPaths.reserve(2 * parts.size() + 1);
33 auto versionString = [](QTypeRevision version,
ImportVersion mode)
37 return QString::fromLatin1(
".%1.%2").arg(version.majorVersion())
38 .arg(version.minorVersion());
42 return QString::fromLatin1(
".%1").arg(version.majorVersion());
48 auto joinStringRefs = [](
const QVector<QStringView> &refs,
const QChar &sep) {
50 for (
auto it = refs.cbegin(); it != refs.cend(); ++it) {
51 if (it != refs.cbegin())
61 for (
int mode = initial; mode <=
Unversioned; ++mode) {
62 const QString ver = versionString(version,
ImportVersion(mode));
64 for (
const QString &path : basePaths) {
66 if (!dir.endsWith(Slash) && !dir.endsWith(Backslash))
70 importPaths += dir + joinStringRefs(parts, Slash) + ver;
72 if (mode != Unversioned) {
74 for (
int index = parts.size() - 2; index >= 0; --index) {
75 importPaths += dir + joinStringRefs(parts.mid(0, index + 1), Slash)
77 + joinStringRefs(parts.mid(index + 1), Slash);