From: Ted Kremenek Date: Wed, 7 Nov 2007 22:42:34 +0000 (+0000) Subject: Implemented serialization of CastExpr. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9971c9ace70624987cd74645a75f4bfbc05afdf2;p=clang Implemented serialization of CastExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43848 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index 578e8d7598..ea812255c5 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -41,6 +41,9 @@ Stmt* Stmt::Materialize(llvm::Deserializer& D) { case CaseStmtClass: return CaseStmt::directMaterialize(D); + + case CastExprClass: + return CastExpr::directMaterialize(D); case CharacterLiteralClass: return CharacterLiteral::directMaterialize(D); @@ -156,6 +159,20 @@ CaseStmt* CaseStmt::directMaterialize(llvm::Deserializer& D) { return stmt; } +void CastExpr::directEmit(llvm::Serializer& S) const { + S.Emit(getType()); + S.Emit(Loc); + S.EmitOwnedPtr(Op); +} + +CastExpr* CastExpr::directMaterialize(llvm::Deserializer& D) { + QualType t = QualType::ReadVal(D); + SourceLocation Loc = SourceLocation::ReadVal(D); + Expr* Op = D.ReadOwnedPtr(); + return new CastExpr(t,Op,Loc); +} + + void CharacterLiteral::directEmit(llvm::Serializer& S) const { S.Emit(Value); S.Emit(Loc); diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index 92ae0dc83f..832b3ec9b7 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -748,6 +748,9 @@ public: // Iterators virtual child_iterator child_begin(); virtual child_iterator child_end(); + + virtual void directEmit(llvm::Serializer& S) const; + static CastExpr* directMaterialize(llvm::Deserializer& D); }; class BinaryOperator : public Expr {