From d2685209293a54fc2d888353c1fb839dcde616ef Mon Sep 17 00:00:00 2001 From: Zhongxing Xu Date: Sat, 10 Jan 2009 14:38:38 +0000 Subject: [PATCH] add a bunch of castToDeclContext/castFromDeclContext methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62027 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/AST/DeclCXX.h | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/include/clang/AST/DeclCXX.h b/include/clang/AST/DeclCXX.h index 567751d710..5dbcce1432 100644 --- a/include/clang/AST/DeclCXX.h +++ b/include/clang/AST/DeclCXX.h @@ -489,6 +489,12 @@ public: return D->getKind() >= CXXMethod && D->getKind() <= CXXConversion; } static bool classof(const CXXMethodDecl *D) { return true; } + static DeclContext *castToDeclContext(const CXXMethodDecl *D) { + return static_cast(const_cast(D)); + } + static CXXMethodDecl *castFromDeclContext(const DeclContext *DC) { + return static_cast(const_cast(DC)); + } protected: /// EmitImpl - Serialize this CXXMethodDecl. Called by Decl::Emit. @@ -697,7 +703,12 @@ public: return D->getKind() == CXXConstructor; } static bool classof(const CXXConstructorDecl *D) { return true; } - + static DeclContext *castToDeclContext(const CXXConstructorDecl *D) { + return static_cast(const_cast(D)); + } + static CXXConstructorDecl *castFromDeclContext(const DeclContext *DC) { + return static_cast(const_cast(DC)); + } /// EmitImpl - Serialize this CXXConstructorDecl. Called by Decl::Emit. // FIXME: Implement this. //virtual void EmitImpl(llvm::Serializer& S) const; @@ -763,7 +774,12 @@ public: return D->getKind() == CXXDestructor; } static bool classof(const CXXDestructorDecl *D) { return true; } - + static DeclContext *castToDeclContext(const CXXDestructorDecl *D) { + return static_cast(const_cast(D)); + } + static CXXDestructorDecl *castFromDeclContext(const DeclContext *DC) { + return static_cast(const_cast(DC)); + } /// EmitImpl - Serialize this CXXDestructorDecl. Called by Decl::Emit. // FIXME: Implement this. //virtual void EmitImpl(llvm::Serializer& S) const; @@ -817,7 +833,12 @@ public: return D->getKind() == CXXConversion; } static bool classof(const CXXConversionDecl *D) { return true; } - + static DeclContext *castToDeclContext(const CXXConversionDecl *D) { + return static_cast(const_cast(D)); + } + static CXXConversionDecl *castFromDeclContext(const DeclContext *DC) { + return static_cast(const_cast(DC)); + } /// EmitImpl - Serialize this CXXConversionDecl. Called by Decl::Emit. // FIXME: Implement this. //virtual void EmitImpl(llvm::Serializer& S) const; -- 2.40.0