From 67f9e61127ebfaf4925b95597dd6d7d35fcb75c0 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Sat, 22 Jan 2011 17:22:48 +0000 Subject: [PATCH] Add final/explicit getters and setters to CXXRecordDecl. llvm-svn: 124037 --- clang/include/clang/AST/DeclCXX.h | 20 +++++++++++++++++++- clang/lib/AST/DeclCXX.cpp | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h index ffa459e673e3..cc3e4a52aa64 100644 --- a/clang/include/clang/AST/DeclCXX.h +++ b/clang/include/clang/AST/DeclCXX.h @@ -356,6 +356,12 @@ class CXXRecordDecl : public RecordDecl { /// \brief Whether we have already declared a destructor within the class. bool DeclaredDestructor : 1; + /// \brief Whether this class is marked 'final'. + bool IsMarkedFinal : 1; + + /// \brief Whether this class is marked 'explicit'. + bool IsMarkedExplicit : 1; + /// NumBases - The number of base class specifiers in Bases. unsigned NumBases; @@ -658,7 +664,19 @@ public: /// /// This value is used for lazy creation of destructors. bool hasDeclaredDestructor() const { return data().DeclaredDestructor; } - + + /// \brief Whether this class is marked 'final'. + bool isMarkedFinal() const { return data().IsMarkedFinal; } + + /// \brief Mark this class as 'final'. + void setIsMarkedFinal(bool IMF) { data().IsMarkedFinal = IMF; } + + /// \brief Whether this class is marked 'explicit'. + bool isMarkedExplicit() const { return data().IsMarkedExplicit; } + + /// \brief Mark this class as 'explicit'. + void setIsMarkedExplicit(bool IME) { data().IsMarkedExplicit = IME; } + /// getConversions - Retrieve the overload set containing all of the /// conversion functions in this class. UnresolvedSetImpl *getConversionFunctions() { diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index 334ee795f360..370cbfc0f1b6 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -36,6 +36,7 @@ CXXRecordDecl::DefinitionData::DefinitionData(CXXRecordDecl *D) HasTrivialDestructor(true), ComputedVisibleConversions(false), DeclaredDefaultConstructor(false), DeclaredCopyConstructor(false), DeclaredCopyAssignment(false), DeclaredDestructor(false), + IsMarkedFinal(false), IsMarkedExplicit(false), NumBases(0), NumVBases(0), Bases(), VBases(), Definition(D), FirstFriend(0) { }