clap

CLAP Audio Plugin API
Log | Files | Refs | README | LICENSE

commit a3246e830341053d9750e25ff97a64b5584f44c2
parent aee72b33747c3438ca463f27c4caeaf9fe97fadc
Author: Alexandre Bique <bique.alexandre@gmail.com>
Date:   Wed, 12 Nov 2014 20:53:15 +0100

add clap-plugin-helper.h, which simplify the plugin creation

Diffstat:
Mexamples/thyns/plugin.c | 99++-----------------------------------------------------------------------------
Ainclude/clap/clap-plugin-helper.c | 167+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ainclude/clap/clap-plugin-helper.h | 12++++++++++++
Mspec.html | 77++++++++++++++++++++++++++++++++---------------------------------------------
Mspec.rst | 2+-
5 files changed, 214 insertions(+), 143 deletions(-)

diff --git a/examples/thyns/plugin.c b/examples/thyns/plugin.c @@ -1,6 +1,7 @@ #include <stdlib.h> #include <stdio.h> #include <clap/clap.h> +#include <clap/clap-plugin-helper.h> #include "thyns.h" @@ -9,7 +10,6 @@ struct thyns_plugin struct thyns thyns; struct clap_plugin plugin; struct clap_host *host; - float pitch; }; void @@ -117,53 +117,6 @@ thyns_plugin_set_ports_config(struct clap_plugin *plugin, } } -bool -thyns_plugin_set_port_repeat(struct clap_plugin *plugin, - uint32_t port_index, - uint32_t count) -{ - return false; -} - -uint32_t -thyns_plugin_get_params_count(struct clap_plugin *plugin) -{ - return 0; -} - -bool -thyns_plugin_get_param(struct clap_plugin *plugin, - uint32_t index, - struct clap_param *param) -{ - return false; -} - -uint32_t -thyns_plugin_get_presets_count(struct clap_plugin *plugin) -{ - return 0; -} - -bool -thyns_plugin_get_preset(struct clap_plugin *plugin, - uint32_t index, - struct clap_preset *preset) -{ - return false; -} - -bool -thyns_plugin_activate(struct clap_plugin *plugin) -{ - return true; -} - -void -thyns_plugin_deactivate(struct clap_plugin *plugin) -{ -} - void thyns_plugin_process(struct clap_plugin *plugin, struct clap_process *process) @@ -171,41 +124,6 @@ thyns_plugin_process(struct clap_plugin *plugin, thyns_process(plugin->plugin_data, process); } -bool -thyns_plugin_open_gui(struct clap_plugin *plugin) -{ - return false; -} - -void -thyns_plugin_close_gui(struct clap_plugin *plugin) -{ -} - -bool -thyns_plugin_save(struct clap_plugin *plugin, void **buffer, uint32_t *size) -{ - return false; -} - -bool -thyns_plugin_restore(struct clap_plugin *plugin, const void *buffer, uint32_t size) -{ - return false; -} - -bool -thyns_plugin_set_locale(struct clap_plugin *plugin, const char *locale) -{ - return false; -} - -void * -thyns_plugin_extension(struct clap_plugin *plugin, const char *id) -{ - return NULL; -} - struct thyns_plugin * thyns_plugin_create(struct clap_host *host, uint32_t sample_rate) @@ -221,7 +139,7 @@ thyns_plugin_create(struct clap_host *host, p->host = host; // initialize plugin - p->plugin.clap_version = CLAP_VERSION; + clap_plugin_default(&p->plugin); p->plugin.destroy = thyns_plugin_destroy; p->plugin.plugin_data = p; p->plugin.get_attribute = thyns_plugin_get_attribute; @@ -229,20 +147,7 @@ thyns_plugin_create(struct clap_host *host, p->plugin.get_ports_config = thyns_plugin_get_ports_config; p->plugin.get_port_info = thyns_plugin_get_port_info; p->plugin.set_ports_config = thyns_plugin_set_ports_config; - p->plugin.set_port_repeat = thyns_plugin_set_port_repeat; - p->plugin.get_params_count = thyns_plugin_get_params_count; - p->plugin.get_param = thyns_plugin_get_param; - p->plugin.get_presets_count = thyns_plugin_get_presets_count; - p->plugin.get_preset = thyns_plugin_get_preset; - p->plugin.activate = thyns_plugin_activate; - p->plugin.deactivate = thyns_plugin_deactivate; p->plugin.process = thyns_plugin_process; - p->plugin.open_gui = thyns_plugin_open_gui; - p->plugin.close_gui = thyns_plugin_close_gui; - p->plugin.save = thyns_plugin_save; - p->plugin.restore = thyns_plugin_restore; - p->plugin.set_locale = thyns_plugin_set_locale; - p->plugin.extension = thyns_plugin_extension; return p; } diff --git a/include/clap/clap-plugin-helper.c b/include/clap/clap-plugin-helper.c @@ -0,0 +1,167 @@ +#include <assert.h> + +void +clap_default_plugin_destroy(struct clap_plugin *plugin) +{ + assert(false && "this function must be implemented"); +} + +uint32_t +clap_default_plugin_get_attribute(struct clap_plugin *plugin, + const char *attr, + char *buffer, + uint32_t size) +{ + *buffer = '\0'; + return 0; +} + +uint32_t +clap_default_plugin_get_ports_configs_count(struct clap_plugin *plugin) +{ + return 0; +} + +bool +clap_default_plugin_get_ports_config(struct clap_plugin *plugin, + uint32_t config_index, + struct clap_ports_config *config) +{ + return false; +} + +bool +clap_default_plugin_get_port_info(struct clap_plugin *plugin, + uint32_t config_index, + uint32_t port_index, + struct clap_port_info *port) +{ + return false; +} + +bool +clap_default_plugin_set_ports_config(struct clap_plugin *plugin, + uint32_t config_index) +{ + return false; +} + +bool +clap_default_plugin_set_port_repeat(struct clap_plugin *plugin, + uint32_t port_index, + uint32_t count) +{ + return false; +} + +uint32_t +clap_default_plugin_get_params_count(struct clap_plugin *plugin) +{ + return 0; +} + +bool +clap_default_plugin_get_param(struct clap_plugin *plugin, + uint32_t index, + struct clap_param *param) +{ + return false; +} + +uint32_t +clap_default_plugin_get_presets_count(struct clap_plugin *plugin) +{ + return 0; +} + +bool +clap_default_plugin_get_preset(struct clap_plugin *plugin, + uint32_t index, + struct clap_preset *preset) +{ + return false; +} + +bool +clap_default_plugin_activate(struct clap_plugin *plugin) +{ + return true; +} + +void +clap_default_plugin_deactivate(struct clap_plugin *plugin) +{ +} + +void +clap_default_plugin_process(struct clap_plugin *plugin, + struct clap_process *process) +{ +} + +bool +clap_default_plugin_open_gui(struct clap_plugin *plugin) +{ + return false; +} + +void +clap_default_plugin_close_gui(struct clap_plugin *plugin) +{ +} + +bool +clap_default_plugin_save(struct clap_plugin *plugin, + void **buffer, + uint32_t *size) +{ + return false; +} + +bool +clap_default_plugin_restore(struct clap_plugin *plugin, + const void *buffer, + uint32_t size) +{ + return false; +} + +bool +clap_default_plugin_set_locale(struct clap_plugin *plugin, const char *locale) +{ + return false; +} + +void * +clap_default_plugin_extension(struct clap_plugin *plugin, const char *id) +{ + return NULL; +} + +static inline void +clap_plugin_default(struct clap_plugin *plugin) +{ + // initialize plugin + plugin->clap_version = CLAP_VERSION; + plugin->destroy = clap_default_plugin_destroy; + plugin->plugin_data = NULL; + plugin->get_attribute = clap_default_plugin_get_attribute; + plugin->get_ports_configs_count = clap_default_plugin_get_ports_configs_count; + plugin->get_ports_config = clap_default_plugin_get_ports_config; + plugin->get_port_info = clap_default_plugin_get_port_info; + plugin->set_ports_config = clap_default_plugin_set_ports_config; + plugin->set_port_repeat = clap_default_plugin_set_port_repeat; + plugin->get_params_count = clap_default_plugin_get_params_count; + plugin->get_param = clap_default_plugin_get_param; + plugin->get_presets_count = clap_default_plugin_get_presets_count; + plugin->get_preset = clap_default_plugin_get_preset; + plugin->activate = clap_default_plugin_activate; + plugin->deactivate = clap_default_plugin_deactivate; + plugin->process = clap_default_plugin_process; + plugin->open_gui = clap_default_plugin_open_gui; + plugin->close_gui = clap_default_plugin_close_gui; + plugin->save = clap_default_plugin_save; + plugin->restore = clap_default_plugin_restore; + plugin->set_locale = clap_default_plugin_set_locale; + plugin->extension = clap_default_plugin_extension; +} diff --git a/include/clap/clap-plugin-helper.h b/include/clap/clap-plugin-helper.h @@ -0,0 +1,12 @@ +#ifndef CLAP_PLUGIN_HELPER_H +# define CLAP_PLUGIN_HELPER_H + +# include "clap.h" + +/* populate plugin with the default methods */ +static inline void +clap_plugin_default(struct clap_plugin *plugin); + +# include "clap-plugin-helper.c" + +#endif /* !CLAP_PLUGIN_HELPER_H */ diff --git a/spec.html b/spec.html @@ -368,7 +368,7 @@ version 1.0.0</td> </tr> <tr><td>id</td> <td>Unique identifier of the plugin. It should never change. It -should be the same on 32bits or 64bits or whatever.</td> +should be the same on any plateform.</td> </tr> <tr><td>name</td> <td>The name of the product.</td> @@ -994,9 +994,6 @@ big endian machine, it should load again successfully.</p> <span class="n">host</span><span class="o">-&gt;</span><span class="n">events</span> <span class="o">=</span> <span class="n">host_events</span><span class="p">;</span> <span class="n">host</span><span class="o">-&gt;</span><span class="n">steady_time</span> <span class="o">=</span> <span class="n">host_steady_time</span><span class="p">;</span> <span class="n">host</span><span class="o">-&gt;</span><span class="n">extension</span> <span class="o">=</span> <span class="n">host_extension</span><span class="p">;</span> - <span class="n">snprintf</span><span class="p">(</span><span class="n">host</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="k">sizeof</span> <span class="p">(</span><span class="n">host</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">),</span> <span class="s">&quot;clap-info&quot;</span><span class="p">);</span> - <span class="n">snprintf</span><span class="p">(</span><span class="n">host</span><span class="o">-&gt;</span><span class="n">manufacturer</span><span class="p">,</span> <span class="k">sizeof</span> <span class="p">(</span><span class="n">host</span><span class="o">-&gt;</span><span class="n">manufacturer</span><span class="p">),</span> <span class="s">&quot;clap&quot;</span><span class="p">);</span> - <span class="n">snprintf</span><span class="p">(</span><span class="n">host</span><span class="o">-&gt;</span><span class="n">version</span><span class="p">,</span> <span class="k">sizeof</span> <span class="p">(</span><span class="n">host</span><span class="o">-&gt;</span><span class="n">version</span><span class="p">),</span> <span class="s">&quot;1.0&quot;</span><span class="p">);</span> <span class="p">}</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> @@ -1049,23 +1046,14 @@ big endian machine, it should load again successfully.</p> <span class="n">print_attr</span><span class="p">(</span><span class="n">SUPPORT</span><span class="p">);</span> <span class="n">print_attr</span><span class="p">(</span><span class="n">LICENSE</span><span class="p">);</span> <span class="n">print_attr</span><span class="p">(</span><span class="n">CATEGORIES</span><span class="p">);</span> + <span class="n">print_attr</span><span class="p">(</span><span class="n">TYPE</span><span class="p">);</span> + <span class="n">print_attr</span><span class="p">(</span><span class="n">CHUNK_SIZE</span><span class="p">);</span> + <span class="n">print_attr</span><span class="p">(</span><span class="n">LATENCY</span><span class="p">);</span> + <span class="n">print_attr</span><span class="p">(</span><span class="n">HAS_GUI</span><span class="p">);</span> + <span class="n">print_attr</span><span class="p">(</span><span class="n">SUPPORTS_TUNING</span><span class="p">);</span> <span class="cp">#undef print_attr </span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot; type:&quot;</span><span class="p">);</span> - <span class="k">if</span> <span class="p">(</span><span class="n">plugin</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">&amp;</span> <span class="n">CLAP_PLUGIN_INSTRUMENT</span><span class="p">)</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot; instrument&quot;</span><span class="p">);</span> - <span class="k">if</span> <span class="p">(</span><span class="n">plugin</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">&amp;</span> <span class="n">CLAP_PLUGIN_EFFECT</span><span class="p">)</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot; effect&quot;</span><span class="p">);</span> - <span class="k">if</span> <span class="p">(</span><span class="n">plugin</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">&amp;</span> <span class="n">CLAP_PLUGIN_EVENT_EFFECT</span><span class="p">)</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot; event_effect&quot;</span><span class="p">);</span> - <span class="k">if</span> <span class="p">(</span><span class="n">plugin</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">&amp;</span> <span class="n">CLAP_PLUGIN_ANALYZER</span><span class="p">)</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot; analyzer&quot;</span><span class="p">);</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot; chunk_size: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">chunk_size</span><span class="p">);</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot; has_gui: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">has_gui</span><span class="p">);</span> - <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">&quot; supports_tunning: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">supports_tuning</span><span class="p">);</span> - <span class="c1">// destroy the plugin </span> <span class="n">plugin</span><span class="o">-&gt;</span><span class="n">destroy</span><span class="p">(</span><span class="n">plugin</span><span class="p">);</span> <span class="p">}</span> @@ -1151,15 +1139,20 @@ big endian machine, it should load again successfully.</p> <span class="n">CLAP_LOG_FATAL</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span> <span class="p">};</span> -<span class="cp"># define CLAP_ATTR_ID &quot;clap/id&quot; -# define CLAP_ATTR_NAME &quot;clap/name&quot; -# define CLAP_ATTR_DESCRIPTION &quot;clap/description&quot; -# define CLAP_ATTR_VERSION &quot;clap/version&quot; -# define CLAP_ATTR_MANUFACTURER &quot;clap/manufacturer&quot; -# define CLAP_ATTR_URL &quot;clap/url&quot; -# define CLAP_ATTR_SUPPORT &quot;clap/support&quot; -# define CLAP_ATTR_LICENSE &quot;clap/license&quot; -# define CLAP_ATTR_CATEGORIES &quot;clap/categories&quot; +<span class="cp"># define CLAP_ATTR_ID &quot;clap/id&quot; +# define CLAP_ATTR_NAME &quot;clap/name&quot; +# define CLAP_ATTR_DESCRIPTION &quot;clap/description&quot; +# define CLAP_ATTR_VERSION &quot;clap/version&quot; +# define CLAP_ATTR_MANUFACTURER &quot;clap/manufacturer&quot; +# define CLAP_ATTR_URL &quot;clap/url&quot; +# define CLAP_ATTR_SUPPORT &quot;clap/support&quot; +# define CLAP_ATTR_LICENSE &quot;clap/license&quot; +# define CLAP_ATTR_CATEGORIES &quot;clap/categories&quot; +# define CLAP_ATTR_TYPE &quot;clap/type&quot; +# define CLAP_ATTR_CHUNK_SIZE &quot;clap/chunk_size&quot; +# define CLAP_ATTR_LATENCY &quot;clap/latency&quot; +# define CLAP_ATTR_HAS_GUI &quot;clap/has_gui&quot; +# define CLAP_ATTR_SUPPORTS_TUNING &quot;clap/supports_tuning&quot; </span> <span class="c1">/////////// // PORTS // @@ -1234,6 +1227,7 @@ big endian machine, it should load again successfully.</p> </span> <span class="kt">char</span> <span class="n">desc</span><span class="p">[</span><span class="n">CLAP_DESC_SIZE</span><span class="p">];</span> <span class="kt">bool</span> <span class="n">is_per_note</span><span class="p">;</span> <span class="kt">char</span> <span class="n">display_text</span><span class="p">[</span><span class="n">CLAP_DISPLAY_SIZE</span><span class="p">];</span> <span class="c1">// the text used to display the value +</span> <span class="kt">bool</span> <span class="n">is_used</span><span class="p">;</span> <span class="c1">// is this parameter used by the patch? </span> <span class="k">union</span> <span class="n">clap_param_value</span> <span class="n">value</span><span class="p">;</span> <span class="k">union</span> <span class="n">clap_param_value</span> <span class="n">min</span><span class="p">;</span> <span class="k">union</span> <span class="n">clap_param_value</span> <span class="n">max</span><span class="p">;</span> @@ -1354,7 +1348,9 @@ big endian machine, it should load again successfully.</p> <span class="kt">uint32_t</span> <span class="n">samples_count</span><span class="p">;</span> <span class="cm">/* feedback loops */</span> - <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">feedback</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_process</span> <span class="o">*</span><span class="n">process</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">stream_id</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">nb_samples</span><span class="p">);</span> + <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">feedback</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_process</span> <span class="o">*</span><span class="n">process</span><span class="p">,</span> + <span class="kt">uint32_t</span> <span class="n">stream_id</span><span class="p">,</span> + <span class="kt">uint32_t</span> <span class="n">nb_samples</span><span class="p">);</span> <span class="kt">uint32_t</span> <span class="n">feedback_chunk_size</span><span class="p">;</span> <span class="cm">/* process info */</span> @@ -1378,10 +1374,11 @@ big endian machine, it should load again successfully.</p> <span class="p">{</span> <span class="kt">uint32_t</span> <span class="n">clap_version</span><span class="p">;</span> <span class="c1">// initialized to CLAP_VERSION </span> - <span class="cm">/* host info */</span> - <span class="kt">char</span> <span class="n">name</span><span class="p">[</span><span class="n">CLAP_NAME_SIZE</span><span class="p">];</span> - <span class="kt">char</span> <span class="n">manufacturer</span><span class="p">[</span><span class="n">CLAP_NAME_SIZE</span><span class="p">];</span> - <span class="kt">char</span> <span class="n">version</span><span class="p">[</span><span class="n">CLAP_NAME_SIZE</span><span class="p">];</span> + <span class="cm">/* returns the size of the original string, 0 if not string */</span> + <span class="kt">uint32_t</span> <span class="p">(</span><span class="o">*</span><span class="n">get_attribute</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_plugin</span> <span class="o">*</span><span class="n">plugin</span><span class="p">,</span> + <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">attr</span><span class="p">,</span> + <span class="kt">char</span> <span class="o">*</span><span class="n">buffer</span><span class="p">,</span> + <span class="kt">uint32_t</span> <span class="n">size</span><span class="p">);</span> <span class="cm">/* for events generated by the plugin. */</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">events</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_host</span> <span class="o">*</span><span class="n">host</span><span class="p">,</span> @@ -1422,13 +1419,6 @@ big endian machine, it should load again successfully.</p> <span class="kt">void</span> <span class="o">*</span><span class="n">host_data</span><span class="p">;</span> <span class="c1">// reserved pointer for the host </span> <span class="kt">void</span> <span class="o">*</span><span class="n">plugin_data</span><span class="p">;</span> <span class="c1">// reserved pointer for the plugin </span> - <span class="kt">uint32_t</span> <span class="n">type</span><span class="p">;</span> <span class="c1">// clap_plugin_type bitfield -</span> <span class="kt">uint32_t</span> <span class="n">chunk_size</span><span class="p">;</span> - <span class="kt">uint32_t</span> <span class="n">latency</span><span class="p">;</span> <span class="c1">// latency in samples -</span> - <span class="kt">bool</span> <span class="n">has_gui</span><span class="p">;</span> - <span class="kt">bool</span> <span class="n">supports_tuning</span><span class="p">;</span> - <span class="cm">/* free plugin's resources */</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">destroy</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_plugin</span> <span class="o">*</span><span class="n">plugin</span><span class="p">);</span> @@ -1528,8 +1518,7 @@ big endian machine, it should load again successfully.</p> <span class="kt">bool</span> <span class="p">(</span><span class="o">*</span><span class="n">resize</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_host</span> <span class="o">*</span><span class="n">host</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">width</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">height</span><span class="p">);</span> <span class="p">};</span> -<span class="cp">#endif </span><span class="cm">/* !CLAP_EMBED_H */</span><span class="cp"> -</span> +<span class="cp">#endif </span><span class="cm">/* !CLAP_EMBED_H */</span> </pre> </div> <div class="section" id="clap-embed-win32-h"> @@ -1552,8 +1541,7 @@ big endian machine, it should load again successfully.</p> <span class="kt">bool</span> <span class="p">(</span><span class="o">*</span><span class="n">disembed</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_plugin</span> <span class="o">*</span><span class="n">plugin</span><span class="p">);</span> <span class="p">};</span> -<span class="cp">#endif </span><span class="cm">/* !CLAP_EMBED_WIN32_H */</span><span class="cp"> -</span> +<span class="cp">#endif </span><span class="cm">/* !CLAP_EMBED_WIN32_H */</span> </pre> </div> <div class="section" id="clap-embed-xlib-h"> @@ -1581,8 +1569,7 @@ big endian machine, it should load again successfully.</p> <span class="kt">bool</span> <span class="p">(</span><span class="o">*</span><span class="n">disembed</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_plugin</span> <span class="o">*</span><span class="n">plugin</span><span class="p">);</span> <span class="p">};</span> -<span class="cp">#endif </span><span class="cm">/* !CLAP_EMBED_XLIB_H */</span><span class="cp"> -</span> +<span class="cp">#endif </span><span class="cm">/* !CLAP_EMBED_XLIB_H */</span> </pre> </div> </div> diff --git a/spec.rst b/spec.rst @@ -667,7 +667,7 @@ Examples examples/clap-info/clap-info.c ------------------------------ -.. include:: examples/clap-info/clap-info.c +.. include:: tools/clap-info/clap-info.c :code: c References