summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-03-11 20:25:10 +0000
committerDouglas Gregor <dgregor@apple.com>2009-03-11 20:25:10 +0000
commit775d0925502807477462d1ba9ad0da03d239edd4 (patch)
tree428077ff52f44690757afe740b0de29a0ab2c453
parent42225e50f3ec3184b375442719b3945b82251fe0 (diff)
downloadbcm5719-llvm-775d0925502807477462d1ba9ad0da03d239edd4.tar.gz
bcm5719-llvm-775d0925502807477462d1ba9ad0da03d239edd4.zip
Eliminate CXXClassMemberWrapper
llvm-svn: 66698
-rw-r--r--clang/include/clang/AST/DeclCXX.h30
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp5
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
OpenPOWER on IntegriCloud