diff options
Diffstat (limited to 'include/lv2/atom')
| -rw-r--r-- | include/lv2/atom/forge.h | 4 | ||||
| -rw-r--r-- | include/lv2/atom/util.h | 28 |
2 files changed, 20 insertions, 12 deletions
diff --git a/include/lv2/atom/forge.h b/include/lv2/atom/forge.h index b9dff85..daf603c 100644 --- a/include/lv2/atom/forge.h +++ b/include/lv2/atom/forge.h @@ -287,7 +287,7 @@ lv2_atom_forge_raw(LV2_Atom_Forge* forge, const void* data, uint32_t size) forge->offset += size; memcpy(mem, data, size); } - for (LV2_Atom_Forge_Frame* f = forge->stack; f; f = f->parent) { + for (const LV2_Atom_Forge_Frame* f = forge->stack; f; f = f->parent) { lv2_atom_forge_deref(forge, f->ref)->size += size; } return out; @@ -492,7 +492,7 @@ lv2_atom_forge_vector(LV2_Atom_Forge* forge, const void* elems) { const LV2_Atom_Vector a = { - {(uint32_t)sizeof(LV2_Atom_Vector_Body) + n_elems * child_size, + {(uint32_t)sizeof(LV2_Atom_Vector_Body) + (n_elems * child_size), forge->Vector}, {child_size, child_type}}; const LV2_Atom_Forge_Ref out = lv2_atom_forge_write(forge, &a, sizeof(a)); diff --git a/include/lv2/atom/util.h b/include/lv2/atom/util.h index 4b9e80d..9524210 100644 --- a/include/lv2/atom/util.h +++ b/include/lv2/atom/util.h @@ -38,9 +38,7 @@ extern "C" { static inline uint32_t lv2_atom_pad_size(uint32_t size) { - static const uint32_t mask = 7U; - - return (size + mask) & ~mask; + return (size + 7U) & ~(7U); } /** Return the total size of `atom`, including the header. */ @@ -251,7 +249,7 @@ static inline LV2_Atom_Property_Body* lv2_atom_object_next(const LV2_Atom_Property_Body* i) { const LV2_Atom* const value = - (const LV2_Atom*)((const uint8_t*)i + 2 * sizeof(uint32_t)); + (const LV2_Atom*)((const uint8_t*)i + (2 * sizeof(uint32_t))); return (LV2_Atom_Property_Body*)((const uint8_t*)i + lv2_atom_pad_size( (uint32_t)sizeof(LV2_Atom_Property_Body) + @@ -331,12 +329,15 @@ lv2_atom_object_query(const LV2_Atom_Object* object, int n_queries = 0; /* Count number of query keys so we can short-circuit when done */ - for (LV2_Atom_Object_Query* q = query; q->key; ++q) { + for (const LV2_Atom_Object_Query* q = query; q->key; ++q) { ++n_queries; } - LV2_ATOM_OBJECT_FOREACH (object, prop) { - for (LV2_Atom_Object_Query* q = query; q->key; ++q) { + for (const LV2_Atom_Property_Body* prop = + lv2_atom_object_begin(&object->body); + !lv2_atom_object_is_end(&object->body, object->atom.size, prop); + prop = lv2_atom_object_next(prop)) { + for (const LV2_Atom_Object_Query* q = query; q->key; ++q) { if (q->key == prop->key && !*q->value) { *q->value = &prop->value; if (++matches == n_queries) { @@ -369,7 +370,9 @@ lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body* body, ...) } va_end(args); - LV2_ATOM_OBJECT_BODY_FOREACH (body, size, prop) { + for (const LV2_Atom_Property_Body* prop = lv2_atom_object_begin(body); + !lv2_atom_object_is_end(body, size, prop); + prop = lv2_atom_object_next(prop)) { va_start(args, body); for (int i = 0; i < n_queries; ++i) { const uint32_t qkey = va_arg(args, uint32_t); @@ -424,7 +427,10 @@ lv2_atom_object_get(const LV2_Atom_Object* object, ...) } va_end(args); - LV2_ATOM_OBJECT_FOREACH (object, prop) { + for (const LV2_Atom_Property_Body* prop = + lv2_atom_object_begin(&object->body); + !lv2_atom_object_is_end(&object->body, object->atom.size, prop); + prop = lv2_atom_object_next(prop)) { va_start(args, object); for (int i = 0; i < n_queries; ++i) { const uint32_t qkey = va_arg(args, uint32_t); @@ -480,7 +486,9 @@ lv2_atom_object_get_typed(const LV2_Atom_Object* object, ...) } va_end(args); - LV2_ATOM_OBJECT_FOREACH (object, prop) { + for (const LV2_Atom_Property_Body* prop = lv2_atom_object_begin(&object->body); + !lv2_atom_object_is_end(&object->body, object->atom.size, prop); + prop = lv2_atom_object_next(prop)) { va_start(args, object); for (int i = 0; i < n_queries; ++i) { const uint32_t qkey = va_arg(args, uint32_t); |