From cf4ae8c63f7aa86a2e8da41307f31d0575f34668 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh <orgad.shaneh@audiocodes.com> Date: Mon, 6 Apr 2015 23:04:47 +0300 Subject: [PATCH] C++: Forward-declare NestedClassInstantiator It is only used in LookupContext.cpp Change-Id: I7b1b4a634fea8560102f2c17afcaacd2773de98a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> --- src/libs/cplusplus/LookupContext.cpp | 22 ++++++++++++++++++++++ src/libs/cplusplus/LookupContext.h | 22 +--------------------- 2 files changed, 23 insertions(+), 21 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) diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h index 5858d80c95..291f957ac2 100644 --- a/src/libs/cplusplus/LookupContext.h +++ b/src/libs/cplusplus/LookupContext.h @@ -161,27 +161,7 @@ private: Class *_rootClass; - class 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; - }; + class NestedClassInstantiator; public: const Name *_name; // For debug -- GitLab