diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2015-04-06 23:04:47 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2015-04-13 13:21:35 +0000 |
commit | cf4ae8c63f7aa86a2e8da41307f31d0575f34668 (patch) | |
tree | 7283d9eca2e35c8a8aa1dee01d020707b62bdd54 /src/libs/cplusplus/LookupContext.cpp | |
parent | afcf2afe5a6fc5ed8cc9102082b9ba29040749fc (diff) | |
download | qt-creator-cf4ae8c63f7aa86a2e8da41307f31d0575f34668.tar.gz |
C++: Forward-declare NestedClassInstantiator
It is only used in LookupContext.cpp
Change-Id: I7b1b4a634fea8560102f2c17afcaacd2773de98a
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Diffstat (limited to 'src/libs/cplusplus/LookupContext.cpp')
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index be1968733e..c70c90c15f 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -538,6 +538,28 @@ ClassOrNamespace *LookupContext::lookupParent(Symbol *symbol) const return binding; } +class ClassOrNamespace::NestedClassInstantiator +{ +public: + NestedClassInstantiator(CreateBindings *factory, Clone &cloner, Subst &subst) + : _factory(factory) + , _cloner(cloner) + , _subst(subst) + {} + void instantiate(ClassOrNamespace *enclosingTemplateClass, + ClassOrNamespace *enclosingTemplateClassInstantiation); +private: + bool isInstantiateNestedClassNeeded(const QList<Symbol *> &symbols) const; + bool containsTemplateType(Declaration *declaration) const; + bool containsTemplateType(Function *function) const; + NamedType *findNamedType(Type *memberType) const; + + QSet<ClassOrNamespace *> _alreadyConsideredNestedClassInstantiations; + CreateBindings *_factory; + Clone &_cloner; + Subst &_subst; +}; + ClassOrNamespace::ClassOrNamespace(CreateBindings *factory, ClassOrNamespace *parent) : _factory(factory) , _parent(parent) |