]> granicus.if.org Git - clang/commitdiff
Start stubbing out a ClassVirtSpecifiers class.
authorAnders Carlsson <andersca@mac.com>
Sat, 22 Jan 2011 15:11:37 +0000 (15:11 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 22 Jan 2011 15:11:37 +0000 (15:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124032 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Sema/DeclSpec.h
lib/Sema/DeclSpec.cpp

index 0f8624f0a3db048a76439d531091a0285d59904d..7d5b8b41c8fc0a91ca48577d4d063e5467a5e9f0 100644 (file)
@@ -1468,7 +1468,7 @@ struct FieldDeclarator {
   }
 };
 
-/// 
+/// VirtSpecifiers - Represents a C++0x virt-specifier-seq.
 class VirtSpecifiers {
 public:
   enum VirtSpecifier {
@@ -1501,6 +1501,31 @@ private:
 
 };
 
+/// ClassVirtSpecifiers - Represents a C++0x class-virt-specifier-seq.
+class ClassVirtSpecifiers {
+public:
+  enum ClassVirtSpecifier {
+    CVS_None = 0,
+    CVS_Final = 1,
+    CVS_Explicit = 2
+  };
+
+  ClassVirtSpecifiers() : Specifiers(0) { }
+
+  bool isFinalSpecified() const { return Specifiers & CVS_Final; }
+  SourceLocation getFinalLoc() const { return CVS_finalLoc; }
+
+  bool isExplicitSpecified() const { return Specifiers & CVS_Explicit; }
+  SourceLocation getExplicitLoc() const { return CVS_explicitLoc; }
+
+private:
+  unsigned Specifiers;
+
+  SourceLocation CVS_finalLoc, CVS_explicitLoc;
+
+  static const char *getSpecifierName(ClassVirtSpecifier CVS);
+};
+
 } // end namespace clang
 
 #endif
index 5ead0c5f136b45a57a5914a3b049809d0e9256e1..3facfac7a39115c2d8bd086b3cef5191222d2dad 100644 (file)
@@ -669,15 +669,6 @@ void UnqualifiedId::setOperatorFunctionId(SourceLocation OperatorLoc,
   }
 }
 
-const char *VirtSpecifiers::getSpecifierName(VirtSpecifier VS) {
-  switch (VS) {
-  default: assert(0 && "Unknown specifier");
-  case VS_Override: return "override";
-  case VS_Final: return "final";
-  case VS_New: return "new";
-  }
-}
-
 bool VirtSpecifiers::SetVirtSpecifier(VirtSpecifier VS, SourceLocation Loc,
                                       const char *&PrevSpec) {
   if (Specifiers & VS) {
@@ -696,3 +687,11 @@ bool VirtSpecifiers::SetVirtSpecifier(VirtSpecifier VS, SourceLocation Loc,
   return false;
 }
 
+const char *VirtSpecifiers::getSpecifierName(VirtSpecifier VS) {
+  switch (VS) {
+  default: assert(0 && "Unknown specifier");
+  case VS_Override: return "override";
+  case VS_Final: return "final";
+  case VS_New: return "new";
+  }
+}