From: Daniel Dunbar Date: Tue, 14 Apr 2009 02:08:49 +0000 (+0000) Subject: Add VarDecl::getStorageClassSpecifierString (StorageClass -> const char*). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b286a78c8cce4592306dae6abc3656daf6379c77;p=clang Add VarDecl::getStorageClassSpecifierString (StorageClass -> const char*). - No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69019 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h index 83de947088..fd6e210104 100644 --- a/include/clang/AST/Decl.h +++ b/include/clang/AST/Decl.h @@ -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. diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index f0d32c75de..d733c8c929 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -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,