void saveState(SavedState *state);
void loadState(const SavedState *state);
- static QString stringifyNamespace(const NamespaceList &namespaces);
+ static QString stringifyNamespace(int start, const NamespaceList &namespaces);
+ static QString stringifyNamespace(const NamespaceList &namespaces)
+ { return stringifyNamespace(1, namespaces); }
static QString joinNamespaces(const QString &one, const QString &two);
typedef bool (CppParser::*VisitNamespaceCallback)(const Namespace *ns, void *context) const;
bool visitNamespace(const NamespaceList &namespaces, int nsCount,
VisitRecorder &vr, const ParseResults *rslt) const;
bool visitNamespace(const NamespaceList &namespaces, int nsCount,
VisitNamespaceCallback callback, void *context) const;
- static QStringList stringListifySegments(const NamespaceList &namespaces);
bool qualifyOneCallbackOwn(const Namespace *ns, void *context) const;
bool qualifyOneCallbackUsing(const Namespace *ns, void *context) const;
bool qualifyOne(const NamespaceList &namespaces, int nsCnt, const HashString &segment,
NamespaceList *resolved) const;
bool fullyQualify(const NamespaceList &namespaces, int nsCnt,
const NamespaceList &segments, bool isDeclaration,
- NamespaceList *resolved, QStringList *unresolved) const;
+ NamespaceList *resolved, NamespaceList *unresolved) const;
bool fullyQualify(const NamespaceList &namespaces,
const NamespaceList &segments, bool isDeclaration,
- NamespaceList *resolved, QStringList *unresolved) const;
+ NamespaceList *resolved, NamespaceList *unresolved) const;
bool fullyQualify(const NamespaceList &namespaces,
const QString &segments, bool isDeclaration,
- NamespaceList *resolved, QStringList *unresolved) const;
+ NamespaceList *resolved, NamespaceList *unresolved) const;
bool findNamespaceCallback(const Namespace *ns, void *context) const;
const Namespace *findNamespace(const NamespaceList &namespaces, int nsCount = -1) const;
void enterNamespace(NamespaceList *namespaces, const HashString &name);
return ns;
}
-QString CppParser::stringifyNamespace(const NamespaceList &namespaces)
+QString CppParser::stringifyNamespace(int start, const NamespaceList &namespaces)
{
QString ret;
- for (int i = 1; i < namespaces.count(); ++i) {
- if (i > 1)
+ for (int i = start; i < namespaces.count(); ++i) {
+ if (i > start)
ret += QLatin1String("::");
ret += namespaces.at(i).value();
}
return visitNamespace(namespaces, nsCount, callback, context, vr, results);
}
-QStringList CppParser::stringListifySegments(const NamespaceList &segments)
-{
- QStringList ret;
- for (int i = 0; i < segments.count(); ++i)
- ret << segments.at(i).value();
- return ret;
-}
-
struct QualifyOneData {
QualifyOneData(const NamespaceList &ns, int nsc, const HashString &seg, NamespaceList *rslvd,
QSet<HashStringList> *visited)
bool CppParser::fullyQualify(const NamespaceList &namespaces, int nsCnt,
const NamespaceList &segments, bool isDeclaration,
- NamespaceList *resolved, QStringList *unresolved) const
+ NamespaceList *resolved, NamespaceList *unresolved) const
{
int nsIdx;
int initSegIdx;
while (++segIdx < segments.count()) {
if (!qualifyOne(*resolved, resolved->count(), segments[segIdx], resolved)) {
if (unresolved)
- *unresolved = stringListifySegments(segments.mid(segIdx));
+ *unresolved = segments.mid(segIdx);
return false;
}
}
resolved->clear();
*resolved << HashString(QString());
if (unresolved)
- *unresolved = stringListifySegments(segments.mid(initSegIdx));
+ *unresolved = segments.mid(initSegIdx);
return false;
}
bool CppParser::fullyQualify(const NamespaceList &namespaces,
const NamespaceList &segments, bool isDeclaration,
- NamespaceList *resolved, QStringList *unresolved) const
+ NamespaceList *resolved, NamespaceList *unresolved) const
{
return fullyQualify(namespaces, namespaces.count(),
segments, isDeclaration, resolved, unresolved);
bool CppParser::fullyQualify(const NamespaceList &namespaces,
const QString &quali, bool isDeclaration,
- NamespaceList *resolved, QStringList *unresolved) const
+ NamespaceList *resolved, NamespaceList *unresolved) const
{
static QString strColons(QLatin1String("::"));
}
}
if (!pendingContext.isEmpty() && !prefix.startsWith(strColons)) {
- QStringList unresolved;
+ NamespaceList unresolved;
if (!fullyQualify(namespaces, pendingContext, true, &functionContext, &unresolved)) {
- functionContextUnresolved = unresolved.join(strColons);
+ functionContextUnresolved = stringifyNamespace(0, unresolved);
yyMsg() << qPrintable(LU::tr("Qualifying with unknown namespace/class %1::%2\n")
- .arg(stringifyNamespace(functionContext)).arg(unresolved.first()));
+ .arg(stringifyNamespace(functionContext)).arg(unresolved.first().value()));
}
pendingContext.clear();
}
#endif
prefix.chop(2);
NamespaceList nsl;
- QStringList unresolved;
+ NamespaceList unresolved;
if (fullyQualify(functionContext, prefix, false, &nsl, &unresolved)) {
Namespace *fctx = findNamespace(nsl)->classDef;
if (fctx->trQualification.isEmpty()) {
fctx->complained = true;
}
} else {
- context = joinNamespaces(stringifyNamespace(nsl), unresolved.join(strColons));
+ context = joinNamespaces(stringifyNamespace(nsl), stringifyNamespace(0, unresolved));
}
prefix.clear();
}