aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-11-13 22:16:23 +0000
committerTed Kremenek <kremenek@apple.com>2007-11-13 22:16:23 +0000
commitbd57e7c4754c0ce5d7d460041c8fd613e45c4319 (patch)
tree556d67fe7ee26cfe35b21128d4fc1395027649fa
parent1b4e251f6d73997732f64e550a2b9cb5ac945c78 (diff)
Implemented serialization for MemberExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44074 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--AST/StmtSerialization.cpp19
-rw-r--r--include/clang/AST/Expr.h3
2 files changed, 22 insertions, 0 deletions
diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp
index fb251edb43..44796c8291 100644
--- a/AST/StmtSerialization.cpp
+++ b/AST/StmtSerialization.cpp
@@ -110,6 +110,9 @@ Stmt* Stmt::Create(Deserializer& D) {
case LabelStmtClass:
return LabelStmt::CreateImpl(D);
+ case MemberExprClass:
+ return MemberExpr::CreateImpl(D);
+
case NullStmtClass:
return NullStmt::CreateImpl(D);
@@ -509,6 +512,22 @@ LabelStmt* LabelStmt::CreateImpl(Deserializer& D) {
return new LabelStmt(IdentLoc,Label,SubStmt);
}
+void MemberExpr::EmitImpl(Serializer& S) const {
+ S.Emit(MemberLoc);
+ S.EmitPtr(MemberDecl);
+ S.EmitBool(IsArrow);
+ S.EmitOwnedPtr(Base);
+}
+
+MemberExpr* MemberExpr::CreateImpl(Deserializer& D) {
+ SourceLocation L = SourceLocation::ReadVal(D);
+ FieldDecl* MemberDecl = cast<FieldDecl>(D.ReadPtr<Decl>());
+ bool IsArrow = D.ReadBool();
+ Expr* base = D.ReadOwnedPtr<Expr>();
+
+ return new MemberExpr(base,IsArrow,MemberDecl,L);
+}
+
void NullStmt::EmitImpl(Serializer& S) const {
S.Emit(SemiLoc);
}
diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h
index e69344690d..73aabd2af3 100644
--- a/include/clang/AST/Expr.h
+++ b/include/clang/AST/Expr.h
@@ -627,6 +627,9 @@ public:
// Iterators
virtual child_iterator child_begin();
virtual child_iterator child_end();
+
+ virtual void EmitImpl(llvm::Serializer& S) const;
+ static MemberExpr* CreateImpl(llvm::Deserializer& D);
};
/// OCUVectorElementExpr - This represents access to specific elements of a