aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/Control.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Control.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/Control.cpp31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/libs/3rdparty/cplusplus/Control.cpp b/src/libs/3rdparty/cplusplus/Control.cpp
index 2bbe00c293..7a40cbba31 100644
--- a/src/libs/3rdparty/cplusplus/Control.cpp
+++ b/src/libs/3rdparty/cplusplus/Control.cpp
@@ -25,6 +25,9 @@
#include "CoreTypes.h"
#include "Symbols.h"
#include "Names.h"
+
+#include <QList>
+
#include <map>
#include <set>
#include <algorithm>
@@ -579,6 +582,15 @@ const OperatorNameId *Control::findOperatorNameId(OperatorNameId::Kind operatorI
return &*i;
}
+const ConversionNameId *Control::findConversionNameId(const FullySpecifiedType &type) const
+{
+ for (const ConversionNameId &id : d->conversionNameIds) {
+ if (type.match(id.type()))
+ return &id;
+ }
+ return nullptr;
+}
+
const Identifier *Control::findIdentifier(const char *chars, int size) const
{ return d->identifiers.findLiteral(chars, size); }
@@ -629,7 +641,7 @@ const NumericLiteral *Control::numericLiteral(const char *chars)
const TemplateNameId *Control::templateNameId(const Identifier *id,
bool isSpecialization,
- const FullySpecifiedType *const args,
+ const TemplateArgument *const args,
int argv)
{
return d->findOrInsertTemplateNameId(id, isSpecialization, args, args + argv);
@@ -821,11 +833,6 @@ bool Control::hasSymbol(Symbol *symbol) const
return std::find(d->symbols.begin(), d->symbols.end(), symbol) != d->symbols.end();
}
-void Control::squeeze()
-{
- d->numericLiterals.reset();
-}
-
TopLevelDeclarationProcessor *Control::topLevelDeclarationProcessor() const
{
return d->processor;
@@ -840,3 +847,15 @@ void Control::addSymbol(Symbol *symbol)
{
d->symbols.push_back(symbol);
}
+
+const Name *Control::toName(const QList<const Name *> &names)
+{
+ const Name *n = nullptr;
+ for (int i = names.size() - 1; i >= 0; --i) {
+ if (! n)
+ n = names.at(i);
+ else
+ n = qualifiedNameId(names.at(i), n);
+ }
+ return n;
+}