]> granicus.if.org Git - clang/commitdiff
Add final/explicit getters and setters to CXXRecordDecl.
authorAnders Carlsson <andersca@mac.com>
Sat, 22 Jan 2011 17:22:48 +0000 (17:22 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 22 Jan 2011 17:22:48 +0000 (17:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124037 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/DeclCXX.h
lib/AST/DeclCXX.cpp

index ffa459e673e3218db378348c88f058e12771b49a..cc3e4a52aa64e4f99d37f8c032c5e792c9da2cd0 100644 (file)
@@ -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() {
index 334ee795f360dcc63a518a872d7f768707e8080c..370cbfc0f1b6e4f55db9f54f8375b7cfdfb3f36e 100644 (file)
@@ -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) {
 }