]> granicus.if.org Git - clang/commitdiff
change NamespaceDecl to hold its 'NextNamespace' pointer itself
authorChris Lattner <sabre@nondot.org>
Sat, 28 Mar 2009 06:44:59 +0000 (06:44 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 28 Mar 2009 06:44:59 +0000 (06:44 +0000)
instead of in NextDeclarator.  This temporarily increases memory
usage, but simplifies and decouples things.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67926 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Decl.h

index f811ffa75a0a54b6dd3182db2a8ab1bdf12e4e1e..69bb13a520cce6846944697f0a0caa2537f7d27b 100644 (file)
@@ -132,15 +132,15 @@ class NamespaceDecl : public NamedDecl, public DeclContext {
   // namespace A { int y; }
   //
   // there will be one NamespaceDecl for each declaration.
-  // NextDeclarator points to the next extended declaration.
+  // NextNamespace points to the next extended declaration.
   // OrigNamespace points to the original namespace declaration.
   // OrigNamespace of the first namespace decl points to itself.
-
-  NamespaceDecl *OrigNamespace;
-
+  NamespaceDecl *OrigNamespace, *NextNamespace;
+  
   NamespaceDecl(DeclContext *DC, SourceLocation L, IdentifierInfo *Id)
     : NamedDecl(Namespace, DC, L, Id), DeclContext(Namespace) {
-      OrigNamespace = this;
+    OrigNamespace = this;
+    NextNamespace = 0;
   }
 public:
   static NamespaceDecl *Create(ASTContext &C, DeclContext *DC,
@@ -148,13 +148,9 @@ public:
   
   virtual void Destroy(ASTContext& C);
 
-  NamespaceDecl *getNextNamespace() {
-    return cast_or_null<NamespaceDecl>(getNextDeclarator());
-  }
-  const NamespaceDecl *getNextNamespace() const {
-    return cast_or_null<NamespaceDecl>(getNextDeclarator());
-  }
-  void setNextNamespace(NamespaceDecl *ND) { setNextDeclarator(ND); }
+  NamespaceDecl *getNextNamespace() { return NextNamespace; }
+  const NamespaceDecl *getNextNamespace() const { return NextNamespace; }
+  void setNextNamespace(NamespaceDecl *ND) { NextNamespace = ND; }
 
   NamespaceDecl *getOriginalNamespace() const {
     return OrigNamespace;