LMMS
Loading...
Searching...
No Matches
forge.h
Go to the documentation of this file.
1/*
2 Copyright 2008-2016 David Robillard <d@drobilla.net>
3
4 Permission to use, copy, modify, and/or distribute this software for any
5 purpose with or without fee is hereby granted, provided that the above
6 copyright notice and this permission notice appear in all copies.
7
8 THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*/
16
41
42#ifndef LV2_ATOM_FORGE_H
43#define LV2_ATOM_FORGE_H
44
53
54#include "lv2/atom/atom.h"
55#include "lv2/atom/util.h"
56#include "lv2/core/attributes.h"
57#include "lv2/urid/urid.h"
58
59#include <assert.h>
60#include <stdbool.h>
61#include <stdint.h>
62#include <string.h>
63
64#ifdef __cplusplus
65extern "C" {
66#endif
67
68// Disable deprecation warnings for Blank and Resource
70
73
75typedef intptr_t LV2_Atom_Forge_Ref;
76
80 const void* buf,
82
84typedef LV2_Atom* (*LV2_Atom_Forge_Deref_Func)(
87
93
95typedef struct {
96 uint8_t* buf;
97 uint32_t offset;
99
103
105
125
126static inline void
128
135static inline void
137{
139 forge->Blank = map->map(map->handle, LV2_ATOM__Blank);
140 forge->Bool = map->map(map->handle, LV2_ATOM__Bool);
141 forge->Chunk = map->map(map->handle, LV2_ATOM__Chunk);
142 forge->Double = map->map(map->handle, LV2_ATOM__Double);
143 forge->Float = map->map(map->handle, LV2_ATOM__Float);
144 forge->Int = map->map(map->handle, LV2_ATOM__Int);
145 forge->Long = map->map(map->handle, LV2_ATOM__Long);
146 forge->Literal = map->map(map->handle, LV2_ATOM__Literal);
147 forge->Object = map->map(map->handle, LV2_ATOM__Object);
148 forge->Path = map->map(map->handle, LV2_ATOM__Path);
149 forge->Property = map->map(map->handle, LV2_ATOM__Property);
150 forge->Resource = map->map(map->handle, LV2_ATOM__Resource);
151 forge->Sequence = map->map(map->handle, LV2_ATOM__Sequence);
152 forge->String = map->map(map->handle, LV2_ATOM__String);
153 forge->Tuple = map->map(map->handle, LV2_ATOM__Tuple);
154 forge->URI = map->map(map->handle, LV2_ATOM__URI);
155 forge->URID = map->map(map->handle, LV2_ATOM__URID);
156 forge->Vector = map->map(map->handle, LV2_ATOM__Vector);
157}
158
160static inline LV2_Atom*
162{
163 return forge->buf ? (LV2_Atom*)ref : forge->deref(forge->handle, ref);
164}
165
170
177static inline LV2_Atom_Forge_Ref
181{
182 frame->parent = forge->stack;
183 frame->ref = ref;
184
185 if (ref) {
186 forge->stack = frame; // Don't push, so walking the stack is always safe
187 }
188
189 return ref;
190}
191
193static inline void
195{
196 if (frame->ref) {
197 // If frame has a valid ref, it must be the top of the stack
198 assert(frame == forge->stack);
199 forge->stack = frame->parent;
200 }
201 // Otherwise, frame was not pushed because of overflow, do nothing
202}
203
205static inline bool
207{
208 return forge->stack && forge->stack->ref &&
209 (lv2_atom_forge_deref(forge, forge->stack->ref)->type == type);
210}
211
213static inline bool
215{
216 return (type == forge->Object || type == forge->Blank ||
217 type == forge->Resource);
218}
219
221static inline bool
224 const LV2_Atom_Object_Body* body)
225{
226 return (type == forge->Blank || (type == forge->Object && body->id == 0));
227}
228
234
236static inline void
238{
239 forge->buf = buf;
240 forge->size = (uint32_t)size;
241 forge->offset = 0;
242 forge->deref = NULL;
243 forge->sink = NULL;
244 forge->handle = NULL;
245 forge->stack = NULL;
246}
247
262static inline void
267{
268 forge->buf = NULL;
269 forge->size = forge->offset = 0;
270 forge->deref = deref;
271 forge->sink = sink;
272 forge->handle = handle;
273 forge->stack = NULL;
274}
275
281
287static inline LV2_Atom_Forge_Ref
289{
291 if (forge->sink) {
292 out = forge->sink(forge->handle, data, size);
293 } else {
294 out = (LV2_Atom_Forge_Ref)forge->buf + forge->offset;
295 uint8_t* mem = forge->buf + forge->offset;
296 if (forge->offset + size > forge->size) {
297 return 0;
298 }
299 forge->offset += size;
300 memcpy(mem, data, size);
301 }
302 for (LV2_Atom_Forge_Frame* f = forge->stack; f; f = f->parent) {
303 lv2_atom_forge_deref(forge, f->ref)->size += size;
304 }
305 return out;
306}
307
309static inline void
311{
312 const uint64_t pad = 0;
313 const uint32_t pad_size = lv2_atom_pad_size(written) - written;
314 lv2_atom_forge_raw(forge, &pad, pad_size);
315}
316
318static inline LV2_Atom_Forge_Ref
320{
322 if (out) {
323 lv2_atom_forge_pad(forge, size);
324 }
325 return out;
326}
327
329static inline LV2_Atom_Forge_Ref
331{
332 LV2_Atom_Forge_Ref out = lv2_atom_forge_raw(forge, str, len);
333 if (out && (out = lv2_atom_forge_raw(forge, "", 1))) {
334 lv2_atom_forge_pad(forge, len + 1);
335 }
336 return out;
337}
338
344
346static inline LV2_Atom_Forge_Ref
348{
349 const LV2_Atom a = {size, type};
350 return lv2_atom_forge_raw(forge, &a, sizeof(a));
351}
352
354static inline LV2_Atom_Forge_Ref
356{
357 return (
358 lv2_atom_forge_top_is(forge, forge->Vector)
359 ? lv2_atom_forge_raw(forge, LV2_ATOM_BODY_CONST(a), a->size)
360 : lv2_atom_forge_write(forge, a, (uint32_t)sizeof(LV2_Atom) + a->size));
361}
362
364static inline LV2_Atom_Forge_Ref
366{
367 const LV2_Atom_Int a = {{sizeof(val), forge->Int}, val};
368 return lv2_atom_forge_primitive(forge, &a.atom);
369}
370
372static inline LV2_Atom_Forge_Ref
374{
375 const LV2_Atom_Long a = {{sizeof(val), forge->Long}, val};
376 return lv2_atom_forge_primitive(forge, &a.atom);
377}
378
380static inline LV2_Atom_Forge_Ref
382{
383 const LV2_Atom_Float a = {{sizeof(val), forge->Float}, val};
384 return lv2_atom_forge_primitive(forge, &a.atom);
385}
386
388static inline LV2_Atom_Forge_Ref
390{
391 const LV2_Atom_Double a = {{sizeof(val), forge->Double}, val};
392 return lv2_atom_forge_primitive(forge, &a.atom);
393}
394
396static inline LV2_Atom_Forge_Ref
398{
399 const LV2_Atom_Bool a = {{sizeof(int32_t), forge->Bool}, val ? 1 : 0};
400 return lv2_atom_forge_primitive(forge, &a.atom);
401}
402
404static inline LV2_Atom_Forge_Ref
406{
407 const LV2_Atom_URID a = {{sizeof(id), forge->URID}, id};
408 return lv2_atom_forge_primitive(forge, &a.atom);
409}
410
412static inline LV2_Atom_Forge_Ref
415 const char* str,
416 uint32_t len)
417{
418 const LV2_Atom_String a = {{len + 1, type}};
419 LV2_Atom_Forge_Ref out = lv2_atom_forge_raw(forge, &a, sizeof(a));
420 if (out) {
421 if (!lv2_atom_forge_string_body(forge, str, len)) {
422 LV2_Atom* atom = lv2_atom_forge_deref(forge, out);
423 atom->size = atom->type = 0;
424 out = 0;
425 }
426 }
427 return out;
428}
429
431static inline LV2_Atom_Forge_Ref
432lv2_atom_forge_string(LV2_Atom_Forge* forge, const char* str, uint32_t len)
433{
434 return lv2_atom_forge_typed_string(forge, forge->String, str, len);
435}
436
442static inline LV2_Atom_Forge_Ref
444{
445 return lv2_atom_forge_typed_string(forge, forge->URI, uri, len);
446}
447
449static inline LV2_Atom_Forge_Ref
450lv2_atom_forge_path(LV2_Atom_Forge* forge, const char* path, uint32_t len)
451{
452 return lv2_atom_forge_typed_string(forge, forge->Path, path, len);
453}
454
456static inline LV2_Atom_Forge_Ref
458 const char* str,
459 uint32_t len,
460 uint32_t datatype,
461 uint32_t lang)
462{
463 const LV2_Atom_Literal a = {
464 {(uint32_t)(sizeof(LV2_Atom_Literal) - sizeof(LV2_Atom) + len + 1),
465 forge->Literal},
466 {datatype, lang}};
467 LV2_Atom_Forge_Ref out = lv2_atom_forge_raw(forge, &a, sizeof(a));
468 if (out) {
469 if (!lv2_atom_forge_string_body(forge, str, len)) {
470 LV2_Atom* atom = lv2_atom_forge_deref(forge, out);
471 atom->size = atom->type = 0;
472 out = 0;
473 }
474 }
475 return out;
476}
477
479static inline LV2_Atom_Forge_Ref
482 uint32_t child_size,
483 uint32_t child_type)
484{
485 const LV2_Atom_Vector a = {{sizeof(LV2_Atom_Vector_Body), forge->Vector},
486 {child_size, child_type}};
487 return lv2_atom_forge_push(
488 forge, frame, lv2_atom_forge_write(forge, &a, sizeof(a)));
489}
490
492static inline LV2_Atom_Forge_Ref
494 uint32_t child_size,
495 uint32_t child_type,
496 uint32_t n_elems,
497 const void* elems)
498{
499 const LV2_Atom_Vector a = {
500 {(uint32_t)(sizeof(LV2_Atom_Vector_Body) + n_elems * child_size),
501 forge->Vector},
502 {child_size, child_type}};
503 LV2_Atom_Forge_Ref out = lv2_atom_forge_write(forge, &a, sizeof(a));
504 if (out) {
505 lv2_atom_forge_write(forge, elems, child_size * n_elems);
506 }
507 return out;
508}
509
527static inline LV2_Atom_Forge_Ref
529{
530 const LV2_Atom_Tuple a = {{0, forge->Tuple}};
531 return lv2_atom_forge_push(
532 forge, frame, lv2_atom_forge_write(forge, &a, sizeof(a)));
533}
534
559static inline LV2_Atom_Forge_Ref
562 LV2_URID id,
563 LV2_URID otype)
564{
565 const LV2_Atom_Object a = {
566 {(uint32_t)sizeof(LV2_Atom_Object_Body), forge->Object}, {id, otype}};
567 return lv2_atom_forge_push(
568 forge, frame, lv2_atom_forge_write(forge, &a, sizeof(a)));
569}
570
578static inline LV2_Atom_Forge_Ref
581 LV2_URID id,
582 LV2_URID otype)
583{
584 const LV2_Atom_Object a = {
585 {(uint32_t)sizeof(LV2_Atom_Object_Body), forge->Resource}, {id, otype}};
586 return lv2_atom_forge_push(
587 forge, frame, lv2_atom_forge_write(forge, &a, sizeof(a)));
588}
589
597static inline LV2_Atom_Forge_Ref
600 uint32_t id,
601 LV2_URID otype)
602{
603 const LV2_Atom_Object a = {
604 {(uint32_t)sizeof(LV2_Atom_Object_Body), forge->Blank}, {id, otype}};
605 return lv2_atom_forge_push(
606 forge, frame, lv2_atom_forge_write(forge, &a, sizeof(a)));
607}
608
614static inline LV2_Atom_Forge_Ref
616{
617 const LV2_Atom_Property_Body a = {key, 0, {0, 0}};
618 return lv2_atom_forge_write(forge, &a, 2 * (uint32_t)sizeof(uint32_t));
619}
620
627static inline LV2_Atom_Forge_Ref
630 LV2_URID context)
631{
632 const LV2_Atom_Property_Body a = {key, context, {0, 0}};
633 return lv2_atom_forge_write(forge, &a, 2 * (uint32_t)sizeof(uint32_t));
634}
635
639static inline LV2_Atom_Forge_Ref
643{
644 const LV2_Atom_Sequence a = {
645 {(uint32_t)sizeof(LV2_Atom_Sequence_Body), forge->Sequence}, {unit, 0}};
646 return lv2_atom_forge_push(
647 forge, frame, lv2_atom_forge_write(forge, &a, sizeof(a)));
648}
649
655static inline LV2_Atom_Forge_Ref
657{
658 return lv2_atom_forge_write(forge, &frames, sizeof(frames));
659}
660
666static inline LV2_Atom_Forge_Ref
668{
669 return lv2_atom_forge_write(forge, &beats, sizeof(beats));
670}
671
673
674#ifdef __cplusplus
675} /* extern "C" */
676#endif
677
682
683#endif /* LV2_ATOM_FORGE_H */
#define NULL
Definition CarlaBridgeFormat.cpp:30
assert(0)
uint8_t a
Definition Spc_Cpu.h:141
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
unsigned f
Definition inflate.c:1572
static LV2_Atom_Forge_Ref lv2_atom_forge_tuple(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame)
Definition forge.h:528
static LV2_Atom_Forge_Ref lv2_atom_forge_push(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, LV2_Atom_Forge_Ref ref)
Definition forge.h:178
static LV2_Atom * lv2_atom_forge_deref(LV2_Atom_Forge *forge, LV2_Atom_Forge_Ref ref)
Definition forge.h:161
static LV2_Atom_Forge_Ref lv2_atom_forge_uri(LV2_Atom_Forge *forge, const char *uri, uint32_t len)
Definition forge.h:443
static LV2_Atom_Forge_Ref lv2_atom_forge_int(LV2_Atom_Forge *forge, int32_t val)
Definition forge.h:365
static LV2_Atom_Forge_Ref lv2_atom_forge_bool(LV2_Atom_Forge *forge, bool val)
Definition forge.h:397
static LV2_DEPRECATED LV2_Atom_Forge_Ref lv2_atom_forge_blank(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, uint32_t id, LV2_URID otype)
Definition forge.h:598
static LV2_Atom_Forge_Ref lv2_atom_forge_string_body(LV2_Atom_Forge *forge, const char *str, uint32_t len)
Definition forge.h:330
static LV2_Atom_Forge_Ref lv2_atom_forge_vector_head(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, uint32_t child_size, uint32_t child_type)
Definition forge.h:480
static LV2_Atom_Forge_Ref lv2_atom_forge_beat_time(LV2_Atom_Forge *forge, double beats)
Definition forge.h:667
static LV2_Atom_Forge_Ref lv2_atom_forge_long(LV2_Atom_Forge *forge, int64_t val)
Definition forge.h:373
static LV2_Atom_Forge_Ref lv2_atom_forge_sequence_head(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, uint32_t unit)
Definition forge.h:640
static void lv2_atom_forge_pad(LV2_Atom_Forge *forge, uint32_t written)
Definition forge.h:310
static bool lv2_atom_forge_is_object_type(const LV2_Atom_Forge *forge, uint32_t type)
Definition forge.h:214
static LV2_Atom_Forge_Ref lv2_atom_forge_raw(LV2_Atom_Forge *forge, const void *data, uint32_t size)
Definition forge.h:288
static LV2_Atom_Forge_Ref lv2_atom_forge_primitive(LV2_Atom_Forge *forge, const LV2_Atom *a)
Definition forge.h:355
static bool lv2_atom_forge_top_is(LV2_Atom_Forge *forge, uint32_t type)
Definition forge.h:206
static LV2_Atom_Forge_Ref lv2_atom_forge_property_head(LV2_Atom_Forge *forge, LV2_URID key, LV2_URID context)
Definition forge.h:628
static LV2_Atom_Forge_Ref lv2_atom_forge_urid(LV2_Atom_Forge *forge, LV2_URID id)
Definition forge.h:405
static LV2_Atom_Forge_Ref lv2_atom_forge_write(LV2_Atom_Forge *forge, const void *data, uint32_t size)
Definition forge.h:319
static LV2_Atom_Forge_Ref lv2_atom_forge_double(LV2_Atom_Forge *forge, double val)
Definition forge.h:389
static void lv2_atom_forge_pop(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame)
Definition forge.h:194
static bool lv2_atom_forge_is_blank(const LV2_Atom_Forge *forge, uint32_t type, const LV2_Atom_Object_Body *body)
Definition forge.h:222
static LV2_Atom_Forge_Ref lv2_atom_forge_string(LV2_Atom_Forge *forge, const char *str, uint32_t len)
Definition forge.h:432
static LV2_Atom_Forge_Ref lv2_atom_forge_typed_string(LV2_Atom_Forge *forge, uint32_t type, const char *str, uint32_t len)
Definition forge.h:413
static void lv2_atom_forge_set_buffer(LV2_Atom_Forge *forge, uint8_t *buf, size_t size)
Definition forge.h:237
static LV2_DEPRECATED LV2_Atom_Forge_Ref lv2_atom_forge_resource(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, LV2_URID id, LV2_URID otype)
Definition forge.h:579
static LV2_Atom_Forge_Ref lv2_atom_forge_path(LV2_Atom_Forge *forge, const char *path, uint32_t len)
Definition forge.h:450
static LV2_Atom_Forge_Ref lv2_atom_forge_key(LV2_Atom_Forge *forge, LV2_URID key)
Definition forge.h:615
static LV2_Atom_Forge_Ref lv2_atom_forge_atom(LV2_Atom_Forge *forge, uint32_t size, uint32_t type)
Definition forge.h:347
static LV2_Atom_Forge_Ref lv2_atom_forge_frame_time(LV2_Atom_Forge *forge, int64_t frames)
Definition forge.h:656
static LV2_Atom_Forge_Ref lv2_atom_forge_literal(LV2_Atom_Forge *forge, const char *str, uint32_t len, uint32_t datatype, uint32_t lang)
Definition forge.h:457
static LV2_Atom_Forge_Ref lv2_atom_forge_float(LV2_Atom_Forge *forge, float val)
Definition forge.h:381
static void lv2_atom_forge_set_sink(LV2_Atom_Forge *forge, LV2_Atom_Forge_Sink sink, LV2_Atom_Forge_Deref_Func deref, LV2_Atom_Forge_Sink_Handle handle)
Definition forge.h:263
static LV2_Atom_Forge_Ref lv2_atom_forge_object(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, LV2_URID id, LV2_URID otype)
Definition forge.h:560
static LV2_Atom_Forge_Ref lv2_atom_forge_vector(LV2_Atom_Forge *forge, uint32_t child_size, uint32_t child_type, uint32_t n_elems, const void *elems)
Definition forge.h:493
#define LV2_ATOM__Object
http://lv2plug.in/ns/ext/atom#Object
Definition atom.h:47
#define LV2_ATOM__Float
http://lv2plug.in/ns/ext/atom#Float
Definition atom.h:42
#define LV2_ATOM__Chunk
http://lv2plug.in/ns/ext/atom#Chunk
Definition atom.h:39
#define LV2_ATOM__Property
http://lv2plug.in/ns/ext/atom#Property
Definition atom.h:49
#define LV2_ATOM__Int
http://lv2plug.in/ns/ext/atom#Int
Definition atom.h:43
#define LV2_ATOM__URID
http://lv2plug.in/ns/ext/atom#URID
Definition atom.h:56
#define LV2_ATOM__Blank
http://lv2plug.in/ns/ext/atom#Blank
Definition atom.h:37
#define LV2_ATOM__Double
http://lv2plug.in/ns/ext/atom#Double
Definition atom.h:40
#define LV2_ATOM__String
http://lv2plug.in/ns/ext/atom#String
Definition atom.h:53
#define LV2_ATOM__Bool
http://lv2plug.in/ns/ext/atom#Bool
Definition atom.h:38
#define LV2_ATOM__Vector
http://lv2plug.in/ns/ext/atom#Vector
Definition atom.h:57
#define LV2_ATOM__Tuple
http://lv2plug.in/ns/ext/atom#Tuple
Definition atom.h:54
LV2_Atom_Int LV2_Atom_Bool
Definition atom.h:136
#define LV2_ATOM__Path
http://lv2plug.in/ns/ext/atom#Path
Definition atom.h:48
#define LV2_ATOM__URI
http://lv2plug.in/ns/ext/atom#URI
Definition atom.h:55
#define LV2_ATOM__Resource
http://lv2plug.in/ns/ext/atom#Resource
Definition atom.h:50
#define LV2_ATOM__Sequence
http://lv2plug.in/ns/ext/atom#Sequence
Definition atom.h:51
#define LV2_ATOM__Literal
http://lv2plug.in/ns/ext/atom#Literal
Definition atom.h:44
#define LV2_ATOM__Long
http://lv2plug.in/ns/ext/atom#Long
Definition atom.h:45
#define LV2_ATOM_BODY_CONST(atom)
Definition atom.h:103
#define LV2_DEPRECATED
Definition attributes.h:32
#define LV2_RESTORE_WARNINGS
Definition attributes.h:52
#define LV2_DISABLE_DEPRECATION_WARNINGS
Definition attributes.h:44
void * LV2_Atom_Forge_Sink_Handle
Definition atom-forge.h:79
intptr_t LV2_Atom_Forge_Ref
Definition atom-forge.h:82
static void lv2_atom_forge_init(LV2_Atom_Forge *forge, LV2_URID_Map *map)
Definition forge.h:136
static LV2_Atom_Forge_Ref lv2_atom_forge_raw(LV2_Atom_Forge *forge, const void *data, uint32_t size)
Definition atom-forge.h:293
LV2_Atom_Forge_Ref(* LV2_Atom_Forge_Sink)(LV2_Atom_Forge_Sink_Handle handle, const void *buf, uint32_t size)
Definition atom-forge.h:86
static LV2_Atom_Forge_Ref lv2_atom_forge_write(LV2_Atom_Forge *forge, const void *data, uint32_t size)
Definition atom-forge.h:324
struct LV2_Atom_Forge_Frame LV2_Atom_Forge_Frame
LV2_DISABLE_DEPRECATION_WARNINGS typedef void * LV2_Atom_Forge_Sink_Handle
Definition forge.h:72
LV2_Atom *(* LV2_Atom_Forge_Deref_Func)(LV2_Atom_Forge_Sink_Handle handle, LV2_Atom_Forge_Ref ref)
Definition forge.h:84
uint32_t LV2_URID
Definition urid.h:58
static uint32_t lv2_atom_pad_size(uint32_t size)
Definition atom-util.h:48
int val
Definition jpeglib.h:956
JSAMPIMAGE data
Definition jpeglib.h:945
SerdNode * deref(SerdReader *reader, const Ref ref)
Definition reader.c:116
static size_t sink(const void *buf, size_t len, SerdWriter *writer)
Definition writer.c:177
static SordNode * uri(SordWorld *world, int num)
Definition sord_test.c:47
float out
Definition lilv_test.c:1461
int int32_t
Definition mid.cpp:97
unsigned int uint32_t
Definition mid.cpp:100
unsigned char uint8_t
Definition mid.cpp:98
png_const_structrp png_const_inforp int * unit
Definition png.h:2161
Definition atom.h:130
Definition atom.h:124
Definition forge.h:89
LV2_Atom_Forge_Ref ref
Definition forge.h:91
struct LV2_Atom_Forge_Frame * parent
Definition forge.h:90
Definition atom-forge.h:102
LV2_URID Float
Definition atom-forge.h:117
uint32_t size
Definition atom-forge.h:105
LV2_URID Property
Definition atom-forge.h:123
LV2_URID Vector
Definition atom-forge.h:130
LV2_URID Chunk
Definition atom-forge.h:115
LV2_URID Long
Definition atom-forge.h:119
LV2_Atom_Forge_Frame * stack
Definition atom-forge.h:111
LV2_Atom_Forge_Sink sink
Definition atom-forge.h:107
LV2_URID Int
Definition atom-forge.h:118
uint8_t * buf
Definition atom-forge.h:103
LV2_URID Tuple
Definition atom-forge.h:127
LV2_URID Double
Definition atom-forge.h:116
LV2_URID Path
Definition atom-forge.h:122
LV2_Atom_Forge_Deref_Func deref
Definition atom-forge.h:108
LV2_URID URI
Definition atom-forge.h:128
LV2_Atom_Forge_Sink_Handle handle
Definition atom-forge.h:109
LV2_URID Bool
Definition atom-forge.h:114
LV2_URID Sequence
Definition atom-forge.h:125
LV2_URID String
Definition atom-forge.h:126
LV2_URID Blank LV2_DEPRECATED
Definition forge.h:106
LV2_URID Literal
Definition atom-forge.h:120
LV2_URID URID
Definition atom-forge.h:129
uint32_t offset
Definition atom-forge.h:104
LV2_URID Object
Definition atom-forge.h:121
Definition atom.h:112
Definition atom.h:158
Definition atom.h:118
Definition atom.h:197
uint32_t id
Definition atom.h:198
Definition atom.h:204
Definition atom.h:183
Definition atom.h:236
Definition atom.h:243
Definition atom.h:145
Definition atom.h:164
Definition atom.h:139
Definition atom.h:170
Definition atom.h:177
Definition atom.h:106
uint32_t size
Definition atom.h:107
uint32_t type
Definition atom.h:108
Definition urid.h:69
LV2_URID_Map_Handle handle
Definition urid.h:76
LV2_URID(* map)(LV2_URID_Map_Handle handle, const char *uri)
Definition urid.h:99
memcpy(hh, h, RAND_HEAD_LEN)
ZCONST char * key
Definition crypt.c:587
ulg size
Definition extract.c:2350