Next: , Previous: stream.string_writer, Up: Top


71 string.builder

     %--------------------------------------------------%
     % vim: ft=mercury ts=4 sw=4 et
     %--------------------------------------------------%
     % Copyright (C) 2006-2007 The University of Melbourne.
     % This file may only be copied under the terms of the GNU Library General
     % Public License - see the file COPYING.LIB in the Mercury distribution.
     %--------------------------------------------------%
     %
     % File: string.builder.m.
     % Main author: maclarty.
     %
     % This module implements a string builder stream.  It can be used to
     % build up a string using string or character writers.
     %
     % To build up a string using this module, you first construct an initial
     % string builder state by calling the init function.  You can then use
     % any instances of stream.writer that write strings or characters to update the
     % string builder state, using string.builder.handle as the stream argument.
     % Once you've finished writing to the string builder you can get the final
     % string by calling string.builder.to_string/1.
     %
     % For example:
     %
     %     State0 = string.builder.init,
     %     stream.string_writer.put_int(string.builder.handle, 5, State0, State),
     %     Str = string.builder.to_string(State),  % Str = "5".
     %
     %--------------------------------------------------%
     
     :- module string.builder.
     :- interface.
     
     :- import_module char.
     :- import_module stream.
     
     %--------------------------------------------------%
     
     :- type handle
         --->    handle.
     
     :- type state.
     
     :- func init = (string.builder.state::uo) is det.
     
     :- instance stream.stream(string.builder.handle, string.builder.state).
     
     :- instance stream.output(string.builder.handle, string.builder.state).
     
     :- instance stream.writer(string.builder.handle, string, string.builder.state).
     :- instance stream.writer(string.builder.handle, char, string.builder.state).
     
     :- func to_string(string.builder.state::di) = (string::uo) is det.
     
     %--------------------------------------------------%
     %--------------------------------------------------%