Mercurial > hg > pub > prymula > com
comparison DPF-Prymula-audioplugins/dpf/distrho/src/lv2/dynmanifest.h @ 3:84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
author | prymula <prymula76@outlook.com> |
---|---|
date | Mon, 16 Oct 2023 21:53:34 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:cf2cb71d31dd | 3:84e66ea83026 |
---|---|
1 /* | |
2 Dynamic manifest specification for LV2 | |
3 Copyright 2008-2011 Stefano D'Angelo <zanga.mail@gmail.com> | |
4 | |
5 Permission to use, copy, modify, and/or distribute this software for any | |
6 purpose with or without fee is hereby granted, provided that the above | |
7 copyright notice and this permission notice appear in all copies. | |
8 | |
9 THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
10 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
11 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
12 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
13 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
14 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
15 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
16 */ | |
17 | |
18 /** | |
19 @defgroup dynmanifest Dynamic Manifest | |
20 | |
21 Support for dynamic data generation, see | |
22 <http://lv2plug.in/ns/ext/dynmanifest> for details. | |
23 | |
24 @{ | |
25 */ | |
26 | |
27 #ifndef LV2_DYN_MANIFEST_H_INCLUDED | |
28 #define LV2_DYN_MANIFEST_H_INCLUDED | |
29 | |
30 #include <stdio.h> | |
31 | |
32 #include "lv2.h" | |
33 | |
34 #define LV2_DYN_MANIFEST_URI "http://lv2plug.in/ns/ext/dynmanifest" ///< http://lv2plug.in/ns/ext/dynmanifest | |
35 #define LV2_DYN_MANIFEST_PREFIX LV2_DYN_MANIFEST_URI "#" ///< http://lv2plug.in/ns/ext/dynmanifest# | |
36 | |
37 #ifdef __cplusplus | |
38 extern "C" { | |
39 #endif | |
40 | |
41 /** | |
42 Dynamic manifest generator handle. | |
43 | |
44 This handle indicates a particular status of a dynamic manifest generator. | |
45 The host MUST NOT attempt to interpret it and, unlikely LV2_Handle, it is | |
46 NOT even valid to compare this to NULL. The dynamic manifest generator MAY | |
47 use it to reference internal data. | |
48 */ | |
49 typedef void * LV2_Dyn_Manifest_Handle; | |
50 | |
51 /** | |
52 Generate the dynamic manifest. | |
53 | |
54 @param handle Pointer to an uninitialized dynamic manifest generator handle. | |
55 | |
56 @param features NULL terminated array of LV2_Feature structs which represent | |
57 the features the host supports. The dynamic manifest generator may refuse to | |
58 (re)generate the dynamic manifest if required features are not found here | |
59 (however hosts SHOULD NOT use this as a discovery mechanism, instead of | |
60 reading the static manifest file). This array must always exist; if a host | |
61 has no features, it MUST pass a single element array containing NULL. | |
62 | |
63 @return 0 on success, otherwise a non-zero error code. The host SHOULD | |
64 evaluate the result of the operation by examining the returned value and | |
65 MUST NOT try to interpret the value of handle. | |
66 */ | |
67 int lv2_dyn_manifest_open(LV2_Dyn_Manifest_Handle * handle, | |
68 const LV2_Feature *const * features); | |
69 | |
70 /** | |
71 Fetch a "list" of subject URIs described in the dynamic manifest. | |
72 | |
73 The dynamic manifest generator has to fill the resource only with the needed | |
74 triples to make the host aware of the "objects" it wants to expose. For | |
75 example, if the plugin library exposes a regular LV2 plugin, it should | |
76 output only a triple like the following: | |
77 | |
78 <http://www.example.com/plugin/uri> a lv2:Plugin . | |
79 | |
80 The objects that are elegible for exposure are those that would need to be | |
81 represented by a subject node in a static manifest. | |
82 | |
83 @param handle Dynamic manifest generator handle. | |
84 | |
85 @param fp FILE * identifying the resource the host has to set up for the | |
86 dynamic manifest generator. The host MUST pass a writable, empty resource to | |
87 this function, and the dynamic manifest generator MUST ONLY perform write | |
88 operations on it at the end of the stream (e.g., using only fprintf(), | |
89 fwrite() and similar). | |
90 | |
91 @return 0 on success, otherwise a non-zero error code. | |
92 */ | |
93 int lv2_dyn_manifest_get_subjects(LV2_Dyn_Manifest_Handle handle, | |
94 FILE * fp); | |
95 | |
96 /** | |
97 Function that fetches data related to a specific URI. | |
98 | |
99 The dynamic manifest generator has to fill the resource with data related to | |
100 object represented by the given URI. For example, if the library exposes a | |
101 regular LV2 plugin whose URI, as retrieved by the host using | |
102 lv2_dyn_manifest_get_subjects() is http://www.example.com/plugin/uri, it | |
103 should output something like: | |
104 | |
105 <pre> | |
106 <http://www.example.com/plugin/uri> | |
107 a lv2:Plugin ; | |
108 doap:name "My Plugin" ; | |
109 lv2:binary <mylib.so> ; | |
110 etc:etc "..." . | |
111 </pre> | |
112 | |
113 @param handle Dynamic manifest generator handle. | |
114 | |
115 @param fp FILE * identifying the resource the host has to set up for the | |
116 dynamic manifest generator. The host MUST pass a writable resource to this | |
117 function, and the dynamic manifest generator MUST ONLY perform write | |
118 operations on it at the current position of the stream (e.g. using only | |
119 fprintf(), fwrite() and similar). | |
120 | |
121 @param uri URI to get data about (in the "plain" form, i.e., absolute URI | |
122 without Turtle prefixes). | |
123 | |
124 @return 0 on success, otherwise a non-zero error code. | |
125 */ | |
126 int lv2_dyn_manifest_get_data(LV2_Dyn_Manifest_Handle handle, | |
127 FILE * fp, | |
128 const char * uri); | |
129 | |
130 /** | |
131 Function that ends the operations on the dynamic manifest generator. | |
132 | |
133 This function SHOULD be used by the dynamic manifest generator to perform | |
134 cleanup operations, etc. | |
135 | |
136 Once this function is called, referring to handle will cause undefined | |
137 behavior. | |
138 | |
139 @param handle Dynamic manifest generator handle. | |
140 */ | |
141 void lv2_dyn_manifest_close(LV2_Dyn_Manifest_Handle handle); | |
142 | |
143 #ifdef __cplusplus | |
144 } | |
145 #endif | |
146 | |
147 #endif /* LV2_DYN_MANIFEST_H_INCLUDED */ | |
148 | |
149 /** | |
150 @} | |
151 */ |