[cfe-commits] r55649 - in /cfe/trunk: include/clang/AST/Decl.h lib/AST/Decl.cpp

Ted Kremenek kremenek at apple.com
Tue Sep 2 14:12:33 PDT 2008


Author: kremenek
Date: Tue Sep  2 16:12:32 2008
New Revision: 55649

URL: http://llvm.org/viewvc/llvm-project?rev=55649&view=rev
Log:
RecordDecl:
- Remove method 'isForwardDecl'; this functionality is already provided by
  'isDefinition()'
- Move method definitions to be co-located with other RecordDecl methods.

Modified:
    cfe/trunk/include/clang/AST/Decl.h
    cfe/trunk/lib/AST/Decl.cpp

Modified: cfe/trunk/include/clang/AST/Decl.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=55649&r1=55648&r2=55649&view=diff

==============================================================================
--- cfe/trunk/include/clang/AST/Decl.h (original)
+++ cfe/trunk/include/clang/AST/Decl.h Tue Sep  2 16:12:32 2008
@@ -821,14 +821,7 @@
                             RecordDecl *PrevDecl);
 
   virtual void Destroy(ASTContext& C);
-  
-  /// isForwardDeclaration - Returns true if this RecordDecl represents a
-  ///  forward declaration.
-  bool isForwardDeclaration() const {
-    assert ((!Members || NextDecl == 0) && "(Members != 0) => (NextDecl == 0)");
-    return !Members;
-  }
-  
+    
   /// getDefinitionDecl - Returns the RecordDecl for the struct/union that
   ///  represents the actual definition (i.e., not a forward declaration).
   ///  This method returns NULL if no such RecordDecl exists.

Modified: cfe/trunk/lib/AST/Decl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=55649&r1=55648&r2=55649&view=diff

==============================================================================
--- cfe/trunk/lib/AST/Decl.cpp (original)
+++ cfe/trunk/lib/AST/Decl.cpp Tue Sep  2 16:12:32 2008
@@ -114,65 +114,6 @@
   Decl::Destroy(C);
 }
 
-//==------------------------------------------------------------------------==//
-// RecordDecl methods.
-//==------------------------------------------------------------------------==//
-
-RecordDecl::RecordDecl(Kind DK, DeclContext *DC, SourceLocation L,
-                       IdentifierInfo *Id, RecordDecl *PrevDecl)
-  : TagDecl(DK, DC, L, Id, 0), NextDecl(0) {
-    
-  HasFlexibleArrayMember = false;
-  assert(classof(static_cast<Decl*>(this)) && "Invalid Kind!");
-  Members = 0;
-  NumMembers = -1;
-    
-  // Hook up the RecordDecl chain.
-  if (PrevDecl) {
-    RecordDecl* Tmp = PrevDecl->NextDecl;    
-    // 'Tmp' might be non-NULL if it is the RecordDecl that provides the
-    // definition of the struct/union. By construction, the last RecordDecl
-    // in the chain is the 'defining' RecordDecl.
-    if (Tmp) { 
-      assert (Tmp->NextDecl == 0);
-      assert (Tmp->Members && "Previous RecordDecl has a NextDecl that is "
-                              "not the 'defining' RecordDecl");
-      
-      NextDecl = Tmp;
-    }
-
-    PrevDecl->NextDecl = this;
-  }
-}
-
-RecordDecl *RecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC,
-                               SourceLocation L, IdentifierInfo *Id,
-                               RecordDecl *PrevDecl) {
-  void *Mem = C.getAllocator().Allocate<RecordDecl>();
-  Kind DK;
-  switch (TK) {
-    default: assert(0 && "Invalid TagKind!");
-    case TK_enum: assert(0 && "Enum TagKind passed for Record!");
-    case TK_struct: DK = Struct; break;
-    case TK_union:  DK = Union;  break;
-    case TK_class:  DK = Class;  break;
-  }
-  return new (Mem) RecordDecl(DK, DC, L, Id, PrevDecl);
-}
-
-/// getDefinitionDecl - Returns the RecordDecl for the struct/union that
-///  represents the actual definition (i.e., not a forward declaration).
-///  This method returns NULL if no such RecordDecl exists.
-const RecordDecl* RecordDecl::getDefinitionDecl() const {
-  const RecordDecl* R = this;
-  
-  for (RecordDecl* N = R->NextDecl; N; N = R->NextDecl)
-    R = N;
-  
-  return R->Members ? R : 0;
-}
-
-
 FileScopeAsmDecl *FileScopeAsmDecl::Create(ASTContext &C,
                                            SourceLocation L,
                                            StringLiteral *Str) {
@@ -262,6 +203,49 @@
 // RecordDecl Implementation
 //===----------------------------------------------------------------------===//
 
+RecordDecl::RecordDecl(Kind DK, DeclContext *DC, SourceLocation L,
+                       IdentifierInfo *Id, RecordDecl *PrevDecl)
+: TagDecl(DK, DC, L, Id, 0), NextDecl(0) {
+  
+  HasFlexibleArrayMember = false;
+  assert(classof(static_cast<Decl*>(this)) && "Invalid Kind!");
+  Members = 0;
+  NumMembers = -1;
+  
+  // Hook up the RecordDecl chain.
+  if (PrevDecl) {
+    RecordDecl* Tmp = PrevDecl->NextDecl;    
+    // 'Tmp' might be non-NULL if it is the RecordDecl that provides the
+    // definition of the struct/union. By construction, the last RecordDecl
+    // in the chain is the 'defining' RecordDecl.
+    if (Tmp) { 
+      assert (Tmp->NextDecl == 0);
+      assert (Tmp->isDefinition()
+              && "Previous RecordDecl has a NextDecl that is "
+              "not the 'defining' RecordDecl");
+      
+      NextDecl = Tmp;
+    }
+    
+    PrevDecl->NextDecl = this;
+  }
+}
+
+RecordDecl *RecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC,
+                               SourceLocation L, IdentifierInfo *Id,
+                               RecordDecl *PrevDecl) {
+  void *Mem = C.getAllocator().Allocate<RecordDecl>();
+  Kind DK;
+  switch (TK) {
+    default: assert(0 && "Invalid TagKind!");
+    case TK_enum: assert(0 && "Enum TagKind passed for Record!");
+    case TK_struct: DK = Struct; break;
+    case TK_union:  DK = Union;  break;
+    case TK_class:  DK = Class;  break;
+  }
+  return new (Mem) RecordDecl(DK, DC, L, Id, PrevDecl);
+}
+
 RecordDecl::~RecordDecl() {
   delete[] Members;
 }
@@ -274,7 +258,6 @@
   TagDecl::Destroy(C);
 }
 
-
 /// defineBody - When created, RecordDecl's correspond to a forward declared
 /// record.  This method is used to mark the decl as being defined, with the
 /// specified contents.
@@ -298,3 +281,16 @@
       return Members[i];
   return 0;
 }
+
+/// getDefinitionDecl - Returns the RecordDecl for the struct/union that
+///  represents the actual definition (i.e., not a forward declaration).
+///  This method returns NULL if no such RecordDecl exists.
+const RecordDecl* RecordDecl::getDefinitionDecl() const {
+  const RecordDecl* R = this;
+  
+  for (RecordDecl* N = R->NextDecl; N; N = R->NextDecl)
+    R = N;
+  
+  return R->Members ? R : 0;
+}
+





More information about the cfe-commits mailing list