wip: working on externs loading
- WIP: add extern objects initializing/freeing functions - Feat: add extern objects loading in VM initializer
This commit is contained in:
@@ -5,12 +5,14 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <vm/fzl_vm_env.h>
|
||||
#include <vm/fzl_vm_extern.h>
|
||||
#include <vm/fzl_vm_reader.h>
|
||||
|
||||
// VM descriptor
|
||||
typedef struct
|
||||
{
|
||||
fzl_vm_reader_t *reader;
|
||||
fzl_vm_extern_t *prep_fns;
|
||||
|
||||
size_t ip;
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#define FZL_VM_EXTERN_H
|
||||
|
||||
#include <ffi.h>
|
||||
#include <stddef.h>
|
||||
#include <vm/fzl_vm_reader.h>
|
||||
|
||||
// Loaded extern function definition
|
||||
typedef struct
|
||||
@@ -9,6 +11,25 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user