#pragma once #include "version.h" #include "private/macros.h" #ifdef __cplusplus extern "C" { #endif // This interface is the entry point of the dynamic library. // // CLAP plugins standard search path: // // Linux // - ~/.clap // - /usr/lib/clap // // Windows // - %CommonFilesFolder%/CLAP/ // - %LOCALAPPDATA%/Programs/Common/CLAP/ // // MacOS // - /Library/Audio/Plug-Ins/CLAP // - ~/Library/Audio/Plug-Ins/CLAP // // In addition to the OS-specific default locations above, a CLAP host must query the environment // for a CLAP_PATH variable, which is a list of directories formatted in the same manner as the host // OS binary search path (PATH on Unix, separated by `:` and Path on Windows, separated by ';', as // of this writing). // // Each directory should be recursively searched for files and/or bundles as appropriate in your OS // ending with the extension `.clap`. // // Every method must be thread-safe. typedef struct clap_plugin_entry { clap_version_t clap_version; // initialized to CLAP_VERSION // This function must be called first, and can only be called once. // // It should be as fast as possible, in order to perform a very quick scan of the plugin // descriptors. // // It is forbidden to display graphical user interface in this call. // It is forbidden to perform user interaction in this call. // // If the initialization depends upon expensive computation, maybe try to do them ahead of time // and cache the result. // // If init() returns false, then the host must not call deinit() nor any other clap // related symbols from the DSO. bool (CLAP_ABI *init)(const char *plugin_path); // No more calls into the DSO must be made after calling deinit(). void (CLAP_ABI *deinit)(void); // Get the pointer to a factory. See plugin-factory.h for an example. // // Returns null if the factory is not provided. // The returned pointer must *not* be freed by the caller. const void *(CLAP_ABI *get_factory)(const char *factory_id); } clap_plugin_entry_t; /* Entry point */ CLAP_EXPORT extern const clap_plugin_entry_t clap_entry; #ifdef __cplusplus } #endif