From: Douglas Gregor Date: Wed, 11 Mar 2009 20:25:10 +0000 (+0000) Subject: Eliminate CXXClassMemberWrapper X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ff7fea809bab2badd0cb241703b14ac20ac258cb;p=clang Eliminate CXXClassMemberWrapper git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66698 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/DeclCXX.h b/include/clang/AST/DeclCXX.h index 52ed01d04b..7b5eba78f7 100644 --- a/include/clang/AST/DeclCXX.h +++ b/include/clang/AST/DeclCXX.h @@ -759,36 +759,6 @@ public: static CXXConversionDecl* CreateImpl(llvm::Deserializer& D, ASTContext& C); }; -/// CXXClassMemberWrapper - A wrapper class for C++ class member decls. -/// Common functions like set/getAccess are included here to avoid bloating -/// the interface of non-C++ specific decl classes, like NamedDecl. -/// FIXME: Doug would like to remove this class. -class CXXClassMemberWrapper { - Decl *MD; - -public: - CXXClassMemberWrapper(Decl *D) : MD(D) { - assert(isMember(D) && "Not a C++ class member!"); - } - - AccessSpecifier getAccess() const { - return AccessSpecifier(MD->Access); - } - - void setAccess(AccessSpecifier AS) { - assert(AS != AS_none && "Access must be specified."); - MD->Access = AS; - } - - CXXRecordDecl *getParent() const { - return dyn_cast(MD->getDeclContext()); - } - - static bool isMember(Decl *D) { - return isa(D->getDeclContext()); - } -}; - /// LinkageSpecDecl - This represents a linkage specification. For example: /// extern "C" void foo(); /// diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index fa6fcc8c35..bedea3a7cd 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -585,10 +585,7 @@ Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, assert((Name || isInstField) && "No identifier for non-field ?"); - // set/getAccess is not part of Decl's interface to avoid bloating it with C++ - // specific methods. Use a wrapper class that can be used with all C++ class - // member decls. - CXXClassMemberWrapper(Member).setAccess(AS); + Member->setAccess(AS); // C++ [dcl.init.aggr]p1: // An aggregate is an array or a class (clause 9) with [...] no