aboutsummaryrefslogtreecommitdiff
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
commitff7fea809bab2badd0cb241703b14ac20ac258cb (patch)
tree02f3bb2587d9520767dd33d52a257c607f63c2b5
parent2d2e9cfdc1dbb6e4a22f8c0b1abcd30437e3795d (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.h30
-rw-r--r--lib/Sema/SemaDeclCXX.cpp5
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