diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-03-11 20:25:10 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-03-11 20:25:10 +0000 |
commit | ff7fea809bab2badd0cb241703b14ac20ac258cb (patch) | |
tree | 02f3bb2587d9520767dd33d52a257c607f63c2b5 | |
parent | 2d2e9cfdc1dbb6e4a22f8c0b1abcd30437e3795d (diff) |
Eliminate CXXClassMemberWrapper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66698 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/AST/DeclCXX.h | 30 | ||||
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 5 |
2 files changed, 1 insertions, 34 deletions
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<CXXRecordDecl>(MD->getDeclContext()); - } - - static bool isMember(Decl *D) { - return isa<CXXRecordDecl>(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 |