[cfe-commits] r44137 - in /cfe/trunk: AST/StmtSerialization.cpp include/clang/AST/Expr.h

Ted Kremenek kremenek at apple.com
Wed Nov 14 13:31:46 PST 2007


Author: kremenek
Date: Wed Nov 14 15:31:46 2007
New Revision: 44137

URL: http://llvm.org/viewvc/llvm-project?rev=44137&view=rev
Log:
Implemented serialization of InitListExpr.

Modified:
    cfe/trunk/AST/StmtSerialization.cpp
    cfe/trunk/include/clang/AST/Expr.h

Modified: cfe/trunk/AST/StmtSerialization.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/AST/StmtSerialization.cpp?rev=44137&r1=44136&r2=44137&view=diff

==============================================================================
--- cfe/trunk/AST/StmtSerialization.cpp (original)
+++ cfe/trunk/AST/StmtSerialization.cpp Wed Nov 14 15:31:46 2007
@@ -108,7 +108,10 @@
       return ImplicitCastExpr::CreateImpl(D);
       
     case IndirectGotoStmtClass:
-      return IndirectGotoStmt::CreateImpl(D);      
+      return IndirectGotoStmt::CreateImpl(D);
+      
+    case InitListExprClass:
+      return InitListExpr::CreateImpl(D);
       
     case IntegerLiteralClass:
       return IntegerLiteral::CreateImpl(D);
@@ -512,6 +515,24 @@
   return new IndirectGotoStmt(Target);
 }
 
+void InitListExpr::EmitImpl(Serializer& S) const {
+  S.Emit(LBraceLoc);
+  S.Emit(RBraceLoc);
+  S.EmitInt(NumInits);
+  S.BatchEmitOwnedPtrs(NumInits,InitExprs);
+}
+
+InitListExpr* InitListExpr::CreateImpl(Deserializer& D) {
+  InitListExpr* expr = new InitListExpr();
+  expr->LBraceLoc = SourceLocation::ReadVal(D);
+  expr->RBraceLoc = SourceLocation::ReadVal(D);
+  expr->NumInits = D.ReadInt();
+  assert(expr->NumInits);
+  expr->InitExprs = new Expr*[expr->NumInits];
+  D.BatchReadOwnedPtrs(expr->NumInits,expr->InitExprs);
+  return expr;
+}
+
 void IntegerLiteral::EmitImpl(Serializer& S) const {
   S.Emit(Loc);
   S.Emit(getType());

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

==============================================================================
--- cfe/trunk/include/clang/AST/Expr.h (original)
+++ cfe/trunk/include/clang/AST/Expr.h Wed Nov 14 15:31:46 2007
@@ -1126,6 +1126,14 @@
   // Iterators
   virtual child_iterator child_begin();
   virtual child_iterator child_end();
+  
+  virtual void EmitImpl(llvm::Serializer& S) const;
+  static InitListExpr* CreateImpl(llvm::Deserializer& D);
+
+private:
+  // Used by serializer.
+  InitListExpr() : Expr(InitListExprClass, QualType()), 
+                   InitExprs(NULL), NumInits(0) {}
 };
 
 /// ObjCStringLiteral, used for Objective-C string literals





More information about the cfe-commits mailing list