Lines Matching refs:rope
223 gsm_rope_init( GsmRope rope ) in gsm_rope_init() argument
225 rope->data = NULL; in gsm_rope_init()
226 rope->pos = 0; in gsm_rope_init()
227 rope->max = 0; in gsm_rope_init()
228 rope->error = 0; in gsm_rope_init()
232 gsm_rope_init_alloc( GsmRope rope, int count ) in gsm_rope_init_alloc() argument
234 rope->data = rope->data0; in gsm_rope_init_alloc()
235 rope->pos = 0; in gsm_rope_init_alloc()
236 rope->max = sizeof(rope->data0); in gsm_rope_init_alloc()
237 rope->error = 0; in gsm_rope_init_alloc()
240 rope->data = calloc( count, 1 ); in gsm_rope_init_alloc()
241 rope->max = count; in gsm_rope_init_alloc()
243 if (rope->data == NULL) { in gsm_rope_init_alloc()
244 rope->error = 1; in gsm_rope_init_alloc()
245 rope->max = 0; in gsm_rope_init_alloc()
251 gsm_rope_done( GsmRope rope ) in gsm_rope_done() argument
253 int result = rope->error; in gsm_rope_done()
255 if (rope->data && rope->data != rope->data0) in gsm_rope_done()
256 free(rope->data); in gsm_rope_done()
258 rope->data = NULL; in gsm_rope_done()
259 rope->pos = 0; in gsm_rope_done()
260 rope->max = 0; in gsm_rope_done()
261 rope->error = 0; in gsm_rope_done()
268 gsm_rope_done_acquire( GsmRope rope, int *psize ) in gsm_rope_done_acquire() argument
270 bytes_t result = rope->data; in gsm_rope_done_acquire()
272 *psize = rope->pos; in gsm_rope_done_acquire()
273 if (result == rope->data0) { in gsm_rope_done_acquire()
274 result = malloc( rope->pos ); in gsm_rope_done_acquire()
276 memcpy( result, rope->data, rope->pos ); in gsm_rope_done_acquire()
283 gsm_rope_ensure( GsmRope rope, int new_count ) in gsm_rope_ensure() argument
285 if (rope->data != NULL) { in gsm_rope_ensure()
286 int old_max = rope->max; in gsm_rope_ensure()
287 bytes_t old_data = rope->data == rope->data0 ? NULL : rope->data; in gsm_rope_ensure()
296 rope->error = 1; in gsm_rope_ensure()
299 rope->data = new_data; in gsm_rope_ensure()
300 rope->max = new_max; in gsm_rope_ensure()
302 rope->max = new_count; in gsm_rope_ensure()
308 gsm_rope_can_grow( GsmRope rope, int count ) in gsm_rope_can_grow() argument
310 if (!rope->data || rope->error) in gsm_rope_can_grow()
313 if (rope->pos + count > rope->max) in gsm_rope_can_grow()
315 if (rope->data == NULL) in gsm_rope_can_grow()
316 rope->max = rope->pos + count; in gsm_rope_can_grow()
318 else if (rope->error || in gsm_rope_can_grow()
319 gsm_rope_ensure( rope, rope->pos + count ) < 0) in gsm_rope_can_grow()
326 gsm_rope_add_c( GsmRope rope, char c ) in gsm_rope_add_c() argument
328 if (gsm_rope_can_grow(rope, 1)) { in gsm_rope_add_c()
329 rope->data[ rope->pos ] = (byte_t) c; in gsm_rope_add_c()
331 rope->pos += 1; in gsm_rope_add_c()
335 gsm_rope_add( GsmRope rope, const void* buf, int buflen ) in gsm_rope_add() argument
337 if (gsm_rope_can_grow(rope, buflen)) { in gsm_rope_add()
338 memcpy( rope->data + rope->pos, (const char*)buf, buflen ); in gsm_rope_add()
340 rope->pos += buflen; in gsm_rope_add()
344 gsm_rope_reserve( GsmRope rope, int count ) in gsm_rope_reserve() argument
348 if (gsm_rope_can_grow(rope, count)) in gsm_rope_reserve()
350 if (rope->data != NULL) in gsm_rope_reserve()
351 result = rope->data + rope->pos; in gsm_rope_reserve()
353 rope->pos += count; in gsm_rope_reserve()