Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::plugins::PluginLibrary Class Reference

Platform-independent wrapper for loading plugin shared libraries. More...

#include <src/plugins/plugin_library.h>

Public Types

using FunctionSymbol = void (*) ()
 Function pointer type returned when resolving library symbols.

Public Member Functions

 PluginLibrary (const PluginLibrary &)=delete
PluginLibrary & operator= (const PluginLibrary &)=delete
 PluginLibrary (PluginLibrary &&other) noexcept
PluginLibrary & operator= (PluginLibrary &&other) noexcept
bool load (const utils::Utf8String &path)
 Loads the plugin library at the given path.
FunctionSymbol resolve (std::string_view symbol_name)
 Resolves a symbol from the loaded library.
void unload ()
 Unloads the library.
bool is_loaded () const
 Returns true if the library is currently loaded.
utils::Utf8String error_string () const
 Returns a human-readable description of the last error.

Detailed Description

Platform-independent wrapper for loading plugin shared libraries.

Encapsulates the platform-specific details of loading plugin binaries (QLibrary on Linux/Windows, with macOS bundle resolution).

TODO: Replace the internal QLibrary implementation with CFBundle on macOS (like JUCE does for VST3) for proper bundle handling without manual path resolution.

Definition at line 24 of file plugin_library.h.

Member Typedef Documentation

◆ FunctionSymbol

Function pointer type returned when resolving library symbols.

Definition at line 28 of file plugin_library.h.

Member Function Documentation

◆ load()

bool zrythm::plugins::PluginLibrary::load ( const utils::Utf8String & path)
nodiscard

Loads the plugin library at the given path.

On macOS, if the path is a directory bundle (e.g., .clap/, .vst3/), resolves to the binary inside Contents/MacOS/ before loading.


The documentation for this class was generated from the following file: