From 17d047ced8966bb377a0937a35ab299f86e654a6 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <qtc-committer@nokia.com> Date: Mon, 9 Feb 2009 16:32:56 +0100 Subject: [PATCH] Reimplemented Name::as*() using virtual functions. --- src/shared/cplusplus/Name.cpp | 48 +++++------------------------------ src/shared/cplusplus/Name.h | 24 +++++++++--------- src/shared/cplusplus/Names.h | 36 ++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src/shared/cplusplus/Name.cpp b/src/shared/cplusplus/Name.cpp index 89e875a93cb..476a1eff488 100644 --- a/src/shared/cplusplus/Name.cpp +++ b/src/shared/cplusplus/Name.cpp @@ -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) { diff --git a/src/shared/cplusplus/Name.h b/src/shared/cplusplus/Name.h index 1f30a285166..6fd73d305f2 100644 --- a/src/shared/cplusplus/Name.h +++ b/src/shared/cplusplus/Name.h @@ -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; diff --git a/src/shared/cplusplus/Names.h b/src/shared/cplusplus/Names.h index 86e6813c6c2..1423c4b96fb 100644 --- a/src/shared/cplusplus/Names.h +++ b/src/shared/cplusplus/Names.h @@ -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); -- GitLab