Implemented serialization for MemberExpr.

llvm-svn: 44074
This commit is contained in:
Ted Kremenek 2007-11-13 22:16:23 +00:00
parent a0f78974a6
commit b8f51d5512
2 changed files with 22 additions and 0 deletions

View File

@ -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);
}

View File

@ -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