25#ifndef LV2_ATOM_UTIL_H
26#define LV2_ATOM_UTIL_H
44 return (
size + 7U) & (~7U);
58 return !atom || (atom->
type == 0 && atom->
size == 0);
65 return (
a ==
b) || ((
a->type ==
b->type) &&
66 (
a->size ==
b->size) &&
67 !memcmp(
a + 1,
b + 1,
a->size));
119#define LV2_ATOM_SEQUENCE_FOREACH(seq, iter) \
120 for (LV2_Atom_Event* (iter) = lv2_atom_sequence_begin(&(seq)->body); \
121 !lv2_atom_sequence_is_end(&(seq)->body, (seq)->atom.size, (iter)); \
122 (iter) = lv2_atom_sequence_next(iter))
125#define LV2_ATOM_SEQUENCE_BODY_FOREACH(body, size, iter) \
126 for (LV2_Atom_Event* (iter) = lv2_atom_sequence_begin(body); \
127 !lv2_atom_sequence_is_end(body, size, (iter)); \
128 (iter) = lv2_atom_sequence_next(iter))
164 if (capacity - seq->
atom.
size < total_size) {
216#define LV2_ATOM_TUPLE_FOREACH(tuple, iter) \
217 for (LV2_Atom* (iter) = lv2_atom_tuple_begin(tuple); \
218 !lv2_atom_tuple_is_end(LV2_ATOM_BODY(tuple), (tuple)->size, (iter)); \
219 (iter) = lv2_atom_tuple_next(iter))
222#define LV2_ATOM_TUPLE_BODY_FOREACH(body, size, iter) \
223 for (LV2_Atom* (iter) = (LV2_Atom*)body; \
224 !lv2_atom_tuple_is_end(body, size, (iter)); \
225 (iter) = lv2_atom_tuple_next(iter))
272#define LV2_ATOM_OBJECT_FOREACH(obj, iter) \
273 for (LV2_Atom_Property_Body* (iter) = lv2_atom_object_begin(&(obj)->body); \
274 !lv2_atom_object_is_end(&(obj)->body, (obj)->atom.size, (iter)); \
275 (iter) = lv2_atom_object_next(iter))
278#define LV2_ATOM_OBJECT_BODY_FOREACH(body, size, iter) \
279 for (LV2_Atom_Property_Body* (iter) = lv2_atom_object_begin(body); \
280 !lv2_atom_object_is_end(body, size, (iter)); \
281 (iter) = lv2_atom_object_next(iter))
336 if (
q->key == prop->key && !*
q->value) {
337 *
q->value = &prop->value;
338 if (++matches == n_queries) {
359 va_start(args, body);
360 for (n_queries = 0; va_arg(args,
uint32_t); ++n_queries) {
361 if (!va_arg(args,
const LV2_Atom**)) {
368 va_start(args, body);
369 for (
int i = 0;
i < n_queries; ++
i) {
372 if (qkey == prop->key && !*qval) {
373 *qval = &prop->value;
374 if (++matches == n_queries) {
412 va_start(args,
object);
413 for (n_queries = 0; va_arg(args,
uint32_t); ++n_queries) {
414 if (!va_arg(args,
const LV2_Atom**)) {
421 va_start(args,
object);
422 for (
int i = 0;
i < n_queries; ++
i) {
425 if (qkey == prop->key && !*qval) {
426 *qval = &prop->value;
427 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(atom)
Definition atom.h:98
static PuglViewHint int value
Definition pugl.h:1708
static const LV2_Atom_Object_Query LV2_ATOM_OBJECT_QUERY_END
Definition atom-util.h:308
static LV2_Atom_Event * lv2_atom_sequence_begin(const LV2_Atom_Sequence_Body *body)
Definition lv2_atom_util.h:77
#define LV2_ATOM_OBJECT_BODY_FOREACH(body, size, iter)
Definition lv2_atom_util.h:278
static bool lv2_atom_equals(const LV2_Atom *a, const LV2_Atom *b)
Definition lv2_atom_util.h:63
static bool lv2_atom_is_null(const LV2_Atom *atom)
Definition lv2_atom_util.h:56
static uint32_t lv2_atom_pad_size(uint32_t size)
Definition lv2_atom_util.h:42
static void lv2_atom_sequence_clear(LV2_Atom_Sequence *seq)
Definition lv2_atom_util.h:142
static LV2_Atom_Property_Body * lv2_atom_object_begin(const LV2_Atom_Object_Body *body)
Definition lv2_atom_util.h:235
static int lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body *body,...)
Definition lv2_atom_util.h:352
static bool lv2_atom_sequence_is_end(const LV2_Atom_Sequence_Body *body, uint32_t size, const LV2_Atom_Event *i)
Definition lv2_atom_util.h:91
static bool lv2_atom_object_is_end(const LV2_Atom_Object_Body *body, uint32_t size, const LV2_Atom_Property_Body *i)
Definition lv2_atom_util.h:242
static LV2_Atom * lv2_atom_tuple_next(const LV2_Atom *i)
Definition lv2_atom_util.h:198
#define LV2_ATOM_OBJECT_FOREACH(obj, iter)
Definition lv2_atom_util.h:272
static LV2_Atom_Property_Body * lv2_atom_object_next(const LV2_Atom_Property_Body *i)
Definition lv2_atom_util.h:251
static uint32_t lv2_atom_total_size(const LV2_Atom *atom)
Definition lv2_atom_util.h:49
static int lv2_atom_object_get(const LV2_Atom_Object *object,...)
Definition lv2_atom_util.h:405
static LV2_Atom_Event * lv2_atom_sequence_append_event(LV2_Atom_Sequence *seq, uint32_t capacity, const LV2_Atom_Event *event)
Definition lv2_atom_util.h:159
static int lv2_atom_object_query(const LV2_Atom_Object *object, LV2_Atom_Object_Query *query)
Definition lv2_atom_util.h:323
static LV2_Atom * lv2_atom_tuple_begin(const LV2_Atom_Tuple *tup)
Definition lv2_atom_util.h:184
static LV2_Atom_Event * lv2_atom_sequence_end(const LV2_Atom_Sequence_Body *body, uint32_t size)
Definition lv2_atom_util.h:84
static bool lv2_atom_tuple_is_end(const void *body, uint32_t size, const LV2_Atom *i)
Definition lv2_atom_util.h:191
static LV2_Atom_Event * lv2_atom_sequence_next(const LV2_Atom_Event *i)
Definition lv2_atom_util.h:100
unsigned int uint32_t
Definition mid.cpp:100
unsigned char uint8_t
Definition mid.cpp:98
Definition atom-util.h:303
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)
ZCONST char * key
Definition crypt.c:587
register uch * q
Definition fileio.c:817