From: Ted Kremenek Date: Tue, 4 Dec 2007 00:51:11 +0000 (+0000) Subject: Implemented serialization of ObjCStringLiteral. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=46dc0a54ed6deb165117a6b0166d9bb7acb785f5;p=clang Implemented serialization of ObjCStringLiteral. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44568 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index 55ea3e4eae..7e26cb7945 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -169,7 +169,10 @@ Stmt* Stmt::Create(Deserializer& D) { return ObjcAtTryStmt::CreateImpl(D); case ObjCIvarRefExprClass: - return ObjCIvarRefExpr::CreateImpl(D); + return ObjCIvarRefExpr::CreateImpl(D); + + case ObjCStringLiteralClass: + return ObjCStringLiteral::CreateImpl(D); } } @@ -903,3 +906,16 @@ ObjCIvarRefExpr* ObjCIvarRefExpr::CreateImpl(Deserializer& D) { D.ReadPtr(dr->D,false); return dr; } + +void ObjCStringLiteral::EmitImpl(Serializer& S) const { + S.Emit(AtLoc); + S.Emit(getType()); + S.EmitOwnedPtr(String); +} + +ObjCStringLiteral* ObjCStringLiteral::CreateImpl(Deserializer& D) { + SourceLocation L = SourceLocation::ReadVal(D); + QualType T = QualType::ReadVal(D); + StringLiteral* String = cast(D.ReadOwnedPtr()); + return new ObjCStringLiteral(String,T,L); +} diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index c83a76e909..6630a7f260 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -1183,6 +1183,9 @@ public: // Iterators virtual child_iterator child_begin(); virtual child_iterator child_end(); + + virtual void EmitImpl(llvm::Serializer& S) const; + static ObjCStringLiteral* CreateImpl(llvm::Deserializer& D); }; /// ObjCEncodeExpr, used for @encode in Objective-C.