9 VOLK_Buffer *buf,
const size_t size,
const unsigned char *data);
12static inline char unescape_char (
const char c);
19 VOLK_Buffer *buf,
const size_t size,
const unsigned char *data)
30 unsigned char *tmp = realloc (buf->
addr, size);
37 if (data && buf->
addr) memcpy (buf->
addr, data, buf->
size);
45 for (
size_t i = 0; i < buf->
size; i++) {
46 char chr = ((
char*)buf->
addr)[i];
50 printf (
"\\x%02x", chr);
60 size_t i, str_size = 1;
63 for (i = 0; i < buf->
size; i++) {
64 char chr = ((
char*)buf->
addr)[i];
65 if (isprint (chr)) str_size ++;
69 LOG_TRACE(
"Byte buffer str size: %lu", str_size);
71 char *cstr = malloc (str_size);
74 for (i = 0; i < str_size - 1; i++) {
75 char chr = ((
char*)buf->
addr)[i];
81 sprintf (cstr + cur,
"\\x%02x", chr);
86 cstr[str_size - 1] = 0;
112 if (!sspo)
return NULL;
163static inline char unescape_char (
const char c) {
165 case 't':
return '\t';
166 case 'b':
return '\b';
167 case 'n':
return '\n';
168 case 'r':
return '\r';
169 case 'f':
return '\f';
bool VOLK_buffer_eq(const VOLK_Buffer *buf1, const VOLK_Buffer *buf2)
Return whether two buffers are equal.
void VOLK_btriple_done(VOLK_BufferTriple *sspo)
Free the internal pointers of a buffer triple.
VOLK_Key VOLK_buffer_hash(const VOLK_Buffer *buf)
Hash a buffer.
void VOLK_buffer_done(VOLK_Buffer *buf)
Free the content of a buffer.
VOLK_Buffer * VOLK_btriple_pos(const VOLK_BufferTriple *trp, VOLK_TriplePos n)
Get serialized triple by term position.
char * VOLK_buffer_as_str(const VOLK_Buffer *buf)
Format a buffer into anb ASCII string.
VOLK_rc VOLK_buffer_init(VOLK_Buffer *buf, const size_t size, const unsigned char *data)
Initialize or reuse a buffer handle.
VOLK_Key VOLK_btriple_hash(const VOLK_BufferTriple *strp)
Hash a buffer triple.
VOLK_Buffer * VOLK_default_ctx_buf
Serialized default context.
void VOLK_btriple_free(VOLK_BufferTriple *sspo)
Free a buffer triple and all its internal pointers.
void VOLK_buffer_print(const VOLK_Buffer *buf)
Print a byte string of a given length in a human-readable format.
VOLK_TriplePos
Triple position of s, p, o.
VOLK_rc VOLK_btriple_init(VOLK_BufferTriple *sspo, VOLK_Buffer *s, VOLK_Buffer *p, VOLK_Buffer *o)
Initialize internal term pointers in a heap-allocated buffer triple.
void VOLK_buffer_free(VOLK_Buffer *buf)
Free a buffer.
int VOLK_buffer_cmp(const VOLK_Buffer *buf1, const VOLK_Buffer *buf2)
Compare two buffers.
VOLK_BufferTriple * VOLK_btriple_new(VOLK_Buffer *s, VOLK_Buffer *p, VOLK_Buffer *o)
Create a new buffer triple.
VOLK_Buffer * VOLK_buffer_new(const unsigned char *data, const size_t size)
Create a new buffer and optionally populate it with data.
size_t VOLK_Key
Term key, i.e., hash of a serialized term.
#define VOLK_MEM_ERR
Memory allocation error.
#define VOLK_OK
Generic success return code.
General-purpose data buffer.