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 | 775d0925502807477462d1ba9ad0da03d239edd4 (patch) | |
| tree | 428077ff52f44690757afe740b0de29a0ab2c453 | |
| parent | 42225e50f3ec3184b375442719b3945b82251fe0 (diff) | |
| download | bcm5719-llvm-775d0925502807477462d1ba9ad0da03d239edd4.tar.gz bcm5719-llvm-775d0925502807477462d1ba9ad0da03d239edd4.zip | |
Eliminate CXXClassMemberWrapper
llvm-svn: 66698
| -rw-r--r-- | clang/include/clang/AST/DeclCXX.h | 30 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 5 |
2 files changed, 1 insertions, 34 deletions
diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h index 52ed01d04bd..7b5eba78f7c 100644 --- a/clang/include/clang/AST/DeclCXX.h +++ b/clang/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/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index fa6fcc8c35a..bedea3a7cd7 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/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 |

