summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Names.h
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-12-01 14:38:42 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-12-01 14:39:00 +0100
commitc4737c1fdf5ab3d950adaa5002367797c993ed37 (patch)
treedc5f6672e11f04776448cd80a05b172ea4f9bc99 /src/shared/cplusplus/Names.h
parentc4d127427377d26611d5f9240e85568fb7d69046 (diff)
downloadqt-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.h33
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