Implemented serialization of ObjCStringLiteral.

llvm-svn: 44568
This commit is contained in:
Ted Kremenek
2007-12-04 00:51:11 +00:00
parent b8714c8ef1
commit c8f444ff80
2 changed files with 20 additions and 1 deletions

View File

@@ -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<StringLiteral>(D.ReadOwnedPtr<Stmt>());
return new ObjCStringLiteral(String,T,L);
}

View File

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