Copyright (C) 1994, Digital Equipment Corp.
ListPkl.m3
Atom Pickle.Special
MODULE AtomPkl;
IMPORT Atom, Thread, Rd, Wr, Pickle;
PROCEDURE AtomPklWrite (
<*UNUSED*> sp: Pickle.Special;
r: REFANY; writer: Pickle.Writer)
RAISES { Pickle.Error, Wr.Failure, Thread.Alerted } =
BEGIN
writer.write(Atom.ToText(r));
END AtomPklWrite;
PROCEDURE AtomPklRead (
<*UNUSED*> sp: Pickle.Special;
reader: Pickle.Reader;
<*UNUSED*> id: Pickle.RefID) : REFANY
RAISES { Pickle.Error, Rd.EndOfFile, Rd.Failure, Thread.Alerted } =
BEGIN
RETURN Atom.FromText(reader.read());
END AtomPklRead;
BEGIN
Pickle.RegisterSpecial (NEW (Pickle.Special, sc := TYPECODE (Atom.T),
write := AtomPklWrite,
read := AtomPklRead));
END AtomPkl.