]> granicus.if.org Git - clang/commitdiff
Move IdDeclInfoMap class in an anonymous namespace. Suggestion by Chris Lattner.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 14 Apr 2008 00:09:21 +0000 (00:09 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 14 Apr 2008 00:09:21 +0000 (00:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49628 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/IdentifierResolver.cpp
lib/Sema/IdentifierResolver.h

index 037802c64042c6d35f8105cc2580dd0128538c2d..c062e8087537fa24f8f3754915ea100c103dde71 100644 (file)
@@ -69,13 +69,11 @@ public:
   void RemoveShadowed(NamedDecl *D);
 };
 
-} // end anonymous namespace
-
 
 /// IdDeclInfoMap - Associates IdDeclInfos with Identifiers.
 /// Allocates 'pools' (vectors of IdDeclInfos) to avoid allocating each
 /// individual IdDeclInfo to heap.
-class IdentifierResolver::IdDeclInfoMap {
+class IdDeclInfoMap {
   static const unsigned int VECTOR_SIZE = 512;
   // Holds vectors of IdDeclInfos that serve as 'pools'.
   // New vectors are added when the current one is full.
@@ -90,9 +88,13 @@ public:
   IdDeclInfo &operator[](IdentifierInfo *II);
 };
 
+} // end anonymous namespace
 
-IdentifierResolver::IdentifierResolver() : IdDeclInfos(*new IdDeclInfoMap) {}
-IdentifierResolver::~IdentifierResolver() { delete &IdDeclInfos; }
+
+IdentifierResolver::IdentifierResolver() : IdDeclInfos(new IdDeclInfoMap) {}
+IdentifierResolver::~IdentifierResolver() {
+  delete static_cast<IdDeclInfoMap*>(IdDeclInfos);
+}
 
 /// AddDecl - Link the decl to its shadowed decl chain.
 void IdentifierResolver::AddDecl(NamedDecl *D, Scope *S) {
@@ -109,7 +111,8 @@ void IdentifierResolver::AddDecl(NamedDecl *D, Scope *S) {
 
   if (isDeclPtr(Ptr)) {
     II->setFETokenInfo(NULL);
-    IDI = &IdDeclInfos[II];
+    IdDeclInfoMap &Map = *static_cast<IdDeclInfoMap*>(IdDeclInfos);
+    IDI = &Map[II];
     IDI->PushShadowed(static_cast<NamedDecl*>(Ptr));
   } else
     IDI = toIdDeclInfo(Ptr);
@@ -151,7 +154,8 @@ void IdentifierResolver::AddGlobalDecl(NamedDecl *D) {
 
   if (isDeclPtr(Ptr)) {
     II->setFETokenInfo(NULL);
-    IDI = &IdDeclInfos[II];
+    IdDeclInfoMap &Map = *static_cast<IdDeclInfoMap*>(IdDeclInfos);
+    IDI = &Map[II];
     IDI->PushShadowed(static_cast<NamedDecl*>(Ptr));
   } else
     IDI = toIdDeclInfo(Ptr);
@@ -231,7 +235,7 @@ void IdDeclInfo::RemoveShadowed(NamedDecl *D) {
 
 /// Returns the IdDeclInfo associated to the IdentifierInfo.
 /// It creates a new IdDeclInfo if one was not created before for this id.
-IdDeclInfo &IdentifierResolver::IdDeclInfoMap::operator[](IdentifierInfo *II) {
+IdDeclInfo &IdDeclInfoMap::operator[](IdentifierInfo *II) {
   assert (II && "null IdentifierInfo passed");
   void *Ptr = II->getFETokenInfo<void>();
 
index abe568d60279320667455727ad8aecb4d8209983..34b4764d147bc8c204abf681330d97f572d7223a 100644 (file)
@@ -43,8 +43,9 @@ public:
   NamedDecl *Lookup(const IdentifierInfo *II, unsigned NSI);
 
 private:
-  class IdDeclInfoMap;
-  IdDeclInfoMap &IdDeclInfos;
+  // An instance of IdDeclInfoMap class, that's hidden away in the
+  // implementation file.
+  void *IdDeclInfos;
 };
 
 } // end namespace clang