LV2
1.0.13
|
Helper functions for the LV2 Atom extension. More...
Data Structures | |
struct | LV2_Atom_Object_Query |
A single entry in an Object query. More... | |
Functions | |
static uint32_t | lv2_atom_pad_size (uint32_t size) |
Pad a size to 64 bits. | |
static uint32_t | lv2_atom_total_size (const LV2_Atom *atom) |
Return the total size of atom , including the header. | |
static bool | lv2_atom_is_null (const LV2_Atom *atom) |
Return true iff atom is null. | |
static bool | lv2_atom_equals (const LV2_Atom *a, const LV2_Atom *b) |
Return true iff a is equal to b . | |
Sequence Iterator | |
#define | LV2_ATOM_SEQUENCE_FOREACH(seq, iter) |
A macro for iterating over all events in a Sequence. | |
#define | LV2_ATOM_SEQUENCE_BODY_FOREACH(body, size, iter) |
Like LV2_ATOM_SEQUENCE_FOREACH but for a headerless sequence body. | |
static LV2_Atom_Event * | lv2_atom_sequence_begin (const LV2_Atom_Sequence_Body *body) |
Get an iterator pointing to the first event in a Sequence body. | |
static LV2_Atom_Event * | lv2_atom_sequence_end (const LV2_Atom_Sequence_Body *body, uint32_t size) |
Get an iterator pointing to the end of a Sequence body. | |
static bool | lv2_atom_sequence_is_end (const LV2_Atom_Sequence_Body *body, uint32_t size, LV2_Atom_Event *i) |
Return true iff i has reached the end of body . | |
static LV2_Atom_Event * | lv2_atom_sequence_next (const LV2_Atom_Event *i) |
Return an iterator to the element following i . | |
Tuple Iterator | |
#define | LV2_ATOM_TUPLE_FOREACH(tuple, iter) |
A macro for iterating over all properties of a Tuple. | |
#define | LV2_ATOM_TUPLE_BODY_FOREACH(body, size, iter) |
Like LV2_ATOM_TUPLE_FOREACH but for a headerless tuple body. | |
static LV2_Atom * | lv2_atom_tuple_begin (const LV2_Atom_Tuple *tup) |
Get an iterator pointing to the first element in tup . | |
static bool | lv2_atom_tuple_is_end (const void *body, uint32_t size, LV2_Atom *i) |
Return true iff i has reached the end of body . | |
static LV2_Atom * | lv2_atom_tuple_next (const LV2_Atom *i) |
Return an iterator to the element following i . | |
Object Iterator | |
#define | LV2_ATOM_OBJECT_FOREACH(obj, iter) |
A macro for iterating over all properties of an Object. | |
#define | LV2_ATOM_OBJECT_BODY_FOREACH(body, size, iter) |
Like LV2_ATOM_OBJECT_FOREACH but for a headerless object body. | |
static LV2_Atom_Property_Body * | lv2_atom_object_begin (const LV2_Atom_Object_Body *body) |
Return a pointer to the first property in body . | |
static bool | lv2_atom_object_is_end (const LV2_Atom_Object_Body *body, uint32_t size, LV2_Atom_Property_Body *i) |
Return true iff i has reached the end of obj . | |
static LV2_Atom_Property_Body * | lv2_atom_object_next (const LV2_Atom_Property_Body *i) |
Return an iterator to the property following i . | |
Object Query | |
static const LV2_Atom_Object_Query | LV2_ATOM_OBJECT_QUERY_END = { 0, NULL } |
static int | lv2_atom_object_query (const LV2_Atom_Object *object, LV2_Atom_Object_Query *query) |
Get an object's values for various keys. | |
static int | lv2_atom_object_body_get (uint32_t size, const LV2_Atom_Object_Body *body,...) |
Body only version of lv2_atom_object_get(). | |
static int | lv2_atom_object_get (const LV2_Atom_Object *object,...) |
Variable argument version of lv2_atom_object_query(). | |
Helper functions for the LV2 Atom extension.
Note these functions are all static inline, do not take their address.
This header is non-normative, it is provided for convenience.
#define LV2_ATOM_SEQUENCE_FOREACH | ( | seq, | |
iter | |||
) |
A macro for iterating over all events in a Sequence.
seq | The sequence to iterate over |
iter | The name of the iterator |
This macro is used similarly to a for loop (which it expands to), e.g.:
#define LV2_ATOM_SEQUENCE_BODY_FOREACH | ( | body, | |
size, | |||
iter | |||
) |
Like LV2_ATOM_SEQUENCE_FOREACH but for a headerless sequence body.
#define LV2_ATOM_TUPLE_FOREACH | ( | tuple, | |
iter | |||
) |
A macro for iterating over all properties of a Tuple.
tuple | The tuple to iterate over |
iter | The name of the iterator |
This macro is used similarly to a for loop (which it expands to), e.g.:
#define LV2_ATOM_TUPLE_BODY_FOREACH | ( | body, | |
size, | |||
iter | |||
) |
Like LV2_ATOM_TUPLE_FOREACH but for a headerless tuple body.
#define LV2_ATOM_OBJECT_FOREACH | ( | obj, | |
iter | |||
) |
A macro for iterating over all properties of an Object.
obj | The object to iterate over |
iter | The name of the iterator |
This macro is used similarly to a for loop (which it expands to), e.g.:
#define LV2_ATOM_OBJECT_BODY_FOREACH | ( | body, | |
size, | |||
iter | |||
) |
Like LV2_ATOM_OBJECT_FOREACH but for a headerless object body.
|
inlinestatic |
Pad a size to 64 bits.
|
inlinestatic |
Return the total size of atom
, including the header.
|
inlinestatic |
Return true iff atom
is null.
Return true iff a
is equal to b
.
|
inlinestatic |
Get an iterator pointing to the first event in a Sequence body.
|
inlinestatic |
Get an iterator pointing to the end of a Sequence body.
|
inlinestatic |
Return true iff i
has reached the end of body
.
|
inlinestatic |
Return an iterator to the element following i
.
|
inlinestatic |
Get an iterator pointing to the first element in tup
.
|
inlinestatic |
Return true iff i
has reached the end of body
.
Return an iterator to the element following i
.
|
inlinestatic |
Return a pointer to the first property in body
.
|
inlinestatic |
Return true iff i
has reached the end of obj
.
|
inlinestatic |
Return an iterator to the property following i
.
|
inlinestatic |
Get an object's values for various keys.
The value pointer of each item in query
will be set to the location of the corresponding value in object
. Every value pointer in query
MUST be initialised to NULL. This function reads object
in a single linear sweep. By allocating query
on the stack, objects can be "queried" quickly without allocating any memory. This function is realtime safe.
This function can only do "flat" queries, it is not smart enough to match variables in nested objects.
For example:
|
inlinestatic |
Body only version of lv2_atom_object_get().
|
inlinestatic |
Variable argument version of lv2_atom_object_query().
This is nicer-looking in code, but a bit more error-prone since it is not type safe and the argument list must be terminated.
The arguments should be a series of uint32_t key and const LV2_Atom** value pairs, terminated by a zero key. The value pointers MUST be initialized to NULL. For example:
|
static |