5#ifndef SPA_POD_DYNAMIC_H
6#define SPA_POD_DYNAMIC_H
9#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
66 spa_pod_dynamic_builder_init(builder,
74 free(builder->
b.
data);
78 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:86
#define SPA_ROUND_UP_N(num, align)
Definition defs.h:364
#define SPA_PTROFF(ptr_, offset_, type_)
Return the address (buffer + offset) as pointer of type.
Definition defs.h:222
const void * funcs
Definition hook.h:127
uint32_t offset
Definition builder.h:43
struct spa_callbacks callbacks
Definition builder.h:68
void * data
Definition builder.h:64
struct spa_pod_builder_state state
Definition builder.h:67
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