31#ifndef LV2_ATOM_UTIL_H
32#define LV2_ATOM_UTIL_H
50 return (
size + 7U) & (~7U);
64 return !atom || (atom->
type == 0 && atom->
size == 0);
71 return (
a ==
b) || ((
a->type ==
b->type) &&
72 (
a->size ==
b->size) &&
73 !memcmp(
a + 1,
b + 1,
a->size));
132#define LV2_ATOM_SEQUENCE_FOREACH(seq, iter) \
133 for (const LV2_Atom_Event* iter = lv2_atom_sequence_begin(&(seq)->body); \
134 !lv2_atom_sequence_is_end(&(seq)->body, (seq)->atom.size, (iter)); \
135 iter = lv2_atom_sequence_next(iter))
138#define LV2_ATOM_SEQUENCE_BODY_FOREACH(body, size, iter) \
139 for (const LV2_Atom_Event* iter = lv2_atom_sequence_begin(body); \
140 !lv2_atom_sequence_is_end(body, size, (iter)); \
141 iter = lv2_atom_sequence_next(iter))
177 if (capacity - seq->
atom.
size < total_size) {
229#define LV2_ATOM_TUPLE_FOREACH(tuple, iter) \
230 for (const LV2_Atom* iter = lv2_atom_tuple_begin(tuple); \
231 !lv2_atom_tuple_is_end(LV2_ATOM_BODY_CONST(tuple), (tuple)->atom.size, (iter)); \
232 iter = lv2_atom_tuple_next(iter))
235#define LV2_ATOM_TUPLE_BODY_FOREACH(body, size, iter) \
236 for (const LV2_Atom* iter = (const LV2_Atom*)body; \
237 !lv2_atom_tuple_is_end(body, size, (iter)); \
238 iter = lv2_atom_tuple_next(iter))
285#define LV2_ATOM_OBJECT_FOREACH(obj, iter) \
286 for (const LV2_Atom_Property_Body* iter = lv2_atom_object_begin(&(obj)->body); \
287 !lv2_atom_object_is_end(&(obj)->body, (obj)->atom.size, (iter)); \
288 iter = lv2_atom_object_next(iter))
291#define LV2_ATOM_OBJECT_BODY_FOREACH(body, size, iter) \
292 for (const LV2_Atom_Property_Body* iter = lv2_atom_object_begin(body); \
293 !lv2_atom_object_is_end(body, size, (iter)); \
294 iter = lv2_atom_object_next(iter))
349 if (
q->key == prop->key && !*
q->value) {
350 *
q->value = &prop->value;
351 if (++matches == n_queries) {
372 va_start(args, body);
373 for (n_queries = 0; va_arg(args,
uint32_t); ++n_queries) {
374 if (!va_arg(args,
const LV2_Atom**)) {
382 va_start(args, body);
383 for (
int i = 0;
i < n_queries; ++
i) {
386 if (qkey == prop->key && !*qval) {
387 *qval = &prop->value;
388 if (++matches == n_queries) {
427 va_start(args,
object);
428 for (n_queries = 0; va_arg(args,
uint32_t); ++n_queries) {
429 if (!va_arg(args,
const LV2_Atom**)) {
436 va_start(args,
object);
437 for (
int i = 0;
i < n_queries; ++
i) {
440 if (qkey == prop->key && !*qval) {
441 *qval = &prop->value;
442 if (++matches == n_queries) {
481 va_start(args,
object);
482 for (n_queries = 0; va_arg(args,
uint32_t); ++n_queries) {
483 if (!va_arg(args,
const LV2_Atom**) ||
491 va_start(args,
object);
492 for (
int i = 0;
i < n_queries; ++
i) {
496 if (!*qval && qkey == prop->key && qtype == prop->value.
type) {
497 *qval = &prop->value;
498 if (++matches == n_queries) {
uint8_t a
Definition Spc_Cpu.h:141
* e
Definition inflate.c:1404
register unsigned i
Definition inflate.c:1575
#define LV2_ATOM_BODY_CONST(atom)
Definition atom.h:103
static PuglViewHint int value
Definition pugl.h:1708
#define LV2_ATOM_OBJECT_BODY_FOREACH(body, size, iter)
Definition atom-util.h:291
static const LV2_Atom_Event * lv2_atom_sequence_next(const LV2_Atom_Event *i)
Definition atom-util.h:113
static const LV2_Atom_Event * lv2_atom_sequence_begin(const LV2_Atom_Sequence_Body *body)
Definition atom-util.h:83
static bool lv2_atom_equals(const LV2_Atom *a, const LV2_Atom *b)
Definition atom-util.h:69
static const LV2_Atom_Property_Body * lv2_atom_object_begin(const LV2_Atom_Object_Body *body)
Definition atom-util.h:248
static bool lv2_atom_is_null(const LV2_Atom *atom)
Definition atom-util.h:62
static uint32_t lv2_atom_pad_size(uint32_t size)
Definition atom-util.h:48
static void lv2_atom_sequence_clear(LV2_Atom_Sequence *seq)
Definition atom-util.h:155
static int lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body *body,...)
Definition atom-util.h:365
static bool lv2_atom_sequence_is_end(const LV2_Atom_Sequence_Body *body, uint32_t size, const LV2_Atom_Event *i)
Definition atom-util.h:104
static const LV2_Atom_Object_Query LV2_ATOM_OBJECT_QUERY_END
Definition atom-util.h:308
static LV2_Atom_Event * lv2_atom_sequence_end2(LV2_Atom_Sequence_Body *body, uint32_t size)
Definition atom-util.h:97
static bool lv2_atom_object_is_end(const LV2_Atom_Object_Body *body, uint32_t size, const LV2_Atom_Property_Body *i)
Definition atom-util.h:255
static int lv2_atom_object_get_typed(const LV2_Atom_Object *object,...)
Definition atom-util.h:474
static const LV2_Atom_Event * lv2_atom_sequence_end(const LV2_Atom_Sequence_Body *body, uint32_t size)
Definition atom-util.h:90
#define LV2_ATOM_OBJECT_FOREACH(obj, iter)
Definition atom-util.h:285
static const LV2_Atom * lv2_atom_tuple_next(const LV2_Atom *i)
Definition atom-util.h:211
static uint32_t lv2_atom_total_size(const LV2_Atom *atom)
Definition atom-util.h:55
static int lv2_atom_object_get(const LV2_Atom_Object *object,...)
Definition atom-util.h:420
static LV2_Atom_Event * lv2_atom_sequence_append_event(LV2_Atom_Sequence *seq, uint32_t capacity, const LV2_Atom_Event *event)
Definition atom-util.h:172
static int lv2_atom_object_query(const LV2_Atom_Object *object, LV2_Atom_Object_Query *query)
Definition atom-util.h:336
static const LV2_Atom_Property_Body * lv2_atom_object_next(const LV2_Atom_Property_Body *i)
Definition atom-util.h:264
static const LV2_Atom * lv2_atom_tuple_begin(const LV2_Atom_Tuple *tup)
Definition atom-util.h:197
static bool lv2_atom_tuple_is_end(const void *body, uint32_t size, const LV2_Atom *i)
Definition atom-util.h:204
unsigned int uint32_t
Definition mid.cpp:100
unsigned char uint8_t
Definition mid.cpp:98
Definition atom-util.h:303
uint32_t key
Definition atom-util.h:304
const LV2_Atom ** value
Definition atom-util.h:305
LV2_Atom atom
Definition atom.h:244
LV2_Atom_Sequence_Body body
Definition atom.h:245
uint32_t size
Definition atom.h:107
uint32_t type
Definition atom.h:108
memcpy(hh, h, RAND_HEAD_LEN)
register uch * q
Definition fileio.c:817