]> granicus.if.org Git - clang/commitdiff
Implemented serialization for WhileStmt.
authorTed Kremenek <kremenek@apple.com>
Wed, 7 Nov 2007 07:50:10 +0000 (07:50 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 7 Nov 2007 07:50:10 +0000 (07:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43815 91177308-0d34-0410-b5e6-96231b3b80d8

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

index c6af9a50c7ae80d176b906d47c3da0177a3c1776..bd8b5ca5e115d3e72359897d3e370b8e7e938413 100644 (file)
@@ -72,6 +72,9 @@ Stmt* Stmt::Materialize(llvm::Deserializer& D) {
       
     case SwitchStmtClass:
       return SwitchStmt::directMaterialize(D);
+      
+    case WhileStmtClass:
+      return WhileStmt::directMaterialize(D);
   }
 }
 
@@ -284,3 +287,16 @@ SwitchStmt* SwitchStmt::directMaterialize(llvm::Deserializer& D) {
   
   return stmt;
 }
+
+void WhileStmt::directEmit(llvm::Serializer& S) const {
+  S.Emit(WhileLoc);
+  S.EmitOwnedPtr(getCond());
+  S.EmitOwnedPtr(getBody());
+}
+
+WhileStmt* WhileStmt::directMaterialize(llvm::Deserializer& D) {
+  SourceLocation WhileLoc = SourceLocation::ReadVal(D);
+  Expr* Cond = D.ReadOwnedPtr<Expr>();
+  Stmt* Body = D.ReadOwnedPtr<Stmt>();
+  return new WhileStmt(Cond,Body,WhileLoc);
+}
index 523eda69a05b825e82acf47e2c9507c3a3bcf158..c04a544a698d35628d6c79d947293b9518d07073 100644 (file)
@@ -485,6 +485,9 @@ public:
   // Iterators
   virtual child_iterator child_begin();
   virtual child_iterator child_end();
+  
+  virtual void directEmit(llvm::Serializer& S) const;
+  static WhileStmt* directMaterialize(llvm::Deserializer& D);
 };
 
 /// DoStmt - This represents a 'do/while' stmt.