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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
|
// included by glib2.pas
{$IFDEF read_forward_definitions}
{$ENDIF read_forward_definitions}
//------------------------------------------------------------------------------
{$IFDEF read_interface_types}
PGIOError = ^TGIOError;
TGIOError = (
G_IO_ERROR_NONE,
G_IO_ERROR_AGAIN,
G_IO_ERROR_INVAL,
G_IO_ERROR_UNKNOWN
);
PGIOChannelError = ^TGIOChannelError;
TGIOChannelError = (
G_IO_CHANNEL_ERROR_FBIG,
G_IO_CHANNEL_ERROR_INVAL,
G_IO_CHANNEL_ERROR_IO,
G_IO_CHANNEL_ERROR_ISDIR,
G_IO_CHANNEL_ERROR_NOSPC,
G_IO_CHANNEL_ERROR_NXIO,
G_IO_CHANNEL_ERROR_OVERFLOW,
G_IO_CHANNEL_ERROR_PIPE,
G_IO_CHANNEL_ERROR_FAILED
);
PGIOStatus = ^TGIOStatus;
TGIOStatus = (
G_IO_STATUS_ERROR,
G_IO_STATUS_NORMAL,
G_IO_STATUS_EOF,
G_IO_STATUS_AGAIN
);
PGSeekType = ^TGSeekType;
TGSeekType = (
G_SEEK_CUR,
G_SEEK_SET,
G_SEEK_END
);
PGIOCondition = ^TGIOCondition;
TGIOCondition = gint;
PGIOFlags = ^TGIOFlags;
TGIOFlags = gint;
PGIOChannel = ^TGIOChannel;
TGIOFunc = function (source:PGIOChannel; condition:TGIOCondition; data:gpointer):gboolean;cdecl;
PGIOFuncs = ^TGIOFuncs;
TGIOFuncs = record
io_read : function (channel:PGIOChannel; buf:Pgchar; count:gsize; bytes_read:Pgsize; err:PPGError):TGIOStatus;cdecl;
io_write : function (channel:PGIOChannel; buf:Pgchar; count:gsize; bytes_written:Pgsize; err:PPGError):TGIOStatus;cdecl;
io_seek : function (channel:PGIOChannel; offset:gint64; _type:TGSeekType; err:PPGError):TGIOStatus;cdecl;
io_close : function (channel:PGIOChannel; err:PPGError):TGIOStatus;cdecl;
io_create_watch : function (channel:PGIOChannel; condition:TGIOCondition):PGSource;cdecl;
io_free : procedure (channel:PGIOChannel);cdecl;
io_set_flags : function (channel:PGIOChannel; flags:TGIOFlags; err:PPGError):TGIOStatus;cdecl;
io_get_flags : function (channel:PGIOChannel):TGIOFlags;cdecl;
end;
TGIOChannel = record
ref_count : guint;
funcs : PGIOFuncs;
encoding : Pgchar;
read_cd : TGIConv;
write_cd : TGIConv;
line_term : Pgchar; // String which indicates the end of a line of text
line_term_len : guint; // So we can have null in the line term
buf_size : gsize;
read_buf : PGString; // Raw data from the channel
encoded_read_buf : PGString; // Channel data converted to UTF-8
write_buf : PGString; // Data ready to be written to the file
partial_write_buf : array[0..5] of gchar; // UTF-8 partial characters, null terminated
{ Group the flags together, immediately after partial_write_buf, to save memory }
flag0 : word;
reserved1 : gpointer;
reserved2 : gpointer;
end;
{$ENDIF read_interface_types}
//------------------------------------------------------------------------------
{$IFDEF read_interface_rest}
function G_IO_CHANNEL_ERROR : TGQuark;
const
G_IO_IN = GLIB_SYSDEF_POLLIN;
G_IO_OUT = GLIB_SYSDEF_POLLOUT;
G_IO_PRI = GLIB_SYSDEF_POLLPRI;
G_IO_ERR = GLIB_SYSDEF_POLLERR;
G_IO_HUP = GLIB_SYSDEF_POLLHUP;
G_IO_NVAL = GLIB_SYSDEF_POLLNVAL;
const
G_IO_FLAG_APPEND = 1 shl 0;
G_IO_FLAG_NONBLOCK = 1 shl 1;
G_IO_FLAG_IS_READABLE = 1 shl 2;
G_IO_FLAG_IS_WRITEABLE = 1 shl 3;
G_IO_FLAG_IS_SEEKABLE = 1 shl 4;
G_IO_FLAG_MASK = (1 shl 5) - 1;
G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK;
G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND or G_IO_FLAG_NONBLOCK;
const
bm_TGIOChannel_use_buffer = $1;
bp_TGIOChannel_use_buffer = 0;
bm_TGIOChannel_do_encode = $2;
bp_TGIOChannel_do_encode = 1;
bm_TGIOChannel_close_on_unref = $4;
bp_TGIOChannel_close_on_unref = 2;
bm_TGIOChannel_is_readable = $8;
bp_TGIOChannel_is_readable = 3;
bm_TGIOChannel_is_writeable = $10;
bp_TGIOChannel_is_writeable = 4;
bm_TGIOChannel_is_seekable = $20;
bp_TGIOChannel_is_seekable = 5;
{ use this to get/set information to the TGIOChannel struct}
function TGIOChannel_use_buffer (var a : TGIOChannel) : guint;
procedure TGIOChannel_set_use_buffer (var a : TGIOChannel; __use_buffer : guint);
function TGIOChannel_do_encode (var a : TGIOChannel) : guint;
procedure TGIOChannel_set_do_encode (var a : TGIOChannel; __do_encode : guint);
function TGIOChannel_close_on_unref (var a : TGIOChannel) : guint;
procedure TGIOChannel_set_close_on_unref (var a : TGIOChannel; __close_on_unref : guint);
function TGIOChannel_is_readable (var a : TGIOChannel) : guint;
procedure TGIOChannel_set_is_readable (var a : TGIOChannel; __is_readable : guint);
function TGIOChannel_is_writeable (var a : TGIOChannel) : guint;
procedure TGIOChannel_set_is_writeable (var a : TGIOChannel; __is_writeable : guint);
function TGIOChannel_is_seekable (var a : TGIOChannel) : guint;
procedure TGIOChannel_set_is_seekable (var a : TGIOChannel; __is_seekable : guint);
procedure g_io_channel_init(channel:PGIOChannel);cdecl;external gliblib name 'g_io_channel_init';
procedure g_io_channel_ref(channel:PGIOChannel);cdecl;external gliblib name 'g_io_channel_ref';
procedure g_io_channel_unref(channel:PGIOChannel);cdecl;external gliblib name 'g_io_channel_unref';
{DEPRECATED functions}
function g_io_channel_read(channel:PGIOChannel; buf:Pgchar; count:gsize; bytes_read:Pgsize):TGIOError;cdecl;external gliblib name 'g_io_channel_read';
function g_io_channel_write(channel:PGIOChannel; buf:Pgchar; count:gsize; bytes_written:Pgsize):TGIOError;cdecl;external gliblib name 'g_io_channel_write';
function g_io_channel_seek(channel:PGIOChannel; offset:gint64; _type:TGSeekType):TGIOError;cdecl;external gliblib name 'g_io_channel_seek';
procedure g_io_channel_close(channel:PGIOChannel);cdecl;external gliblib name 'g_io_channel_close';
{end of DEPRECATED functions}
function g_io_channel_shutdown(channel:PGIOChannel; flush:gboolean; err:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_shutdown';
function g_io_add_watch_full(channel:PGIOChannel; priority:gint; condition:TGIOCondition; func:TGIOFunc; user_data:gpointer;
notify:TGDestroyNotify):guint;cdecl;external gliblib name 'g_io_add_watch_full';
function g_io_create_watch(channel:PGIOChannel; condition:TGIOCondition):PGSource;cdecl;external gliblib name 'g_io_create_watch';
function g_io_add_watch(channel:PGIOChannel; condition:TGIOCondition; func:TGIOFunc; user_data:gpointer):guint;cdecl;external gliblib name 'g_io_add_watch';
{ character encoding conversion involved functions. }
procedure g_io_channel_set_buffer_size(channel:PGIOChannel; size:gsize);cdecl;external gliblib name 'g_io_channel_set_buffer_size';
function g_io_channel_get_buffer_size(channel:PGIOChannel):gsize;cdecl;external gliblib name 'g_io_channel_get_buffer_size';
function g_io_channel_get_buffer_condition(channel:PGIOChannel):TGIOCondition;cdecl;external gliblib name 'g_io_channel_get_buffer_condition';
function g_io_channel_set_flags(channel:PGIOChannel; flags:TGIOFlags; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_set_flags';
function g_io_channel_get_flags(channel:PGIOChannel):TGIOFlags;cdecl;external gliblib name 'g_io_channel_get_flags';
procedure g_io_channel_set_line_term(channel:PGIOChannel; line_term:Pgchar; length:gint);cdecl;external gliblib name 'g_io_channel_set_line_term';
function g_io_channel_get_line_term(channel:PGIOChannel; length:Pgint):pgchar;cdecl;external gliblib name 'g_io_channel_get_line_term';
procedure g_io_channel_set_buffered(channel:PGIOChannel; buffered:gboolean);cdecl;external gliblib name 'g_io_channel_set_buffered';
function g_io_channel_get_buffered(channel:PGIOChannel):gboolean;cdecl;external gliblib name 'g_io_channel_get_buffered';
function g_io_channel_set_encoding(channel:PGIOChannel; encoding:Pgchar; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_set_encoding';
function g_io_channel_get_encoding(channel:PGIOChannel):pgchar;cdecl;external gliblib name 'g_io_channel_get_encoding';
procedure g_io_channel_set_close_on_unref(channel:PGIOChannel; do_close:gboolean);cdecl;external gliblib name 'g_io_channel_set_close_on_unref';
function g_io_channel_get_close_on_unref(channel:PGIOChannel):gboolean;cdecl;external gliblib name 'g_io_channel_get_close_on_unref';
function g_io_channel_flush(channel:PGIOChannel; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_flush';
function g_io_channel_read_line(channel:PGIOChannel; str_return:PPgchar; length:Pgsize; terminator_pos:Pgsize; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_read_line';
function g_io_channel_read_line_string(channel:PGIOChannel; buffer:PGString; terminator_pos:Pgsize; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_read_line_string';
function g_io_channel_read_to_end(channel:PGIOChannel; str_return:PPgchar; length:Pgsize; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_read_to_end';
function g_io_channel_read_chars(channel:PGIOChannel; buf:Pgchar; count:gsize; bytes_read:Pgsize; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_read_chars';
function g_io_channel_read_unichar(channel:PGIOChannel; thechar:Pgunichar; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_read_unichar';
function g_io_channel_write_chars(channel:PGIOChannel; buf:Pgchar; count:gssize; bytes_written:Pgsize; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_write_chars';
function g_io_channel_write_unichar(channel:PGIOChannel; thechar:gunichar; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_write_unichar';
function g_io_channel_seek_position(channel:PGIOChannel; offset:gint64; _type:TGSeekType; error:PPGError):TGIOStatus;cdecl;external gliblib name 'g_io_channel_seek_position';
function g_io_channel_new_file(filename:Pgchar; mode:Pgchar; error:PPGError):PGIOChannel;cdecl;external gliblib name 'g_io_channel_new_file';
{ Error handling }
function g_io_channel_error_quark:TGQuark;cdecl;external gliblib name 'g_io_channel_error_quark';
function g_io_channel_error_from_errno(en:gint):TGIOChannelError;cdecl;external gliblib name 'g_io_channel_error_from_errno';
function g_io_channel_unix_new(fd:longint):PGIOChannel;cdecl;external gliblib name 'g_io_channel_unix_new';
function g_io_channel_unix_get_fd(channel:PGIOChannel):gint;cdecl;external gliblib name 'g_io_channel_unix_get_fd';
{ Hook for GClosure / GSource integration. Don't touch }
//GLIB_VAR GSourceFuncs g_io_watch_funcs;
{$ifdef WINDOWS}
const
G_WIN32_MSG_HANDLE = 19981206;
procedure g_io_channel_win32_make_pollfd(channel:PGIOChannel; condition:TGIOCondition; fd:PGPollFD);cdecl;external gliblib name 'g_io_channel_win32_make_pollfd';
function g_io_channel_win32_poll(fds:PGPollFD; n_fds:gint; timeout:gint):gint;cdecl;external gliblib name 'g_io_channel_win32_poll';
function g_io_channel_win32_new_messages(hwnd:guint):PGIOChannel;cdecl;external gliblib name 'g_io_channel_win32_new_messages';
function g_io_channel_win32_new_fd(fd:gint):PGIOChannel;cdecl;external gliblib name 'g_io_channel_win32_new_fd';
function g_io_channel_win32_get_fd(channel:PGIOChannel):gint;cdecl;external gliblib name 'g_io_channel_win32_get_fd';
function g_io_channel_win32_new_socket(socket:gint):PGIOChannel;cdecl;external gliblib name 'g_io_channel_win32_new_socket';
{$endif}
{$ENDIF read_interface_rest}
// included by glib2.pas
|