]> granicus.if.org Git - clang/commitdiff
Eliminate CXXClassMemberWrapper
authorDouglas Gregor <dgregor@apple.com>
Wed, 11 Mar 2009 20:25:10 +0000 (20:25 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 11 Mar 2009 20:25:10 +0000 (20:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66698 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/DeclCXX.h
lib/Sema/SemaDeclCXX.cpp

index 52ed01d04bd325fa5fa727384d9a300db0334c17..7b5eba78f7c1422136bece45d75fc0a100549249 100644 (file)
@@ -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();
 ///
index fa6fcc8c35a516d0ae5920d588ccca12ec66e983..bedea3a7cd7096d3c33c9a173f1b2eb7c4a33c5f 100644 (file)
@@ -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