Commit 17d047ce authored by Roberto Raggi's avatar Roberto Raggi

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

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