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:
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">-></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">-></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">-></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">-></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">-></span><span class="n">name</span><span class="p">),</span> <span class="s">"clap-info"</span><span class="p">);</span>
- <span class="n">snprintf</span><span class="p">(</span><span class="n">host</span><span class="o">-></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">-></span><span class="n">manufacturer</span><span class="p">),</span> <span class="s">"clap"</span><span class="p">);</span>
- <span class="n">snprintf</span><span class="p">(</span><span class="n">host</span><span class="o">-></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">-></span><span class="n">version</span><span class="p">),</span> <span class="s">"1.0"</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">" type:"</span><span class="p">);</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">plugin</span><span class="o">-></span><span class="n">type</span> <span class="o">&</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">" instrument"</span><span class="p">);</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">plugin</span><span class="o">-></span><span class="n">type</span> <span class="o">&</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">" effect"</span><span class="p">);</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">plugin</span><span class="o">-></span><span class="n">type</span> <span class="o">&</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">" event_effect"</span><span class="p">);</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">plugin</span><span class="o">-></span><span class="n">type</span> <span class="o">&</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">" 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">"</span><span class="se">\n</span><span class="s">"</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">" chunk_size: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-></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">" has_gui: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-></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">" supports_tunning: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-></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">-></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 "clap/id"
-# define CLAP_ATTR_NAME "clap/name"
-# define CLAP_ATTR_DESCRIPTION "clap/description"
-# define CLAP_ATTR_VERSION "clap/version"
-# define CLAP_ATTR_MANUFACTURER "clap/manufacturer"
-# define CLAP_ATTR_URL "clap/url"
-# define CLAP_ATTR_SUPPORT "clap/support"
-# define CLAP_ATTR_LICENSE "clap/license"
-# define CLAP_ATTR_CATEGORIES "clap/categories"
+<span class="cp"># define CLAP_ATTR_ID "clap/id"
+# define CLAP_ATTR_NAME "clap/name"
+# define CLAP_ATTR_DESCRIPTION "clap/description"
+# define CLAP_ATTR_VERSION "clap/version"
+# define CLAP_ATTR_MANUFACTURER "clap/manufacturer"
+# define CLAP_ATTR_URL "clap/url"
+# define CLAP_ATTR_SUPPORT "clap/support"
+# define CLAP_ATTR_LICENSE "clap/license"
+# define CLAP_ATTR_CATEGORIES "clap/categories"
+# define CLAP_ATTR_TYPE "clap/type"
+# define CLAP_ATTR_CHUNK_SIZE "clap/chunk_size"
+# define CLAP_ATTR_LATENCY "clap/latency"
+# define CLAP_ATTR_HAS_GUI "clap/has_gui"
+# define CLAP_ATTR_SUPPORTS_TUNING "clap/supports_tuning"
</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