#pragma once #include "plugin.h" static const CLAP_CONSTEXPR char CLAP_PLUGIN_FACTORY_ID[] = "clap.plugin-factory"; #ifdef __cplusplus extern "C" { #endif // Every method must be thread-safe. // It is very important to be able to scan the plugin as quickly as possible. // // If the content of the factory may change due to external events, like the user installed typedef struct clap_plugin_factory { // Get the number of plugins available. // [thread-safe] uint32_t (CLAP_ABI *get_plugin_count)(const struct clap_plugin_factory *factory); // Retrieves a plugin descriptor by its index. // Returns null in case of error. // The descriptor must not be freed. // [thread-safe] const clap_plugin_descriptor_t *(CLAP_ABI *get_plugin_descriptor)( const struct clap_plugin_factory *factory, uint32_t index); // Create a clap_plugin by its plugin_id. // The returned pointer must be freed by calling plugin->destroy(plugin); // The plugin is not allowed to use the host callbacks in the create method. // Returns null in case of error. // [thread-safe] const clap_plugin_t *(CLAP_ABI *create_plugin)(const struct clap_plugin_factory *factory, const clap_host_t *host, const char *plugin_id); } clap_plugin_factory_t; #ifdef __cplusplus } #endif