Module Gz
module Gz: sig
.. end
Zlib interface
The module Gz
redefines most of the I/O functions of
Pervasives
to allow I/O on compressed files (using the
zlib
library). It doesn't use zlib
lower-level
functions, so there might be some way to write a more efficient
interface ; this one is however, very small (and didn't take much
time to write!).
Datatypes & exceptions
type
in_channel
type
out_channel
exception Error of string
When exception Error
is raised, the channel is automatically closed.
val version : string
Output funcions
type
zstrategy =
| |
Default |
| |
Filtered |
| |
Huffman_only |
val open_out : ?compression:int -> ?strategy:zstrategy -> string -> out_channel
open_out
opens the given filename for writing.
compression
: specifies the level of compression : 0
is no compression, 1 is fastest , 9 is best but slowest. The default
is a compromise (6, I think).
strategy
: refer to the zlib
manual (i.e the header
file zlib.h
)
val setparams : out_channel -> compression:int -> strategy:zstrategy -> unit
setparams
modifies the two parameters of an opened channel
These functions output substrings, strings, char or char value
(int
argument). The external
ones use the zlib
functions, the usual Caml ones are only wrappers around
those. output_string
and write
will correctly handle
null characters embedded in Caml strings. output_value
uses
Marshal
module.
val write : out_channel -> buf:string -> pos:int -> len:int -> unit
val output_string : out_channel -> string -> unit
val output_char : out_channel -> char -> unit
val output_byte : out_channel -> int -> unit
val output_newline : out_channel -> unit
val output_endline : out_channel -> string -> unit
val output_value : out_channel -> 'a -> unit
type
flush =
| |
Sync_flush |
| |
Full_flush |
| |
Finish_flush |
val flush : ?flush:flush -> out_channel -> unit
The flush
function should be used with caution because it can
degrade compression.
flush
: defaults to Sync_flush
.
val seek_out : out_channel -> offset:int -> unit
seek_out
set the position of the next write operation on the
channel. Only forward seeks are supported; seek_out
then
compresses a sequence of zeroes up to the new starting position. It
Raises Invalid_argument
if called with a negative offset.
val pos_out : out_channel -> int
val close_out : out_channel -> unit
close_out
flushes all pending output if necessary, closes the
compressed file and deallocates all the (de)compression state. Any
subsequent use of the channel will raise an Error
exception.
Input functions
val open_in : string -> in_channel
read
reads characters from the stream and returns the number
of bytes actually read ; it does not raise End_of_file
.
input_char
and input_line
should
appropriately raise End_of_file
if necessary.
input_value
uses Marshal
module.
val read : in_channel -> buf:string -> pos:int -> len:int -> int
val input_char : in_channel -> char
val input_line : in_channel -> string
val input_value : in_channel -> 'a
val rewind : in_channel -> unit
val seek_in : in_channel -> offset:int -> unit
The seek_in
function is emulated but can be extremely slow.
val pos_in : in_channel -> int
val close_in : in_channel -> unit
In-memory compression
These functions compress and uncompress from a string to another
string.
val compress : ?compression:int -> string -> pos:int -> len:int -> string
val uncompress : string -> pos:int -> len:int -> string