english
version "1.0"
identify "xyz"

#: Copyright (c) 1991-2005 by Wayne C. Gramlich.
#, All rights reserved.

module out_stream

#: The out_stream module implements output stream objects and their
#, associated operations.

define out_stream
    external


procedure address_get@out_stream
    takes
	out_stream out_stream
    returns address
    external out_stream__address_get

    #: This procedure will return the address of {out_stream}.



procedure character_put@out_stream
    takes
	out_stream out_stream
	character character
    returns_nothing
    external out_stream__character_put


procedure close@out_stream
    takes
	out_stream out_stream
    returns_nothing
    external out_stream__close



procedure xdescriptor_open@out_stream
    takes
	descriptor unsigned
    returns out_stream

    #: This procedure will return an {out_stream} object that is
    #, connect to {descriptor}.  If an error occures, ??@{out_stream}
    #, is returned.


procedure descriptor_open@out_stream
    takes
	descriptor unsigned
    returns out_stream
    external out_stream__descriptor_open

    #: This procedure will return an {out_stream} object that is
    #, connect to {descriptor}.  If an error occures, ??@{out_stream}
    #, is returned.



procedure float_write@out_stream
    takes
	out_stream out_stream
	float float
    returns_nothing
    external out_stream__float_write
 
    #: This procedure will write {float} to {out_stream}.



procedure file_name_get@out_stream
    takes
	out_stream out_stream
    returns string
    external out_stream__file_name_get



procedure file_number_get@out_stream
    takes
	out_stream out_stream
    returns unsigned
    external out_stream__file_number_get

    #: This procedure will return the underlying file number for
    #, {out_stream}.  This is really a utility routine for the
    #, {printer} module.



procedure flush@out_stream
    takes
	out_stream out_stream
    returns_nothing
    external out_stream__flush

    #: This procedure will flush any data that is in {out_stream} out.



procedure identical@out_stream
    takes
	out_stream1 out_stream
	out_stream2 out_stream
    returns logical

    #: This procedure will return {true}@{logical} if {out_stream1} is
    #, identical to {out_stream2} and {false} otherwise.


procedure is_open_get@out_stream
    takes
	out_stream out_stream
    returns logical
    external out_stream__is_open_get


procedure open@out_stream
    takes
	file_name string
    returns out_stream


procedure xopen_append@out_stream
    takes
	file_name string
    returns out_stream


procedure open_append@out_stream
    takes
	file_name string
    returns out_stream
    external out_stream__open_append


procedure open_create@out_stream
    takes
	file_name string
    returns out_stream
    external out_stream__open_create


procedure pad@out_stream
    takes
	out_stream out_stream
	pad_amount unsigned
    returns_nothing

    #: This procedure will output {pad_amount} spaces to {out_stream}.


procedure pipe_close@out_stream
    takes
	out_stream out_stream
    returns_nothing
    external out_stream__pipe_close



procedure pipe_open@out_stream
    takes
	command string
    returns_nothing
    external out_stream__pipe_open



procedure print@out_stream
    takes
	out_stream out_stream
	print_stream out_stream
    returns_nothing
    external out_stream__print


procedure float_print@out_stream
    takes
	out_stream out_stream
	float float
    returns_nothing
    external out_stream__float_print


procedure real_print@out_stream
    takes
	out_stream out_stream
	real real
    returns_nothing
    external out_stream__real_print


procedure integer_print@out_stream
    takes
	out_stream out_stream
	integer integer
    returns_nothing
    external out_stream__integer_print


procedure unsigned_print@out_stream
    takes
	out_stream out_stream
	unsigned unsigned
	radix unsigned
    returns_nothing
    external out_stream__unsigned_print