]> granicus.if.org Git - clang/commitdiff
Add VarDecl::getStorageClassSpecifierString (StorageClass -> const char*).
authorDaniel Dunbar <daniel@zuster.org>
Tue, 14 Apr 2009 02:08:49 +0000 (02:08 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 14 Apr 2009 02:08:49 +0000 (02:08 +0000)
 - No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69019 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 83de9470884a8f25d5b46ee812841d410be81cbf..fd6e210104f66d4338df7ce362b5fe2c5a9d8089 100644 (file)
@@ -221,6 +221,13 @@ public:
   enum StorageClass {
     None, Auto, Register, Extern, Static, PrivateExtern
   };
+
+  /// getStorageClassSpecifierString - Return the string used to
+  /// specify the storage class \arg SC.
+  ///
+  /// It is illegal to call this function with SC == None.
+  static const char *getStorageClassSpecifierString(StorageClass SC);
+
 private:
   Stmt *Init;
   // FIXME: This can be packed into the bitfields in Decl.
index f0d32c75de60802389cf6ceac1470f75c16e76b4..d733c8c929fb3b62b118d97da1b719fe6507de26 100644 (file)
@@ -60,6 +60,20 @@ ImplicitParamDecl *ImplicitParamDecl::Create(ASTContext &C, DeclContext *DC,
   return new (C) ImplicitParamDecl(ImplicitParam, DC, L, Id, T);
 }
 
+const char *VarDecl::getStorageClassSpecifierString(StorageClass SC) {
+  switch (SC) {
+  case VarDecl::None:          break;
+  case VarDecl::Auto:          return "auto"; break;
+  case VarDecl::Extern:        return "extern"; break;
+  case VarDecl::PrivateExtern: return "__private_extern__"; break; 
+  case VarDecl::Register:      return "register"; break;
+  case VarDecl::Static:        return "static"; break; 
+  }
+
+  assert(0 && "Invalid storage class");
+  return 0;
+}
+
 ParmVarDecl *ParmVarDecl::Create(ASTContext &C, DeclContext *DC,
                                  SourceLocation L, IdentifierInfo *Id,
                                  QualType T, StorageClass S,