Skip to content
Snippets Groups Projects
Commit 17d047ce authored by Roberto Raggi's avatar Roberto Raggi
Browse files

Reimplemented Name::as*() using virtual functions.

parent 2f905392
No related branches found
No related tags found
No related merge requests found
...@@ -63,58 +63,22 @@ Name::~Name() ...@@ -63,58 +63,22 @@ Name::~Name()
{ } { }
bool Name::isNameId() const bool Name::isNameId() const
{ return dynamic_cast<const NameId *>(this) != 0; } { return asNameId() != 0; }
bool Name::isTemplateNameId() const bool Name::isTemplateNameId() const
{ return dynamic_cast<const TemplateNameId *>(this) != 0; } { return asTemplateNameId() != 0; }
bool Name::isDestructorNameId() const bool Name::isDestructorNameId() const
{ return dynamic_cast<const DestructorNameId *>(this) != 0; } { return asDestructorNameId() != 0; }
bool Name::isOperatorNameId() const bool Name::isOperatorNameId() const
{ return dynamic_cast<const OperatorNameId *>(this) != 0; } { return asOperatorNameId() != 0; }
bool Name::isConversionNameId() const bool Name::isConversionNameId() const
{ return dynamic_cast<const ConversionNameId *>(this) != 0; } { return asConversionNameId() != 0; }
bool Name::isQualifiedNameId() const bool Name::isQualifiedNameId() const
{ return dynamic_cast<const QualifiedNameId *>(this) != 0; } { return asQualifiedNameId() != 0; }
const NameId *Name::asNameId() const
{ return dynamic_cast<const NameId *>(this); }
const TemplateNameId *Name::asTemplateNameId() const
{ return dynamic_cast<const TemplateNameId *>(this); }
const DestructorNameId *Name::asDestructorNameId() const
{ return dynamic_cast<const DestructorNameId *>(this); }
const OperatorNameId *Name::asOperatorNameId() const
{ return dynamic_cast<const OperatorNameId *>(this); }
const ConversionNameId *Name::asConversionNameId() const
{ return dynamic_cast<const ConversionNameId *>(this); }
const QualifiedNameId *Name::asQualifiedNameId() const
{ return dynamic_cast<const QualifiedNameId *>(this); }
NameId *Name::asNameId()
{ return dynamic_cast<NameId *>(this); }
TemplateNameId *Name::asTemplateNameId()
{ return dynamic_cast<TemplateNameId *>(this); }
DestructorNameId *Name::asDestructorNameId()
{ return dynamic_cast<DestructorNameId *>(this); }
OperatorNameId *Name::asOperatorNameId()
{ return dynamic_cast<OperatorNameId *>(this); }
ConversionNameId *Name::asConversionNameId()
{ return dynamic_cast<ConversionNameId *>(this); }
QualifiedNameId *Name::asQualifiedNameId()
{ return dynamic_cast<QualifiedNameId *>(this); }
void Name::accept(NameVisitor *visitor) void Name::accept(NameVisitor *visitor)
{ {
......
...@@ -74,19 +74,19 @@ public: ...@@ -74,19 +74,19 @@ public:
bool isConversionNameId() const; bool isConversionNameId() const;
bool isQualifiedNameId() const; bool isQualifiedNameId() const;
const NameId *asNameId() const; virtual const NameId *asNameId() const { return 0; }
const TemplateNameId *asTemplateNameId() const; virtual const TemplateNameId *asTemplateNameId() const { return 0; }
const DestructorNameId *asDestructorNameId() const; virtual const DestructorNameId *asDestructorNameId() const { return 0; }
const OperatorNameId *asOperatorNameId() const; virtual const OperatorNameId *asOperatorNameId() const { return 0; }
const ConversionNameId *asConversionNameId() const; virtual const ConversionNameId *asConversionNameId() const { return 0; }
const QualifiedNameId *asQualifiedNameId() const; virtual const QualifiedNameId *asQualifiedNameId() const { return 0; }
NameId *asNameId(); virtual NameId *asNameId() { return 0; }
TemplateNameId *asTemplateNameId(); virtual TemplateNameId *asTemplateNameId() { return 0; }
DestructorNameId *asDestructorNameId(); virtual DestructorNameId *asDestructorNameId() { return 0; }
OperatorNameId *asOperatorNameId(); virtual OperatorNameId *asOperatorNameId() { return 0; }
ConversionNameId *asConversionNameId(); virtual ConversionNameId *asConversionNameId() { return 0; }
QualifiedNameId *asQualifiedNameId(); virtual QualifiedNameId *asQualifiedNameId() { return 0; }
virtual bool isEqualTo(const Name *other) const = 0; virtual bool isEqualTo(const Name *other) const = 0;
......
...@@ -77,6 +77,12 @@ public: ...@@ -77,6 +77,12 @@ public:
virtual bool isEqualTo(const Name *other) const; virtual bool isEqualTo(const Name *other) const;
virtual const QualifiedNameId *asQualifiedNameId() const
{ return this; }
virtual QualifiedNameId *asQualifiedNameId()
{ return this; }
protected: protected:
virtual void accept0(NameVisitor *visitor); virtual void accept0(NameVisitor *visitor);
...@@ -96,6 +102,12 @@ public: ...@@ -96,6 +102,12 @@ public:
virtual bool isEqualTo(const Name *other) const; virtual bool isEqualTo(const Name *other) const;
virtual const NameId *asNameId() const
{ return this; }
virtual NameId *asNameId()
{ return this; }
protected: protected:
virtual void accept0(NameVisitor *visitor); virtual void accept0(NameVisitor *visitor);
...@@ -113,6 +125,12 @@ public: ...@@ -113,6 +125,12 @@ public:
virtual bool isEqualTo(const Name *other) const; virtual bool isEqualTo(const Name *other) const;
virtual const DestructorNameId *asDestructorNameId() const
{ return this; }
virtual DestructorNameId *asDestructorNameId()
{ return this; }
protected: protected:
virtual void accept0(NameVisitor *visitor); virtual void accept0(NameVisitor *visitor);
...@@ -137,6 +155,12 @@ public: ...@@ -137,6 +155,12 @@ public:
virtual bool isEqualTo(const Name *other) const; virtual bool isEqualTo(const Name *other) const;
virtual const TemplateNameId *asTemplateNameId() const
{ return this; }
virtual TemplateNameId *asTemplateNameId()
{ return this; }
protected: protected:
virtual void accept0(NameVisitor *visitor); virtual void accept0(NameVisitor *visitor);
...@@ -211,6 +235,12 @@ public: ...@@ -211,6 +235,12 @@ public:
virtual bool isEqualTo(const Name *other) const; virtual bool isEqualTo(const Name *other) const;
virtual const OperatorNameId *asOperatorNameId() const
{ return this; }
virtual OperatorNameId *asOperatorNameId()
{ return this; }
protected: protected:
virtual void accept0(NameVisitor *visitor); virtual void accept0(NameVisitor *visitor);
...@@ -228,6 +258,12 @@ public: ...@@ -228,6 +258,12 @@ public:
virtual bool isEqualTo(const Name *other) const; virtual bool isEqualTo(const Name *other) const;
virtual const ConversionNameId *asConversionNameId() const
{ return this; }
virtual ConversionNameId *asConversionNameId()
{ return this; }
protected: protected:
virtual void accept0(NameVisitor *visitor); virtual void accept0(NameVisitor *visitor);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment