68 lines
2.4 KiB
C
68 lines
2.4 KiB
C
|
|
|
|
#ifndef __BE_MAPPING__
|
|
#define __BE_MAPPING__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "berry.h"
|
|
|
|
// include this header to force compilation fo this module
|
|
#define BE_MAX_CB 20 // max number of callbacks, each callback requires a distinct address
|
|
|
|
/*********************************************************************************************\
|
|
* Support for Berry int constants
|
|
* as virtual members
|
|
\*********************************************************************************************/
|
|
|
|
typedef intptr_t (*fn_any_callable)(intptr_t p0, intptr_t p1, intptr_t p2, intptr_t p3,
|
|
intptr_t p4, intptr_t p5, intptr_t p6, intptr_t p7);
|
|
|
|
typedef struct be_const_member_t {
|
|
const char * name;
|
|
int value;
|
|
} be_const_member_t;
|
|
|
|
// table of functions per class
|
|
typedef struct be_ntv_func_def_t {
|
|
const char * name;
|
|
void * func;
|
|
const char * return_type;
|
|
const char * arg_type;
|
|
} be_ntv_func_def_t;
|
|
|
|
struct bclass;
|
|
// list of classes and function tables
|
|
typedef struct be_ntv_class_def_t {
|
|
const char * name;
|
|
const struct bclass * cl;
|
|
const be_ntv_func_def_t * func_table;
|
|
size_t size;
|
|
} be_ntv_class_def_t;
|
|
|
|
void be_raisef(bvm *vm, const char *except, const char *msg, ...);
|
|
void be_set_gen_cb_name(bvm *vm, const char * gen_cb);
|
|
|
|
extern void be_map_insert_int(bvm *vm, const char *key, bint value);
|
|
extern void be_map_insert_bool(bvm *vm, const char *key, bbool value);
|
|
extern void be_map_insert_real(bvm *vm, const char *key, breal value);
|
|
extern void be_map_insert_str(bvm *vm, const char *key, const char *value);
|
|
extern void be_map_insert_list_uint8(bvm *vm, const char *key, const uint8_t *value, size_t size);
|
|
|
|
extern int be_map_bin_search(const char * needle, const void * table, size_t elt_size, size_t total_elements);
|
|
|
|
extern void be_create_class_wrapper(bvm *vm, const char * class_name, void * ptr);
|
|
extern int be_find_global_or_module_member(bvm *vm, const char * cl_name);
|
|
|
|
extern bbool be_const_member(bvm *vm, const be_const_member_t * definitions, size_t def_len);
|
|
extern intptr_t be_convert_single_elt(bvm *vm, int idx, const char * arg_type, const char * gen_cb);
|
|
extern void be_check_arg_type(bvm *vm, int arg_start, int argc, const char * arg_type, intptr_t p[8]);;
|
|
extern int be_call_c_func(bvm *vm, void * func, const char * return_type, const char * arg_type);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // __BE_MAPPING__
|