Berry add static class to declare inner classes (#17699)

This commit is contained in:
s-hadinger 2023-01-14 11:38:51 +01:00 committed by GitHub
parent 6c04cf7076
commit 4e60bd7465
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 329 additions and 195 deletions

View File

@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file.
- Berry ``crypto.AES_CCM`` (required by Matter protocol) - Berry ``crypto.AES_CCM`` (required by Matter protocol)
- ESP32 support for BMPxxx sensors on two I2C busses (#17643) - ESP32 support for BMPxxx sensors on two I2C busses (#17643)
- Berry add implicit ``_class`` parameter to static methods - Berry add implicit ``_class`` parameter to static methods
- Berry add ``static class`` to declare inner classes
### Breaking Changed ### Breaking Changed

View File

@ -407,7 +407,7 @@ static int new_localvar(bparser *parser, bstring *name)
if (reg == -1) { if (reg == -1) {
bvalue *var; bvalue *var;
if (comp_is_strict(parser->vm)) { if (comp_is_strict(parser->vm)) {
if (find_localvar(finfo, name, 0) >= 0 && str(name)[0] != '.') { /* we do accept nested redifinition of internal variables starting with ':' */ if (find_localvar(finfo, name, 0) >= 0 && str(name)[0] != '.') { /* we do accept nested redifinition of internal variables starting with '.' */
push_error(parser, "strict: redefinition of '%s' from outer scope", str(name)); push_error(parser, "strict: redefinition of '%s' from outer scope", str(name));
} }
} }
@ -1457,6 +1457,8 @@ static void classdef_stmt(bparser *parser, bclass *c, bbool is_static)
be_stackpop(parser->vm, 1); be_stackpop(parser->vm, 1);
} }
static void classstaticclass_stmt(bparser *parser, bclass *c_out, bexpdesc *e_out);
static void classstatic_stmt(bparser *parser, bclass *c, bexpdesc *e) static void classstatic_stmt(bparser *parser, bclass *c, bexpdesc *e)
{ {
bstring *name; bstring *name;
@ -1465,6 +1467,8 @@ static void classstatic_stmt(bparser *parser, bclass *c, bexpdesc *e)
scan_next_token(parser); /* skip 'static' */ scan_next_token(parser); /* skip 'static' */
if (next_type(parser) == KeyDef) { /* 'static' 'def' ... */ if (next_type(parser) == KeyDef) { /* 'static' 'def' ... */
classdef_stmt(parser, c, btrue); classdef_stmt(parser, c, btrue);
} else if (next_type(parser) == KeyClass) { /* 'static' 'class' ... */
classstaticclass_stmt(parser, c, e);
} else { } else {
if (next_type(parser) == KeyVar) { if (next_type(parser) == KeyVar) {
scan_next_token(parser); /* skip 'var' if any */ scan_next_token(parser); /* skip 'var' if any */
@ -1535,6 +1539,36 @@ static void class_stmt(bparser *parser)
} }
} }
static void classstaticclass_stmt(bparser *parser, bclass *c_out, bexpdesc *e_out)
{
bstring *name;
/* [preceding 'static'] 'class' ID [':' ID] class_block 'end' */
scan_next_token(parser); /* skip 'class' */
if (match_id(parser, name) != NULL) {
bexpdesc e_class; /* new class object */
check_class_attr(parser, c_out, name); /* check that the class names does not collide with another member */
be_class_member_bind(parser->vm, c_out, name, bfalse); /* add the member slot as static */
/* create the class object */
bclass *c = be_newclass(parser->vm, name, NULL);
new_var(parser, name, &e_class); /* add a local var to the static initialization code for static members */
be_code_class(parser->finfo, &e_class, c);
class_inherit(parser, &e_class);
class_block(parser, c, &e_class);
be_class_compress(parser->vm, c); /* compress class size */
match_token(parser, KeyEnd); /* skip 'end' */
/* add the code to copy the class object to the static member */
bexpdesc e1 = *e_out; /* copy the class description */
bexpdesc key; /* build the member key */
init_exp(&key, ETSTRING, 0);
key.v.s = name;
/* assign the class to the static member */
be_code_member(parser->finfo, &e1, &key); /* compute member accessor */
be_code_setvar(parser->finfo, &e1, &e_class); /* set member */
} else {
parser_error(parser, "class name error");
}
}
static void import_stmt(bparser *parser) static void import_stmt(bparser *parser)
{ {
bstring *name; /* variable name */ bstring *name; /* variable name */

View File

@ -420,6 +420,9 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, bclass *cl, void* fo
{ {
const char * class_name = str(cl->name); const char * class_name = str(cl->name);
/* pre-declare class to support '_class' implicit variable */
logfmt("\nextern const bclass be_class_%s;\n", class_name);
/* iterate on members to dump closures */ /* iterate on members to dump closures */
if (cl->members) { if (cl->members) {
bmapnode *node; bmapnode *node;

View File

@ -10,8 +10,8 @@ import solidify
import string import string
import re import re
# import sys import sys
# sys.path().push('src/embedded') # allow to import from src/embedded sys.path().push('src/embedded') # allow to import from src/embedded
# globals that need to exist to make compilation succeed # globals that need to exist to make compilation succeed
var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state," var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,"

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Animate_rotate;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/
@ -75,6 +77,8 @@ be_local_class(Animate_rotate,
(bstring*) &be_const_str_Animate_rotate (bstring*) &be_const_str_Animate_rotate
); );
extern const bclass be_class_Animate_from_to;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/
@ -135,6 +139,8 @@ be_local_class(Animate_from_to,
(bstring*) &be_const_str_Animate_from_to (bstring*) &be_const_str_Animate_from_to
); );
extern const bclass be_class_Animate_back_forth;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/
@ -216,6 +222,8 @@ be_local_class(Animate_back_forth,
(bstring*) &be_const_str_Animate_back_forth (bstring*) &be_const_str_Animate_back_forth
); );
extern const bclass be_class_Animate_ins_goto;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/
@ -263,6 +271,8 @@ be_local_class(Animate_ins_goto,
(bstring*) &be_const_str_Animate_ins_goto (bstring*) &be_const_str_Animate_ins_goto
); );
extern const bclass be_class_Animate_ins_ramp;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/
@ -310,6 +320,8 @@ be_local_class(Animate_ins_ramp,
(bstring*) &be_const_str_Animate_ins_ramp (bstring*) &be_const_str_Animate_ins_ramp
); );
extern const bclass be_class_Animate_engine;
/******************************************************************** /********************************************************************
** Solidified function: run ** Solidified function: run
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Autoconf;
/******************************************************************** /********************************************************************
** Solidified function: page_autoconf_ctl ** Solidified function: page_autoconf_ctl
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_SPAKE2P_Matter;
/******************************************************************** /********************************************************************
** Solidified function: compute_pB ** Solidified function: compute_pB
********************************************************************/ ********************************************************************/
@ -61,6 +63,8 @@ be_local_closure(SPAKE2P_Matter_compute_pB, /* name */
/*******************************************************************/ /*******************************************************************/
extern const bclass be_class_SPAKE_Hasher;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Driver;
/******************************************************************** /********************************************************************
** Solidified function: add_cmd ** Solidified function: add_cmd
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_dyn;
/******************************************************************** /********************************************************************
** Solidified function: tostring ** Solidified function: tostring
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_hue_bridge_monad;
/******************************************************************** /********************************************************************
** Solidified function: full_status ** Solidified function: full_status
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_AXP192;
/******************************************************************** /********************************************************************
** Solidified function: set_dcdc_enable ** Solidified function: set_dcdc_enable
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_AXP202;
/******************************************************************** /********************************************************************
** Solidified function: set_shutdown_time ** Solidified function: set_shutdown_time
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_I2C_Driver;
/******************************************************************** /********************************************************************
** Solidified function: read32 ** Solidified function: read32
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_FT3663;
/******************************************************************** /********************************************************************
** Solidified function: every_100ms ** Solidified function: every_100ms
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Leds;
/******************************************************************** /********************************************************************
** Solidified function: pixel_count ** Solidified function: pixel_count
********************************************************************/ ********************************************************************/
@ -170,39 +172,43 @@ be_local_closure(Leds_clear, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(Leds_matrix, /* name */ be_local_closure(Leds_matrix, /* name */
be_nested_proto( be_nested_proto(
10, /* nstack */ 11, /* nstack */
4, /* argc */ 4, /* argc */
0, /* varg */ 4, /* varg */
0, /* has upvals */ 0, /* has upvals */
NULL, /* no upvals */ NULL, /* no upvals */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 3]) { /* constants */ ( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str(Leds), /* K0 */ be_const_class(be_class_Leds),
/* K1 */ be_nested_str(create_matrix), /* K1 */ be_nested_str(Leds),
/* K2 */ be_const_int(0), /* K2 */ be_nested_str(create_matrix),
/* K3 */ be_const_int(0),
}), }),
&be_const_str_matrix, &be_const_str_matrix,
&be_const_str_solidified, &be_const_str_solidified,
( &(const binstruction[11]) { /* code */ ( &(const binstruction[12]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0 0x58100000, // 0000 LDCONST R4 K0
0x08140001, // 0001 MUL R5 R0 R1 0xB8160200, // 0001 GETNGBL R5 K1
0x5C180400, // 0002 MOVE R6 R2 0x08180001, // 0002 MUL R6 R0 R1
0x5C1C0600, // 0003 MOVE R7 R3 0x5C1C0400, // 0003 MOVE R7 R2
0x7C100600, // 0004 CALL R4 3 0x5C200600, // 0004 MOVE R8 R3
0x8C140901, // 0005 GETMET R5 R4 K1 0x7C140600, // 0005 CALL R5 3
0x5C1C0000, // 0006 MOVE R7 R0 0x8C180B02, // 0006 GETMET R6 R5 K2
0x5C200200, // 0007 MOVE R8 R1 0x5C200000, // 0007 MOVE R8 R0
0x58240002, // 0008 LDCONST R9 K2 0x5C240200, // 0008 MOVE R9 R1
0x7C140800, // 0009 CALL R5 4 0x58280003, // 0009 LDCONST R10 K3
0x80040A00, // 000A RET 1 R5 0x7C180800, // 000A CALL R6 4
0x80040C00, // 000B RET 1 R6
}) })
) )
); );
/*******************************************************************/ /*******************************************************************/
extern const bclass be_class_Leds_segment;
/******************************************************************** /********************************************************************
** Solidified function: get_pixel_color ** Solidified function: get_pixel_color
********************************************************************/ ********************************************************************/
@ -735,6 +741,8 @@ be_local_closure(Leds_is_dirty, /* name */
/*******************************************************************/ /*******************************************************************/
extern const bclass be_class_Leds_matrix;
/******************************************************************** /********************************************************************
** Solidified function: pixels_buffer ** Solidified function: pixels_buffer
********************************************************************/ ********************************************************************/
@ -1621,106 +1629,108 @@ be_local_closure(Leds_get_pixel_color, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(Leds_assign_rmt, /* name */ be_local_closure(Leds_assign_rmt, /* name */
be_nested_proto( be_nested_proto(
8, /* nstack */ 9, /* nstack */
1, /* argc */ 1, /* argc */
0, /* varg */ 4, /* varg */
0, /* has upvals */ 0, /* has upvals */
NULL, /* no upvals */ NULL, /* no upvals */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[16]) { /* constants */ ( &(const bvalue[17]) { /* constants */
/* K0 */ be_const_int(0), /* K0 */ be_const_class(be_class_Leds),
/* K1 */ be_nested_str(value_error), /* K1 */ be_const_int(0),
/* K2 */ be_nested_str(invalid_X20GPIO_X20number), /* K2 */ be_nested_str(value_error),
/* K3 */ be_nested_str(global), /* K3 */ be_nested_str(invalid_X20GPIO_X20number),
/* K4 */ be_nested_str(contains), /* K4 */ be_nested_str(global),
/* K5 */ be_nested_str(_rmt), /* K5 */ be_nested_str(contains),
/* K6 */ be_nested_str(gpio), /* K6 */ be_nested_str(_rmt),
/* K7 */ be_nested_str(MAX_RMT), /* K7 */ be_nested_str(gpio),
/* K8 */ be_const_int(1), /* K8 */ be_nested_str(MAX_RMT),
/* K9 */ be_nested_str(push), /* K9 */ be_const_int(1),
/* K10 */ be_nested_str(stop_iteration), /* K10 */ be_nested_str(push),
/* K11 */ be_nested_str(pin_used), /* K11 */ be_nested_str(stop_iteration),
/* K12 */ be_nested_str(WS2812), /* K12 */ be_nested_str(pin_used),
/* K13 */ be_nested_str(pin), /* K13 */ be_nested_str(WS2812),
/* K14 */ be_nested_str(internal_error), /* K14 */ be_nested_str(pin),
/* K15 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available), /* K15 */ be_nested_str(internal_error),
/* K16 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available),
}), }),
&be_const_str_assign_rmt, &be_const_str_assign_rmt,
&be_const_str_solidified, &be_const_str_solidified,
( &(const binstruction[71]) { /* code */ ( &(const binstruction[72]) { /* code */
0x60040009, // 0000 GETGBL R1 G9 0x58040000, // 0000 LDCONST R1 K0
0x5C080000, // 0001 MOVE R2 R0 0x60080009, // 0001 GETGBL R2 G9
0x7C040200, // 0002 CALL R1 1 0x5C0C0000, // 0002 MOVE R3 R0
0x5C000200, // 0003 MOVE R0 R1 0x7C080200, // 0003 CALL R2 1
0x14040100, // 0004 LT R1 R0 K0 0x5C000400, // 0004 MOVE R0 R2
0x78060000, // 0005 JMPF R1 #0007 0x14080101, // 0005 LT R2 R0 K1
0xB0060302, // 0006 RAISE 1 K1 K2 0x780A0000, // 0006 JMPF R2 #0008
0xA4060600, // 0007 IMPORT R1 K3 0xB0060503, // 0007 RAISE 1 K2 K3
0x4C080000, // 0008 LDNIL R2 0xA40A0800, // 0008 IMPORT R2 K4
0x8C0C0304, // 0009 GETMET R3 R1 K4 0x4C0C0000, // 0009 LDNIL R3
0x58140005, // 000A LDCONST R5 K5 0x8C100505, // 000A GETMET R4 R2 K5
0x7C0C0400, // 000B CALL R3 2 0x58180006, // 000B LDCONST R6 K6
0x740E0021, // 000C JMPT R3 #002F 0x7C100400, // 000C CALL R4 2
0x600C0012, // 000D GETGBL R3 G18 0x74120021, // 000D JMPT R4 #0030
0x7C0C0000, // 000E CALL R3 0 0x60100012, // 000E GETGBL R4 G18
0x5C080600, // 000F MOVE R2 R3 0x7C100000, // 000F CALL R4 0
0x90060A02, // 0010 SETMBR R1 K5 R2 0x5C0C0800, // 0010 MOVE R3 R4
0x600C0010, // 0011 GETGBL R3 G16 0x900A0C03, // 0011 SETMBR R2 K6 R3
0xB8120C00, // 0012 GETNGBL R4 K6 0x60100010, // 0012 GETGBL R4 G16
0x88100907, // 0013 GETMBR R4 R4 K7 0xB8160E00, // 0013 GETNGBL R5 K7
0x04100908, // 0014 SUB R4 R4 K8 0x88140B08, // 0014 GETMBR R5 R5 K8
0x40120004, // 0015 CONNECT R4 K0 R4 0x04140B09, // 0015 SUB R5 R5 K9
0x7C0C0200, // 0016 CALL R3 1 0x40160205, // 0016 CONNECT R5 K1 R5
0xA8020005, // 0017 EXBLK 0 #001E 0x7C100200, // 0017 CALL R4 1
0x5C100600, // 0018 MOVE R4 R3 0xA8020005, // 0018 EXBLK 0 #001F
0x7C100000, // 0019 CALL R4 0 0x5C140800, // 0019 MOVE R5 R4
0x8C140509, // 001A GETMET R5 R2 K9 0x7C140000, // 001A CALL R5 0
0x541DFFFE, // 001B LDINT R7 -1 0x8C18070A, // 001B GETMET R6 R3 K10
0x7C140400, // 001C CALL R5 2 0x5421FFFE, // 001C LDINT R8 -1
0x7001FFF9, // 001D JMP #0018 0x7C180400, // 001D CALL R6 2
0x580C000A, // 001E LDCONST R3 K10 0x7001FFF9, // 001E JMP #0019
0xAC0C0200, // 001F CATCH R3 1 0 0x5810000B, // 001F LDCONST R4 K11
0xB0080000, // 0020 RAISE 2 R0 R0 0xAC100200, // 0020 CATCH R4 1 0
0xB80E0C00, // 0021 GETNGBL R3 K6 0xB0080000, // 0021 RAISE 2 R0 R0
0x8C0C070B, // 0022 GETMET R3 R3 K11 0xB8120E00, // 0022 GETNGBL R4 K7
0xB8160C00, // 0023 GETNGBL R5 K6 0x8C10090C, // 0023 GETMET R4 R4 K12
0x88140B0C, // 0024 GETMBR R5 R5 K12 0xB81A0E00, // 0024 GETNGBL R6 K7
0x58180000, // 0025 LDCONST R6 K0 0x88180D0D, // 0025 GETMBR R6 R6 K13
0x7C0C0600, // 0026 CALL R3 3 0x581C0001, // 0026 LDCONST R7 K1
0x780E0006, // 0027 JMPF R3 #002F 0x7C100600, // 0027 CALL R4 3
0xB80E0C00, // 0028 GETNGBL R3 K6 0x78120006, // 0028 JMPF R4 #0030
0x8C0C070D, // 0029 GETMET R3 R3 K13 0xB8120E00, // 0029 GETNGBL R4 K7
0xB8160C00, // 002A GETNGBL R5 K6 0x8C10090E, // 002A GETMET R4 R4 K14
0x88140B0C, // 002B GETMBR R5 R5 K12 0xB81A0E00, // 002B GETNGBL R6 K7
0x58180000, // 002C LDCONST R6 K0 0x88180D0D, // 002C GETMBR R6 R6 K13
0x7C0C0600, // 002D CALL R3 3 0x581C0001, // 002D LDCONST R7 K1
0x980A0003, // 002E SETIDX R2 K0 R3 0x7C100600, // 002E CALL R4 3
0x88080305, // 002F GETMBR R2 R1 K5 0x980E0204, // 002F SETIDX R3 K1 R4
0x580C0000, // 0030 LDCONST R3 K0 0x880C0506, // 0030 GETMBR R3 R2 K6
0x5411FFFE, // 0031 LDINT R4 -1 0x58100001, // 0031 LDCONST R4 K1
0xB8160C00, // 0032 GETNGBL R5 K6 0x5415FFFE, // 0032 LDINT R5 -1
0x88140B07, // 0033 GETMBR R5 R5 K7 0xB81A0E00, // 0033 GETNGBL R6 K7
0x14140605, // 0034 LT R5 R3 R5 0x88180D08, // 0034 GETMBR R6 R6 K8
0x7816000A, // 0035 JMPF R5 #0041 0x14180806, // 0035 LT R6 R4 R6
0x94140403, // 0036 GETIDX R5 R2 R3 0x781A000A, // 0036 JMPF R6 #0042
0x1C180A00, // 0037 EQ R6 R5 R0 0x94180604, // 0037 GETIDX R6 R3 R4
0x781A0000, // 0038 JMPF R6 #003A 0x1C1C0C00, // 0038 EQ R7 R6 R0
0x80040600, // 0039 RET 1 R3 0x781E0000, // 0039 JMPF R7 #003B
0x14180B00, // 003A LT R6 R5 K0 0x80040800, // 003A RET 1 R4
0x781A0002, // 003B JMPF R6 #003F 0x141C0D01, // 003B LT R7 R6 K1
0x14180900, // 003C LT R6 R4 K0 0x781E0002, // 003C JMPF R7 #0040
0x781A0000, // 003D JMPF R6 #003F 0x141C0B01, // 003D LT R7 R5 K1
0x5C100600, // 003E MOVE R4 R3 0x781E0000, // 003E JMPF R7 #0040
0x000C0708, // 003F ADD R3 R3 K8 0x5C140800, // 003F MOVE R5 R4
0x7001FFF0, // 0040 JMP #0032 0x00100909, // 0040 ADD R4 R4 K9
0x28140900, // 0041 GE R5 R4 K0 0x7001FFF0, // 0041 JMP #0033
0x78160001, // 0042 JMPF R5 #0045 0x28180B01, // 0042 GE R6 R5 K1
0x98080800, // 0043 SETIDX R2 R4 R0 0x781A0001, // 0043 JMPF R6 #0046
0x80040800, // 0044 RET 1 R4 0x980C0A00, // 0044 SETIDX R3 R5 R0
0xB0061D0F, // 0045 RAISE 1 K14 K15 0x80040A00, // 0045 RET 1 R5
0x80000000, // 0046 RET 0 0xB0061F10, // 0046 RAISE 1 K15 K16
0x80000000, // 0047 RET 0
}) })
) )
); );

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Leds_animator;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/

View File

@ -114,6 +114,8 @@ be_local_closure(lv_tasmota_init, /* name */
/*******************************************************************/ /*******************************************************************/
extern const bclass be_class_splash_runner;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_lv_clock;
/******************************************************************** /********************************************************************
** Solidified function: set_time ** Solidified function: set_time
********************************************************************/ ********************************************************************/
@ -270,6 +272,8 @@ void be_load_lv_clock_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_lv_clock_icon;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/
@ -391,6 +395,8 @@ void be_load_lv_clock_icon_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_lv_signal_arcs;
/******************************************************************** /********************************************************************
** Solidified function: set_percentage ** Solidified function: set_percentage
********************************************************************/ ********************************************************************/
@ -804,6 +810,8 @@ void be_load_lv_signal_arcs_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_lv_wifi_arcs;
/******************************************************************** /********************************************************************
** Solidified function: before_del ** Solidified function: before_del
********************************************************************/ ********************************************************************/
@ -955,6 +963,8 @@ void be_load_lv_wifi_arcs_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_lv_wifi_arcs_icon;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/
@ -1085,6 +1095,8 @@ void be_load_lv_wifi_arcs_icon_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_lv_signal_bars;
/******************************************************************** /********************************************************************
** Solidified function: set_percentage ** Solidified function: set_percentage
********************************************************************/ ********************************************************************/
@ -1468,6 +1480,8 @@ void be_load_lv_signal_bars_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_lv_wifi_bars;
/******************************************************************** /********************************************************************
** Solidified function: before_del ** Solidified function: before_del
********************************************************************/ ********************************************************************/
@ -1619,6 +1633,8 @@ void be_load_lv_wifi_bars_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_lv_wifi_bars_icon;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_MQTT;
/******************************************************************** /********************************************************************
** Solidified function: mqtt_data ** Solidified function: mqtt_data
********************************************************************/ ********************************************************************/
@ -259,6 +261,8 @@ be_local_closure(MQTT_mqtt_connect, /* name */
/*******************************************************************/ /*******************************************************************/
extern const bclass be_class_mqtt_listener;
/******************************************************************** /********************************************************************
** Solidified function: tostring ** Solidified function: tostring
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Partition_otadata;
/******************************************************************** /********************************************************************
** Solidified function: save ** Solidified function: save
********************************************************************/ ********************************************************************/
@ -319,33 +321,35 @@ be_local_closure(Partition_otadata_load, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(Partition_otadata_crc32_ota_seq, /* name */ be_local_closure(Partition_otadata_crc32_ota_seq, /* name */
be_nested_proto( be_nested_proto(
9, /* nstack */ 10, /* nstack */
1, /* argc */ 1, /* argc */
0, /* varg */ 4, /* varg */
0, /* has upvals */ 0, /* has upvals */
NULL, /* no upvals */ NULL, /* no upvals */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 3]) { /* constants */ ( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str(crc), /* K0 */ be_const_class(be_class_Partition_otadata),
/* K1 */ be_nested_str(crc32), /* K1 */ be_nested_str(crc),
/* K2 */ be_nested_str(add), /* K2 */ be_nested_str(crc32),
/* K3 */ be_nested_str(add),
}), }),
&be_const_str_crc32_ota_seq, &be_const_str_crc32_ota_seq,
&be_const_str_solidified, &be_const_str_solidified,
( &(const binstruction[11]) { /* code */ ( &(const binstruction[12]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0 0x58040000, // 0000 LDCONST R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1 0xA40A0200, // 0001 IMPORT R2 K1
0x5411FFFE, // 0002 LDINT R4 -1 0x8C0C0502, // 0002 GETMET R3 R2 K2
0x60140015, // 0003 GETGBL R5 G21 0x5415FFFE, // 0003 LDINT R5 -1
0x7C140000, // 0004 CALL R5 0 0x60180015, // 0004 GETGBL R6 G21
0x8C140B02, // 0005 GETMET R5 R5 K2 0x7C180000, // 0005 CALL R6 0
0x5C1C0000, // 0006 MOVE R7 R0 0x8C180D03, // 0006 GETMET R6 R6 K3
0x54220003, // 0007 LDINT R8 4 0x5C200000, // 0007 MOVE R8 R0
0x7C140600, // 0008 CALL R5 3 0x54260003, // 0008 LDINT R9 4
0x7C080600, // 0009 CALL R2 3 0x7C180600, // 0009 CALL R6 3
0x80040400, // 000A RET 1 R2 0x7C0C0600, // 000A CALL R3 3
0x80040600, // 000B RET 1 R3
}) })
) )
); );
@ -498,6 +502,8 @@ be_local_class(Partition_otadata,
(bstring*) &be_const_str_Partition_otadata (bstring*) &be_const_str_Partition_otadata
); );
extern const bclass be_class_Partition;
/******************************************************************** /********************************************************************
** Solidified function: save ** Solidified function: save
********************************************************************/ ********************************************************************/
@ -928,50 +934,52 @@ be_local_closure(Partition_resize_max_flash_size_k, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(Partition_get_flash_definition_sector, /* name */ be_local_closure(Partition_get_flash_definition_sector, /* name */
be_nested_proto( be_nested_proto(
8, /* nstack */ 9, /* nstack */
0, /* argc */ 0, /* argc */
0, /* varg */ 4, /* varg */
0, /* has upvals */ 0, /* has upvals */
NULL, /* no upvals */ NULL, /* no upvals */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 6]) { /* constants */ ( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str(flash), /* K0 */ be_const_class(be_class_Partition),
/* K1 */ be_const_int(0), /* K1 */ be_nested_str(flash),
/* K2 */ be_const_int(1), /* K2 */ be_const_int(0),
/* K3 */ be_nested_str(read), /* K3 */ be_const_int(1),
/* K4 */ be_nested_str(E9), /* K4 */ be_nested_str(read),
/* K5 */ be_nested_str(stop_iteration), /* K5 */ be_nested_str(E9),
/* K6 */ be_nested_str(stop_iteration),
}), }),
&be_const_str_get_flash_definition_sector, &be_const_str_get_flash_definition_sector,
&be_const_str_solidified, &be_const_str_solidified,
( &(const binstruction[25]) { /* code */ ( &(const binstruction[26]) { /* code */
0xA4020000, // 0000 IMPORT R0 K0 0x58000000, // 0000 LDCONST R0 K0
0x60040010, // 0001 GETGBL R1 G16 0xA4060200, // 0001 IMPORT R1 K1
0x400A0302, // 0002 CONNECT R2 K1 K2 0x60080010, // 0002 GETGBL R2 G16
0x7C040200, // 0003 CALL R1 1 0x400E0503, // 0003 CONNECT R3 K2 K3
0xA802000F, // 0004 EXBLK 0 #0015 0x7C080200, // 0004 CALL R2 1
0x5C080200, // 0005 MOVE R2 R1 0xA802000F, // 0005 EXBLK 0 #0016
0x7C080000, // 0006 CALL R2 0 0x5C0C0400, // 0006 MOVE R3 R2
0x540E0FFF, // 0007 LDINT R3 4096 0x7C0C0000, // 0007 CALL R3 0
0x080C0403, // 0008 MUL R3 R2 R3 0x54120FFF, // 0008 LDINT R4 4096
0x8C100103, // 0009 GETMET R4 R0 K3 0x08100604, // 0009 MUL R4 R3 R4
0x5C180600, // 000A MOVE R6 R3 0x8C140304, // 000A GETMET R5 R1 K4
0x581C0002, // 000B LDCONST R7 K2 0x5C1C0800, // 000B MOVE R7 R4
0x7C100600, // 000C CALL R4 3 0x58200003, // 000C LDCONST R8 K3
0x60140015, // 000D GETGBL R5 G21 0x7C140600, // 000D CALL R5 3
0x58180004, // 000E LDCONST R6 K4 0x60180015, // 000E GETGBL R6 G21
0x7C140200, // 000F CALL R5 1 0x581C0005, // 000F LDCONST R7 K5
0x1C100805, // 0010 EQ R4 R4 R5 0x7C180200, // 0010 CALL R6 1
0x78120001, // 0011 JMPF R4 #0014 0x1C140A06, // 0011 EQ R5 R5 R6
0xA8040001, // 0012 EXBLK 1 1 0x78160001, // 0012 JMPF R5 #0015
0x80040600, // 0013 RET 1 R3 0xA8040001, // 0013 EXBLK 1 1
0x7001FFEF, // 0014 JMP #0005 0x80040800, // 0014 RET 1 R4
0x58040005, // 0015 LDCONST R1 K5 0x7001FFEF, // 0015 JMP #0006
0xAC040200, // 0016 CATCH R1 1 0 0x58080006, // 0016 LDCONST R2 K6
0xB0080000, // 0017 RAISE 2 R0 R0 0xAC080200, // 0017 CATCH R2 1 0
0x80000000, // 0018 RET 0 0xB0080000, // 0018 RAISE 2 R0 R0
0x80000000, // 0019 RET 0
}) })
) )
); );
@ -1660,6 +1668,8 @@ be_local_class(Partition,
(bstring*) &be_const_str_Partition (bstring*) &be_const_str_Partition
); );
extern const bclass be_class_Partition_info;
/******************************************************************** /********************************************************************
** Solidified function: is_factory ** Solidified function: is_factory
********************************************************************/ ********************************************************************/
@ -2165,45 +2175,47 @@ be_local_closure(Partition_info_tobytes, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(Partition_info_remove_trailing_zeroes, /* name */ be_local_closure(Partition_info_remove_trailing_zeroes, /* name */
be_nested_proto( be_nested_proto(
7, /* nstack */ 8, /* nstack */
1, /* argc */ 1, /* argc */
0, /* varg */ 4, /* varg */
0, /* has upvals */ 0, /* has upvals */
NULL, /* no upvals */ NULL, /* no upvals */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 3]) { /* constants */ ( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_const_int(0), /* K0 */ be_const_class(be_class_Partition_info),
/* K1 */ be_const_int(1), /* K1 */ be_const_int(0),
/* K2 */ be_nested_str(resize), /* K2 */ be_const_int(1),
/* K3 */ be_nested_str(resize),
}), }),
&be_const_str_remove_trailing_zeroes, &be_const_str_remove_trailing_zeroes,
&be_const_str_solidified, &be_const_str_solidified,
( &(const binstruction[23]) { /* code */ ( &(const binstruction[24]) { /* code */
0x6004000C, // 0000 GETGBL R1 G12 0x58040000, // 0000 LDCONST R1 K0
0x5C080000, // 0001 MOVE R2 R0 0x6008000C, // 0001 GETGBL R2 G12
0x7C040200, // 0002 CALL R1 1 0x5C0C0000, // 0002 MOVE R3 R0
0x58080000, // 0003 LDCONST R2 K0 0x7C080200, // 0003 CALL R2 1
0x140C0401, // 0004 LT R3 R2 R1 0x580C0001, // 0004 LDCONST R3 K1
0x780E0007, // 0005 JMPF R3 #000E 0x14100602, // 0005 LT R4 R3 R2
0x540DFFFE, // 0006 LDINT R3 -1 0x78120007, // 0006 JMPF R4 #000F
0x040C0602, // 0007 SUB R3 R3 R2 0x5411FFFE, // 0007 LDINT R4 -1
0x940C0003, // 0008 GETIDX R3 R0 R3 0x04100803, // 0008 SUB R4 R4 R3
0x200C0700, // 0009 NE R3 R3 K0 0x94100004, // 0009 GETIDX R4 R0 R4
0x780E0000, // 000A JMPF R3 #000C 0x20100901, // 000A NE R4 R4 K1
0x70020001, // 000B JMP #000E 0x78120000, // 000B JMPF R4 #000D
0x00080501, // 000C ADD R2 R2 K1 0x70020001, // 000C JMP #000F
0x7001FFF5, // 000D JMP #0004 0x000C0702, // 000D ADD R3 R3 K2
0x240C0500, // 000E GT R3 R2 K0 0x7001FFF5, // 000E JMP #0005
0x780E0005, // 000F JMPF R3 #0016 0x24100701, // 000F GT R4 R3 K1
0x8C0C0102, // 0010 GETMET R3 R0 K2 0x78120005, // 0010 JMPF R4 #0017
0x6014000C, // 0011 GETGBL R5 G12 0x8C100103, // 0011 GETMET R4 R0 K3
0x5C180000, // 0012 MOVE R6 R0 0x6018000C, // 0012 GETGBL R6 G12
0x7C140200, // 0013 CALL R5 1 0x5C1C0000, // 0013 MOVE R7 R0
0x04140A02, // 0014 SUB R5 R5 R2 0x7C180200, // 0014 CALL R6 1
0x7C0C0400, // 0015 CALL R3 2 0x04180C03, // 0015 SUB R6 R6 R3
0x80040000, // 0016 RET 1 R0 0x7C100400, // 0016 CALL R4 2
0x80040000, // 0017 RET 1 R0
}) })
) )
); );

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Persist;
/******************************************************************** /********************************************************************
** Solidified function: json_fdump_map ** Solidified function: json_fdump_map
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Tapp;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Tasmota;
/******************************************************************** /********************************************************************
** Solidified function: exec_rules ** Solidified function: exec_rules
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_Trigger;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_zb_coord;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_zcl_attribute;
/******************************************************************** /********************************************************************
** Solidified function: tomap ** Solidified function: tomap
********************************************************************/ ********************************************************************/
@ -571,6 +573,8 @@ void be_load_zcl_attribute_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_zcl_attribute_list;
/******************************************************************** /********************************************************************
** Solidified function: member ** Solidified function: member
********************************************************************/ ********************************************************************/
@ -914,6 +918,8 @@ void be_load_zcl_attribute_list_class(bvm *vm) {
be_pop(vm, 1); be_pop(vm, 1);
} }
extern const bclass be_class_zcl_attributes;
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/

View File

@ -4,6 +4,8 @@
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
extern const bclass be_class_zcl_frame;
/******************************************************************** /********************************************************************
** Solidified function: member ** Solidified function: member
********************************************************************/ ********************************************************************/