5#ifndef SPA_POD_DYNAMIC_H
6#define SPA_POD_DYNAMIC_H
13#include <spa/utils/cleanup.h>
15#ifndef SPA_API_POD_DYNAMIC
17 #define SPA_API_POD_DYNAMIC SPA_API_IMPL
19 #define SPA_API_POD_DYNAMIC static inline
30static int spa_pod_dynamic_builder_overflow(
void *data, uint32_t
size)
35 void *old_data = d->
b.
data, *new_data;
37 if (old_data == d->
data)
39 if ((new_data = realloc(d->
b.
data, new_size)) == NULL)
41 if (old_data == d->
data && new_data != old_data && old_size > 0)
42 memcpy(new_data, old_data, old_size);
49 void *data, uint32_t size, uint32_t
extend)
53 .overflow = spa_pod_dynamic_builder_overflow
64 free(builder->
b.
data);
68 spa_pod_dynamic_builder_clean(thing);
#define SPA_POD_BUILDER_INIT(buffer, size)
Definition builder.h:72
#define SPA_VERSION_POD_BUILDER_CALLBACKS
Definition builder.h:57
SPA_API_POD_BUILDER void spa_pod_builder_set_callbacks(struct spa_pod_builder *builder, const struct spa_pod_builder_callbacks *callbacks, void *data)
Definition builder.h:81
#define SPA_ROUND_UP_N(num, align)
Definition defs.h:360
void * data
Definition builder.h:64
uint32_t size
Definition builder.h:65
uint32_t extend
Definition dynamic.h:32
uint32_t _padding
Definition dynamic.h:33
struct spa_pod_builder b
Definition dynamic.h:30
void * data
Definition dynamic.h:31