aboutsummaryrefslogtreecommitdiff
path: root/AST/StmtSerialization.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-11-14 21:31:46 +0000
committerTed Kremenek <kremenek@apple.com>2007-11-14 21:31:46 +0000
commit6336f8dbae5145eb7b1429a8ec424c44e668f7cb (patch)
tree6d28c75ab4da5e9d946c1110cfea78fb1e33c9d2 /AST/StmtSerialization.cpp
parent4b7d9ca9fd65a5a68e907b1b7effe33bf1e93629 (diff)
Implemented serialization of InitListExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44137 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'AST/StmtSerialization.cpp')
-rw-r--r--AST/StmtSerialization.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp
index 2c1205ef7a..d4ddf4c57f 100644
--- a/AST/StmtSerialization.cpp
+++ b/AST/StmtSerialization.cpp
@@ -108,7 +108,10 @@ Stmt* Stmt::Create(Deserializer& D) {
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 @@ IndirectGotoStmt* IndirectGotoStmt::CreateImpl(Deserializer& D) {
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());