File: channel.mli

package info (click to toggle)
sks 1.1.6-14
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid
  • size: 2,296 kB
  • sloc: ml: 15,228; ansic: 1,069; sh: 358; makefile: 347
file content (150 lines) | stat: -rw-r--r-- 5,319 bytes parent folder | download | duplicates (5)
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
(***********************************************************************)
(* channel.mli - A generic, object-based channel interface for binary  *)
(*               input/output                                          *)
(*                                                                     *)
(* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, *)
(*               2011, 2012, 2013  Yaron Minsky and Contributors       *)
(*                                                                     *)
(* This file is part of SKS.  SKS is free software; you can            *)
(* redistribute it and/or modify it under the terms of the GNU General *)
(* Public License as published by the Free Software Foundation; either *)
(* version 2 of the License, or (at your option) any later version.    *)
(*                                                                     *)
(* This program is distributed in the hope that it will be useful, but *)
(* WITHOUT ANY WARRANTY; without even the implied warranty of          *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   *)
(* General Public License for more details.                            *)
(*                                                                     *)
(* You should have received a copy of the GNU General Public License   *)
(* along with this program; if not, write to the Free Software         *)
(* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *)
(* USA or see <http://www.gnu.org/licenses/>.                          *)
(***********************************************************************)

class virtual out_channel_obj :
  object
    method upcast : out_channel_obj
    method virtual write_byte : int -> unit
    method virtual write_char : char -> unit
    method write_float : float -> unit
    method write_int : int -> unit
    method write_int32 : int32 -> unit
    method write_int64 : int64 -> unit
    method virtual write_string : string -> unit
    method virtual write_string_pos :
      buf:string -> pos:int -> len:int -> unit
  end

class virtual in_channel_obj :
  object
    method virtual read_byte : int
    method virtual read_char : char
    method read_float : float
    method read_int : int
    method read_int32 : int32
    method read_int64 : int64
    method read_int64_size : int -> int64
    method read_int_size : int -> int
    method virtual read_string : int -> string
    method virtual read_string_pos : buf:string -> pos:int -> len:int -> unit
    method upcast : in_channel_obj
  end

(******************************************************************)

class sys_out_channel :
  out_channel ->
  object
    method close : unit
    method fd : Unix.file_descr
    method flush : unit
    method outchan : out_channel
    method skip : int -> unit
    method upcast : out_channel_obj
    method write_buf : Buffer.t -> unit
    method write_byte : int -> unit
    method write_char : char -> unit
    method write_float : float -> unit
    method write_int : int -> unit
    method write_int32 : int32 -> unit
    method write_int64 : int64 -> unit
    method write_string : string -> unit
    method write_string_pos : buf:string -> pos:int -> len:int -> unit
  end

class sys_in_channel :
  in_channel ->
  object
    method close : unit
    method fd : Unix.file_descr
    method inchan : in_channel
    method read_all : string
    method read_byte : int
    method read_char : char
    method read_float : float
    method read_int : int
    method read_int32 : int32
    method read_int64 : int64
    method read_int64_size : int -> int64
    method read_int_size : int -> int
    method read_string : int -> string
    method read_string_pos : buf:string -> pos:int -> len:int -> unit
    method upcast : in_channel_obj
  end

class buffer_out_channel :
  Buffer.t ->
  object
    method buffer_nocopy : Buffer.t
    method contents : string
    method upcast : out_channel_obj
    method write_byte : int -> unit
    method write_char : char -> unit
    method write_float : float -> unit
    method write_int : int -> unit
    method write_int32 : int32 -> unit
    method write_int64 : int64 -> unit
    method write_string : string -> unit
    method write_string_pos : buf:string -> pos:int -> len:int -> unit
  end

class string_in_channel :
  string ->
  int ->
  object
    method read_byte : int
    method read_char : char
    method read_float : float
    method read_int : int
    method read_int32 : int32
    method read_int64 : int64
    method read_int64_size : int -> int64
    method read_int_size : int -> int
    method read_string : int -> string
    method read_string_pos : buf:string -> pos:int -> len:int -> unit
    method read_rest : string
    method skip : int -> unit
    method upcast : in_channel_obj
    val mutable pos : int
  end

(*******************************************************************)

val new_buffer_outc : int -> buffer_out_channel
val sys_out_from_fd : Unix.file_descr -> sys_out_channel
val sys_in_from_fd : Unix.file_descr -> sys_in_channel

(*
class nonblocking_reader :
  Unix.file_descr ->
  object
    method read : string_in_channel option
  end

class nonblocking_writer :
  Unix.file_descr ->
  object
    method set_data : string -> unit
    method write : bool
  end
*)