diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-12-01 14:38:42 +0100 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-12-01 14:39:00 +0100 |
commit | c4737c1fdf5ab3d950adaa5002367797c993ed37 (patch) | |
tree | dc5f6672e11f04776448cd80a05b172ea4f9bc99 /src/shared/cplusplus/Names.h | |
parent | c4d127427377d26611d5f9240e85568fb7d69046 (diff) | |
download | qt-creator-c4737c1fdf5ab3d950adaa5002367797c993ed37.tar.gz |
Store the names in a set.
Diffstat (limited to 'src/shared/cplusplus/Names.h')
-rw-r--r-- | src/shared/cplusplus/Names.h | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/src/shared/cplusplus/Names.h b/src/shared/cplusplus/Names.h index 9bae0e07fb..9ce31a9b60 100644 --- a/src/shared/cplusplus/Names.h +++ b/src/shared/cplusplus/Names.h @@ -59,7 +59,10 @@ namespace CPlusPlus { class CPLUSPLUS_EXPORT QualifiedNameId: public Name { public: - QualifiedNameId(const Name *const *names, unsigned nameCount, bool isGlobal = false); + template <typename _Iterator> + QualifiedNameId(_Iterator first, _Iterator last, bool isGlobal = false) + : _names(first, last), _isGlobal(isGlobal) {} + virtual ~QualifiedNameId(); virtual const Identifier *identifier() const; @@ -75,6 +78,11 @@ public: virtual const QualifiedNameId *asQualifiedNameId() const { return this; } + typedef std::vector<const Name *>::const_iterator NameIterator; + + NameIterator firstName() const { return _names.begin(); } + NameIterator lastName() const { return _names.end(); } + protected: virtual void accept0(NameVisitor *visitor) const; @@ -126,9 +134,10 @@ private: class CPLUSPLUS_EXPORT TemplateNameId: public Name { public: - TemplateNameId(const Identifier *identifier, - const FullySpecifiedType templateArguments[], - unsigned templateArgumentCount); + template <typename _Iterator> + TemplateNameId(const Identifier *identifier, _Iterator first, _Iterator last) + : _identifier(identifier), _templateArguments(first, last) {} + virtual ~TemplateNameId(); virtual const Identifier *identifier() const; @@ -142,6 +151,11 @@ public: virtual const TemplateNameId *asTemplateNameId() const { return this; } + typedef std::vector<FullySpecifiedType>::const_iterator TemplateArgumentIterator; + + TemplateArgumentIterator firstTemplateArgument() const { return _templateArguments.begin(); } + TemplateArgumentIterator lastTemplateArgument() const { return _templateArguments.end(); } + protected: virtual void accept0(NameVisitor *visitor) const; @@ -250,7 +264,10 @@ private: class CPLUSPLUS_EXPORT SelectorNameId: public Name { public: - SelectorNameId(const Name *const *names, unsigned nameCount, bool hasArguments); + template <typename _Iterator> + SelectorNameId(_Iterator first, _Iterator last, bool hasArguments) + : _names(first, last), _hasArguments(hasArguments) {} + virtual ~SelectorNameId(); virtual const Identifier *identifier() const; @@ -264,6 +281,11 @@ public: virtual const SelectorNameId *asSelectorNameId() const { return this; } + typedef std::vector<const Name *>::const_iterator NameIterator; + + NameIterator firstName() const { return _names.begin(); } + NameIterator lastName() const { return _names.end(); } + protected: virtual void accept0(NameVisitor *visitor) const; @@ -274,5 +296,4 @@ private: } // end of namespace CPlusPlus - #endif // CPLUSPLUS_NAMES_H |