1
This is glame-dev.info, produced by makeinfo version 4.1 from
6
* GLAME-dev: (glame-dev). GNU/Linux Audio Mechanics-Development info.
10
File: glame-dev.info, Node: The Basic GLAME Database Types, Next: The Internal gldb Operations, Up: GLAME Database Interface
12
The Basic GLAME Database Types
13
------------------------------
15
Still to be documented.
18
File: glame-dev.info, Node: The Internal gldb Operations, Next: The GLAME Database API, Prev: The Basic GLAME Database Types, Up: GLAME Database Interface
20
The Internal gldb Operations
21
----------------------------
23
Still to be documented.
26
File: glame-dev.info, Node: The GLAME Database API, Next: Existing GLAME Database Specializations, Prev: The Internal gldb Operations, Up: GLAME Database Interface
28
The GLAME Database API
29
----------------------
31
The external visible API of a generic database is the following (see
32
the `src/hash/gldb.h' file):
34
- Function: void gldb_init (gldb_t *DB)
35
- Function: void gldb_delete (gldb_t *DB)
36
- Function: int gldb_copy (gldb_t *DEST, gldb_t *SOURCE)
37
- Function: int gldb_nritems (gldb_t *DB)
38
These function operate on a whole database, respectively initialize
39
an empty database, deletes all items of a database, copies all
40
items from one database to another and tells about the number of
41
items in the database.
43
- Function: void gldb_init_item (gldb_item_t *ITEM)
44
- Function: void gldb_delete_item (gldb_item_t *ITEM)
45
- Function: gldb_item_t * gldb_copy_item (gldb_item_t *ITEM)
46
These functions operate on a database item, respectively
47
initializing it, deleting it or creating a copy of it.
49
- Function: int gldb_add_item (gldb_t *DB, gldb_item_t *ITEM, const
51
- Function: void gldb_remove_item (gldb_item_t *ITEM)
52
- Function: gldb_item_t * gldb_query_item (gldb_t *DB, const char
54
These functions can be used to add an item with the specified
55
label to the database, remove it out of the database, or to query
56
a database item by specifying the label that was given at addition
59
- Iterator: gldb_foreach_item (gldb_t *DB, gldb_item_t *ITEM) { }
60
Using this iterator you can iterate through all items stored in the
61
specified database. You may not remove items while iterating,
65
File: glame-dev.info, Node: Existing GLAME Database Specializations, Prev: The GLAME Database API, Up: GLAME Database Interface
67
Existing GLAME Database Specializations
68
---------------------------------------
70
Two generic specializations exist, the string database and the WORM
71
database. Also the filter parameter database and the filter port
72
database are specializations of the generic GLAME database framework,
73
but they are not covered in this document.
77
* The String Database::
81
File: glame-dev.info, Node: The String Database, Next: The WORM Database, Up: Existing GLAME Database Specializations
83
Still to be documented.
86
File: glame-dev.info, Node: The WORM Database, Prev: The String Database, Up: Existing GLAME Database Specializations
88
Still to be documented.
91
File: glame-dev.info, Node: GLAME Signal Interface, Next: Function and Type Index, Prev: GLAME Database Interface, Up: Top
93
GLAME Signal Interface
94
**********************
96
Generic signals via callbacks (`glsig_handler_t'), issuable from a
97
glsig_emitter. Signal masks are supported, as is a hierarchy of the
100
WARNING! No explicit threading support is included, i.e. do your own
101
locking (you have to protect the emitter against concurrent addition and
102
removal of handlers and emit of signals). Also a handler will be invoked
103
in the thread context of the emitter, not in the one which added the
104
handler. If you want to emit signals from real signal handlers you have
105
to ensure yourself that your handlers are signal safe - also they should
106
be reentrant as parallel invocation from different threads is not
109
Brief description of the available API follows:
111
- void: (glsig_callb_t) (glsig_handler_t *, long, va_list)
112
The type of the used callback functions through which signals
113
are supposed to be handled.
115
- Function: INIT_GLSIG_EMITTER ( glsig_emitter_t *EMITTER)
116
Inits an emitter. No signal handlers are attached initially.
118
- Function: glsig_handler_t * glsig_add_handler ( glsig_emitter_t
119
*EMITTER, long SIGMASK, glsig_callb_t *CB, void *PRIV)
120
Adds a signal handler to the emitter using the specified sigmask
121
and the callback handler. The priv data is stored in the handlers
122
->priv field which you should access using
123
`glsig_handler_private()'.
125
- Function: glsig_handler_t * glsig_add_redirector ( glsig_emitter_t
126
*EMITTER, long SIGMASK, glsig_emitter_t *DEST)
127
Adds a redirector to the emitter. All signals raised from the
128
emitter matching the specified signal mask will be raised again
131
- Function: void glsig_emit ( glsig_emitter_t *EMITTER, int SIG, ...)
132
Emits the signal sig from the emitter and provides the varargs
133
to the callbacks. Signals are emitted bottom to top in the
134
hierarchy. It is safe to remove your signal handler during
137
- Function: int glsig_copy_handlers ( glsig_emitter_t *DEST,
138
glsig_emitter_t *SOURCE)
139
Copies all handlers from one emitter to another - same "private"
140
data, of course. Can return -1 on memory shortage. Redirectors are
143
- Function: int glsig_copy_redirectors ( glsig_emitter_t *DEST,
144
glsig_emitter_t *SOURCE)
145
Copies all redirectors from one emitter to another - same "private"
146
data, of course. Can return -1 on memory shortage. Normal
147
handlers are not copied.
149
- Function: void glsig_delete_handler ( glsig_handler_t *HANDLER)
150
Removes and destroyes the specified handler from its emitter.
152
- Function: void glsig_delete_all ( glsig_emitter_t *EMITTER)
153
Removes and destroyes all signal handlers from the specified
154
emitter. Use with care.
156
- Function: void glsig_handler_exec ( glsig_handler_t *H, int SIG, ...)
157
Executes the specified signal handler. Usually you dont want to use
158
this, instead use `glsig_emit()'.
160
Inside signal handlers you may access the passed parameters (which you
161
should know by type and count) with the following macros.
163
- Function: void GLSIGH_GETARGS1 ( va_list VA, type1 VAR1)
164
- Function: void GLSIGH_GETARGS2 ( va_list VA, type1 VAR1, type2 VAR2)
165
- Function: void GLSIGH_GETARGS3 ( va_list VA, type1 VAR1, type2 VAR2,
167
- Function: void GLSIGH_GETARGS4 ( va_list VA, type1 VAR1, type2 VAR2,
168
type3 VAR3, type4 VAR4)
169
These macros initialize the provided variables with the passed
170
parameters. Beware that passing types with `sizeof(type)' not
171
equal to `sizeof(void *)' is not safe on compilers other than gcc.
174
File: glame-dev.info, Node: Function and Type Index, Prev: GLAME Signal Interface, Up: Top
176
Function and Type Index
177
***********************
181
* (: The Filter Port Object.
182
* (glsig_callb_t): GLAME Signal Interface.
183
* *sw_mmap: File Operations.
184
* char: Invoking data conversions.
185
* connect: Filter Methods.
186
* connect_out: Filter Categories.
187
* f <1>: Filter Skeleton.
189
* fbuf_alloc: Doing Real Work.
190
* fbuf_buf <1>: Examples.
191
* fbuf_buf: Doing Real Work.
192
* fbuf_get <1>: Examples.
193
* fbuf_get: Doing Real Work.
194
* fbuf_make_private <1>: Examples.
195
* fbuf_make_private: Doing Real Work.
196
* fbuf_queue <1>: Examples.
197
* fbuf_queue: Doing Real Work.
198
* fbuf_realloc: Doing Real Work.
199
* fbuf_ref <1>: Examples.
200
* fbuf_ref: Doing Real Work.
201
* fbuf_size: Doing Real Work.
202
* fbuf_unref <1>: Examples.
203
* fbuf_unref: Doing Real Work.
204
* filter_add_node: The Filter Object.
205
* FILTER_AFTER_INIT <1>: Main Filter Method.
206
* FILTER_AFTER_INIT: Filter Methods.
207
* FILTER_BEFORE_CLEANUP <1>: Main Filter Method.
208
* FILTER_BEFORE_CLEANUP: Filter Methods.
209
* FILTER_BEFORE_STOPCLEANUP <1>: Main Filter Method.
210
* FILTER_BEFORE_STOPCLEANUP: Filter Methods.
211
* filter_buffer_t: Doing Real Work.
212
* FILTER_CHECK_STOP <1>: Main Filter Method.
213
* FILTER_CHECK_STOP: Filter Methods.
214
* filter_clear_error: The Filter Object.
215
* filter_collapse: The Filter Object.
216
* filter_creat: The Filter Object.
217
* filter_delete: The Filter Object.
218
* FILTER_DO_CLEANUP <1>: Main Filter Method.
219
* FILTER_DO_CLEANUP: Filter Methods.
220
* filter_emitter: The Filter Object.
221
* filter_errno: The Filter Object.
222
* FILTER_ERROR_CLEANUP <1>: Main Filter Method.
223
* FILTER_ERROR_CLEANUP: Filter Methods.
224
* FILTER_ERROR_RETURN <1>: Main Filter Method.
225
* FILTER_ERROR_RETURN: Filter Methods.
226
* filter_errstr: The Filter Object.
227
* filter_expand: The Filter Object.
228
* filter_foreach_node: The Filter Object.
229
* filter_get_node: The Filter Object.
230
* filter_get_property: The Filter Object.
231
* filter_has_error: The Filter Object.
232
* filter_instantiate: The Filter Object.
233
* FILTER_IS_LAUNCHED: The Filter Object.
234
* FILTER_IS_NETWORK: The Filter Object.
235
* FILTER_IS_NODE: The Filter Object.
236
* FILTER_IS_PART_OF_NETWORK: The Filter Object.
237
* FILTER_IS_PLUGIN: The Filter Object.
238
* filter_is_ready: Filter Networks.
239
* filter_launch: Filter Networks.
240
* filter_name: The Filter Object.
241
* filter_nrnodes: The Filter Object.
242
* filter_param_t <1>: Filter Methods.
243
* filter_param_t: The Filter Parameter Object.
244
* filter_paramdb: The Filter Object.
245
* filter_paramdb_t <1>: The Filter Port Object.
246
* filter_paramdb_t <2>: The Filter Parameter Object.
247
* filter_paramdb_t: The Filter Object.
248
* filter_pause: Filter Networks.
249
* filter_pipe_t <1>: Doing Real Work.
250
* filter_pipe_t <2>: Filter Methods.
251
* filter_pipe_t <3>: The Filter Pipe Object.
252
* filter_pipe_t: The Filter Parameter Object.
253
* filter_port_t <1>: Filter Methods.
254
* filter_port_t: The Filter Port Object.
255
* filter_portdb: The Filter Object.
256
* filter_portdb_t <1>: The Filter Port Object.
257
* filter_portdb_t: The Filter Object.
258
* filter_propertydb: The Filter Object.
259
* filter_register: The Filter Object.
260
* filter_remove: The Filter Object.
261
* FILTER_RETURN <1>: Main Filter Method.
262
* FILTER_RETURN: Filter Methods.
263
* filter_set_error: The Filter Object.
264
* filter_set_property: The Filter Object.
265
* filter_start: Filter Networks.
266
* filter_t <1>: Filter Methods.
267
* filter_t <2>: Filter Networks.
268
* filter_t <3>: The Filter Parameter Object.
269
* filter_t: The Filter Object.
270
* filter_terminate: Filter Networks.
271
* filter_to_string: The Filter Object.
272
* filter_wait: Filter Networks.
273
* filterparam_delete: The Filter Parameter Object.
274
* filterparam_emitter: The Filter Parameter Object.
275
* filterparam_filter: The Filter Parameter Object.
276
* filterparam_get_destpipe: The Filter Parameter Object.
277
* filterparam_get_property: The Filter Parameter Object.
278
* filterparam_get_sourcepipe: The Filter Parameter Object.
279
* filterparam_label: The Filter Parameter Object.
280
* filterparam_redirect: The Filter Parameter Object.
281
* filterparam_set: The Filter Parameter Object.
282
* filterparam_set_property: The Filter Parameter Object.
283
* filterparam_set_string: The Filter Parameter Object.
284
* filterparam_to_string: The Filter Parameter Object.
285
* filterparam_type: The Filter Parameter Object.
286
* filterparam_val: The Filter Parameter Object.
287
* filterparam_val_float: The Filter Parameter Object.
288
* filterparam_val_int: The Filter Parameter Object.
289
* filterparam_val_sample: The Filter Parameter Object.
290
* filterparam_val_string: The Filter Parameter Object.
291
* filterparamdb_add_param: The Filter Parameter Object.
292
* filterparamdb_add_param_float: The Filter Parameter Object.
293
* filterparamdb_add_param_int: The Filter Parameter Object.
294
* filterparamdb_add_param_string: The Filter Parameter Object.
295
* filterparamdb_delete_param: The Filter Parameter Object.
296
* filterparamdb_foreach_param: The Filter Parameter Object.
297
* filterparamdb_get_param: The Filter Parameter Object.
298
* filterparamdb_nrparams: The Filter Parameter Object.
299
* filterpipe_delete: The Filter Pipe Object.
300
* filterpipe_dest: The Filter Pipe Object.
301
* filterpipe_emitter: The Filter Pipe Object.
302
* filterpipe_fft_bsize: The Filter Pipe Object.
303
* filterpipe_fft_hangle: The Filter Pipe Object.
304
* filterpipe_fft_osamp: The Filter Pipe Object.
305
* filterpipe_fft_rate: The Filter Pipe Object.
306
* filterpipe_sample_hangle: The Filter Pipe Object.
307
* filterpipe_sample_rate: The Filter Pipe Object.
308
* filterpipe_settype_fft: The Filter Pipe Object.
309
* filterpipe_settype_sample: The Filter Pipe Object.
310
* filterpipe_source: The Filter Pipe Object.
311
* filterpipe_sourceparamdb: The Filter Pipe Object.
312
* filterpipe_type: The Filter Pipe Object.
313
* filterport_connect: The Filter Pipe Object.
314
* filterport_delete: The Filter Port Object.
315
* filterport_emitter: The Filter Port Object.
316
* filterport_filter: The Filter Port Object.
317
* filterport_get_pipe: The Filter Port Object.
318
* filterport_get_property: The Filter Port Object.
319
* filterport_is_input: The Filter Port Object.
320
* filterport_is_output: The Filter Port Object.
321
* filterport_label: The Filter Port Object.
322
* filterport_next_pipe: The Filter Port Object.
323
* filterport_nrpipes: The Filter Port Object.
324
* filterport_paramdb: The Filter Port Object.
325
* filterport_redirect: The Filter Port Object.
326
* filterport_set_property: The Filter Port Object.
327
* filterport_type: The Filter Port Object.
328
* filterportdb_add_port: The Filter Port Object.
329
* filterportdb_delete_port: The Filter Port Object.
330
* filterportdb_get_port: The Filter Port Object.
331
* filterportdb_nrports: The Filter Port Object.
332
* fitlerpipe_destparamdb: The Filter Pipe Object.
333
* fixup_param: Filter Categories.
334
* fixup_pipe: Filter Categories.
335
* gcv_conv_t <1>: Invoking data conversions.
336
* gcv_conv_t: Getting your custom-tailored conversion routine.
337
* gcv_do_conversion: Invoking data conversions.
338
* gcv_drop_conversion: Getting your custom-tailored conversion routine.
339
* gcv_drop_layout: Describing the data layout.
340
* gcv_endian_t: Describing the data layout.
341
* gcv_get_conversion: Getting your custom-tailored conversion routine.
342
* gcv_get_generation: Versioning.
343
* gcv_get_layout: Describing the data layout.
344
* gcv_get_revision: Versioning.
345
* gcv_layout_t <1>: Getting your custom-tailored conversion routine.
346
* gcv_layout_t: Describing the data layout.
347
* gcv_set_channels: Describing the data layout.
348
* gcv_set_endian: Describing the data layout.
349
* gcv_set_streams: Describing the data layout.
350
* gcv_set_type: Describing the data layout.
351
* gcv_set_width: Describing the data layout.
352
* gcv_type_t: Describing the data layout.
353
* gcv_version_t: Versioning.
354
* gldb_add_item: The GLAME Database API.
355
* gldb_copy: The GLAME Database API.
356
* gldb_copy_item: The GLAME Database API.
357
* gldb_delete: The GLAME Database API.
358
* gldb_delete_item: The GLAME Database API.
359
* gldb_foreach_item: The GLAME Database API.
360
* gldb_init: The GLAME Database API.
361
* gldb_init_item: The GLAME Database API.
362
* gldb_item_t: The GLAME Database API.
363
* gldb_nritems: The GLAME Database API.
364
* gldb_query_item: The GLAME Database API.
365
* gldb_remove_item: The GLAME Database API.
366
* gldb_t <1>: The GLAME Database API.
367
* gldb_t: The Filter Object.
368
* glsig_add_handler: GLAME Signal Interface.
369
* glsig_add_redirector: GLAME Signal Interface.
370
* glsig_callb_t: GLAME Signal Interface.
371
* glsig_copy_handlers: GLAME Signal Interface.
372
* glsig_copy_redirectors: GLAME Signal Interface.
373
* glsig_delete_all: GLAME Signal Interface.
374
* glsig_delete_handler: GLAME Signal Interface.
375
* glsig_emit: GLAME Signal Interface.
376
* glsig_emitter_t <1>: GLAME Signal Interface.
377
* glsig_emitter_t <2>: Generic operations on items.
378
* glsig_emitter_t <3>: The Filter Port Object.
379
* glsig_emitter_t <4>: The Filter Parameter Object.
380
* glsig_emitter_t: The Filter Object.
381
* glsig_handler_exec: GLAME Signal Interface.
382
* glsig_handler_t: GLAME Signal Interface.
383
* GLSIGH_GETARGS1: GLAME Signal Interface.
384
* GLSIGH_GETARGS2: GLAME Signal Interface.
385
* GLSIGH_GETARGS3: GLAME Signal Interface.
386
* GLSIGH_GETARGS4: GLAME Signal Interface.
387
* gpsm_find_grp_label: The group item.
388
* gpsm_find_swfile_filename: The group item.
389
* gpsm_find_swfile_label: The group item.
390
* gpsm_find_swfile_vposition: The group item.
391
* gpsm_flatten: Generic operations on items.
392
* gpsm_grp_foreach_item: The group item.
393
* gpsm_grp_insert: Generic operations on items.
394
* gpsm_grp_safe_foreach_item: The group item.
395
* gpsm_grp_t <1>: The group item.
396
* gpsm_grp_t: Generic operations on items.
397
* gpsm_invalidate_swapfile: The swfile item.
398
* gpsm_item_destroy: Generic operations on items.
399
* gpsm_item_emitter: Generic operations on items.
400
* gpsm_item_hposition: Generic operations on items.
401
* gpsm_item_hsize: Generic operations on items.
402
* gpsm_item_label: Generic operations on items.
403
* gpsm_item_parent: Generic operations on items.
404
* gpsm_item_remove: Generic operations on items.
405
* gpsm_item_set_label: Generic operations on items.
406
* gpsm_item_t <1>: Undo and redo support.
407
* gpsm_item_t <2>: The group item.
408
* gpsm_item_t: Generic operations on items.
409
* gpsm_item_vposition: Generic operations on items.
410
* gpsm_item_vsize: Generic operations on items.
411
* gpsm_newgrp: The group item.
412
* gpsm_newswfile: The swfile item.
413
* gpsm_notify_swapfile_change: The swfile item.
414
* gpsm_notify_swapfile_cut: The swfile item.
415
* gpsm_notify_swapfile_insert: The swfile item.
416
* gpsm_op_can_redo: Undo and redo support.
417
* gpsm_op_can_undo: Undo and redo support.
418
* gpsm_op_forget: Undo and redo support.
419
* gpsm_op_prepare: Undo and redo support.
420
* gpsm_op_redo: Undo and redo support.
421
* gpsm_op_redo_and_forget: Undo and redo support.
422
* gpsm_op_undo: Undo and redo support.
423
* gpsm_op_undo_and_forget: Undo and redo support.
424
* gpsm_set_max_saved_ops: Undo and redo support.
425
* gpsm_swfile_cow: The swfile item.
426
* gpsm_swfile_filename: The swfile item.
427
* gpsm_swfile_link: The swfile item.
428
* gpsm_swfile_position: The swfile item.
429
* gpsm_swfile_samplerate: The swfile item.
430
* gpsm_swfile_set: The swfile item.
431
* gpsm_swfile_set_position: The swfile item.
432
* gpsm_swfile_set_samplerate: The swfile item.
433
* gpsm_swfile_t <1>: The swfile item.
434
* gpsm_swfile_t: The group item.
435
* init: Filter Methods.
436
* INIT_GLSIG_EMITTER: GLAME Signal Interface.
438
* plugin_add: Plugin Interface.
439
* plugin_add_path: Plugin Interface.
440
* plugin_get: Plugin Interface.
441
* plugin_load: Plugin Interface.
442
* plugin_name: Plugin Interface.
443
* plugin_next: Plugin Interface.
444
* plugin_query: Plugin Interface.
445
* plugin_set: Plugin Interface.
446
* plugin_t <1>: Plugin Interface.
447
* plugin_t: The Filter Object.
448
* sbuf_alloc <1>: Main Filter Method.
449
* sbuf_alloc: Working on SAMPLEs.
450
* sbuf_buf: Working on SAMPLEs.
451
* sbuf_make_private: Main Filter Method.
452
* sbuf_size: Working on SAMPLEs.
453
* set: Filter Methods.
454
* struct sw_stat: File Operations.
455
* struct txn_op: TXN Programming Interface.
456
* sw_close: File Operations.
457
* sw_closedir: Namespace Operations.
458
* sw_fstat: File Operations.
459
* sw_ftruncate: File Operations.
460
* sw_lseek: File Operations.
461
* sw_munmap: File Operations.
462
* sw_open: File Operations.
463
* sw_opendir: Namespace Operations.
464
* sw_read: File Operations.
465
* sw_readdir: Namespace Operations.
466
* sw_sendfile: File Operations.
467
* sw_unlink: Namespace Operations.
468
* sw_write: File Operations.
469
* swapfile_close: Initialisation.
470
* swapfile_creat: Initialisation.
471
* swapfile_fsck: Initialisation.
472
* swapfile_open: Initialisation.
473
* swfd_t: File Operations.
474
* txn_abort: TXN User Interface.
475
* txn_abort_and_delete_all: TXN User Interface.
476
* txn_delete: TXN User Interface.
477
* txn_end: TXN User Interface.
478
* txn_finish: TXN Programming Interface.
479
* txn_finish_unimplemented: TXN Programming Interface.
480
* txn_start: TXN User Interface.
481
* txn_undo: TXN User Interface.
482
* txnid_t <1>: TXN Programming Interface.
483
* txnid_t <2>: TXN User Interface.
484
* txnid_t: File Operations.