Source/AWEPlugin/AWEPluginLoader.h
Classes
| Name | |
|---|---|
| struct | _awe_PluginLoaderMethods Method table to provide overrides to awe_PluginLoader_initWithMethods. |
Source code
/*******************************************************************************
*
* AudioWeaver Plugins
* -------------------
*
********************************************************************************
* AWEPluginLoader.h
********************************************************************************
*
* Description: API used to load plugin libraries.
*
* Copyright: (c) 2025 DSP Concepts, Inc. All rights reserved.
* 3235 Kifer Road
* Santa Clara, CA 95054
*
*******************************************************************************/
#ifndef AWE_PLUGIN_LOADER_H
#define AWE_PLUGIN_LOADER_H
#include "AWEPluginTypes.h"
#include <stdarg.h>
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#ifndef AWE_PLUGIN_LOADER_MAX_PATH_LENGTH
#define AWE_PLUGIN_LOADER_MAX_PATH_LENGTH (1024)
#endif /* AWE_PLUGIN_LOADER_MAX_PATH_LENGTH */
typedef struct _awe_PluginLoaderMethods
{
void* (*malloc)(size_t size);
void* (*realloc)(void* ptr, size_t size);
void (*free)(void* ptr);
void* (*open)(const char* file);
void (*close)(void* handle);
void* (*sym)(void* handle, const char* name);
void (*vlog)(int32_t level, uint32_t type, const char* fmt, va_list args);
} awe_PluginLoaderMethods;
enum awe_PluginLoader_Status
{
AWE_PLUGIN_LOADER_SUCCESS = 0,
AWE_PLUGIN_LOADER_UNINITIALIZED = -1,
AWE_PLUGIN_LOADER_ALREADY_INITIALIZED = -2,
AWE_PLUGIN_LOADER_MISSING_METHOD = -3,
AWE_PLUGIN_LOADER_ALLOCATION_FAILED = -4,
AWE_PLUGIN_LOADER_INVALID_INDEX = -5,
AWE_PLUGIN_LOADER_DL_OPEN_FAILED = -6,
AWE_PLUGIN_LOADER_DL_SYMBOL_NOT_FOUND = -7,
AWE_PLUGIN_LOADER_DL_INTERNAL_FAILURE = -8,
AWE_PLUGIN_LOADER_LIBRARY_FILE_NAME_TOO_LONG = -9,
};
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
enum awe_PluginLoader_Status awe_PluginLoader_init(size_t reserved_count);
enum awe_PluginLoader_Status awe_PluginLoader_initWithMethods(size_t reserved_count, const awe_PluginLoaderMethods* const overrides);
enum awe_PluginLoader_Status awe_PluginLoader_load(const AWEPlugin** plugin, const char* file);
enum awe_PluginLoader_Status awe_PluginLoader_unload(const char* file);
enum awe_PluginLoader_Status awe_PluginLoader_loadWithNamespacePrefix(const AWEPlugin** plugin, const char* file, const char* prefix);
enum awe_PluginLoader_Status awe_PluginLoader_loadWithEntrypoint(const AWEPlugin** plugin, const char* file, const char* entrypoint);
size_t awe_PluginLoader_count();
enum awe_PluginLoader_Status awe_PluginLoader_get(const AWEPlugin** plugin, size_t index);
enum awe_PluginLoader_Status awe_PluginLoader_find(const AWEPlugin** plugin, const char* file);
void awe_PluginLoader_free();
const char* awe_PluginLoader_statusToString(const enum awe_PluginLoader_Status status);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* AWE_PLUGIN_LOADER_H */