diff --git a/src/libs/cplusplus/CheckUndefinedSymbols.cpp b/src/libs/cplusplus/CheckUndefinedSymbols.cpp index 7c5edf508e45890f0273bfa45ad0af1e149c70af..3e435077a60cf806126312e25b4c6acc0b863832 100644 --- a/src/libs/cplusplus/CheckUndefinedSymbols.cpp +++ b/src/libs/cplusplus/CheckUndefinedSymbols.cpp @@ -186,7 +186,7 @@ void CheckUndefinedSymbols::buildTypeMap(NamespaceBinding *binding, QSet<Namespa _namespaceNames.insert(QByteArray(id->chars(), id->size())); } - foreach (Namespace *ns, binding->symbols()) { + foreach (Namespace *ns, binding->symbols) { for (unsigned i = 0; i < ns->memberCount(); ++i) { Symbol *member = ns->memberAt(i); @@ -217,7 +217,7 @@ void CheckUndefinedSymbols::buildTypeMap(NamespaceBinding *binding, QSet<Namespa } } - foreach (NamespaceBinding *childBinding, binding->children()) { + foreach (NamespaceBinding *childBinding, binding->children) { buildTypeMap(childBinding, processed); } } diff --git a/src/libs/cplusplus/CppBindings.cpp b/src/libs/cplusplus/CppBindings.cpp index ecd2fff861144abaa5feeb35e580492984c19e66..577fa6c4ba233590b31b5bc40b2a9e2405f4ed7f 100644 --- a/src/libs/cplusplus/CppBindings.cpp +++ b/src/libs/cplusplus/CppBindings.cpp @@ -65,26 +65,24 @@ Location::Location(const StringLiteral *fileId, unsigned sourceLocation) // NamespaceBinding //////////////////////////////////////////////////////////////////////////////// -NamespaceBinding::NamespaceBinding(NamespaceBinding *nsparent) - : parent_(nsparent), - anonymousNamespaceBinding_(0) +NamespaceBinding::NamespaceBinding(NamespaceBinding *parent) + : parent(parent), + anonymousNamespaceBinding(0) { - if (parent()) - parent()->addChild(this); + if (parent) + parent->children.append(this); } NamespaceBinding::~NamespaceBinding() { - if(parent()) - parent()->removeChild(this); - qDeleteAll(children_); - qDeleteAll(classBindings_); + qDeleteAll(children); + qDeleteAll(classBindings); } const NameId *NamespaceBinding::name() const { - if (symbols().size()) { - if (const Name *name = symbols().first()->name()) { + if (symbols.size()) { + if (const Name *name = symbols.first()->name()) { const NameId *nameId = name->asNameId(); Q_ASSERT(nameId != 0); @@ -103,19 +101,19 @@ const Identifier *NamespaceBinding::identifier() const return 0; } -NamespaceBinding *NamespaceBinding::globalNamespaceBinding() const +NamespaceBinding *NamespaceBinding::globalNamespaceBinding() { - NamespaceBinding *it = const_cast<NamespaceBinding *>(this); + NamespaceBinding *it = this; - for (; it; it = it->parent()) { - if (! it->parent()) + for (; it; it = it->parent) { + if (! it->parent) break; } return it; } -Binding *NamespaceBinding::findClassOrNamespaceBinding(const Identifier *id, QSet<const Binding *> *processed) const +Binding *NamespaceBinding::findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed) { if (processed->contains(this)) return 0; @@ -125,28 +123,28 @@ Binding *NamespaceBinding::findClassOrNamespaceBinding(const Identifier *id, QSe if (id->isEqualTo(identifier())) return const_cast<NamespaceBinding *>(this); - foreach (NamespaceBinding *nestedNamespaceBinding, children()) { + foreach (NamespaceBinding *nestedNamespaceBinding, children) { if (id->isEqualTo(nestedNamespaceBinding->identifier())) return nestedNamespaceBinding; } - foreach (ClassBinding *classBinding, classBindings()) { + foreach (ClassBinding *classBinding, classBindings) { if (id->isEqualTo(classBinding->identifier())) return classBinding; } - foreach (NamespaceBinding *u, usings()) { + foreach (NamespaceBinding *u, usings) { if (Binding *b = u->findClassOrNamespaceBinding(id, processed)) return b; } - if (parent()) - return parent()->findClassOrNamespaceBinding(id, processed); + if (parent) + return parent->findClassOrNamespaceBinding(id, processed); return 0; } -ClassBinding *NamespaceBinding::findClassBinding(const Name *name, QSet<const Binding *> *processed) const +ClassBinding *NamespaceBinding::findClassBinding(const Name *name, QSet<Binding *> *processed) { if (! name) return 0; @@ -155,15 +153,15 @@ ClassBinding *NamespaceBinding::findClassBinding(const Name *name, QSet<const Bi return 0; if (const QualifiedNameId *q = name->asQualifiedNameId()) { - const Binding *current = this; + Binding *current = this; for (unsigned i = 0; i < q->nameCount(); ++i) { const Identifier *nameId = q->nameAt(i)->identifier(); if (! nameId) return 0; - QSet<const Binding *> visited; - const Binding *binding = current->findClassOrNamespaceBinding(nameId, &visited); // ### TODO: check recursion. + QSet<Binding *> visited; + Binding *binding = current->findClassOrNamespaceBinding(nameId, &visited); // ### TODO: check recursion. if (! binding) return 0; @@ -177,15 +175,15 @@ ClassBinding *NamespaceBinding::findClassBinding(const Name *name, QSet<const Bi const Identifier *id = name->identifier(); - foreach (ClassBinding *classBinding, classBindings()) { + foreach (ClassBinding *classBinding, classBindings) { if (id->isEqualTo(classBinding->identifier())) return classBinding; } - if (parent()) - return parent()->findClassBinding(name, processed); + if (parent) + return parent->findClassBinding(name, processed); - foreach (NamespaceBinding *u, usings()) { + foreach (NamespaceBinding *u, usings) { if (ClassBinding *classBinding = u->findClassBinding(name, processed)) return classBinding; } @@ -193,16 +191,16 @@ ClassBinding *NamespaceBinding::findClassBinding(const Name *name, QSet<const Bi return 0; } -NamespaceBinding *NamespaceBinding::findNamespaceBinding(const Name *name) const +NamespaceBinding *NamespaceBinding::findNamespaceBinding(const Name *name) { if (! name) - return anonymousNamespaceBinding(); + return anonymousNamespaceBinding; else if (const NameId *nameId = name->asNameId()) return findNamespaceBindingForNameId(nameId, /*lookAtParent = */ true); else if (const QualifiedNameId *q = name->asQualifiedNameId()) { - NamespaceBinding *current = const_cast<NamespaceBinding *>(this); + NamespaceBinding *current = this; for (unsigned i = 0; i < q->nameCount(); ++i) { const NameId *namespaceName = q->nameAt(i)->asNameId(); @@ -228,22 +226,22 @@ NamespaceBinding *NamespaceBinding::findNamespaceBinding(const Name *name) const } NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId(const NameId *name, - bool lookAtParentNamespace) const + bool lookAtParentNamespace) { - QSet<const NamespaceBinding *> processed; + QSet<NamespaceBinding *> processed; return findNamespaceBindingForNameId_helper(name, lookAtParentNamespace, &processed); } NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId_helper(const NameId *name, bool lookAtParentNamespace, - QSet<const NamespaceBinding *> *processed) const + QSet<NamespaceBinding *> *processed) { if (processed->contains(this)) return 0; processed->insert(this); - foreach (NamespaceBinding *binding, children()) { + foreach (NamespaceBinding *binding, children) { const Name *bindingName = binding->name(); if (! bindingName) @@ -255,52 +253,51 @@ NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId_helper(const N } } - foreach (NamespaceBinding *u, usings()) { + foreach (NamespaceBinding *u, usings) { if (NamespaceBinding *b = u->findNamespaceBindingForNameId_helper(name, lookAtParentNamespace, processed)) { return b; } } - if (lookAtParentNamespace && parent()) - return parent()->findNamespaceBindingForNameId_helper(name, lookAtParentNamespace, processed); + if (lookAtParentNamespace && parent) + return parent->findNamespaceBindingForNameId_helper(name, lookAtParentNamespace, processed); return 0; } NamespaceBinding *NamespaceBinding::findOrCreateNamespaceBinding(Namespace *symbol) { - NamespaceBinding *binding = findNamespaceBinding(symbol->name()); - if (binding) { + if (NamespaceBinding *binding = findNamespaceBinding(symbol->name())) { int index = 0; - for (; index < binding->symbols().size(); ++index) { - Namespace *ns = binding->symbols().at(index); + for (; index < binding->symbols.size(); ++index) { + Namespace *ns = binding->symbols.at(index); if (ns == symbol) break; } - if (index == binding->symbols().size()) - binding->addSymbol(symbol); + if (index == binding->symbols.size()) + binding->symbols.append(symbol); return binding; } - binding = new NamespaceBinding(this); - binding->addSymbol(symbol); + NamespaceBinding *binding = new NamespaceBinding(this); + binding->symbols.append(symbol); if (! symbol->name()) { - Q_ASSERT(! anonymousNamespaceBinding()); + Q_ASSERT(! anonymousNamespaceBinding); - setAnonymousNamespaceBinding(binding); + anonymousNamespaceBinding = binding; } return binding; } static void closure(const Location &loc, - const NamespaceBinding *binding, const Name *name, - QList<const NamespaceBinding *> *bindings) + NamespaceBinding *binding, const Name *name, + QList<NamespaceBinding *> *bindings) { if (bindings->contains(binding)) return; @@ -312,7 +309,7 @@ static void closure(const Location &loc, const Identifier *id = name->asNameId()->identifier(); bool ignoreUsingDirectives = false; - foreach (Namespace *symbol, binding->symbols()) { + foreach (Namespace *symbol, binding->symbols) { Scope *scope = symbol->members(); for (Symbol *symbol = scope->lookat(id); symbol; symbol = symbol->next()) { @@ -331,25 +328,25 @@ static void closure(const Location &loc, if (ignoreUsingDirectives) return; - foreach (NamespaceBinding *u, binding->usings()) + foreach (NamespaceBinding *u, binding->usings) closure(loc, u, name, bindings); } NamespaceBinding *NamespaceBinding::resolveNamespace(const Location &loc, const Name *name, - bool lookAtParent) const + bool lookAtParent) { if (! name) return 0; else if (const NameId *nameId = name->asNameId()) { - QList<const NamespaceBinding *> bindings; + QList<NamespaceBinding *> bindings; closure(loc, this, nameId, &bindings); QList<NamespaceBinding *> results; - foreach (const NamespaceBinding *binding, bindings) { + foreach (NamespaceBinding *binding, bindings) { if (NamespaceBinding *b = binding->findNamespaceBinding(nameId)) results.append(b); } @@ -362,8 +359,8 @@ NamespaceBinding *NamespaceBinding::resolveNamespace(const Location &loc, return results.at(0); } - else if (parent() && lookAtParent) - return parent()->resolveNamespace(loc, name); + else if (parent && lookAtParent) + return parent->resolveNamespace(loc, name); } else if (const QualifiedNameId *q = name->asQualifiedNameId()) { if (q->nameCount() == 1) { @@ -372,7 +369,7 @@ NamespaceBinding *NamespaceBinding::resolveNamespace(const Location &loc, return globalNamespaceBinding()->resolveNamespace(loc, q->nameAt(0)); } - const NamespaceBinding *current = this; + NamespaceBinding *current = this; if (q->isGlobal()) current = globalNamespaceBinding(); @@ -380,7 +377,7 @@ NamespaceBinding *NamespaceBinding::resolveNamespace(const Location &loc, for (unsigned i = 1; current && i < q->nameCount(); ++i) current = current->resolveNamespace(loc, q->nameAt(i), false); - return const_cast<NamespaceBinding *>(current); + return current; } return 0; @@ -389,12 +386,12 @@ NamespaceBinding *NamespaceBinding::resolveNamespace(const Location &loc, // ### rewrite me QByteArray NamespaceBinding::qualifiedId() const { - if (! parent()) + if (! parent) return "<root>"; QByteArray s; - s.append(parent()->qualifiedId()); + s.append(parent->qualifiedId()); s.append("::"); if (const Identifier *id = identifier()) @@ -409,7 +406,7 @@ QByteArray NamespaceBinding::qualifiedId() const // ### rewrite me QByteArray ClassBinding::qualifiedId() const { - QByteArray s = parent()->qualifiedId(); + QByteArray s = parent->qualifiedId(); s += "::"; if (const Identifier *id = identifier()) @@ -421,22 +418,22 @@ QByteArray ClassBinding::qualifiedId() const return s; } -Binding *ClassBinding::findClassOrNamespaceBinding(const Identifier *id, QSet<const Binding *> *processed) const +Binding *ClassBinding::findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed) { if (id->isEqualTo(identifier())) - return const_cast<ClassBinding *>(this); + return this; if (processed->contains(this)) return 0; processed->insert(this); - foreach (ClassBinding *nestedClassBinding, children()) { + foreach (ClassBinding *nestedClassBinding, children) { if (id->isEqualTo(nestedClassBinding->identifier())) return nestedClassBinding; } - foreach (ClassBinding *baseClassBinding, baseClassBindings()) { + foreach (ClassBinding *baseClassBinding, baseClassBindings) { if (! baseClassBinding) continue; @@ -444,13 +441,13 @@ Binding *ClassBinding::findClassOrNamespaceBinding(const Identifier *id, QSet<co return b; } - if (parent()) - return parent()->findClassOrNamespaceBinding(id, processed); + if (parent) + return parent->findClassOrNamespaceBinding(id, processed); return 0; } -ClassBinding *ClassBinding::findClassBinding(const Name *name, QSet<const Binding *> *processed) const +ClassBinding *ClassBinding::findClassBinding(const Name *name, QSet<Binding *> *processed) { if (! name) return 0; @@ -461,14 +458,14 @@ ClassBinding *ClassBinding::findClassBinding(const Name *name, QSet<const Bindin processed->insert(this); if (const QualifiedNameId *q = name->asQualifiedNameId()) { - const Binding *currentBinding = this; + Binding *currentBinding = this; for (unsigned i = 0; i < q->nameCount() - 1; ++i) { const Identifier *id = q->nameAt(i)->identifier(); if (! id) return 0; - const Binding *classOrNamespaceBinding = currentBinding->findClassOrNamespaceBinding(id, processed); + Binding *classOrNamespaceBinding = currentBinding->findClassOrNamespaceBinding(id, processed); if (! classOrNamespaceBinding) return 0; @@ -484,17 +481,17 @@ ClassBinding *ClassBinding::findClassBinding(const Name *name, QSet<const Bindin if (const Identifier *id = name->identifier()) { if (id->isEqualTo(identifier())) - return const_cast<ClassBinding *>(this); + return this; - foreach (ClassBinding *nestedClassBinding, children()) { + foreach (ClassBinding *nestedClassBinding, children) { if (const Identifier *nestedClassId = nestedClassBinding->identifier()) { if (nestedClassId->isEqualTo(id)) return nestedClassBinding; } } - if (parent()) - return parent()->findClassBinding(name, processed); + if (parent) + return parent->findClassBinding(name, processed); } return 0; @@ -505,15 +502,15 @@ static int depth; void NamespaceBinding::dump() { qDebug() << QByteArray(depth, ' ').constData() << "namespace" << qualifiedId().constData() - << " # " << symbols().size(); + << " # " << symbols.size(); ++depth; - foreach (ClassBinding *classBinding, classBindings()) { + foreach (ClassBinding *classBinding, classBindings) { classBinding->dump(); } - foreach (NamespaceBinding *child, children()) { + foreach (NamespaceBinding *child, children) { child->dump(); } @@ -523,11 +520,11 @@ void NamespaceBinding::dump() void ClassBinding::dump() { qDebug() << QByteArray(depth, ' ').constData() << "class" << qualifiedId().constData() - << " # " << symbols().size(); + << " # " << symbols.size(); ++depth; - foreach (ClassBinding *classBinding, children()) { + foreach (ClassBinding *classBinding, children) { classBinding->dump(); } @@ -537,33 +534,27 @@ void ClassBinding::dump() //////////////////////////////////////////////////////////////////////////////// // ClassBinding //////////////////////////////////////////////////////////////////////////////// -ClassBinding::ClassBinding(NamespaceBinding *nsbparent) - : parent_(nsbparent) +ClassBinding::ClassBinding(NamespaceBinding *parent) + : parent(parent) { - nsbparent->addClassBinding(this); + parent->classBindings.append(this); } ClassBinding::ClassBinding(ClassBinding *parentClass) - : parent_(parentClass) + : parent(parentClass) { - parentClass->addChild(this); + parentClass->children.append(this); } ClassBinding::~ClassBinding() -{ - if(parent()->asClassBinding() != NULL) - parent()->asClassBinding()->removeChild(this); - if(parent()->asNamespaceBinding() != NULL) - parent()->asNamespaceBinding()->removeClassBinding(this); - qDeleteAll(children_); -} +{ qDeleteAll(children); } const Name *ClassBinding::name() const { - if (symbols().isEmpty()) + if (symbols.isEmpty()) return 0; - return symbols().first()->name(); + return symbols.first()->name(); } const Identifier *ClassBinding::identifier() const @@ -621,7 +612,7 @@ protected: } Namespace *ns = doc->globalNamespace(); - _globals->addSymbol(ns); + _globals->symbols.append(ns); for (unsigned i = 0; i < ns->memberCount(); ++i) { (void) bind(ns->memberAt(i), _globals); @@ -637,7 +628,7 @@ protected: NamespaceBinding *switchNamespaceBinding(NamespaceBinding *binding); ClassBinding *findOrCreateClassBinding(Class *classSymbol); - ClassBinding *findClassBinding(const Name *name) const; + ClassBinding *findClassBinding(const Name *name); ClassBinding *switchClassBinding(ClassBinding *binding); @@ -672,9 +663,7 @@ NamespaceBinding *Binder::bind(Symbol *symbol, NamespaceBinding *binding) } NamespaceBinding *Binder::findOrCreateNamespaceBinding(Namespace *symbol) -{ - return namespaceBinding->findOrCreateNamespaceBinding(symbol); -} +{ return namespaceBinding->findOrCreateNamespaceBinding(symbol); } NamespaceBinding *Binder::resolveNamespace(const Location &loc, const Name *name) { @@ -701,13 +690,13 @@ ClassBinding *Binder::findOrCreateClassBinding(Class *classSymbol) else binding = new ClassBinding(namespaceBinding); - binding->addSymbol(classSymbol); + binding->symbols.append(classSymbol); return binding; } -ClassBinding *Binder::findClassBinding(const Name *name) const +ClassBinding *Binder::findClassBinding(const Name *name) { - QSet<const Binding *> processed; + QSet<Binding *> processed; if (classBinding) { if (ClassBinding *k = classBinding->findClassBinding(name, &processed)) @@ -749,7 +738,7 @@ bool Binder::visit(UsingNamespaceDirective *u) if (! resolved) return false; - namespaceBinding->addUsing(resolved); + namespaceBinding->usings.append(resolved); return false; } @@ -762,7 +751,7 @@ bool Binder::visit(Class *classSymbol) for (unsigned i = 0; i < classSymbol->baseClassCount(); ++i) { BaseClass *baseClass = classSymbol->baseClassAt(i); ClassBinding *baseClassBinding = findClassBinding(baseClass->name()); - binding->addBaseClassBinding(baseClassBinding); + binding->baseClassBindings.append(baseClassBinding); } for (unsigned i = 0; i < classSymbol->memberCount(); ++i) @@ -787,15 +776,15 @@ static NamespaceBinding *find_helper(Namespace *symbol, NamespaceBinding *bindin if (binding && ! processed->contains(binding)) { processed->insert(binding); - if (binding->symbols().contains(symbol)) + if (binding->symbols.contains(symbol)) return binding; - foreach (NamespaceBinding *nestedBinding, binding->children()) { + foreach (NamespaceBinding *nestedBinding, binding->children) { if (NamespaceBinding *ns = find_helper(symbol, nestedBinding, processed)) return ns; } - if (NamespaceBinding *a = find_helper(symbol, binding->anonymousNamespaceBinding(), processed)) + if (NamespaceBinding *a = find_helper(symbol, binding->anonymousNamespaceBinding, processed)) return a; } @@ -809,26 +798,26 @@ static ClassBinding *find_helper(Class *symbol, Binding *binding, processed->insert(binding); if (NamespaceBinding *namespaceBinding = binding->asNamespaceBinding()) { - foreach (ClassBinding *classBinding, namespaceBinding->classBindings()) { + foreach (ClassBinding *classBinding, namespaceBinding->classBindings) { if (ClassBinding *c = find_helper(symbol, classBinding, processed)) return c; } - foreach (NamespaceBinding *nestedBinding, namespaceBinding->children()) { + foreach (NamespaceBinding *nestedBinding, namespaceBinding->children) { if (ClassBinding *c = find_helper(symbol, nestedBinding, processed)) return c; } - if (ClassBinding *a = find_helper(symbol, namespaceBinding->anonymousNamespaceBinding(), processed)) + if (ClassBinding *a = find_helper(symbol, namespaceBinding->anonymousNamespaceBinding, processed)) return a; } else if (ClassBinding *classBinding = binding->asClassBinding()) { - foreach (Class *klass, classBinding->symbols()) { + foreach (Class *klass, classBinding->symbols) { if (klass == symbol) return classBinding; } - foreach (ClassBinding *nestedClassBinding, classBinding->children()) { + foreach (ClassBinding *nestedClassBinding, classBinding->children) { if (ClassBinding *c = find_helper(symbol, nestedClassBinding, processed)) return c; } @@ -864,72 +853,3 @@ NamespaceBindingPtr CPlusPlus::bind(Document::Ptr doc, Snapshot snapshot) return global; } -void NamespaceBinding::addChild(NamespaceBinding *nsbind) -{ - children_.append(nsbind); -} - -void NamespaceBinding::removeChild(NamespaceBinding *nsbind) -{ - children_.removeAll(nsbind); -} - -void NamespaceBinding::addUsing(NamespaceBinding *nsbind) -{ - usings_.append(nsbind); -} - -void NamespaceBinding::removeUsing(NamespaceBinding *nsbind) -{ - usings_.removeAll(nsbind); -} - -void NamespaceBinding::addSymbol(Namespace *nsbind) -{ - symbols_.append(nsbind); -} - -void NamespaceBinding::removeSymbol(Namespace *nsbind) -{ - symbols_.removeAll(nsbind); -} - -void NamespaceBinding::addClassBinding(ClassBinding *cbind) -{ - classBindings_.append(cbind); -} - -void NamespaceBinding::removeClassBinding(ClassBinding *cbind) -{ - classBindings_.removeAll(cbind); -} - -void ClassBinding::addChild(ClassBinding *cbind) -{ - children_.append(cbind); -} - -void ClassBinding::removeChild(ClassBinding *cbind) -{ - children_.removeAll(cbind); -} - -void ClassBinding::addSymbol(Class *symbol) -{ - symbols_.append(symbol); -} - -void ClassBinding::removeSymbol(Class *symbol) -{ - symbols_.removeAll(symbol); -} - -void ClassBinding::addBaseClassBinding(ClassBinding *cbind) -{ - baseClassBindings_.append(cbind); -} - -void ClassBinding::removeBaseClassBinding(ClassBinding *cbind) -{ - baseClassBindings_.removeAll(cbind); -} diff --git a/src/libs/cplusplus/CppBindings.h b/src/libs/cplusplus/CppBindings.h index d7e9685dd82c717fdb2674403eb3cad62aa343b2..d4f7380be73a12bd0a56963a6574edfdbeafe1e9 100644 --- a/src/libs/cplusplus/CppBindings.h +++ b/src/libs/cplusplus/CppBindings.h @@ -81,11 +81,11 @@ public: virtual ~Binding() {} virtual QByteArray qualifiedId() const = 0; - virtual NamespaceBinding *asNamespaceBinding() const { return 0; } - virtual ClassBinding *asClassBinding() const { return 0; } + virtual NamespaceBinding *asNamespaceBinding() { return 0; } + virtual ClassBinding *asClassBinding() { return 0; } - virtual ClassBinding *findClassBinding(const Name *name, QSet<const Binding *> *processed) const = 0; - virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<const Binding *> *processed) const = 0; + virtual ClassBinding *findClassBinding(const Name *name, QSet<Binding *> *processed) = 0; + virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed) = 0; }; class CPLUSPLUS_EXPORT NamespaceBinding: public Binding @@ -104,20 +104,20 @@ public: const Identifier *identifier() const; /// Returns the binding for the global namespace (aka ::). - NamespaceBinding *globalNamespaceBinding() const; + NamespaceBinding *globalNamespaceBinding(); /// Returns the binding for the given namespace symbol. - NamespaceBinding *findNamespaceBinding(const Name *name) const; + NamespaceBinding *findNamespaceBinding(const Name *name); /// Returns the binding associated with the given symbol. NamespaceBinding *findOrCreateNamespaceBinding(Namespace *symbol); NamespaceBinding *resolveNamespace(const Location &loc, const Name *name, - bool lookAtParent = true) const; + bool lookAtParent = true); - virtual ClassBinding *findClassBinding(const Name *name, QSet<const Binding *> *processed) const; - virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<const Binding *> *processed) const; + virtual ClassBinding *findClassBinding(const Name *name, QSet<Binding *> *processed); + virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed); /// Helpers. virtual QByteArray qualifiedId() const; @@ -128,46 +128,31 @@ public: static NamespaceBinding *find(Namespace *symbol, NamespaceBinding *binding); static ClassBinding *find(Class *symbol, NamespaceBinding *binding); - NamespaceBinding *parent() const {return parent_;} - NamespaceBinding *anonymousNamespaceBinding() const {return anonymousNamespaceBinding_;} - void setAnonymousNamespaceBinding(NamespaceBinding *binding) { anonymousNamespaceBinding_ = binding; } - const QList<NamespaceBinding *> &children() const {return children_;} - void addChild(NamespaceBinding *); - void removeChild(NamespaceBinding *); - const QList<NamespaceBinding *> &usings() const {return usings_;} - void addUsing(NamespaceBinding *); - void removeUsing(NamespaceBinding *); - const QList<Namespace *> &symbols() const {return symbols_;} - void addSymbol(Namespace *); - void removeSymbol(Namespace *); - const QList<ClassBinding *> &classBindings() const {return classBindings_;} - void addClassBinding(ClassBinding *); - void removeClassBinding(ClassBinding *); private: NamespaceBinding *findNamespaceBindingForNameId(const NameId *name, - bool lookAtParentNamespace) const; + bool lookAtParentNamespace); NamespaceBinding *findNamespaceBindingForNameId_helper(const NameId *name, bool lookAtParentNamespace, - QSet<const NamespaceBinding *> *processed) const; + QSet<NamespaceBinding *> *processed); -private: // attributes +public: // attributes /// This binding's parent. - NamespaceBinding *parent_; + NamespaceBinding *parent; /// Binding for anonymous namespace symbols. - NamespaceBinding *anonymousNamespaceBinding_; + NamespaceBinding *anonymousNamespaceBinding; /// This binding's connections. - QList<NamespaceBinding *> children_; + QList<NamespaceBinding *> children; /// This binding's list of using namespaces. - QList<NamespaceBinding *> usings_; + QList<NamespaceBinding *> usings; /// This binding's namespace symbols. - QList<Namespace *> symbols_; + QList<Namespace *> symbols; - QList<ClassBinding *> classBindings_; + QList<ClassBinding *> classBindings; }; class CPLUSPLUS_EXPORT ClassBinding: public Binding @@ -186,32 +171,21 @@ public: const Identifier *identifier() const; virtual QByteArray qualifiedId() const; - virtual ClassBinding *findClassBinding(const Name *name, QSet<const Binding *> *processed) const; - virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<const Binding *> *processed) const; + virtual ClassBinding *findClassBinding(const Name *name, QSet<Binding *> *processed); + virtual Binding *findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed); void dump(); - Binding *parent() const { return parent_; } - const QList<ClassBinding *> &children() const { return children_; } - void addChild(ClassBinding *); - void removeChild(ClassBinding *); - const QList<Class *> &symbols() const { return symbols_; } - void addSymbol(Class *symbol); - void removeSymbol(Class *symbol); - const QList<ClassBinding *> &baseClassBindings() const { return baseClassBindings_; } - void addBaseClassBinding(ClassBinding *); - void removeBaseClassBinding(ClassBinding *); +public: // attributes + Binding *parent; -private: // attributes - Binding *parent_; - - QList<ClassBinding *> children_; + QList<ClassBinding *> children; /// This binding's class symbols. - QList<Class *> symbols_; + QList<Class *> symbols; /// Bindings for the base classes. - QList<ClassBinding *> baseClassBindings_; + QList<ClassBinding *> baseClassBindings; }; CPLUSPLUS_EXPORT NamespaceBindingPtr bind(Document::Ptr doc, Snapshot snapshot); diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 3d24d198eedd159fe4c81768034642bd84a44bf9..93b1c0704750781511f1eaea394e20d544b8a774 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -643,7 +643,7 @@ static void visibleClassBindings_helper(ClassBinding *classBinding, processed->insert(classBinding); - foreach (ClassBinding *baseClassBinding, classBinding->baseClassBindings()) + foreach (ClassBinding *baseClassBinding, classBinding->baseClassBindings) visibleClassBindings_helper(baseClassBinding, allClassBindings, processed); allClassBindings->append(classBinding); @@ -682,7 +682,7 @@ Symbol *LookupContext::canonicalSymbol(Symbol *symbol, if (! baseClassBinding) continue; - foreach (Class *baseClass, baseClassBinding->symbols()) { + foreach (Class *baseClass, baseClassBinding->symbols) { if (! baseClass) continue;