11 # include "enum_modules.h"
46 loader->
arena = arena;
57 static_modules_t mods = get_static_modules();
62 for (
size_t i = 0; i < CT_LANG_COUNT; i++)
73 #if CT_PLUGIN_COUNT > 0
74 for (
size_t i = 0; i < CT_PLUGIN_COUNT; i++)
76 const plugin_t *plugin = mods.plugins[i];
85 #if CT_TARGET_COUNT > 0
86 for (
size_t i = 0; i < CT_TARGET_COUNT; i++)
88 const target_t *target = mods.targets[i];
115 .os = static_mod.
os | shared_mod.
os,
126 static const char *
const kErrorStrings[
eErrorCount] = {
127 #define LOADER_ERROR(ID, STR) [ID] = (STR),
134 return kErrorStrings[error];
#define STA_DECL
sal2 annotation on function implementations to copy annotations from the declaration
#define ARENA_MALLOC(size, name, parent, arena)
allocate memory from a custom allocator
#define CTASSERT(expr)
assert a condition, prints the condition as a message
#define CTASSERTF(expr,...)
assert a condition with a message and optional format arguments
CT_STD_API void * typevec_push(typevec_t *vec, const void *src)
push a value onto the vector
CT_NODISCARD CT_STD_API typevec_t * typevec_new(size_t width, size_t len, arena_t *arena)
create a new typed vector on the heap
const char * load_error_string(load_error_t error)
loaded_module_t load_error(load_error_t error, os_error_t os)
STA_DECL loader_t * loader_new(arena_t *arena)
STA_DECL typevec_t * load_default_modules(loader_t *loader)
STA_DECL loaded_module_t load_module(loader_t *loader, module_type_t mask, const char *name)
loader_config_t loader_config(void)
CT_SUPPORT_API loaded_module_t load_shared_module(loader_t *loader, module_type_t mask, const char *name)
CT_SUPPORT_API loaded_module_t load_static_module(loader_t *loader, module_type_t mask, const char *name)
a language driver support capabilities
plugin support capabilities
A vector with a fixed type size.