Utilities for working with atoms.
◆ LV2_Atom_Object_Query
struct LV2_Atom_Object_Query |
A single entry in an Object query.
Data Fields |
uint32_t |
key |
Key to query (input set by user) |
const LV2_Atom ** |
value |
Found value (output set by query function) |
◆ LV2_ATOM_SEQUENCE_FOREACH
#define LV2_ATOM_SEQUENCE_FOREACH |
( |
|
seq, |
|
|
|
iter |
|
) |
| |
Value:
A macro for iterating over all events in a Sequence.
- Parameters
-
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), for example:
◆ LV2_ATOM_SEQUENCE_BODY_FOREACH
#define LV2_ATOM_SEQUENCE_BODY_FOREACH |
( |
|
body, |
|
|
|
size, |
|
|
|
iter |
|
) |
| |
Value:
Like LV2_ATOM_SEQUENCE_FOREACH but for a headerless sequence body.
◆ LV2_ATOM_TUPLE_FOREACH
#define LV2_ATOM_TUPLE_FOREACH |
( |
|
tuple, |
|
|
|
iter |
|
) |
| |
Value:
A macro for iterating over all properties of a Tuple.
- Parameters
-
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), for example:
◆ LV2_ATOM_TUPLE_BODY_FOREACH
#define LV2_ATOM_TUPLE_BODY_FOREACH |
( |
|
body, |
|
|
|
size, |
|
|
|
iter |
|
) |
| |
Value:
Like LV2_ATOM_TUPLE_FOREACH but for a headerless tuple body.
◆ LV2_ATOM_OBJECT_FOREACH
#define LV2_ATOM_OBJECT_FOREACH |
( |
|
obj, |
|
|
|
iter |
|
) |
| |
Value:
A macro for iterating over all properties of an Object.
- Parameters
-
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), for example:
◆ LV2_ATOM_OBJECT_BODY_FOREACH
#define LV2_ATOM_OBJECT_BODY_FOREACH |
( |
|
body, |
|
|
|
size, |
|
|
|
iter |
|
) |
| |
Value:
Like LV2_ATOM_OBJECT_FOREACH but for a headerless object body.
◆ lv2_atom_pad_size()
static uint32_t lv2_atom_pad_size |
( |
uint32_t |
size | ) |
|
|
inlinestatic |
◆ lv2_atom_total_size()
static uint32_t lv2_atom_total_size |
( |
const LV2_Atom * |
atom | ) |
|
|
inlinestatic |
Return the total size of atom
, including the header.
◆ lv2_atom_is_null()
static bool lv2_atom_is_null |
( |
const LV2_Atom * |
atom | ) |
|
|
inlinestatic |
Return true iff atom
is null.
◆ lv2_atom_equals()
Return true iff a
is equal to b
.
◆ lv2_atom_sequence_begin()
Get an iterator pointing to the first event in a Sequence body.
◆ lv2_atom_sequence_end()
Get an iterator pointing to the end of a Sequence body.
◆ lv2_atom_sequence_is_end()
Return true iff i
has reached the end of body
.
◆ lv2_atom_sequence_next()
Return an iterator to the element following i
.
◆ lv2_atom_sequence_clear()
Clear all events from sequence
.
This simply resets the size field, the other fields are left untouched.
◆ lv2_atom_sequence_append_event()
Append an event at the end of sequence
.
- Parameters
-
seq | Sequence to append to. |
capacity | Total capacity of the sequence atom (as set by the host for sequence output ports). |
event | Event to write. |
- Returns
- A pointer to the newly written event in
seq
, or NULL on failure (insufficient space).
◆ lv2_atom_tuple_begin()
Get an iterator pointing to the first element in tup
.
◆ lv2_atom_tuple_is_end()
static bool lv2_atom_tuple_is_end |
( |
const void * |
body, |
|
|
uint32_t |
size, |
|
|
const LV2_Atom * |
i |
|
) |
| |
|
inlinestatic |
Return true iff i
has reached the end of body
.
◆ lv2_atom_tuple_next()
Return an iterator to the element following i
.
◆ lv2_atom_object_begin()
Return a pointer to the first property in body
.
◆ lv2_atom_object_is_end()
Return true iff i
has reached the end of obj
.
◆ lv2_atom_object_next()
Return an iterator to the property following i
.
◆ lv2_atom_object_query()
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:
{ urids.eg_name, &name },
{ urids.eg_age, &age },
};
◆ lv2_atom_object_body_get()
◆ lv2_atom_object_get()
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:
uris.name_key, &name,
uris.age_key, &age,
0);
◆ lv2_atom_object_get_typed()
static int lv2_atom_object_get_typed |
( |
const LV2_Atom_Object * |
object, |
|
|
|
... |
|
) |
| |
|
inlinestatic |
Variable argument version of lv2_atom_object_query() with types.
This is like lv2_atom_object_get(), but each entry has an additional parameter to specify the required type. Only atoms with a matching type will be selected.
The arguments should be a series of uint32_t key, const LV2_Atom**, uint32_t type triples, terminated by a zero key. The value pointers MUST be initialized to NULL. For example:
uris.name_key, &name, uris.atom_String,
uris.age_key, &age, uris.atom_Int
0);
◆ LV2_ATOM_OBJECT_QUERY_END
static LV2_Atom_Property_Body * lv2_atom_object_begin(const LV2_Atom_Object_Body *body)
Return a pointer to the first property in body.
Definition: util.h:246
The header of an atom:Atom.
Definition: atom.h:110
static int lv2_atom_object_get(const LV2_Atom_Object *object,...)
Variable argument version of lv2_atom_object_query().
Definition: util.h:422
A single entry in an Object query.
Definition: util.h:304
static LV2_Atom_Property_Body * lv2_atom_object_next(const LV2_Atom_Property_Body *i)
Return an iterator to the property following i.
Definition: util.h:262
#define LV2_ATOM_SEQUENCE_FOREACH(seq, iter)
A macro for iterating over all events in a Sequence.
Definition: util.h:127
static LV2_Atom * lv2_atom_tuple_next(const LV2_Atom *i)
Return an iterator to the element following i.
Definition: util.h:206
static bool lv2_atom_object_is_end(const LV2_Atom_Object_Body *body, uint32_t size, const LV2_Atom_Property_Body *i)
Return true iff i has reached the end of obj.
Definition: util.h:253
#define LV2_ATOM_TUPLE_FOREACH(tuple, iter)
A macro for iterating over all properties of a Tuple.
Definition: util.h:226
static LV2_Atom_Event * lv2_atom_sequence_next(const LV2_Atom_Event *i)
Return an iterator to the element following i.
Definition: util.h:107
#define LV2_ATOM_OBJECT_FOREACH(obj, iter)
A macro for iterating over all properties of an Object.
Definition: util.h:286
The header of an atom:Event.
Definition: atom.h:214
static LV2_Atom * lv2_atom_tuple_begin(const LV2_Atom_Tuple *tup)
Get an iterator pointing to the first element in tup.
Definition: util.h:192
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.
Definition: util.h:84
#define LV2_ATOM_BODY(atom)
Return a pointer to the body of an Atom.
Definition: atom.h:102
static const LV2_Atom_Object_Query LV2_ATOM_OBJECT_QUERY_END
Sentinel for lv2_atom_object_query().
Definition: util.h:310
An atom:String.
Definition: atom.h:149
static int lv2_atom_object_query(const LV2_Atom_Object *object, LV2_Atom_Object_Query *query)
Get an object's values for various keys.
Definition: util.h:338
The body of an atom:Property (typically in an atom:Object).
Definition: atom.h:187
static bool lv2_atom_sequence_is_end(const LV2_Atom_Sequence_Body *body, uint32_t size, const LV2_Atom_Event *i)
Return true iff i has reached the end of body.
Definition: util.h:98
An atom:Int or atom:Bool.
Definition: atom.h:116
static bool lv2_atom_tuple_is_end(const void *body, uint32_t size, const LV2_Atom *i)
Return true iff i has reached the end of body.
Definition: util.h:199