Berry final change to be_mapping

This commit is contained in:
Stephan Hadinger 2022-01-23 09:56:29 +01:00
parent ad00bc830c
commit 74a3580229
11 changed files with 1931 additions and 1904 deletions

View File

@ -36,6 +36,8 @@ extern const bcstring be_const_str_CFG_X3A_X20running_X20;
extern const bcstring be_const_str_CFG_X3A_X20skipping_X20_X27display_X2Eini_X27_X20because_X20already_X20present_X20in_X20file_X2Dsystem;
extern const bcstring be_const_str_COLOR_BLACK;
extern const bcstring be_const_str_COLOR_WHITE;
extern const bcstring be_const_str_CW;
extern const bcstring be_const_str_DIMMER;
extern const bcstring be_const_str_EC_C25519;
extern const bcstring be_const_str_EVENT_DELETE;
extern const bcstring be_const_str_EVENT_DRAW_MAIN;
@ -59,6 +61,9 @@ extern const bcstring be_const_str_PART_MAIN;
extern const bcstring be_const_str_POST;
extern const bcstring be_const_str_Parameter_X20error;
extern const bcstring be_const_str_RES_OK;
extern const bcstring be_const_str_RGB;
extern const bcstring be_const_str_RGBCW;
extern const bcstring be_const_str_RGBW;
extern const bcstring be_const_str_Restart_X201;
extern const bcstring be_const_str_SERIAL_5E1;
extern const bcstring be_const_str_SERIAL_5E2;
@ -488,6 +493,7 @@ extern const bcstring be_const_str_last_modified;
extern const bcstring be_const_str_leds;
extern const bcstring be_const_str_length_X20in_X20bits_X20must_X20be_X20between_X200_X20and_X2032;
extern const bcstring be_const_str_light;
extern const bcstring be_const_str_light_state;
extern const bcstring be_const_str_line_dsc;
extern const bcstring be_const_str_list;
extern const bcstring be_const_str_list_handlers;
@ -663,6 +669,7 @@ extern const bcstring be_const_str_set_percentage;
extern const bcstring be_const_str_set_pixel_color;
extern const bcstring be_const_str_set_power;
extern const bcstring be_const_str_set_rate;
extern const bcstring be_const_str_set_rgb;
extern const bcstring be_const_str_set_style_bg_color;
extern const bcstring be_const_str_set_style_line_color;
extern const bcstring be_const_str_set_style_pad_right;
@ -715,6 +722,7 @@ extern const bcstring be_const_str_tasmota_X2Eget_light_X28_X29_X20is_X20depreca
extern const bcstring be_const_str_tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29;
extern const bcstring be_const_str_tcpclient;
extern const bcstring be_const_str_tele;
extern const bcstring be_const_str_test;
extern const bcstring be_const_str_the_X20second_X20argument_X20is_X20not_X20a_X20function;
extern const bcstring be_const_str_time_dump;
extern const bcstring be_const_str_time_reached;

File diff suppressed because it is too large Load Diff

View File

@ -38,12 +38,6 @@ extern "C" {
.type = BE_NTVFUNC \
}
typedef const void* be_constptr;
#define be_const_ctype_func(_f, ...) { \
.v.nf = ((const void*) &(be_constptr[]) { _f, __VA_ARGS__ }),\
.type = BE_CTYPE_FUNC \
}
#define be_const_static_func(_func) { \
.v.nf = (_func), \
.type = BE_NTVFUNC | BE_FUNC_STATIC \
@ -260,12 +254,6 @@ const bntvmodule be_native_module(_module) = { \
BE_NTVFUNC \
}
#define be_const_ctype_func(_f, ...) { \
bvaldata(((const void*) \
&((const void *)[]) { (const void*) _f, __VA_ARGS__ })), \
BE_CTYPE_FUNC \
}
#define be_const_static_func(_func) { \
bvaldata(_func), \
BE_NTVFUNC | BE_FUNC_STATIC \

View File

@ -100,6 +100,7 @@ class coc_parser:
return r[0]
def parse_object(self):
self.text = re.sub("\s+//.*?$", "", self.text, flags=re.MULTILINE) # remove trailing comments
while True:
obj = self.parse_block()
self.objects.append(obj)

View File

