]> granicus.if.org Git - clang/commitdiff
Implemented serialization of ObjcAtTryStmt.
authorTed Kremenek <kremenek@apple.com>
Tue, 4 Dec 2007 00:38:30 +0000 (00:38 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 4 Dec 2007 00:38:30 +0000 (00:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44566 91177308-0d34-0410-b5e6-96231b3b80d8

AST/StmtSerialization.cpp
include/clang/AST/Stmt.h

index a32e5b992b7b2827a7d8cb6bc5dcddc4bcb29b7b..ab639d9adef0f7eedf9a0dcc562c9d84915c5041 100644 (file)
@@ -162,6 +162,9 @@ Stmt* Stmt::Create(Deserializer& D) {
     case ObjcAtFinallyStmtClass:
       return ObjcAtFinallyStmt::CreateImpl(D);
       
+    case ObjcAtTryStmtClass:
+      return ObjcAtTryStmt::CreateImpl(D);
+      
     case ObjCIvarRefExprClass:
       return ObjCIvarRefExpr::CreateImpl(D);      
   }
@@ -861,12 +864,24 @@ ObjcAtFinallyStmt* ObjcAtFinallyStmt::CreateImpl(Deserializer& D) {
   return new ObjcAtFinallyStmt(Loc,AtFinallyStmt);  
 }
 
+void ObjcAtTryStmt::EmitImpl(Serializer& S) const {
+  S.Emit(AtTryLoc);
+  S.BatchEmitOwnedPtrs((unsigned) END_EXPR, &SubStmts[0]);
+}
+
+ObjcAtTryStmt* ObjcAtTryStmt::CreateImpl(Deserializer& D) {
+  SourceLocation L = SourceLocation::ReadVal(D);
+  ObjcAtTryStmt* stmt = new ObjcAtTryStmt(L,NULL,NULL,NULL);
+  D.BatchReadOwnedPtrs((unsigned) END_EXPR, &stmt->SubStmts[0]);
+  return stmt;
+}
+
 void ObjCIvarRefExpr::EmitImpl(Serializer& S) const {
   S.Emit(Loc);
   S.Emit(getType());
   S.EmitPtr(getDecl());
 }
-
+  
 ObjCIvarRefExpr* ObjCIvarRefExpr::CreateImpl(Deserializer& D) {
   SourceLocation Loc = SourceLocation::ReadVal(D);
   QualType T = QualType::ReadVal(D);
index 0cfc5c3d6b44368fe0b0468942c83e658fc6f93a..fa877ccf94dca29eb32fc994d4e8362459c89c7e 100644 (file)
@@ -866,8 +866,7 @@ private:
   enum { TRY, CATCH, FINALLY, END_EXPR };
   Stmt* SubStmts[END_EXPR]; 
   
-  SourceLocation AtTryLoc;
-      
+  SourceLocation AtTryLoc;      
 public:
   ObjcAtTryStmt(SourceLocation atTryLoc, Stmt *atTryStmt, 
                 Stmt *atCatchStmt, 
@@ -904,7 +903,9 @@ public:
     
   virtual child_iterator child_begin();
   virtual child_iterator child_end();
-    
+  
+  virtual void EmitImpl(llvm::Serializer& S) const;
+  static ObjcAtTryStmt* CreateImpl(llvm::Deserializer& D);     
 };
 
 /// ObjcAtThrowStmt - This represents objective-c's @throw statement.