int ib_bytestr_read_only( const ib_bytestr_t *bs ) { IB_FTRACE_INIT(); assert(bs != NULL); IB_FTRACE_RET_BOOL(IB_BYTESTR_CHECK_FREADONLY(bs->flags)); }
uint8_t *ib_bytestr_ptr( ib_bytestr_t *bs ) { if (bs == NULL || IB_BYTESTR_CHECK_FREADONLY(bs->flags)) { return NULL; } return bs->data; }
uint8_t *ib_bytestr_ptr( ib_bytestr_t *bs ) { IB_FTRACE_INIT(); if (bs == NULL || IB_BYTESTR_CHECK_FREADONLY(bs->flags)) { IB_FTRACE_RET_PTR(uint8_t, NULL); } IB_FTRACE_RET_PTR(uint8_t, bs->data); }
ib_status_t ib_bytestr_append_mem( ib_bytestr_t *dst, const uint8_t *data, size_t data_length ) { IB_FTRACE_INIT(); size_t dst_length = ib_bytestr_length(dst); size_t new_length; uint8_t *new_data = NULL; if (dst == NULL || IB_BYTESTR_CHECK_FREADONLY(dst->flags)) { IB_FTRACE_RET_STATUS(IB_EINVAL); } if (data == NULL && data_length != 0) { IB_FTRACE_RET_STATUS(IB_EINVAL); } new_length = dst_length + data_length; if (new_length > dst->size) { new_data = (uint8_t *)ib_mpool_alloc(dst->mp, new_length); if (new_data == NULL) { IB_FTRACE_RET_STATUS(IB_EALLOC); } if (dst_length > 0) { memcpy( new_data, ib_bytestr_const_ptr(dst), ib_bytestr_length(dst) ); } dst->data = new_data; dst->size = new_length; } assert(new_length <= dst->size); if (data_length > 0) { memcpy(dst->data + dst_length, data, data_length); dst->length = new_length; } IB_FTRACE_RET_STATUS(IB_OK); }
ib_status_t ib_bytestr_append_mem( ib_bytestr_t *dst, const uint8_t *data, size_t data_length ) { size_t dst_length = ib_bytestr_length(dst); size_t new_length; uint8_t *new_data = NULL; if (dst == NULL || IB_BYTESTR_CHECK_FREADONLY(dst->flags)) { return IB_EINVAL; } if (data == NULL && data_length != 0) { return IB_EINVAL; } new_length = dst_length + data_length; if (new_length > dst->size) { new_data = (uint8_t *)ib_mm_alloc(dst->mm, new_length); if (new_data == NULL) { return IB_EALLOC; } if (dst_length > 0) { memcpy( new_data, ib_bytestr_const_ptr(dst), ib_bytestr_length(dst) ); } dst->data = new_data; dst->size = new_length; } assert(new_length <= dst->size); if (data_length > 0) { memcpy(dst->data + dst_length, data, data_length); dst->length = new_length; } return IB_OK; }
int ib_bytestr_read_only( const ib_bytestr_t *bs ) { assert(bs != NULL); return IB_BYTESTR_CHECK_FREADONLY(bs->flags); }