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 #ifndef UCX_BUFFER_H
47 #define UCX_BUFFER_H
48
49 #include "ucx.h"
50 #include <sys/types.h>
51 #include <stdio.h>
52
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56
57
58
59
60 #define UCX_BUFFER_DEFAULT 0x00
61
62
63
64
65 #define UCX_BUFFER_AUTOFREE 0x01
66
67
68
69
70 #define UCX_BUFFER_AUTOEXTEND 0x02
71
72
73 typedef struct {
74
75 char *space;
76
77 size_t pos;
78
79 size_t capacity;
80
81 size_t size;
82
83
84
85
86
87
88 int flags;
89 } UcxBuffer;
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 UcxBuffer *ucx_buffer_new(
void *space,
size_t capacity,
int flags);
105
106
107
108
109
110
111
112
113
114 void ucx_buffer_free(UcxBuffer* buffer);
115
116
117
118
119
120
121
122
123
124
125
126
127 UcxBuffer* ucx_buffer_extract(UcxBuffer *src,
128 size_t start,
size_t length,
int flags);
129
130
131
132
133
134
135
136
137 #define ucx_buffer_clone(src,flags) \
138 ucx_buffer_extract(src,
0, (src)->capacity, flags)
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159 int ucx_buffer_seek(UcxBuffer *buffer,
off_t offset,
int whence);
160
161
162
163
164
165
166
167
168 #define ucx_buffer_clear(buffer) memset(buffer->space,
0, buffer->size); \
169 buffer->size =
0; buffer->pos =
0;
170
171
172
173
174
175
176
177
178 int ucx_buffer_eof(UcxBuffer *buffer);
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197 int ucx_buffer_extend(UcxBuffer *buffer,
size_t additional_bytes);
198
199
200
201
202
203
204
205
206
207
208
209
210 size_t ucx_buffer_write(
const void *ptr,
size_t size,
size_t nitems,
211 UcxBuffer *buffer);
212
213
214
215
216
217
218
219
220
221
222
223
224 size_t ucx_buffer_read(
void *ptr,
size_t size,
size_t nitems,
225 UcxBuffer *buffer);
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243 int ucx_buffer_putc(UcxBuffer *buffer,
int c);
244
245
246
247
248
249
250
251
252
253
254 int ucx_buffer_getc(UcxBuffer *buffer);
255
256
257
258
259
260
261
262
263 size_t ucx_buffer_puts(UcxBuffer *buffer,
char *str);
264
265 #ifdef __cplusplus
266 }
267 #endif
268
269 #endif
270
271