30static void bsl_data_int_reset(
BSL_Data_t *data)
32 ASSERT_ARG_NONNULL(data);
37 memset(data, 0,
sizeof(*data));
42 ASSERT_ARG_NONNULL(data);
52 CHK_ARG_NONNULL(data);
53 bsl_data_int_reset(data);
59 CHK_ARG_NONNULL(data);
60 CHK_ARG_EXPR(bytelen > 0);
62 bsl_data_int_reset(data);
63 data->
ptr = BSL_MALLOC(bytelen);
66 memset(data->
ptr, 0, bytelen);
68 CHK_POSTCONDITION(data->
ptr != NULL);
74 CHK_ARG_NONNULL(data);
75 CHK_ARG_EXPR(len > 0);
86 ASSERT_ARG_NONNULL(data);
87 ASSERT_ARG_NONNULL(src);
89 bsl_data_int_reset(src);
94 CHK_ARG_NONNULL(data);
95 bsl_data_int_free(data);
96 memset(data, 0,
sizeof(*data));
102 CHK_ARG_NONNULL(data);
114 BSL_LOG_ERR(
"Failed to resize data to %lu bytes", len);
120 bsl_data_int_reset(data);
123 if (data->
ptr && src)
125 memcpy(data->
ptr, src, len);
133 CHK_ARG_NONNULL(data);
135 if (len == data->
len)
142 bsl_data_int_free(data);
143 bsl_data_int_reset(data);
154 bsl_data_int_reset(data);
166 CHK_ARG_NONNULL(data);
167 CHK_ARG_EXPR(len > 0);
168 CHK_ARG_NONNULL(src);
176 memcpy(&data->
ptr[data->
len - len], src, len);
Single entry-point include file for all of the BPSec Lib (BSL) frontend API.
uint8_t * BSL_DataPtr_t
Data pointer for BSL_Data_t.
const uint8_t * BSL_DataConstPtr_t
Pointer to constant data for BSL_Data_t.
#define UNLIKELY(expr)
Hint to the compiler that the expression is expected to evaluate to false and the associated branch i...
#define BSL_LOG_ERR(...)
This is an overloaded member function, provided for convenience. It differs from the above function o...
@ BSL_ERR_INSUFFICIENT_SPACE
Insufficient space to complete.
@ BSL_SUCCESS
Placeholder for non-error code.
int BSL_Data_Resize(BSL_Data_t *data, size_t len)
Resize the data, copying if necessary.
void BSL_Data_InitMove(BSL_Data_t *data, BSL_Data_t *src)
This is an overloaded member function, provided for convenience. It differs from the above function o...
int BSL_Data_AppendFrom(BSL_Data_t *data, size_t len, BSL_DataConstPtr_t src)
Append an initialized data struct with a given size.
int BSL_Data_Deinit(BSL_Data_t *data)
De-initialize a data struct, freeing if necessary.
int BSL_Data_InitBuffer(BSL_Data_t *data, size_t bytelen)
Initialize with an owned buffer of size bytelen.
int BSL_Data_InitView(BSL_Data_t *data, size_t len, const BSL_DataPtr_t src)
Initialize a data struct as an overlay on optional external data.
int BSL_Data_CopyFrom(BSL_Data_t *data, size_t len, BSL_DataConstPtr_t src)
Set an initialized data struct to a given size.
int BSL_Data_Init(BSL_Data_t *data)
Initialize an empty data struct.
Heap data storage and views.
size_t len
Size of the data buffer.
BSL_DataPtr_t ptr
Pointer to the front of the buffer.
bool owned
True if this data is a copy.