src/Pure/General/buffer.ML
changeset 26545 6e1aef001b3b
parent 26502 7f64d8cf6707
child 28027 051d5ccbafc5
equal deleted inserted replaced
26544:af4c77a21c06 26545:6e1aef001b3b
    11   val empty: T
    11   val empty: T
    12   val add: string -> T -> T
    12   val add: string -> T -> T
    13   val add_substring: substring -> T -> T
    13   val add_substring: substring -> T -> T
    14   val markup: Markup.T -> (T -> T) -> T -> T
    14   val markup: Markup.T -> (T -> T) -> T -> T
    15   val content: T -> string
    15   val content: T -> string
    16   val output: TextIO.outstream -> T -> unit
    16   val output: T -> TextIO.outstream -> unit
    17   val write: Path.T -> T -> unit
    17   val write: Path.T -> T -> unit
    18 end;
    18 end;
    19 
    19 
    20 structure Buffer: BUFFER =
    20 structure Buffer: BUFFER =
    21 struct
    21 struct
    53 
    53 
    54 fun rev_buffer EmptyBuffer acc = acc
    54 fun rev_buffer EmptyBuffer acc = acc
    55   | rev_buffer (String (s, buf)) acc = rev_buffer buf (String (s, acc))
    55   | rev_buffer (String (s, buf)) acc = rev_buffer buf (String (s, acc))
    56   | rev_buffer (Substring (s, buf)) acc = rev_buffer buf (Substring (s, acc));
    56   | rev_buffer (Substring (s, buf)) acc = rev_buffer buf (Substring (s, acc));
    57 
    57 
    58 fun output stream buffer =
    58 fun output buffer stream =
    59   let
    59   let
    60     fun rev_output EmptyBuffer = ()
    60     fun rev_output EmptyBuffer = ()
    61       | rev_output (String (s, buf)) = (TextIO.output (stream, s); rev_output buf)
    61       | rev_output (String (s, buf)) = (TextIO.output (stream, s); rev_output buf)
    62       | rev_output (Substring (s, buf)) = (TextIO.outputSubstr (stream, s); rev_output buf);
    62       | rev_output (Substring (s, buf)) = (TextIO.outputSubstr (stream, s); rev_output buf);
    63   in rev_output (rev_buffer buffer empty) end;
    63   in rev_output (rev_buffer buffer empty) end;
    64 
    64 
    65 fun write path buf = File.open_output (fn stream => output stream buf) path;
    65 fun write path buf = File.open_output (output buf) path;
    66 
    66 
    67 end;
    67 end;