1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
(* asmStream.sml
*
* COPYRIGHT (c) 1996 Bell Laboratories.
*
*)
(* AsmStream - this structure is available to all codegenerators.
* Typically asmOutStream is rebound to a file.
*)
signature ASM_STREAM = sig
val asmOutStream : TextIO.outstream ref
val withStream : TextIO.outstream -> ('a -> 'b) -> 'a -> 'b
end
structure AsmStream : ASM_STREAM = struct
val asmOutStream = ref TextIO.stdOut
fun withStream stream body x = let
val s = !asmOutStream
val _ = asmOutStream := stream
in
(body x before asmOutStream := s)
handle e => (asmOutStream := s; raise e)
end
end
|