File: Buffer.html

package info (click to toggle)
ocaml-doc 3.09-1
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 10,428 kB
  • ctags: 4,963
  • sloc: ml: 9,244; makefile: 2,413; ansic: 122; sh: 49; asm: 17
file content (176 lines) | stat: -rw-r--r-- 12,181 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="Start" href="index.html">
<link rel="previous" href="Bigarray.html">
<link rel="next" href="Callback.html">
<link rel="Up" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Index of module types" rel=Appendix href="index_module_types.html">
<link title="Arg" rel="Chapter" href="Arg.html">
<link title="Arith_status" rel="Chapter" href="Arith_status.html">
<link title="Array" rel="Chapter" href="Array.html">
<link title="ArrayLabels" rel="Chapter" href="ArrayLabels.html">
<link title="Big_int" rel="Chapter" href="Big_int.html">
<link title="Bigarray" rel="Chapter" href="Bigarray.html">
<link title="Buffer" rel="Chapter" href="Buffer.html">
<link title="Callback" rel="Chapter" href="Callback.html">
<link title="CamlinternalMod" rel="Chapter" href="CamlinternalMod.html">
<link title="CamlinternalOO" rel="Chapter" href="CamlinternalOO.html">
<link title="Char" rel="Chapter" href="Char.html">
<link title="Complex" rel="Chapter" href="Complex.html">
<link title="Condition" rel="Chapter" href="Condition.html">
<link title="Dbm" rel="Chapter" href="Dbm.html">
<link title="Digest" rel="Chapter" href="Digest.html">
<link title="Dynlink" rel="Chapter" href="Dynlink.html">
<link title="Event" rel="Chapter" href="Event.html">
<link title="Filename" rel="Chapter" href="Filename.html">
<link title="Format" rel="Chapter" href="Format.html">
<link title="Gc" rel="Chapter" href="Gc.html">
<link title="Genlex" rel="Chapter" href="Genlex.html">
<link title="Graphics" rel="Chapter" href="Graphics.html">
<link title="GraphicsX11" rel="Chapter" href="GraphicsX11.html">
<link title="Hashtbl" rel="Chapter" href="Hashtbl.html">
<link title="Int32" rel="Chapter" href="Int32.html">
<link title="Int64" rel="Chapter" href="Int64.html">
<link title="Lazy" rel="Chapter" href="Lazy.html">
<link title="Lexing" rel="Chapter" href="Lexing.html">
<link title="List" rel="Chapter" href="List.html">
<link title="ListLabels" rel="Chapter" href="ListLabels.html">
<link title="Map" rel="Chapter" href="Map.html">
<link title="Marshal" rel="Chapter" href="Marshal.html">
<link title="MoreLabels" rel="Chapter" href="MoreLabels.html">
<link title="Mutex" rel="Chapter" href="Mutex.html">
<link title="Nativeint" rel="Chapter" href="Nativeint.html">
<link title="Num" rel="Chapter" href="Num.html">
<link title="Obj" rel="Chapter" href="Obj.html">
<link title="Oo" rel="Chapter" href="Oo.html">
<link title="Parsing" rel="Chapter" href="Parsing.html">
<link title="Pervasives" rel="Chapter" href="Pervasives.html">
<link title="Printexc" rel="Chapter" href="Printexc.html">
<link title="Printf" rel="Chapter" href="Printf.html">
<link title="Queue" rel="Chapter" href="Queue.html">
<link title="Random" rel="Chapter" href="Random.html">
<link title="Scanf" rel="Chapter" href="Scanf.html">
<link title="Set" rel="Chapter" href="Set.html">
<link title="Sort" rel="Chapter" href="Sort.html">
<link title="Stack" rel="Chapter" href="Stack.html">
<link title="StdLabels" rel="Chapter" href="StdLabels.html">
<link title="Str" rel="Chapter" href="Str.html">
<link title="Stream" rel="Chapter" href="Stream.html">
<link title="String" rel="Chapter" href="String.html">
<link title="StringLabels" rel="Chapter" href="StringLabels.html">
<link title="Sys" rel="Chapter" href="Sys.html">
<link title="Thread" rel="Chapter" href="Thread.html">
<link title="ThreadUnix" rel="Chapter" href="ThreadUnix.html">
<link title="Unix" rel="Chapter" href="Unix.html">
<link title="UnixLabels" rel="Chapter" href="UnixLabels.html">
<link title="Weak" rel="Chapter" href="Weak.html"><title>Buffer</title>
</head>
<body>
<div class="navbar"><a href="Bigarray.html">Previous</a>
&nbsp;<a href="index.html">Up</a>
&nbsp;<a href="Callback.html">Next</a>
</div>
<center><h1>Module <a href="type_Buffer.html">Buffer</a></h1></center>
<br>
<pre><span class="keyword">module</span> Buffer: <code class="code"><span class="keyword">sig</span></code> <a href="Buffer.html">..</a> <code class="code"><span class="keyword">end</span></code></pre>Extensible string buffers.
<p>

   This module implements string buffers that automatically expand
   as necessary.  It provides accumulative concatenation of strings
   in quasi-linear time (instead of quadratic time when strings are
   concatenated pairwise).<br>
<hr width="100%">
<pre><span class="keyword">type</span> <a name="TYPEt"></a><code class="type"></code>t </pre>
<div class="info">
The abstract type of buffers.<br>
</div>

