File: netbuffer.mli

package info (click to toggle)
netstring 0.10.1-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 1,000 kB
  • ctags: 895
  • sloc: ml: 8,389; xml: 416; makefile: 188; sh: 103
file content (90 lines) | stat: -rw-r--r-- 2,790 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
(* $Id: netbuffer.mli,v 1.3 2000/06/25 22:34:43 gerd Exp $
 * ----------------------------------------------------------------------
 *
 *)


(* A Netbuffer.t is a buffer that can grow and shrink dynamically. *)

type t

val create : int -> t
    (* Creates a netbuffer which allocates initially this number of bytes. 
     * The logical length is zero.
     *)

val contents : t -> string
    (* Returns the contents of the buffer as fresh string. *)

val sub : t -> pos:int -> len:int -> string
    (* sub nb k n: returns the n characters starting at position n from 
     * netbuffer nb as fresh string
     *)

val length : t -> int
    (* Returns the logical length of the buffer *)

val add_string : t -> string -> unit
    (* add_string nb s: Adds a copy of the string s to the logical end of
     * the netbuffer nb. If necessary, the nb grows.
     *)

val add_sub_string : t -> string -> pos:int -> len:int -> unit
    (* add_sub_string nb s k n: Adds the substring of s starting at position
     * k with length n to the logical end of the netbuffer nb. If necessary,
     * the nb grows.
     * This is semantically the same as
     * add_string nb (String.sub s k n), but the extra copy is avoided.
     *)

val delete : t -> pos:int -> len:int -> unit
    (* delete nb k n: Deletes the n bytes at position k of netbuffer nb
     * in-place.
     * The netbuffer does not shrink!
     *)

val clear : t -> unit
    (* deletes all contents from the buffer. As 'delete', the netbuffer does
     * not shrink.
     *)

val try_shrinking : t -> unit
    (* try_shrinking nb: If the length of the buffer is less than half of
     * the allocated space, the netbuffer is reallocated in order to save
     * memory.
     *)

val index_from : t -> int -> char -> int
    (* index_from nb k c: Searches the character c in the netbuffer beginning
     * at position k. If found, the position of the left-most occurence is
     * returned. Otherwise, Not_found is raised.
     *)

val unsafe_buffer : t -> string
    (* WARNING! This is a low-level function!
     * Returns the current string that internally holds the buffer.
     * The byte positions 0 to length - 1 actually store the contents of
     * the buffer. You can directly read and modify the buffer. Note that
     * there is no protection if you read or write positions beyond the
     * length of the buffer.
     *)

val print_buffer : t -> unit
    (* For the toploop *)


(* ======================================================================
 * History:
 * 
 * $Log: netbuffer.mli,v $
 * Revision 1.3  2000/06/25 22:34:43  gerd
 * 	Added labels to arguments.
 *
 * Revision 1.2  2000/06/24 20:20:33  gerd
 * 	Added the toploop printer.
 *
 * Revision 1.1  2000/04/15 13:07:48  gerd
 * 	Initial revision.
 *
 * 
 *)