Lines Matching refs:buffer
2 * buffer.c -- generic memory buffer .
14 #include "buffer.h"
19 buffer_type *buffer = (buffer_type *) arg;
20 assert(!buffer->_fixed);
21 free(buffer->_data);
27 buffer_type *buffer
29 if (!buffer)
32 buffer->_data = (uint8_t *) xalloc(capacity);
33 buffer->_position = 0;
34 buffer->_limit = buffer->_capacity = capacity;
35 buffer->_fixed = 0;
36 buffer_invariant(buffer);
38 region_add_cleanup(region, buffer_cleanup, buffer);
40 return buffer;
44 buffer_create_from(buffer_type *buffer, const void *data, size_t size)
48 buffer->_position = 0;
49 buffer->_limit = buffer->_capacity = size;
50 buffer->_data = (uint8_t *) data;
51 buffer->_fixed = 1;
53 buffer_invariant(buffer);
57 buffer_clear(buffer_type *buffer)
59 buffer_invariant(buffer);
61 buffer->_position = 0;
62 buffer->_limit = buffer->_capacity;
66 buffer_flip(buffer_type *buffer)
68 buffer_invariant(buffer);
70 buffer->_limit = buffer->_position;
71 buffer->_position = 0;
75 buffer_rewind(buffer_type *buffer)
77 buffer_invariant(buffer);
79 buffer->_position = 0;
83 buffer_set_capacity(buffer_type *buffer, size_t capacity)
85 buffer_invariant(buffer);
86 assert(buffer->_position <= capacity);
87 buffer->_data = (uint8_t *) xrealloc(buffer->_data, capacity);
88 buffer->_limit = buffer->_capacity = capacity;
92 buffer_reserve(buffer_type *buffer, size_t amount)
94 buffer_invariant(buffer);
95 assert(!buffer->_fixed);
96 if (buffer->_capacity < buffer->_position + amount) {
97 size_t new_capacity = buffer->_capacity * 3 / 2;
98 if (new_capacity < buffer->_position + amount) {
99 new_capacity = buffer->_position + amount;
101 buffer_set_capacity(buffer, new_capacity);
103 buffer->_limit = buffer->_capacity;
107 buffer_printf(buffer_type *buffer, const char *format, ...)
113 buffer_invariant(buffer);
114 assert(buffer->_limit == buffer->_capacity);
116 remaining = buffer_remaining(buffer);
118 written = vsnprintf((char *) buffer_current(buffer), remaining,
122 buffer_reserve(buffer, written + 1);
124 written = vsnprintf((char *) buffer_current(buffer),
125 buffer_remaining(buffer),
129 buffer->_position += written;