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

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

index ea136bf9ca0c895f311715d23a1867882601ce10..a32e5b992b7b2827a7d8cb6bc5dcddc4bcb29b7b 100644 (file)
@@ -159,6 +159,9 @@ Stmt* Stmt::Create(Deserializer& D) {
     case ObjcAtCatchStmtClass:
       return ObjcAtCatchStmt::CreateImpl(D);
       
+    case ObjcAtFinallyStmtClass:
+      return ObjcAtFinallyStmt::CreateImpl(D);
+      
     case ObjCIvarRefExprClass:
       return ObjCIvarRefExpr::CreateImpl(D);      
   }
@@ -847,6 +850,17 @@ ObjcAtCatchStmt* ObjcAtCatchStmt::CreateImpl(Deserializer& D) {
   return stmt;
 }
 
+void ObjcAtFinallyStmt::EmitImpl(Serializer& S) const {
+  S.Emit(AtFinallyLoc);
+  S.EmitOwnedPtr(AtFinallyStmt);
+}
+
+ObjcAtFinallyStmt* ObjcAtFinallyStmt::CreateImpl(Deserializer& D) {
+  SourceLocation Loc = SourceLocation::ReadVal(D);
+  Stmt* AtFinallyStmt = D.ReadOwnedPtr<Stmt>();
+  return new ObjcAtFinallyStmt(Loc,AtFinallyStmt);  
+}
+
 void ObjCIvarRefExpr::EmitImpl(Serializer& S) const {
   S.Emit(Loc);
   S.Emit(getType());
index c95e8a13d2199042b76d3fa357fb7627a7df9d96..0cfc5c3d6b44368fe0b0468942c83e658fc6f93a 100644 (file)
@@ -833,30 +833,30 @@ public:
   
 /// ObjcAtFinallyStmt - This represent objective-c's @finally Statement 
 class ObjcAtFinallyStmt : public Stmt {
-  private:
-    Stmt *AtFinallyStmt;
-    SourceLocation AtFinallyLoc;
-    
-  public:
-    ObjcAtFinallyStmt(SourceLocation atFinallyLoc, Stmt *atFinallyStmt)
-    : Stmt(ObjcAtFinallyStmtClass), 
-      AtFinallyStmt(atFinallyStmt), AtFinallyLoc(atFinallyLoc) {}
-    
-    const Stmt *getFinallyBody () const { return AtFinallyStmt; }
-    Stmt *getFinallyBody () { return AtFinallyStmt; }
+  Stmt *AtFinallyStmt;
+  SourceLocation AtFinallyLoc;    
+public:
+  ObjcAtFinallyStmt(SourceLocation atFinallyLoc, Stmt *atFinallyStmt)
+  : Stmt(ObjcAtFinallyStmtClass), 
+    AtFinallyStmt(atFinallyStmt), AtFinallyLoc(atFinallyLoc) {}
   
-    virtual SourceRange getSourceRange() const { 
-      return SourceRange(AtFinallyLoc, AtFinallyStmt->getLocEnd()); 
-    }
-    
-    static bool classof(const Stmt *T) {
-      return T->getStmtClass() == ObjcAtFinallyStmtClass;
-    }
-    static bool classof(const ObjcAtFinallyStmt *) { return true; }
-    
-    virtual child_iterator child_begin();
-    virtual child_iterator child_end();
-    
+  const Stmt *getFinallyBody () const { return AtFinallyStmt; }
+  Stmt *getFinallyBody () { return AtFinallyStmt; }
+
+  virtual SourceRange getSourceRange() const { 
+    return SourceRange(AtFinallyLoc, AtFinallyStmt->getLocEnd()); 
+  }
+  
+  static bool classof(const Stmt *T) {
+    return T->getStmtClass() == ObjcAtFinallyStmtClass;
+  }
+  static bool classof(const ObjcAtFinallyStmt *) { return true; }
+  
+  virtual child_iterator child_begin();
+  virtual child_iterator child_end();
+  
+  virtual void EmitImpl(llvm::Serializer& S) const;
+  static ObjcAtFinallyStmt* CreateImpl(llvm::Deserializer& D);    
 };
   
 /// ObjcAtTryStmt - This represent objective-c's over-all