]> granicus.if.org Git - clang/commitdiff
Avoid setters in ASTDeclReader::VisitClassTemplatePartialSpecializationDecl.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 13 Sep 2010 11:45:41 +0000 (11:45 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 13 Sep 2010 11:45:41 +0000 (11:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113743 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/DeclTemplate.h
lib/AST/DeclTemplate.cpp
lib/Serialization/ASTReaderDecl.cpp

index a868b9c6a4f28b3e82dcfffb5c6b9bd059f1b2fc..930da22a66c9fd943afa3ba33671e129929ecc0f 100644 (file)
@@ -1513,18 +1513,11 @@ public:
     return TemplateParams;
   }
 
-  void initTemplateParameters(TemplateParameterList *Params) {
-    assert(TemplateParams == 0 && "TemplateParams already set");
-    TemplateParams = Params;
-  }
-
   /// Get the template arguments as written.
   TemplateArgumentLoc *getTemplateArgsAsWritten() const {
     return ArgsAsWritten;
   }
 
-  void initTemplateArgsAsWritten(const TemplateArgumentListInfo &ArgInfos);
-
   /// Get the number of template arguments as written.
   unsigned getNumTemplateArgsAsWritten() const {
     return NumArgsAsWritten;
@@ -1533,8 +1526,7 @@ public:
   /// \brief Get the sequence number for this class template partial
   /// specialization.
   unsigned getSequenceNumber() const { return SequenceNumber; }
-  void setSequenceNumber(unsigned N) { SequenceNumber = N; }
-    
+
   /// \brief Retrieve the member class template partial specialization from
   /// which this particular class template partial specialization was
   /// instantiated.
@@ -1618,6 +1610,9 @@ public:
   static bool classof(const ClassTemplatePartialSpecializationDecl *) {
     return true;
   }
+
+  friend class ASTDeclReader;
+  friend class ASTDeclWriter;
 };
 
 /// Declaration of a class template.
index 66321d3ec24ae48b662a038e477544e92f150e97..d96b830d1791b0a8d7b7f1cb0e34fd67a310fb8a 100644 (file)
@@ -577,19 +577,6 @@ ClassTemplatePartialSpecializationDecl::Create(ASTContext &Context,
   return new (Context)ClassTemplatePartialSpecializationDecl();
 }
 
-void ClassTemplatePartialSpecializationDecl::
-initTemplateArgsAsWritten(const TemplateArgumentListInfo &ArgInfos) {
-  assert(ArgsAsWritten == 0 && "ArgsAsWritten already set");
-  unsigned N = ArgInfos.size();
-  TemplateArgumentLoc *ClonedArgs
-    = new (getASTContext()) TemplateArgumentLoc[N];
-  for (unsigned I = 0; I != N; ++I)
-    ClonedArgs[I] = ArgInfos[I];
-  
-  ArgsAsWritten = ClonedArgs;
-  NumArgsAsWritten = N;
-}
-
 //===----------------------------------------------------------------------===//
 // FriendTemplateDecl Implementation
 //===----------------------------------------------------------------------===//
index fe07217574fc3bc1249b8938d2480342608e0af1..77cd426b6e9be82e58162ec92c0ef608b0886c3a 100644 (file)
@@ -1011,23 +1011,25 @@ void ASTDeclReader::VisitClassTemplatePartialSpecializationDecl(
                                     ClassTemplatePartialSpecializationDecl *D) {
   VisitClassTemplateSpecializationDecl(D);
 
-  D->initTemplateParameters(Reader.ReadTemplateParameterList(Record, Idx));
-  
-  TemplateArgumentListInfo ArgInfos;
+  ASTContext &C = *Reader.getContext();
+  D->TemplateParams = Reader.ReadTemplateParameterList(Record, Idx);
+
   unsigned NumArgs = Record[Idx++];
-  while (NumArgs--)
-    ArgInfos.addArgument(Reader.ReadTemplateArgumentLoc(Cursor, Record, Idx));
-  D->initTemplateArgsAsWritten(ArgInfos);
-  
-  D->setSequenceNumber(Record[Idx++]);
+  if (NumArgs) {
+    D->NumArgsAsWritten = NumArgs;
+    D->ArgsAsWritten = new (C) TemplateArgumentLoc[NumArgs];
+    for (unsigned i=0; i != NumArgs; ++i)
+      D->ArgsAsWritten[i] = Reader.ReadTemplateArgumentLoc(Cursor, Record, Idx);
+  }
+
+  D->SequenceNumber = Record[Idx++];
 
   // These are read/set from/to the first declaration.
   if (D->getPreviousDeclaration() == 0) {
-    D->setInstantiatedFromMember(
+    D->InstantiatedFromMember.setPointer(
         cast_or_null<ClassTemplatePartialSpecializationDecl>(
                                                 Reader.GetDecl(Record[Idx++])));
-    if (Record[Idx++])
-      D->setMemberSpecialization();
+    D->InstantiatedFromMember.setInt(Record[Idx++]);
   }
 }