23 QTypeRevision version)
25 static const QLatin1Char Slash(
'/');
26 static const QLatin1Char Backslash(
'\\');
28 const QList<QStringView> parts = uri.split(u'.', Qt::SkipEmptyParts);
30 QStringList importPaths;
32 importPaths.reserve(2 * parts.size() + 1);
34 auto versionString = [](QTypeRevision version,
ImportVersion mode)
38 return QString::fromLatin1(
".%1.%2").arg(version.majorVersion())
39 .arg(version.minorVersion());
43 return QString::fromLatin1(
".%1").arg(version.majorVersion());
49 auto joinStringRefs = [](
const QList<QStringView> &refs,
const QChar &sep) {
51 for (
auto it = refs.cbegin(); it != refs.cend(); ++it) {
52 if (it != refs.cbegin())
62 for (
int mode = initial; mode <=
Unversioned; ++mode) {
63 const QString ver = versionString(version,
ImportVersion(mode));
65 for (
const QString &path : basePaths) {
67 if (!dir.endsWith(Slash) && !dir.endsWith(Backslash))
71 importPaths += dir + joinStringRefs(parts, Slash) + ver;
73 if (mode != Unversioned) {
75 for (
int index = parts.size() - 2; index >= 0; --index) {
76 importPaths += dir + joinStringRefs(parts.mid(0, index + 1), Slash)
78 + joinStringRefs(parts.mid(index + 1), Slash);