26 QTypeRevision version)
28 static const QLatin1Char Slash(
'/');
29 static const QLatin1Char Backslash(
'\\');
31 const QList<QStringView> parts = uri.split(u'.', Qt::SkipEmptyParts);
33 QStringList importPaths;
35 importPaths.reserve(2 * parts.size() + 1);
37 auto versionString = [](QTypeRevision version,
ImportVersion mode)
41 return QString::fromLatin1(
".%1.%2").arg(version.majorVersion())
42 .arg(version.minorVersion());
46 return QString::fromLatin1(
".%1").arg(version.majorVersion());
52 auto joinStringRefs = [](
const QList<QStringView> &refs,
const QChar &sep) {
54 for (
auto it = refs.cbegin(); it != refs.cend(); ++it) {
55 if (it != refs.cbegin())
65 for (
int mode = initial; mode <=
Unversioned; ++mode) {
66 const QString ver = versionString(version,
ImportVersion(mode));
68 for (
const QString &path : basePaths) {
70 if (!dir.endsWith(Slash) && !dir.endsWith(Backslash))
74 importPaths += dir + joinStringRefs(parts, Slash) + ver;
76 if (mode != Unversioned) {
78 for (
int index = parts.size() - 2; index >= 0; --index) {
79 importPaths += dir + joinStringRefs(parts.mid(0, index + 1), Slash)
81 + joinStringRefs(parts.mid(index + 1), Slash);