<pre><span class="keyword">val</span> <a name="VALcreate"></a>create : <code class="type">int -> <a href="Buffer.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">create n</code> returns a fresh buffer, initially empty.
   The <code class="code">n</code> parameter is the initial size of the internal string
   that holds the buffer contents. That string is automatically
   reallocated when more than <code class="code">n</code> characters are stored in the buffer,
   but shrinks back to <code class="code">n</code> characters when <code class="code">reset</code> is called.
   For best performance, <code class="code">n</code> should be of the same order of magnitude
   as the number of characters that are expected to be stored in
   the buffer (for instance, 80 for a buffer that holds one output
   line).  Nothing bad will happen if the buffer grows beyond that
   limit, however. In doubt, take <code class="code">n = 16</code> for instance.
   If <code class="code">n</code> is not between 1 and <a href="Sys.html#VALmax_string_length"><code class="code"><span class="constructor">Sys</span>.max_string_length</code></a>, it will
   be clipped to that interval.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALcontents"></a>contents : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> string</code></pre><div class="info">
Return a copy of the current contents of the buffer.
   The buffer itself is unchanged.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALsub"></a>sub : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> int -> int -> string</code></pre><div class="info">
<code class="code"><span class="constructor">Buffer</span>.sub b off len</code> returns (a copy of) the substring of the
current contents of the buffer <code class="code">b</code> starting at offset <code class="code">off</code> of length
<code class="code">len</code> bytes. May raise <code class="code"><span class="constructor">Invalid_argument</span></code> if out of bounds request. The
buffer itself is unaffected.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALnth"></a>nth : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> int -> char</code></pre><div class="info">
get the n-th character of the buffer. Raise <code class="code"><span class="constructor">Invalid_argument</span></code> if
index out of bounds<br>
</div>
<pre><span class="keyword">val</span> <a name="VALlength"></a>length : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> int</code></pre><div class="info">
Return the number of characters currently contained in the buffer.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALclear"></a>clear : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> unit</code></pre><div class="info">
Empty the buffer.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALreset"></a>reset : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> unit</code></pre><div class="info">
Empty the buffer and deallocate the internal string holding the
   buffer contents, replacing it with the initial internal string
   of length <code class="code">n</code> that was allocated by <a href="Buffer.html#VALcreate"><code class="code"><span class="constructor">Buffer</span>.create</code></a> <code class="code">n</code>.
   For long-lived buffers that may have grown a lot, <code class="code">reset</code> allows
   faster reclamation of the space used by the buffer.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALadd_char"></a>add_char : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> char -> unit</code></pre><div class="info">
<code class="code">add_char b c</code> appends the character <code class="code">c</code> at the end of the buffer <code class="code">b</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALadd_string"></a>add_string : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> string -> unit</code></pre><div class="info">
<code class="code">add_string b s</code> appends the string <code class="code">s</code> at the end of the buffer <code class="code">b</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALadd_substring"></a>add_substring : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> string -> int -> int -> unit</code></pre><div class="info">
<code class="code">add_substring b s ofs len</code> takes <code class="code">len</code> characters from offset
   <code class="code">ofs</code> in string <code class="code">s</code> and appends them at the end of the buffer <code class="code">b</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALadd_substitute"></a>add_substitute : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> (string -> string) -> string -> unit</code></pre><div class="info">
<code class="code">add_substitute b f s</code> appends the string pattern <code class="code">s</code> at the end
   of the buffer <code class="code">b</code> with substitution.
   The substitution process looks for variables into
   the pattern and substitutes each variable name by its value, as
   obtained by applying the mapping <code class="code">f</code> to the variable name. Inside the
   string pattern, a variable name immediately follows a non-escaped
   <code class="code">$</code> character and is one of the following:<ul>
<li>a non empty sequence of alphanumeric or <code class="code">_</code> characters,</li>
<li>an arbitrary sequence of characters enclosed by a pair of
   matching parentheses or curly brackets.
   An escaped <code class="code">$</code> character is a <code class="code">$</code> that immediately follows a backslash
   character; it then stands for a plain <code class="code">$</code>.
   Raise <code class="code"><span class="constructor">Not_found</span></code> if the closing character of a parenthesized variable
   cannot be found.</li>
</ul>
<br>
</div>
<pre><span class="keyword">val</span> <a name="VALadd_buffer"></a>add_buffer : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> <a href="Buffer.html#TYPEt">t</a> -> unit</code></pre><div class="info">
<code class="code">add_buffer b1 b2</code> appends the current contents of buffer <code class="code">b2</code>
   at the end of buffer <code class="code">b1</code>.  <code class="code">b2</code> is not modified.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALadd_channel"></a>add_channel : <code class="type"><a href="Buffer.html#TYPEt">t</a> -> <a href="Pervasives.html#TYPEin_channel">in_channel</a> -> int -> unit</code></pre><div class="info">
<code class="code">add_channel b ic n</code> reads exactly <code class="code">n</code> character from the
   input channel <code class="code">ic</code> and stores them at the end of buffer <code class="code">b</code>.
   Raise <code class="code"><span class="constructor">End_of_file</span></code> if the channel contains fewer than <code class="code">n</code>
   characters.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALoutput_buffer"></a>output_buffer : <code class="type"><a href="Pervasives.html#TYPEout_channel">out_channel</a> -> <a href="Buffer.html#TYPEt">t</a> -> unit</code></pre><div class="info">
<code class="code">output_buffer oc b</code> writes the current contents of buffer <code class="code">b</code>
   on the output channel <code class="code">oc</code>.<br>
</div>
</body></html>