- WIP: add extern objects initializing/freeing functions - Feat: add extern objects loading in VM initializer
36 lines
644 B
C
36 lines
644 B
C
#ifndef FZL_VM_EXTERN_H
|
|
#define FZL_VM_EXTERN_H
|
|
|
|
#include <ffi.h>
|
|
#include <stddef.h>
|
|
#include <vm/fzl_vm_reader.h>
|
|
|
|
// Loaded extern function definition
|
|
typedef struct
|
|
{
|
|
void *func_ptr;
|
|
ffi_cif cif;
|
|
ffi_type **arg_types;
|
|
} fzl_vm_sym_t;
|
|
|
|
// Extern object descriptor
|
|
typedef struct
|
|
{
|
|
void **libs;
|
|
size_t libs_loaded;
|
|
|
|
fzl_vm_sym_t *syms;
|
|
size_t syms_loaded;
|
|
} fzl_vm_extern_t;
|
|
|
|
// Load externs
|
|
fzl_vm_extern_t *fzl_vm_init_externs(fzl_vm_reader_t *reader);
|
|
|
|
// Get last error from externs loader
|
|
char *fzl_vm_externs_geterror();
|
|
|
|
// Close and free externs
|
|
void fzl_vm_free_externs(fzl_vm_extern_t *ex);
|
|
|
|
#endif // FZL_VM_EXTERN_H
|