/
plugin.hpp
43 lines (32 loc) · 1.3 KB
/
plugin.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#pragma once
#include <vector>
#include <common.hpp>
#include <plugin/Plugin.hpp>
#include <plugin/Model.hpp>
namespace rack {
/** Loads and manages Rack plugins */
namespace plugin {
PRIVATE void init();
PRIVATE void destroy();
PRIVATE void settingsMergeJson(json_t* rootJ);
/** Finds a loaded Plugin by slug. */
Plugin* getPlugin(const std::string& pluginSlug);
/** Finds a loaded Plugin by slug, or a fallback plugin if exists. */
Plugin* getPluginFallback(const std::string& pluginSlug);
/** Finds a loaded Model by plugin and model slug. */
Model* getModel(const std::string& pluginSlug, const std::string& modelSlug);
/** Finds a loaded Model by plugin and model slug, or a fallback model if exists. */
Model* getModelFallback(const std::string& pluginSlug, const std::string& modelSlug);
/** Creates a Model from a JSON module object.
Throws an Exception if the model is not found.
*/
Model* modelFromJson(json_t* moduleJ);
/** Checks that the slug contains only alphanumeric characters, "-", and "_" */
bool isSlugValid(const std::string& slug);
/** Returns a string containing only the valid slug characters. */
std::string normalizeSlug(const std::string& slug);
/** Path to plugins installation dir */
extern std::string pluginsPath;
extern std::vector<Plugin*> plugins;
} // namespace plugin
} // namespace rack