Module Buffer


module Buffer: sig  end
伸縮性のある文字列バッファです。

このモジュールでは、必要に応じて自動的に大きくなる文字列バッファを提供します。ペアでの連結では 2 次元オーダの時間がかかるところを、このモジュールでは準線形時間での文字列累積連結が可能です。



type t
バッファの抽象型。

val create : int -> t
create n は、空の新しいバッファを返します。パラメータ n はバッファの内容を保持する内部文字列の初期サイズを指定します。バッファに n 以上の文字がストアされた場合、内部文字列は自動的に再割り当てされます。また、reset が呼ばれた場合、内部文字列は n 文字に縮められます。n にはバッファに入れる文字列の長さと同じオーダの数を指定するといいです (例えば、一行の出力を保持するバッファなら 80 を指定するといいです) 。制限を超えても問題は発生しませんが (疑うようなら n = 16 のような例を試してみてください) 。もし n が 1 から Sys.max_string_length までの間でなかった場合、この範囲にクリッピングされます。
val contents : t -> string
バッファの現在の内容をコピーして返します。バッファ自体に変更はありません。
val length : t -> int
バッファの現在の内容の長さを返します。
val clear : t -> unit
バッファを空にします。
val reset : t -> unit
バッファを空にして、バッファの内部文字列を解放し、Buffer.create n で指定された n の長さの文字列を確保し、これを内部文字列とします。バッファは長く使っているうちに肥大化してしまうことがあります。reset によって、バッファが使用しているスペースを高速に回収できるようになります。
val add_char : t -> char -> unit
add_char b c は、バッファ b の終端に文字 c を追加します。
val add_string : t -> string -> unit
add_string b s は、バッファ b の終端に文字列 s を追加します。
val add_substring : t -> string -> int -> int -> unit
add_substring b s ofs len は、文字列 s の部分文字列 (位置 ofs から長さ len の文字列) を、バッファ b の終端に追加します。
val add_buffer : t -> t -> unit
add_buffer b1 b2 は、バッファ b2 の内容を、バッファ b1 の終端に追加します。バッファ b2 は変更されません。
val add_channel : t -> Pervasives.in_channel -> int -> unit
add_channel b ic n は、入力チャンネル ic から n 文字読み取り、それをバッファ b の終端に追加します。チャンネルから n 文字分の内容を読みとれなかった場合は例外 End_of_file を発生します。
val output_buffer : Pervasives.out_channel -> t -> unit
output_buffer oc b は、バッファ b の内容を、出力チャンネル oc に書き出します。