@ -406,7 +406,7 @@ static void be_set_ctor_ptr(bvm *vm, void * ptr, const char *name) {
* CType handler for Berry
\*********************************************************************************************/
int be_call_ctype_func(bvm *vm, const void *definition) {
be_ctype_args* args = (be_ctype_args*) definition;
be_ctype_args_t* args = (be_ctype_args_t*) definition;
return be_call_c_func(vm, args->func, args->return_type, args->arg_type);
}

View File

@ -71,7 +71,7 @@ static bbool be_const_member_dual(bvm *vm, const be_const_member_t * definitions
}
case '>': // call to a ctype function
{
be_ctype_var_args* args = (be_ctype_var_args*) definitions[idx].value;
be_ctype_var_args_t* args = (be_ctype_var_args_t*) definitions[idx].value;
int ret = be_call_c_func(vm, args->func, args->return_type, NULL);
if ((ret == BE_OK) && !be_isnil(vm, -1)) {
return btrue;

View File

@ -3,38 +3,47 @@
#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
\*********************************************************************************************/
#ifdef __cplusplus
#define be_const_ctype_func(_f) { \
bvaldata((const void*) &ctype_func_def##_f), \
BE_CTYPE_FUNC \
}
#else // __cplusplus
typedef const void* be_constptr;
#define be_const_ctype_func(_f) { \
.v.nf = (const void*) &ctype_func_def##_f, \
.type = BE_CTYPE_FUNC \
}
#endif // __cplusplus
#define BE_FUNC_CTYPE_DECLARE(_name, _ret_arg, _in_arg) \
static const be_ctype_args_t ctype_func_def##_name = { (const void*) &_name, _ret_arg, _in_arg };
#define BE_VAR_CTYPE_DECLARE(_name, _ret_arg) \
static const be_ctype_var_args_t ctype_func_def##_name = { (const void*) &_name, _ret_arg };
#define be_cconst_int(_v) ((intptr_t)(_v))
#define be_cconst_string(_v) ((intptr_t)(_v))
#define be_cconst_ptr(_v) ((intptr_t)(_v))
#define be_cconst_func(_v) ((intptr_t)(_v))
#define be_cconst_ctype_func(_f, _r) ((intptr_t) &(be_ctype_var_args) { (const void*) _f, _r })
#define be_ctype(_name) ((intptr_t) &ctype_func_def##_name)
/* C arguments are coded as an array of 3 pointers */
typedef struct be_ctype_args {
void* func;
const char* return_type;
const char* arg_type;
} be_ctype_args;
/* ctype constant function as an array of 2 pointers: function and return type. arg_type is always NULL */
typedef struct be_ctype_var_args {
typedef struct be_ctype_args_t {
const void* func;
const char* return_type;
} be_ctype_var_args;
const char* arg_type;
} be_ctype_args_t;
/* ctype constant function as an array of 2 pointers: function and return type. arg_type is always NULL */
typedef struct be_ctype_var_args_t {
const void* func;
const char* return_type;
} be_ctype_var_args_t;
typedef struct be_const_member_t {
@ -45,9 +54,7 @@ typedef struct be_const_member_t {
// table of functions per class
typedef struct be_ntv_func_def_t {
const char * name;
const void * func;
const char * return_type;
const char * arg_type;
be_ctype_args_t args;
} be_ntv_func_def_t;
struct bclass;
@ -59,6 +66,17 @@ typedef struct be_ntv_class_def_t {
size_t size;
} be_ntv_class_def_t;
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************************************\
* Support for Berry int constants
* as virtual members
\*********************************************************************************************/
void be_raisef(bvm *vm, const char *except, const char *msg, ...);
extern void be_map_insert_int(bvm *vm, const char *key, bint value);

File diff suppressed because it is too large Load Diff

View File

@ -27,112 +27,112 @@ static int lv_get_ver_res(void) {
/* `lv` methods */
const be_ntv_func_def_t lv_func[] = {
{ "clamp_height", (void*) &lv_clamp_height, "i", "iiii" },
{ "clamp_width", (void*) &lv_clamp_width, "i", "iiii" },
{ "color_black", (void*) &lv_color_black, "lv.lv_color", "" },
{ "color_brightness", (void*) &lv_color_brightness, "i", "(lv.lv_color)" },
{ "color_change_lightness", (void*) &lv_color_change_lightness, "lv.lv_color", "(lv.lv_color)i" },
{ "color_chroma_key", (void*) &lv_color_chroma_key, "lv.lv_color", "" },
{ "color_darken", (void*) &lv_color_darken, "lv.lv_color", "(lv.lv_color)i" },
{ "color_fill", (void*) &lv_color_fill, "", "(lv.lv_color)(lv.lv_color)i" },
{ "color_filter_dsc_init", (void*) &lv_color_filter_dsc_init, "", "(lv.lv_color_filter_dsc)^lv_color_filter_cb^" },
{ "color_hex", (void*) &lv_color_hex, "lv.lv_color", "i" },
{ "color_hex3", (void*) &lv_color_hex3, "lv.lv_color", "i" },
{ "color_hsv_to_rgb", (void*) &lv_color_hsv_to_rgb, "lv.lv_color", "iii" },
{ "color_lighten", (void*) &lv_color_lighten, "lv.lv_color", "(lv.lv_color)i" },
{ "color_make", (void*) &lv_color_make, "lv.lv_color", "iii" },
{ "color_mix", (void*) &lv_color_mix, "lv.lv_color", "(lv.lv_color)(lv.lv_color)i" },
{ "color_mix_premult", (void*) &lv_color_mix_premult, "lv.lv_color", "(lv.uint16)(lv.lv_color)i" },
{ "color_mix_with_alpha", (void*) &lv_color_mix_with_alpha, "", "(lv.lv_color)i(lv.lv_color)i(lv.lv_color)(lv.lv_opa)" },
{ "color_premult", (void*) &lv_color_premult, "", "(lv.lv_color)i(lv.uint16)" },
{ "color_rgb_to_hsv", (void*) &lv_color_rgb_to_hsv, "i", "iii" },
{ "color_to1", (void*) &lv_color_to1, "i", "(lv.lv_color)" },
{ "color_to16", (void*) &lv_color_to16, "i", "(lv.lv_color)" },
{ "color_to32", (void*) &lv_color_to32, "i", "(lv.lv_color)" },
{ "color_to8", (void*) &lv_color_to8, "i", "(lv.lv_color)" },
{ "color_to_hsv", (void*) &lv_color_to_hsv, "i", "(lv.lv_color)" },
{ "color_white", (void*) &lv_color_white, "lv.lv_color", "" },
{ "dpx", (void*) &lv_dpx, "i", "i" },
{ "draw_arc", (void*) &lv_draw_arc, "", "iiiii(lv.lv_area)(lv.lv_draw_arc_dsc)" },
{ "draw_arc_dsc_init", (void*) &lv_draw_arc_dsc_init, "", "(lv.lv_draw_arc_dsc)" },
{ "draw_arc_get_area", (void*) &lv_draw_arc_get_area, "", "iiiiiib(lv.lv_area)" },
{ "draw_img", (void*) &lv_draw_img, "", "(lv.lv_area)(lv.lv_area).(lv.lv_draw_img_dsc)" },
{ "draw_img_dsc_init", (void*) &lv_draw_img_dsc_init, "", "(lv.lv_draw_img_dsc)" },
{ "draw_label", (void*) &lv_draw_label, "", "(lv.lv_area)(lv.lv_area)(lv.lv_draw_label_dsc)s(lv.lv_draw_label_hint)" },
{ "draw_label_dsc_init", (void*) &lv_draw_label_dsc_init, "", "(lv.lv_draw_label_dsc)" },
{ "draw_letter", (void*) &lv_draw_letter, "", "(lv.lv_point)(lv.lv_area)(lv.lv_font)i(lv.lv_color)ii" },
{ "draw_line", (void*) &lv_draw_line, "", "(lv.lv_point)(lv.lv_point)(lv.lv_area)(lv.lv_draw_line_dsc)" },
{ "draw_line_dsc_init", (void*) &lv_draw_line_dsc_init, "", "(lv.lv_draw_line_dsc)" },
{ "draw_mask_add", (void*) &lv_draw_mask_add, "i", ".." },
{ "draw_mask_angle_init", (void*) &lv_draw_mask_angle_init, "", "(lv.lv_draw_mask_angle_param)iiii" },
{ "draw_mask_apply", (void*) &lv_draw_mask_apply, "i", "(lv.lv_opa)iii" },
{ "draw_mask_apply_ids", (void*) &lv_draw_mask_apply_ids, "i", "(lv.lv_opa)iii(lv.int16)i" },
{ "draw_mask_fade_init", (void*) &lv_draw_mask_fade_init, "", "(lv.lv_draw_mask_fade_param)(lv.lv_area)iiii" },
{ "draw_mask_free_param", (void*) &lv_draw_mask_free_param, "", "." },
{ "draw_mask_get_cnt", (void*) &lv_draw_mask_get_cnt, "i", "" },
{ "draw_mask_is_any", (void*) &lv_draw_mask_is_any, "b", "(lv.lv_area)" },
{ "draw_mask_line_angle_init", (void*) &lv_draw_mask_line_angle_init, "", "(lv.lv_draw_mask_line_param)iiii" },
{ "draw_mask_line_points_init", (void*) &lv_draw_mask_line_points_init, "", "(lv.lv_draw_mask_line_param)iiiii" },
{ "draw_mask_map_init", (void*) &lv_draw_mask_map_init, "", "(lv.lv_draw_mask_map_param)(lv.lv_area)(lv.lv_opa)" },
{ "draw_mask_radius_init", (void*) &lv_draw_mask_radius_init, "", "(lv.lv_draw_mask_radius_param)(lv.lv_area)ib" },
{ "draw_mask_remove_custom", (void*) &lv_draw_mask_remove_custom, ".", "." },
{ "draw_mask_remove_id", (void*) &lv_draw_mask_remove_id, ".", "i" },
{ "draw_polygon", (void*) &lv_draw_polygon, "", "(lv.lv_point_arr)i(lv.lv_area)(lv.lv_draw_rect_dsc)" },
{ "draw_rect", (void*) &lv_draw_rect, "", "(lv.lv_area)(lv.lv_area)(lv.lv_draw_rect_dsc)" },
{ "draw_rect_dsc_init", (void*) &lv_draw_rect_dsc_init, "", "(lv.lv_draw_rect_dsc)" },
{ "draw_triangle", (void*) &lv_draw_triangle, "", "(lv.lv_point_arr)(lv.lv_area)(lv.lv_draw_rect_dsc)" },
{ "event_register_id", (void*) &lv_event_register_id, "i", "" },
{ "event_send", (void*) &lv_event_send, "i", "(lv.lv_obj)i." },
{ "event_set_cover_res", (void*) &lv_event_set_cover_res, "", "(lv.lv_event)(lv.lv_cover_res)" },
{ "event_set_ext_draw_size", (void*) &lv_event_set_ext_draw_size, "", "(lv.lv_event)i" },
{ "flex_init", (void*) &lv_flex_init, "", "" },
{ "get_hor_res", (void*) &lv_get_hor_res, "i", "" },
{ "get_ts_calibration", (void*) &lv_get_ts_calibration, "lv.lv_ts_calibration", "" },
{ "get_ver_res", (void*) &lv_get_ver_res, "i", "" },
{ "grid_fr", (void*) &lv_grid_fr, "i", "i" },
{ "grid_init", (void*) &lv_grid_init, "", "" },
{ "group_get_default", (void*) &lv_group_get_default, "lv.lv_group", "" },
{ "img_src_get_type", (void*) &lv_img_src_get_type, "i", "." },
{ "indev_get_act", (void*) &lv_indev_get_act, "lv.lv_indev", "" },
{ "indev_get_obj_act", (void*) &lv_indev_get_obj_act, "lv.lv_obj", "" },
{ "indev_get_read_timer", (void*) &lv_indev_get_read_timer, "lv.lv_timer", "(lv.lv_disp)" },
{ "indev_read_timer_cb", (void*) &lv_indev_read_timer_cb, "", "(lv.lv_timer)" },
{ "is_initialized", (void*) &lv_is_initialized, "b", "" },
{ "layer_sys", (void*) &lv_layer_sys, "lv.lv_obj", "" },
{ "layer_top", (void*) &lv_layer_top, "lv.lv_obj", "" },
{ "layout_register", (void*) &lv_layout_register, "i", "^lv_layout_update_cb^." },
{ "obj_class_create_obj", (void*) &lv_obj_class_create_obj, "lv.lv_obj", "(lv._lv_obj_class)(lv.lv_obj)" },
{ "obj_del_anim_ready_cb", (void*) &lv_obj_del_anim_ready_cb, "", "(lv.lv_anim)" },
{ "obj_draw_dsc_init", (void*) &lv_obj_draw_dsc_init, "", "(lv.lv_obj_draw_part_dsc)(lv.lv_area)" },
{ "obj_draw_part_check_type", (void*) &lv_obj_draw_part_check_type, "b", "(lv.lv_obj_draw_part_dsc)(lv._lv_obj_class)i" },
{ "obj_enable_style_refresh", (void*) &lv_obj_enable_style_refresh, "", "b" },
{ "obj_event_base", (void*) &lv_obj_event_base, "i", "(lv.lv_obj_class)(lv.lv_event)" },
{ "obj_report_style_change", (void*) &lv_obj_report_style_change, "", "(lv.lv_style)" },
{ "obj_style_get_selector_part", (void*) &lv_obj_style_get_selector_part, "i", "i" },
{ "obj_style_get_selector_state", (void*) &lv_obj_style_get_selector_state, "i", "i" },
{ "palette_darken", (void*) &lv_palette_darken, "lv.lv_color", "ii" },
{ "palette_lighten", (void*) &lv_palette_lighten, "lv.lv_color", "ii" },
{ "palette_main", (void*) &lv_palette_main, "lv.lv_color", "i" },
{ "refr_now", (void*) &lv_refr_now, "", "(lv.lv_disp)" },
{ "scr_act", (void*) &lv_scr_act, "lv.lv_obj", "" },
{ "scr_load", (void*) &lv_scr_load, "", "(lv.lv_obj)" },
{ "scr_load_anim", (void*) &lv_scr_load_anim, "", "(lv.lv_obj)iiib" },
{ "task_handler", (void*) &lv_task_handler, "i", "" },
{ "theme_apply", (void*) &lv_theme_apply, "", "(lv.lv_obj)" },
{ "theme_default_get", (void*) &lv_theme_default_get, "lv.lv_theme", "" },
{ "theme_default_init", (void*) &lv_theme_default_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" },
{ "theme_default_is_inited", (void*) &lv_theme_default_is_inited, "b", "" },
{ "theme_get_color_primary", (void*) &lv_theme_get_color_primary, "lv.lv_color", "(lv.lv_obj)" },
{ "theme_get_color_secondary", (void*) &lv_theme_get_color_secondary, "lv.lv_color", "(lv.lv_obj)" },
{ "theme_get_font_large", (void*) &lv_theme_get_font_large, "lv.lv_font", "(lv.lv_obj)" },
{ "theme_get_font_normal", (void*) &lv_theme_get_font_normal, "lv.lv_font", "(lv.lv_obj)" },
{ "theme_get_font_small", (void*) &lv_theme_get_font_small, "lv.lv_font", "(lv.lv_obj)" },
{ "theme_get_from_obj", (void*) &lv_theme_get_from_obj, "lv.lv_theme", "(lv.lv_obj)" },
{ "theme_mono_init", (void*) &lv_theme_mono_init, "lv.lv_theme", "(lv.lv_disp)b(lv.lv_font)" },
{ "theme_openhasp_init", (void*) &lv_theme_openhasp_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" },
{ "theme_openhasp_is_inited", (void*) &lv_theme_openhasp_is_inited, "b", "" },
{ "theme_set_apply_cb", (void*) &lv_theme_set_apply_cb, "", "(lv.lv_theme)^lv_theme_apply_cb^" },
{ "theme_set_parent", (void*) &lv_theme_set_parent, "", "(lv.lv_theme)(lv.lv_theme)" },
{ "clamp_height", { (const void*) &lv_clamp_height, "i", "iiii" } },
{ "clamp_width", { (const void*) &lv_clamp_width, "i", "iiii" } },
{ "color_black", { (const void*) &lv_color_black, "lv.lv_color", "" } },
{ "color_brightness", { (const void*) &lv_color_brightness, "i", "(lv.lv_color)" } },
{ "color_change_lightness", { (const void*) &lv_color_change_lightness, "lv.lv_color", "(lv.lv_color)i" } },
{ "color_chroma_key", { (const void*) &lv_color_chroma_key, "lv.lv_color", "" } },
{ "color_darken", { (const void*) &lv_color_darken, "lv.lv_color", "(lv.lv_color)i" } },
{ "color_fill", { (const void*) &lv_color_fill, "", "(lv.lv_color)(lv.lv_color)i" } },
{ "color_filter_dsc_init", { (const void*) &lv_color_filter_dsc_init, "", "(lv.lv_color_filter_dsc)^lv_color_filter_cb^" } },
{ "color_hex", { (const void*) &lv_color_hex, "lv.lv_color", "i" } },
{ "color_hex3", { (const void*) &lv_color_hex3, "lv.lv_color", "i" } },
{ "color_hsv_to_rgb", { (const void*) &lv_color_hsv_to_rgb, "lv.lv_color", "iii" } },
{ "color_lighten", { (const void*) &lv_color_lighten, "lv.lv_color", "(lv.lv_color)i" } },
{ "color_make", { (const void*) &lv_color_make, "lv.lv_color", "iii" } },
{ "color_mix", { (const void*) &lv_color_mix, "lv.lv_color", "(lv.lv_color)(lv.lv_color)i" } },
{ "color_mix_premult", { (const void*) &lv_color_mix_premult, "lv.lv_color", "(lv.uint16)(lv.lv_color)i" } },
{ "color_mix_with_alpha", { (const void*) &lv_color_mix_with_alpha, "", "(lv.lv_color)i(lv.lv_color)i(lv.lv_color)(lv.lv_opa)" } },
{ "color_premult", { (const void*) &lv_color_premult, "", "(lv.lv_color)i(lv.uint16)" } },
{ "color_rgb_to_hsv", { (const void*) &lv_color_rgb_to_hsv, "i", "iii" } },
{ "color_to1", { (const void*) &lv_color_to1, "i", "(lv.lv_color)" } },
{ "color_to16", { (const void*) &lv_color_to16, "i", "(lv.lv_color)" } },
{ "color_to32", { (const void*) &lv_color_to32, "i", "(lv.lv_color)" } },
{ "color_to8", { (const void*) &lv_color_to8, "i", "(lv.lv_color)" } },
{ "color_to_hsv", { (const void*) &lv_color_to_hsv, "i", "(lv.lv_color)" } },
{ "color_white", { (const void*) &lv_color_white, "lv.lv_color", "" } },
{ "dpx", { (const void*) &lv_dpx, "i", "i" } },
{ "draw_arc", { (const void*) &lv_draw_arc, "", "iiiii(lv.lv_area)(lv.lv_draw_arc_dsc)" } },
{ "draw_arc_dsc_init", { (const void*) &lv_draw_arc_dsc_init, "", "(lv.lv_draw_arc_dsc)" } },
{ "draw_arc_get_area", { (const void*) &lv_draw_arc_get_area, "", "iiiiiib(lv.lv_area)" } },
{ "draw_img", { (const void*) &lv_draw_img, "", "(lv.lv_area)(lv.lv_area).(lv.lv_draw_img_dsc)" } },
{ "draw_img_dsc_init", { (const void*) &lv_draw_img_dsc_init, "", "(lv.lv_draw_img_dsc)" } },
{ "draw_label", { (const void*) &lv_draw_label, "", "(lv.lv_area)(lv.lv_area)(lv.lv_draw_label_dsc)s(lv.lv_draw_label_hint)" } },
{ "draw_label_dsc_init", { (const void*) &lv_draw_label_dsc_init, "", "(lv.lv_draw_label_dsc)" } },
{ "draw_letter", { (const void*) &lv_draw_letter, "", "(lv.lv_point)(lv.lv_area)(lv.lv_font)i(lv.lv_color)ii" } },
{ "draw_line", { (const void*) &lv_draw_line, "", "(lv.lv_point)(lv.lv_point)(lv.lv_area)(lv.lv_draw_line_dsc)" } },
{ "draw_line_dsc_init", { (const void*) &lv_draw_line_dsc_init, "", "(lv.lv_draw_line_dsc)" } },
{ "draw_mask_add", { (const void*) &lv_draw_mask_add, "i", ".." } },
{ "draw_mask_angle_init", { (const void*) &lv_draw_mask_angle_init, "", "(lv.lv_draw_mask_angle_param)iiii" } },
{ "draw_mask_apply", { (const void*) &lv_draw_mask_apply, "i", "(lv.lv_opa)iii" } },
{ "draw_mask_apply_ids", { (const void*) &lv_draw_mask_apply_ids, "i", "(lv.lv_opa)iii(lv.int16)i" } },
{ "draw_mask_fade_init", { (const void*) &lv_draw_mask_fade_init, "", "(lv.lv_draw_mask_fade_param)(lv.lv_area)iiii" } },
{ "draw_mask_free_param", { (const void*) &lv_draw_mask_free_param, "", "." } },
{ "draw_mask_get_cnt", { (const void*) &lv_draw_mask_get_cnt, "i", "" } },
{ "draw_mask_is_any", { (const void*) &lv_draw_mask_is_any, "b", "(lv.lv_area)" } },
{ "draw_mask_line_angle_init", { (const void*) &lv_draw_mask_line_angle_init, "", "(lv.lv_draw_mask_line_param)iiii" } },
{ "draw_mask_line_points_init", { (const void*) &lv_draw_mask_line_points_init, "", "(lv.lv_draw_mask_line_param)iiiii" } },
{ "draw_mask_map_init", { (const void*) &lv_draw_mask_map_init, "", "(lv.lv_draw_mask_map_param)(lv.lv_area)(lv.lv_opa)" } },
{ "draw_mask_radius_init", { (const void*) &lv_draw_mask_radius_init, "", "(lv.lv_draw_mask_radius_param)(lv.lv_area)ib" } },
{ "draw_mask_remove_custom", { (const void*) &lv_draw_mask_remove_custom, ".", "." } },
{ "draw_mask_remove_id", { (const void*) &lv_draw_mask_remove_id, ".", "i" } },
{ "draw_polygon", { (const void*) &lv_draw_polygon, "", "(lv.lv_point_arr)i(lv.lv_area)(lv.lv_draw_rect_dsc)" } },
{ "draw_rect", { (const void*) &lv_draw_rect, "", "(lv.lv_area)(lv.lv_area)(lv.lv_draw_rect_dsc)" } },
{ "draw_rect_dsc_init", { (const void*) &lv_draw_rect_dsc_init, "", "(lv.lv_draw_rect_dsc)" } },
{ "draw_triangle", { (const void*) &lv_draw_triangle, "", "(lv.lv_point_arr)(lv.lv_area)(lv.lv_draw_rect_dsc)" } },
{ "event_register_id", { (const void*) &lv_event_register_id, "i", "" } },
{ "event_send", { (const void*) &lv_event_send, "i", "(lv.lv_obj)i." } },
{ "event_set_cover_res", { (const void*) &lv_event_set_cover_res, "", "(lv.lv_event)(lv.lv_cover_res)" } },
{ "event_set_ext_draw_size", { (const void*) &lv_event_set_ext_draw_size, "", "(lv.lv_event)i" } },
{ "flex_init", { (const void*) &lv_flex_init, "", "" } },
{ "get_hor_res", { (const void*) &lv_get_hor_res, "i", "" } },
{ "get_ts_calibration", { (const void*) &lv_get_ts_calibration, "lv.lv_ts_calibration", "" } },
{ "get_ver_res", { (const void*) &lv_get_ver_res, "i", "" } },
{ "grid_fr", { (const void*) &lv_grid_fr, "i", "i" } },
{ "grid_init", { (const void*) &lv_grid_init, "", "" } },
{ "group_get_default", { (const void*) &lv_group_get_default, "lv.lv_group", "" } },
{ "img_src_get_type", { (const void*) &lv_img_src_get_type, "i", "." } },
{ "indev_get_act", { (const void*) &lv_indev_get_act, "lv.lv_indev", "" } },
{ "indev_get_obj_act", { (const void*) &lv_indev_get_obj_act, "lv.lv_obj", "" } },
{ "indev_get_read_timer", { (const void*) &lv_indev_get_read_timer, "lv.lv_timer", "(lv.lv_disp)" } },
{ "indev_read_timer_cb", { (const void*) &lv_indev_read_timer_cb, "", "(lv.lv_timer)" } },
{ "is_initialized", { (const void*) &lv_is_initialized, "b", "" } },
{ "layer_sys", { (const void*) &lv_layer_sys, "lv.lv_obj", "" } },
{ "layer_top", { (const void*) &lv_layer_top, "lv.lv_obj", "" } },
{ "layout_register", { (const void*) &lv_layout_register, "i", "^lv_layout_update_cb^." } },
{ "obj_class_create_obj", { (const void*) &lv_obj_class_create_obj, "lv.lv_obj", "(lv._lv_obj_class)(lv.lv_obj)" } },
{ "obj_del_anim_ready_cb", { (const void*) &lv_obj_del_anim_ready_cb, "", "(lv.lv_anim)" } },
{ "obj_draw_dsc_init", { (const void*) &lv_obj_draw_dsc_init, "", "(lv.lv_obj_draw_part_dsc)(lv.lv_area)" } },
{ "obj_draw_part_check_type", { (const void*) &lv_obj_draw_part_check_type, "b", "(lv.lv_obj_draw_part_dsc)(lv._lv_obj_class)i" } },
{ "obj_enable_style_refresh", { (const void*) &lv_obj_enable_style_refresh, "", "b" } },
{ "obj_event_base", { (const void*) &lv_obj_event_base, "i", "(lv.lv_obj_class)(lv.lv_event)" } },
{ "obj_report_style_change", { (const void*) &lv_obj_report_style_change, "", "(lv.lv_style)" } },
{ "obj_style_get_selector_part", { (const void*) &lv_obj_style_get_selector_part, "i", "i" } },
{ "obj_style_get_selector_state", { (const void*) &lv_obj_style_get_selector_state, "i", "i" } },
{ "palette_darken", { (const void*) &lv_palette_darken, "lv.lv_color", "ii" } },
{ "palette_lighten", { (const void*) &lv_palette_lighten, "lv.lv_color", "ii" } },
{ "palette_main", { (const void*) &lv_palette_main, "lv.lv_color", "i" } },
{ "refr_now", { (const void*) &lv_refr_now, "", "(lv.lv_disp)" } },
{ "scr_act", { (const void*) &lv_scr_act, "lv.lv_obj", "" } },
{ "scr_load", { (const void*) &lv_scr_load, "", "(lv.lv_obj)" } },
{ "scr_load_anim", { (const void*) &lv_scr_load_anim, "", "(lv.lv_obj)iiib" } },
{ "task_handler", { (const void*) &lv_task_handler, "i", "" } },
{ "theme_apply", { (const void*) &lv_theme_apply, "", "(lv.lv_obj)" } },
{ "theme_default_get", { (const void*) &lv_theme_default_get, "lv.lv_theme", "" } },
{ "theme_default_init", { (const void*) &lv_theme_default_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" } },
{ "theme_default_is_inited", { (const void*) &lv_theme_default_is_inited, "b", "" } },
{ "theme_get_color_primary", { (const void*) &lv_theme_get_color_primary, "lv.lv_color", "(lv.lv_obj)" } },
{ "theme_get_color_secondary", { (const void*) &lv_theme_get_color_secondary, "lv.lv_color", "(lv.lv_obj)" } },
{ "theme_get_font_large", { (const void*) &lv_theme_get_font_large, "lv.lv_font", "(lv.lv_obj)" } },
{ "theme_get_font_normal", { (const void*) &lv_theme_get_font_normal, "lv.lv_font", "(lv.lv_obj)" } },
{ "theme_get_font_small", { (const void*) &lv_theme_get_font_small, "lv.lv_font", "(lv.lv_obj)" } },
{ "theme_get_from_obj", { (const void*) &lv_theme_get_from_obj, "lv.lv_theme", "(lv.lv_obj)" } },
{ "theme_mono_init", { (const void*) &lv_theme_mono_init, "lv.lv_theme", "(lv.lv_disp)b(lv.lv_font)" } },
{ "theme_openhasp_init", { (const void*) &lv_theme_openhasp_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" } },
{ "theme_openhasp_is_inited", { (const void*) &lv_theme_openhasp_is_inited, "b", "" } },
{ "theme_set_apply_cb", { (const void*) &lv_theme_set_apply_cb, "", "(lv.lv_theme)^lv_theme_apply_cb^" } },
{ "theme_set_parent", { (const void*) &lv_theme_set_parent, "", "(lv.lv_theme)(lv.lv_theme)" } },
};
const size_t lv_func_size = sizeof(lv_func) / sizeof(lv_func[0]);

View File

@ -125,15 +125,15 @@ int lv_x_member(bvm *vm) {
// push native closure
be_pushntvclosure(vm, &lv_x_call_c, 3); // 3 upvals
be_pushcomptr(vm, method->func);
be_pushcomptr(vm, method->args.func);
be_setupval(vm, -2, 0);
be_pop(vm, 1);
be_pushstring(vm, method->return_type);
be_pushstring(vm, method->args.return_type);
be_setupval(vm, -2, 1);
be_pop(vm, 1);
be_pushstring(vm, method->arg_type);
be_pushstring(vm, method->args.arg_type);
be_setupval(vm, -2, 2);
be_pop(vm, 1);
@ -298,15 +298,15 @@ int lv0_member(bvm *vm) {
// push native closure
be_pushntvclosure(vm, &lv_x_call_c, 3); // 3 upvals
be_pushcomptr(vm, method->func);
be_pushcomptr(vm, method->args.func);
be_setupval(vm, -2, 0);
be_pop(vm, 1);
be_pushstring(vm, method->return_type);
be_pushstring(vm, method->args.return_type);
be_setupval(vm, -2, 1);
be_pop(vm, 1);
be_pushstring(vm, method->arg_type);
be_pushstring(vm, method->args.arg_type);
be_setupval(vm, -2, 2);
be_pop(vm, 1);

View File

@ -378,7 +378,7 @@ for subtype, flv in lv.items():
pass
# c_ret_type = f"+lv_{subtype}"
else:
func_out[be_name] = f" {{ \"{be_name}\", (void*) &{orig_func_name}, \"{c_ret_type}\", { c_argc if c_argc else 'nullptr'} }},"
func_out[be_name] = f" {{ \"{be_name}\", {{ (const void*) &{orig_func_name}, \"{c_ret_type}\", { c_argc if c_argc else 'nullptr'} }} }},"
for be_name in sorted(func_out):
print(func_out[be_name])
@ -721,7 +721,7 @@ for f in lv0:
# if c_ret_type is an object, prefix with `lv.`
if len(c_ret_type) > 1: c_ret_type = "lv." + c_ret_type
func_out[be_name] = f" {{ \"{be_name}\", (void*) &{orig_func_name}, \"{c_ret_type}\", { c_argc if c_argc else 'nullptr'} }},"
func_out[be_name] = f" {{ \"{be_name}\", {{ (const void*) &{orig_func_name}, \"{c_ret_type}\", { c_argc if c_argc else 'nullptr'} }} }},"
for be_name in sorted(func_out):
print(func_out[be_name])