From 1eb38f0b78a3a6171e36cb89bcf4165dda4645fb Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 8 Sep 2025 23:30:57 +0200 Subject: [PATCH] Berry animation transpiler refactoring (#23890) --- .../anim_examples/aurora_borealis.anim | 36 - .../anim_examples/compiled/aurora_borealis.be | 80 - .../compiled/compilation_summary.md | 2675 ++ .../compiled/demo_shutter_rainbow.be | 144 - .../compiled/demo_shutter_rainbow_central.be | 78 +- .../anim_examples/compiled/disco_strobe.be | 15 +- .../anim_examples/compiled/fire_flicker.be | 15 +- .../anim_examples/compiled/import_demo.be | 6 +- .../compiled/palette_showcase.be | 12 +- .../anim_examples/compiled/run_tests.be | 55 - .../compiled/test_compute_multiple.be | 29 + .../compiled/test_shutter_rainbow_bidir.be | 12 +- .../compiled/test_shutter_rainbow_central.be | 116 - .../compiled/test_simple_math.be | 23 + .../compiled/user_functions_demo.be | 10 +- .../demo_shutter_rainbow_central.anim | 32 +- .../anim_examples/disco_strobe.anim | 3 +- .../anim_examples/fail_color_predefined.anim | 4 + .../anim_examples/fail_name_predefined.anim | 4 + .../fail_value_provider_add.anim | 6 + .../anim_examples/fire_flicker.anim | 3 +- .../anim_examples/import_demo.anim | 6 +- .../anim_examples/{ => old}/ocean_waves.anim | 0 .../anim_examples/{ => old}/plasma_wave.anim | 0 .../anim_examples/palette_showcase.anim | 2 +- .../anim_examples/test_compute_multiple.anim | 7 + .../anim_examples/test_cylon_generic.anim | 29 + .../test_shutter_rainbow_bidir.anim | 2 + .../test_shutter_rainbow_central.anim | 3 +- .../anim_examples/test_simple_math.anim | 4 + .../anim_examples/user_functions_demo.anim | 10 +- .../docs/ANIMATION_CLASS_HIERARCHY.md | 352 +- .../berry_animation/docs/DSL_REFERENCE.md | 117 +- .../berry_animation/docs/DSL_TRANSPILATION.md | 110 +- .../berry_animation/docs/QUICK_START.md | 20 +- .../docs/TRANSPILER_ARCHITECTURE.md | 356 +- .../berry_animation/docs/USER_FUNCTIONS.md | 84 +- lib/libesp32/berry_animation/src/animation.be | 28 +- .../berry_animation/src/animation_dsl.be | 5 + .../src/animations/all_wled_palettes.be | 1244 + .../berry_animation/src/animations/comet.be | 9 +- .../src/animations/crenel_position.be | 14 +- .../berry_animation/src/animations/fire.be | 50 +- .../berry_animation/src/animations/twinkle.be | 25 +- .../bounce.be | 0 .../jitter.be | 0 .../plasma.be | 0 .../scale.be | 0 .../shift.be | 0 .../sparkle.be | 0 .../src/core/animation_engine.be | 46 + .../src/core/sequence_manager.be | 20 + lib/libesp32/berry_animation/src/dsl/lexer.be | 59 +- .../berry_animation/src/dsl/named_colors.be | 62 + .../berry_animation/src/dsl/symbol_table.be | 601 + lib/libesp32/berry_animation/src/dsl/token.be | 4 +- .../berry_animation/src/dsl/transpiler.be | 1499 +- .../src/providers/breathe_color_provider.be | 9 +- .../providers/color_cycle_color_provider.be | 15 +- .../providers/iteration_number_provider.be | 50 + .../providers/oscillator_value_provider.be | 22 +- .../src/solidify/solidified_animation.h | 15832 ++++----- .../src/solidify/solidified_animation_dsl.h | 26475 +++++++++------- .../src/tests/dsl_berry_code_blocks_test.be | 323 + .../src/tests/dsl_berry_integration_test.be | 313 + .../src/tests/dsl_core_processing_test.be | 4 +- .../src/tests/dsl_lexer_triple_quotes_test.be | 216 + .../tests/dsl_parameter_validation_test.be | 6 +- ...et_restart_test.be => dsl_restart_test.be} | 139 +- .../src/tests/dsl_transpiler_test.be | 146 +- .../tests/dsl_undefined_identifier_test.be | 188 + .../dsl_value_provider_validation_test.be | 248 +- .../src/tests/event_system_test.be | 7 +- .../src/tests/global_variable_test.be | 22 +- .../src/tests/palette_dsl_test.be | 6 +- .../src/tests/symbol_registry_test.be | 67 +- .../src/tests/symbol_table_test.be | 357 + .../berry_animation/src/tests/test_all.be | 24 +- .../tests/test_math_method_transpilation.be | 6 +- ...t_user_functions_in_computed_parameters.be | 16 +- .../src/tests/user_functions_test.be | 12 +- 81 files changed, 29447 insertions(+), 23182 deletions(-) delete mode 100644 lib/libesp32/berry_animation/anim_examples/aurora_borealis.anim delete mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be create mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md delete mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be delete mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/run_tests.be create mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/test_compute_multiple.be delete mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_central.be create mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/test_simple_math.be create mode 100644 lib/libesp32/berry_animation/anim_examples/fail_color_predefined.anim create mode 100644 lib/libesp32/berry_animation/anim_examples/fail_name_predefined.anim create mode 100644 lib/libesp32/berry_animation/anim_examples/fail_value_provider_add.anim rename lib/libesp32/berry_animation/anim_examples/{ => old}/ocean_waves.anim (100%) rename lib/libesp32/berry_animation/anim_examples/{ => old}/plasma_wave.anim (100%) create mode 100644 lib/libesp32/berry_animation/anim_examples/test_compute_multiple.anim create mode 100644 lib/libesp32/berry_animation/anim_examples/test_cylon_generic.anim create mode 100644 lib/libesp32/berry_animation/anim_examples/test_simple_math.anim create mode 100644 lib/libesp32/berry_animation/src/animations/all_wled_palettes.be rename lib/libesp32/berry_animation/src/{animations => animations_future}/bounce.be (100%) rename lib/libesp32/berry_animation/src/{animations => animations_future}/jitter.be (100%) rename lib/libesp32/berry_animation/src/{animations => animations_future}/plasma.be (100%) rename lib/libesp32/berry_animation/src/{animations => animations_future}/scale.be (100%) rename lib/libesp32/berry_animation/src/{animations => animations_future}/shift.be (100%) rename lib/libesp32/berry_animation/src/{animations => animations_future}/sparkle.be (100%) create mode 100644 lib/libesp32/berry_animation/src/dsl/named_colors.be create mode 100644 lib/libesp32/berry_animation/src/dsl/symbol_table.be create mode 100644 lib/libesp32/berry_animation/src/providers/iteration_number_provider.be create mode 100644 lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be create mode 100644 lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be create mode 100644 lib/libesp32/berry_animation/src/tests/dsl_lexer_triple_quotes_test.be rename lib/libesp32/berry_animation/src/tests/{dsl_reset_restart_test.be => dsl_restart_test.be} (73%) create mode 100644 lib/libesp32/berry_animation/src/tests/dsl_undefined_identifier_test.be create mode 100644 lib/libesp32/berry_animation/src/tests/symbol_table_test.be diff --git a/lib/libesp32/berry_animation/anim_examples/aurora_borealis.anim b/lib/libesp32/berry_animation/anim_examples/aurora_borealis.anim deleted file mode 100644 index 1b352b1b6..000000000 --- a/lib/libesp32/berry_animation/anim_examples/aurora_borealis.anim +++ /dev/null @@ -1,36 +0,0 @@ -# Aurora Borealis - Northern lights simulation -# Flowing green and purple aurora colors - -#strip length 60 - -# Define aurora color palette -palette aurora_colors = [ - (0, 0x000022), # Dark night sky - (64, 0x004400), # Dark green - (128, 0x00AA44), # Aurora green - (192, 0x44AA88), # Light green - (255, 0x88FFAA) # Bright aurora -] - -# Secondary purple palette -palette aurora_purple = [ - (0, 0x220022), # Dark purple - (64, 0x440044), # Medium purple - (128, 0x8800AA), # Bright purple - (192, 0xAA44CC), # Light purple - (255, 0xCCAAFF) # Pale purple -] - -# Base aurora animation with slow flowing colors -animation aurora_base = rich_palette_animation( - palette=aurora_colors # palette - cycle_period=10s # cycle period - transition_type=SINE # transition type (explicit for clarity) - brightness=180 # brightness (dimmed for aurora effect) -) - -sequence demo { - play aurora_base # infinite duration (no 'for' clause) -} - -run demo \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be b/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be deleted file mode 100644 index e6eb4bf16..000000000 --- a/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be +++ /dev/null @@ -1,80 +0,0 @@ -# Generated Berry code from Animation DSL -# Source: aurora_borealis.anim -# -# This file was automatically generated by compile_all_examples.sh -# Do not edit manually - changes will be overwritten - -import animation - -# Aurora Borealis - Northern lights simulation -# Flowing green and purple aurora colors -#strip length 60 -# Define aurora color palette -# Auto-generated strip initialization (using Tasmota configuration) -var engine = animation.init_strip() - -var aurora_colors_ = bytes( - "00000022" # Dark night sky - "40004400" # Dark green - "8000AA44" # Aurora green - "C044AA88" # Light green - "FF88FFAA" # Bright aurora -) -# Secondary purple palette -var aurora_purple_ = bytes( - "00220022" # Dark purple - "40440044" # Medium purple - "808800AA" # Bright purple - "C0AA44CC" # Light purple - "FFCCAAFF" # Pale purple -) -# Base aurora animation with slow flowing colors -var aurora_base_ = animation.rich_palette_animation(engine) -aurora_base_.palette = aurora_colors_ # palette -aurora_base_.cycle_period = 10000 # cycle period -aurora_base_.transition_type = animation.SINE # transition type (explicit for clarity) -aurora_base_.brightness = 180 # brightness (dimmed for aurora effect) -var demo_ = animation.SequenceManager(engine) - .push_play_step(aurora_base_, nil) # infinite duration (no 'for' clause) -engine.add(demo_) -engine.run() - - -#- Original DSL source: -# Aurora Borealis - Northern lights simulation -# Flowing green and purple aurora colors - -#strip length 60 - -# Define aurora color palette -palette aurora_colors = [ - (0, 0x000022) # Dark night sky - (64, 0x004400) # Dark green - (128, 0x00AA44) # Aurora green - (192, 0x44AA88) # Light green - (255, 0x88FFAA) # Bright aurora -] - -# Secondary purple palette -palette aurora_purple = [ - (0, 0x220022) # Dark purple - (64, 0x440044) # Medium purple - (128, 0x8800AA) # Bright purple - (192, 0xAA44CC) # Light purple - (255, 0xCCAAFF) # Pale purple -] - -# Base aurora animation with slow flowing colors -animation aurora_base = rich_palette_animation( - palette=aurora_colors # palette - cycle_period=10s # cycle period - transition_type=SINE # transition type (explicit for clarity) - brightness=180 # brightness (dimmed for aurora effect) -) - -sequence demo { - play aurora_base # infinite duration (no 'for' clause) -} - -run demo --# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md b/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md new file mode 100644 index 000000000..275bf06c4 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md @@ -0,0 +1,2675 @@ +# DSL Compilation Summary + +## Overview + +This document contains a summary of the DSL compilation process, including symbol tables and compilation outputs for all processed files. + +## heartbeat_pulse.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------|----------------------------|---------|-----------|------------| +| `background` | animation | | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `center_pulse` | animation | | | | +| `heart_bg` | color | | | | +| `heart_glow` | animation | | | | +| `heartbeat1` | animation | | | | +| `heartbeat2` | animation | | | | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFF110000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='heart_bg_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='150', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 150 + provider.duty_cycle = 20 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFCC0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='180', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='150', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 180 + provider.duration = 150 + provider.duty_cycle = 15 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFF660000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 30 + provider.max_value = 100 + provider.duration = 1000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 200 + provider.duration = 100 + provider.duty_cycle = 10 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +SUCCESS +``` + +## twinkle_stars.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|-----------------------|---------|-----------|------------| +| `background` | animation | | | | +| `bright_flash` | animation | | | | +| `night_sky` | color | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `stars` | animation | | | | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFF000033', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='night_sky_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFAA', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='300', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## sequence_assignments_demo.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------------|----------------------------|---------|-----------|------------| +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `blue` | color | ✓ | | | +| `brightness_demo` | sequence | | | | +| `brightness_high` | variable | | | | +| `brightness_low` | variable | | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | +| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cosine_val` | value_provider | | | | +| `cylon_eye` | sequence | | | | +| `eye_color` | color | | | | +| `eye_palette` | palette | | | | +| `green` | color | ✓ | | | +| `main_demo` | sequence | | | | +| `multi_change` | sequence | | | | +| `pulsating_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `pulse_demo` | animation | | | | +| `red_eye` | animation | | | | +| `red` | color | ✓ | | | +| `repeat_demo` | sequence | | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `triangle_val` | value_provider | | | | +| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `violet` | color | ✓ | | | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - 2' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - 2' +> process_value context=1 result=ExpressionResult(expr='5000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.triangle(engine) + provider.min_value = 0 + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) + provider.duration = 5000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - 2' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - 2' +> process_value context=1 result=ExpressionResult(expr='5000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.cosine_osc(engine) + provider.min_value = 0 + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) + provider.duration = 5000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='64', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='eye_palette_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='eye_color_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='cosine_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFF0000FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='triangle_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='cosine_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_low_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_high_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_low_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='0xFF008000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_high_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='0xFF0000FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=6 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='triangle_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='cosine_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='triangle_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='cosine_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_low_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_high_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_low_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='0xFF008000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_high_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## fire_flicker.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|----------------------------|---------|-----------|------------| +| `LINEAR` | constant | ✓ | | | +| `fire_base_color` | color | | | | +| `fire_base` | animation | | | | +| `fire_colors` | palette | | | | +| `fire_flicker` | animation | | | | +| `flicker_pattern` | color | | | | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='fire_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='fire_base_color_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='180', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='800', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 180 + provider.max_value = 255 + provider.duration = 800 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='fire_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='flicker_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## demo_shutter_rainbow_central.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------|---------|-----------|------------| +| `blue` | color | ✓ | | | +| `green` | color | ✓ | | | +| `indigo` | color | ✓ | | | +| `orange` | color | ✓ | | | +| `rainbow_with_white` | palette | | | | +| `red` | color | ✓ | | | +| `shutter_central` | template | | | | +| `white` | color | ✓ | | | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='(strip_len_ + 1) / 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure '(strip_len_ + 1) / 2' +=== transform_expression_for_closure '(animation.resolve(strip_len_) + 1) / 2' +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = strip_len_ + provider.duration = duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len2_ - (shutter_size_ + 1) / 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len2_ - (shutter_size_ + 1) / 2' +=== transform_expression_for_closure 'animation.resolve(strip_len2_) - (animation.resolve(shutter_size_) + 1) / 2' +> process_value context=1 result=ExpressionResult(expr='shutter_size_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len2_ - (strip_len_ - shutter_size_ + 1) / 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len2_ - (strip_len_ - shutter_size_ + 1) / 2' +=== transform_expression_for_closure 'animation.resolve(strip_len2_) - (animation.resolve(strip_len_) - animation.resolve(shutter_size_) + 1) / 2' +> process_value context=1 result=ExpressionResult(expr='strip_len_ - shutter_size_', funcs=false, vars=true, props=false, comp=true, type=value_provider, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - shutter_size_' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - animation.resolve(shutter_size_)' +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=6 result=ExpressionResult(expr='col1_.palette_size', funcs=false, vars=false, props=true, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=6 result=ExpressionResult(expr='col1_.palette_size', funcs=false, vars=false, props=true, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='rainbow_with_white_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=4 result=ExpressionResult(expr='1500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## disco_strobe.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|----------------------------|---------|-----------|------------| +| `LINEAR` | constant | ✓ | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `disco_base` | animation | | | | +| `disco_colors` | palette | | | | +| `disco_pulse` | animation | | | | +| `disco_rich_color` | color | | | | +| `disco_sparkles` | animation | | | | +| `pulse_pattern` | color | | | | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `sawtooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `sparkle_pattern` | color | | | | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `white_flash` | animation | | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='disco_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='disco_rich_color_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 100 + provider.duty_cycle = 30 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='50', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 50 + provider.duty_cycle = 10 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='disco_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='sparkle_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='80', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='disco_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='800', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='pulse_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='56', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 4 + provider.max_value = 56 + provider.duration = 2000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +SUCCESS +``` + +## test_simple_math.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|----------------------------|---------|-----------|------------| +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `x` | variable | | | | +| `y` | variable | | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='x_ + 4', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'x_ + 4' +=== transform_expression_for_closure 'animation.resolve(x_) + 4' +SUCCESS +``` + +## matrix_rain.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|-----------------------|---------|-----------|------------| +| `LINEAR` | constant | ✓ | | | +| `background` | animation | | | | +| `code_flash` | animation | | | | +| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `matrix_bg` | color | | | | +| `matrix_greens` | palette | | | | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `stream1_pattern` | color | | | | +| `stream1` | animation | | | | +| `stream2_pattern` | color | | | | +| `stream2` | animation | | | | +| `stream3_pattern` | color | | | | +| `stream3` | animation | | | | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFF000000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='matrix_bg_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='50', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='matrix_greens_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='stream1_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='matrix_greens_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1800', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='stream2_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='matrix_greens_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='180', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='stream3_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1800', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFF00FFAA', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='150', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## demo_shutter_rainbow2.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|----------------------------|---------|-----------|------------| +| `PALETTE_RAINBOW` | palette_constant | ✓ | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `col1` | color | | | | +| `col2` | color | | | | +| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | +| `duration` | variable | | | | +| `sawtooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `shutter_animation` | animation | | | | +| `shutter_run` | sequence | | | | +| `shutter_size` | value_provider | | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = strip_len_ + provider.duration = duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='animation.PALETTE_RAINBOW', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.PALETTE_RAINBOW', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='shutter_size_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## scanner_larson.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------|----------------------------|---------|-----------|------------| +| `background` | animation | | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `pos_test` | value_provider | | | | +| `scanner_bg` | color | | | | +| `scanner_trail` | animation | | | | +| `scanner` | animation | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFF110000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='scanner_bg_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='57', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.triangle(engine) + provider.min_value = 2 + provider.max_value = 57 + provider.duration = 2000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFF660000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='57', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.triangle(engine) + provider.min_value = 2 + provider.max_value = 57 + provider.duration = 2000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='pos_test_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='128', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## test_complex_template.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|----------|---------|-----------|------------| +| `fire_palette` | palette | | | | +| `ocean_palette` | palette | | | | +| `rainbow_pulse` | template | | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='pal1_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='cycle_color_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='back_color_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='fire_palette_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=4 result=ExpressionResult(expr='ocean_palette_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=4 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='0xFF001100', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +SUCCESS +``` + +## demo_shutter_rainbow_leftright.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------|---------|-----------|------------| +| `blue` | color | ✓ | | | +| `green` | color | ✓ | | | +| `indigo` | color | ✓ | | | +| `orange` | color | ✓ | | | +| `rainbow_with_white` | palette | | | | +| `red` | color | ✓ | | | +| `shutter_lr` | template | | | | +| `white` | color | ✓ | | | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = strip_len_ + provider.duration = duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='shutter_size_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='rainbow_with_white_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=4 result=ExpressionResult(expr='1500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## candy_cane.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------|----------------------------|---------|-----------|------------| +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `candy_red` | color | | | | +| `candy_white` | color | | | | +| `move_speed` | variable | | | | +| `sawtooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `stripe10` | animation | | | | +| `stripe1` | animation | | | | +| `stripe2` | animation | | | | +| `stripe3` | animation | | | | +| `stripe4` | animation | | | | +| `stripe5` | animation | | | | +| `stripe6` | animation | | | | +| `stripe7` | animation | | | | +| `stripe8` | animation | | | | +| `stripe9` | animation | | | | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=2 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_red_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_white_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='9', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_red_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_white_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='21', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_red_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='27', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_white_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='33', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_red_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='39', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_white_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='45', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_red_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='51', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='candy_white_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='57', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='63', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 3 + provider.max_value = 63 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='9', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='69', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 9 + provider.max_value = 69 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='75', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 15 + provider.max_value = 75 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='21', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='81', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 21 + provider.max_value = 81 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='27', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='87', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 27 + provider.max_value = 87 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='33', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='93', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 33 + provider.max_value = 93 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='39', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='99', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 39 + provider.max_value = 99 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='45', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='105', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 45 + provider.max_value = 105 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='51', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='111', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 51 + provider.max_value = 111 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='57', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='117', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='move_speed_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 57 + provider.max_value = 117 + provider.duration = move_speed_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +SUCCESS +``` + +## fail_color_predefined.anim + +**Status:** ❌ Failed + +### Compilation Output + +``` +DSL compilation failed +Errors: + Line 4: Cannot redefine predefined color 'red'. Use a different name like 'red_custom' or 'my_red' +``` + +## test_shutter_rainbow_bidir.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------|---------|-----------|------------| +| `blue` | color | ✓ | | | +| `green` | color | ✓ | | | +| `indigo` | color | ✓ | | | +| `orange` | color | ✓ | | | +| `rainbow_with_white` | palette | | | | +| `red` | color | ✓ | | | +| `shutter_bidir` | template | | | | +| `white` | color | ✓ | | | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ + 0', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ + 0' +=== transform_expression_for_closure 'animation.resolve(strip_len_) + 0' +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) + 0 end) + provider.duration = duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='shutter_size_ + 0', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'shutter_size_ + 0' +=== transform_expression_for_closure 'animation.resolve(shutter_size_) + 0' +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - shutter_size_', funcs=false, vars=true, props=false, comp=true, type=value_provider, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - shutter_size_' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - animation.resolve(shutter_size_)' +> process_value context=1 result=ExpressionResult(expr='0 + 0', funcs=false, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=6 result=ExpressionResult(expr='col1_.palette_size', funcs=false, vars=false, props=true, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=6 result=ExpressionResult(expr='col1_.palette_size', funcs=false, vars=false, props=true, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='rainbow_with_white_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=4 result=ExpressionResult(expr='1500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## property_assignment_demo.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------|-----------------------|---------|-----------|------------| +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `blue_custom` | color | | | | +| `center_pulse` | animation | | | | +| `demo` | sequence | | | | +| `green_custom` | color | | | | +| `left_pulse` | animation | | | | +| `red_custom` | color | | | | +| `right_pulse` | animation | | | | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=2 result=ExpressionResult(expr='0xFF0000FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=2 result=ExpressionResult(expr='0xFF00FF00', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='red_custom_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='blue_custom_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='green_custom_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='45', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='150', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## cylon_generic.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------|----------|---------|-----------|------------| +| `cylon_effect` | template | | | | +| `red` | color | ✓ | | | +| `transparent` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='eye_color_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='back_color_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(-1)', funcs=false, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - 2' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - 2' +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.cosine_osc(engine) + provider.min_value = (-1) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) + provider.duration = duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=4 result=ExpressionResult(expr='0x00000000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=4 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## cylon_rainbow.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------|----------------------------|---------|-----------|------------| +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | +| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cosine_val` | value_provider | | | | +| `cylon_eye` | sequence | | | | +| `eye_color` | color | | | | +| `eye_duration` | variable | | | | +| `eye_palette` | palette | | | | +| `green` | color | ✓ | | | +| `red_eye` | animation | | | | +| `red` | color | ✓ | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `triangle_val` | value_provider | | | | +| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `violet` | color | ✓ | | | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='5000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='eye_palette_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - 2' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - 2' +> process_value context=1 result=ExpressionResult(expr='eye_duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.cosine_osc(engine) + provider.min_value = 0 + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) + provider.duration = eye_duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - 2' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - 2' +> process_value context=1 result=ExpressionResult(expr='eye_duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.triangle(engine) + provider.min_value = 0 + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) + provider.duration = eye_duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='eye_color_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='cosine_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='triangle_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='cosine_val_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## demo_shutter_rainbow_bidir.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------|---------|-----------|------------| +| `blue` | color | ✓ | | | +| `green` | color | ✓ | | | +| `indigo` | color | ✓ | | | +| `orange` | color | ✓ | | | +| `rainbow_with_white` | palette | | | | +| `red` | color | ✓ | | | +| `shutter_bidir` | template | | | | +| `white` | color | ✓ | | | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = strip_len_ + provider.duration = duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='shutter_size_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - shutter_size_', funcs=false, vars=true, props=false, comp=true, type=value_provider, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - shutter_size_' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - animation.resolve(shutter_size_)' +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=6 result=ExpressionResult(expr='col1_.palette_size', funcs=false, vars=false, props=true, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=6 result=ExpressionResult(expr='col1_.palette_size', funcs=false, vars=false, props=true, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='rainbow_with_white_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=4 result=ExpressionResult(expr='1500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## christmas_tree.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|----------------------------|---------|-----------|------------| +| `LINEAR` | constant | ✓ | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `garland_pattern` | color | | | | +| `garland` | animation | | | | +| `ornament_colors` | palette | | | | +| `ornament_pattern` | color | | | | +| `ornaments` | animation | | | | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `snow_sparkles` | animation | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `tree_base` | animation | | | | +| `tree_green` | color | | | | +| `tree_star` | animation | | | | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFF006600', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='tree_green_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='ornament_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='ornament_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='800', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFF00', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='58', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 200 + provider.max_value = 255 + provider.duration = 2000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='400', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='ornament_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='garland_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## plasma_wave.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|----------------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `plasma_base` | animation | | | | +| `plasma_colors` | palette | | | | +| `plasma_wave1` | animation | | | | +| `plasma_wave2` | animation | | | | +| `plasma_wave3` | animation | | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `wave1_pattern` | color | | | | +| `wave2_pattern` | color | | | | +| `wave3_pattern` | color | | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='plasma_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='plasma_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='wave1_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='40', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 0 + provider.max_value = 40 + provider.duration = 8000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='plasma_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='180', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='wave2_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='45', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='45', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 45 + provider.max_value = 15 + provider.duration = 10000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='plasma_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='220', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='wave3_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='50', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 20 + provider.max_value = 50 + provider.duration = 6000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='150', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 150 + provider.max_value = 255 + provider.duration = 12000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +SUCCESS +``` + +## ocean_waves.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|----------------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `foam` | animation | | | | +| `ocean_base` | animation | | | | +| `ocean_colors` | palette | | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `sawtooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `wave1_pattern` | color | | | | +| `wave1` | animation | | | | +| `wave2_pattern` | color | | | | +| `wave2` | animation | | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='ocean_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='ocean_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='wave1_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='48', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = 48 + provider.duration = 5000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='ocean_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='180', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='wave2_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='52', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='52', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='7000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 52 + provider.max_value = 8 + provider.duration = 7000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='300', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## swipe_rainbow.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-------------------|----------------------------|---------|-----------|------------| +| `blue` | color | ✓ | | | +| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | +| `green` | color | ✓ | | | +| `indigo` | color | ✓ | | | +| `olivary` | color | | | | +| `orange` | color | ✓ | | | +| `palette_olivary` | palette | | | | +| `red` | color | ✓ | | | +| `slide_colors` | sequence | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `swipe_animation` | animation | | | | +| `violet` | color | ✓ | | | +| `white` | color | ✓ | | | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='palette_olivary_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='olivary_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## meteor_shower.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|-----------------------|---------|-----------|------------| +| `background` | animation | | | | +| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `meteor1` | animation | | | | +| `meteor2` | animation | | | | +| `meteor3` | animation | | | | +| `meteor4` | animation | | | | +| `meteor_flash` | animation | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `space_bg` | color | | | | +| `stars` | animation | | | | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFF000011', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='space_bg_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFAA00', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFAAAAFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1800', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFAAAA', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='14', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFCCCCCC', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='25', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## palette_demo.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|-----------------------|---------|-----------|------------| +| `PALETTE_FOREST` | palette_constant | ✓ | | | +| `fire_anim` | animation | | | | +| `fire_colors` | palette | | | | +| `forest_anim` | animation | | | | +| `ocean_anim` | animation | | | | +| `ocean_colors` | palette | | | | +| `palette_demo` | sequence | | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='fire_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='ocean_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.PALETTE_FOREST', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=6 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## fail_value_provider_add.anim + +**Status:** ❌ Failed + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.linear(engine) + nil', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation.linear(engine) + nil' +=== transform_expression_for_closure 'animation.linear(engine) + nil' +> process_value context=1 result=ExpressionResult(expr='animation.triangle(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='animation.linear(engine) + nil', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation.linear(engine) + nil' +=== transform_expression_for_closure 'animation.linear(engine) + nil' +DSL compilation failed +Errors: + Line 4: Function 'triangle' cannot be used in computed expressions. This creates a new instance at each evaluation. Use either: + set var_name = triangle() # Single function call + set computed = (existing_var + 1) / 2 # Computation with existing values + Line 6: Function 'triangle' cannot be used in computed expressions. This creates a new instance at each evaluation. Use either: + set var_name = triangle() # Single function call + set computed = (existing_var + 1) / 2 # Computation with existing values +``` + +## fail_name_predefined.anim + +**Status:** ❌ Failed + +### Compilation Output + +``` +DSL compilation failed +Errors: + Line 4: Cannot redefine built-in symbol 'abs' (type: 4). Use a different name like 'abs_custom' or 'my_abs' +``` + +## test_shutter_rainbow_central.anim + +**Status:** ❌ Failed + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='(strip_len_ + 1) / 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure '(strip_len_ + 1) / 2' +=== transform_expression_for_closure '(animation.resolve(strip_len_) + 1) / 2' +> process_value context=1 result=ExpressionResult(expr='1 + nil', funcs=false, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(nil)', funcs=false, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = strip_len_ + provider.duration = duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='colors_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col2_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='col1_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len3_ - shutter_size_ / 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len3_ - shutter_size_ / 2' +=== transform_expression_for_closure 'animation.resolve(strip_len3_) - animation.resolve(shutter_size_) / 2' +> process_value context=1 result=ExpressionResult(expr='shutter_size_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='rainbow_with_white_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=4 result=ExpressionResult(expr='1500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +DSL compilation failed +Errors: + Line 38: Template 'shutter_central' body error: Line 12: Function 'strip_length' cannot be used in computed expressions. This creates a new instance at each evaluation. Use either: + set var_name = strip_length() # Single function call + set computed = (existing_var + 1) / 2 # Computation with existing values + Line 38: Template 'shutter_central' body error: Line 13: Function 'strip_length' cannot be used in computed expressions. This creates a new instance at each evaluation. Use either: + set var_name = strip_length() # Single function call + set computed = (existing_var + 1) / 2 # Computation with existing values + Line 38: Template 'shutter_central' body error: Line 13: Expected ')' +``` + +## sunrise_sunset.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|----------------------------|---------|-----------|------------| +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `daylight_colors` | palette | | | | +| `daylight_cycle` | animation | | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `stars` | animation | | | | +| `sun_glow` | animation | | | | +| `sun_position` | animation | | | | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='daylight_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='60000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFAA', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='55', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 5 + provider.max_value = 55 + provider.duration = 30000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 30000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFFCC88', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='16', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='55', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 5 + provider.max_value = 55 + provider.duration = 30000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='150', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 0 + provider.max_value = 150 + provider.duration = 30000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 255 + provider.max_value = 0 + provider.duration = 30000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +SUCCESS +``` + +## simple_palette.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|-----------------------|---------|-----------|------------| +| `blue` | color | ✓ | | | +| `demo` | sequence | | | | +| `green` | color | ✓ | | | +| `orange` | color | ✓ | | | +| `rainbow_cycle` | animation | | | | +| `rainbow` | palette | | | | +| `red` | color | ✓ | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='rainbow_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## demo_pattern_fire_opacity.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|------------------------------|----------------------------|---------|-----------|------------| +| `background` | animation | | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `eye_mask` | animation | | | | +| `eye_pos` | value_provider | | | | +| `fire_color` | color | | | | +| `fire_colors` | palette | | | | +| `fire_pattern` | animation | | | | +| `palette_gradient_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `transparent` | color | ✓ | | | +| `white` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='fire_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFF000088', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(-1)', funcs=false, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - 2' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - 2' +> process_value context=1 result=ExpressionResult(expr='6000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.cosine_osc(engine) + provider.min_value = (-1) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) + provider.duration = 6000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0x00000000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='eye_pos_', funcs=false, vars=true, props=false, comp=false, type=value_provider, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='fire_color_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ / 4', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ / 4' +=== transform_expression_for_closure 'animation.resolve(strip_len_) / 4' +> process_value context=1 result=ExpressionResult(expr='eye_mask_', funcs=false, vars=true, props=false, comp=false, type=animation, instance=nil) +SUCCESS +``` + +## neon_glow.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|----------------------------|---------|-----------|------------| +| `LINEAR` | constant | ✓ | | | +| `arc_sparkles` | animation | | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `neon_colors` | palette | | | | +| `neon_main` | animation | | | | +| `neon_surge` | animation | | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `segment1` | animation | | | | +| `segment2` | animation | | | | +| `segment3` | animation | | | | +| `segment_pattern` | color | | | | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='neon_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='220', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 220 + provider.max_value = 255 + provider.duration = 200 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='50', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 50 + provider.duty_cycle = 2 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='neon_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.LINEAR', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='segment_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='segment_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='24', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='segment_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='42', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFAAAAFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## cylon_red_eye.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------|----------------------------|---------|-----------|------------| +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `red_eye` | animation | | | | +| `red` | color | ✓ | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - 2' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - 2' +> process_value context=1 result=ExpressionResult(expr='5000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.cosine_osc(engine) + provider.min_value = 0 + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) + provider.duration = 5000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## import_demo.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|------------------|----------------------------|---------|-----------|------------| +| `abs` | math_function | ✓ | | ✓ | +| `blue` | color | ✓ | | | +| `breathing_blue` | animation | | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `dynamic_green` | animation | | | | +| `green` | color | ✓ | | | +| `import_demo` | sequence | | | | +| `max` | math_function | ✓ | | ✓ | +| `min` | math_function | ✓ | | ✓ | +| `rand_demo` | user_function | ✓ | | ✓ | +| `random_red` | animation | | | | +| `red` | color | ✓ | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=5 result=ExpressionResult(expr='animation.get_user_function('rand_demo')(engine)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation.get_user_function('rand_demo')(engine)' +=== transform_expression_for_closure 'animation.get_user_function('rand_demo')(engine)' +> process_value context=1 result=ExpressionResult(expr='0xFF0000FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=4 result=ExpressionResult(expr='50', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='animation.get_user_function('rand_demo')(engine) + 100', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='animation._math.max(50, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100))', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.max(50, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100))' +=== transform_expression_for_closure 'animation._math.max(50, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100))' +> process_value context=1 result=ExpressionResult(expr='0xFF008000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=4 result=ExpressionResult(expr='animation.get_user_function('rand_demo')(engine) - 128', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='animation._math.abs(animation.get_user_function('rand_demo')(engine) - 128) + 64', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.abs(animation.get_user_function('rand_demo')(engine) - 128) + 64' +=== transform_expression_for_closure 'animation._math.abs(animation.get_user_function('rand_demo')(engine) - 128) + 64' +SUCCESS +``` + +## lava_lamp.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|----------------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `blob1_pattern` | color | | | | +| `blob2_pattern` | color | | | | +| `blob3_pattern` | color | | | | +| `heat_shimmer` | animation | | | | +| `lava_base` | animation | | | | +| `lava_blob1` | animation | | | | +| `lava_blob2` | animation | | | | +| `lava_blob3` | animation | | | | +| `lava_colors` | palette | | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `shimmer_pattern` | color | | | | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='lava_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='180', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='lava_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='blob1_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='9', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='18', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='9', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='51', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 9 + provider.max_value = 51 + provider.duration = 20000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='lava_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='220', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='blob2_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='46', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='14', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='46', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='14', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='25000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 46 + provider.max_value = 14 + provider.duration = 25000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='lava_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='blob3_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='25', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='25', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='35', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='18000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 25 + provider.max_value = 35 + provider.duration = 18000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='lava_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='shimmer_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='1500', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## police_lights.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------|----------------------------|---------|-----------|------------| +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `half_length` | variable | | | | +| `left_red` | animation | | | | +| `right_blue` | animation | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `white_strobe` | animation | | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='30', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='400', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='50', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 400 + provider.duty_cycle = 50 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFF0000FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='45', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='400', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='50', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 255 + provider.max_value = 0 + provider.duration = 400 + provider.duty_cycle = 50 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 100 + provider.duty_cycle = 5 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## user_functions_demo.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------|----------------------------|---------|-----------|------------| +| `abs` | math_function | ✓ | | ✓ | +| `blue` | color | ✓ | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cyan` | color | ✓ | | | +| `max` | math_function | ✓ | | ✓ | +| `min` | math_function | ✓ | | ✓ | +| `orange` | color | ✓ | | | +| `purple` | color | ✓ | | | +| `rand_demo` | user_function | ✓ | | ✓ | +| `random_base` | animation | | | | +| `random_bounded` | animation | | | | +| `random_complex` | animation | | | | +| `random_multi` | animation | | | | +| `random_variation` | animation | | | | +| `round` | math_function | ✓ | | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `white` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='0xFF0000FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='animation.get_user_function('rand_demo')(engine)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation.get_user_function('rand_demo')(engine)' +=== transform_expression_for_closure 'animation.get_user_function('rand_demo')(engine)' +> process_value context=1 result=ExpressionResult(expr='0xFFFFA500', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='50', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='animation.get_user_function('rand_demo')(engine) + 100', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='animation._math.max(50, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100))', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.max(50, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100))' +=== transform_expression_for_closure 'animation._math.max(50, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100))' +> process_value context=1 result=ExpressionResult(expr='0xFF800080', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='animation.get_user_function('rand_demo')(engine) - 128', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='animation._math.abs(animation.get_user_function('rand_demo')(engine) - 128) + 64', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.abs(animation.get_user_function('rand_demo')(engine) - 128) + 64' +=== transform_expression_for_closure 'animation._math.abs(animation.get_user_function('rand_demo')(engine) - 128) + 64' +> process_value context=1 result=ExpressionResult(expr='0xFF00FFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='animation.get_user_function('rand_demo')(engine)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='animation._math.max(100, animation.get_user_function('rand_demo')(engine))', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.max(100, animation.get_user_function('rand_demo')(engine))' +=== transform_expression_for_closure 'animation._math.max(100, animation.get_user_function('rand_demo')(engine))' +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='animation.get_user_function('rand_demo')(engine) - 100', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='(animation.get_user_function('rand_demo')(engine) + 128) / 2 + animation._math.abs(animation.get_user_function('rand_demo')(engine) - 100)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='animation._math.round((animation.get_user_function('rand_demo')(engine) + 128) / 2 + animation._math.abs(animation.get_user_function('rand_demo')(engine) - 100))', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.round((animation.get_user_function('rand_demo')(engine) + 128) / 2 + animation._math.abs(animation.get_user_function('rand_demo')(engine) - 100))' +=== transform_expression_for_closure 'animation._math.round((animation.get_user_function('rand_demo')(engine) + 128) / 2 + animation._math.abs(animation.get_user_function('rand_demo')(engine) - 100))' +SUCCESS +``` + +## test_template_simple.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------|----------|---------|-----------|------------| +| `pulse_effect` | template | | | | +| `red` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='base_color_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=4 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='204', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## test_compute_multiple.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|----------------------------|---------|-----------|------------| +| `a` | variable | | | | +| `abs` | math_function | ✓ | | ✓ | +| `b` | variable | | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='strip_len_ / 4', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ / 4' +=== transform_expression_for_closure 'animation.resolve(strip_len_) / 4' +> process_value context=4 result=ExpressionResult(expr='strip_len_ / 4', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation._math.abs(strip_len_ / 4)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.abs(strip_len_ / 4)' +=== transform_expression_for_closure 'animation._math.abs(animation.resolve(strip_len_) / 4)' +SUCCESS +``` + +## lightning_storm.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|----------------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `afterglow` | animation | | | | +| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `distant_flash` | animation | | | | +| `lightning_main` | animation | | | | +| `lightning_partial` | animation | | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `storm_bg` | animation | | | | +| `storm_colors` | palette | | | | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='storm_colors_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='80', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 80 + provider.duty_cycle = 3 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFAA', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='30', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='20', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='15', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='120', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 200 + provider.duration = 120 + provider.duty_cycle = 4 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='0xFF4444FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='80', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 80 + provider.duration = 200 + provider.duty_cycle = 8 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=5 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFF666699', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='300', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## test_cylon_generic.anim + +**Status:** ❌ Failed + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='nil', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=4 result=ExpressionResult(expr='strip_len_ / 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation._math.abs(strip_len_ / 2)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.abs(strip_len_ / 2)' +=== transform_expression_for_closure 'animation._math.abs(animation.resolve(strip_len_) / 2)' +> process_value context=1 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.strip_length(engine) + provider.is_running = 0 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='animation.sawtooth(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='animation.triangle(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=4 result=ExpressionResult(expr='osc1_ + osc2_', funcs=false, vars=true, props=false, comp=true, type=value_provider, instance=nil) +> process_value context=4 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation._math.scale(osc1_ + osc2_, 0, 200, 0, 255)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.scale(osc1_ + osc2_, 0, 200, 0, 255)' +=== transform_expression_for_closure 'animation._math.scale(animation.resolve(osc1_) + animation.resolve(osc2_), 0, 200, 0, 255)' +> process_value context=1 result=ExpressionResult(expr='animation.sawtooth(engine) + nil', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation.sawtooth(engine) + nil' +=== transform_expression_for_closure 'animation.sawtooth(engine) + nil' +> process_value context=1 result=ExpressionResult(expr='eye_color_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='back_color_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(-1)', funcs=false, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ - 2', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ - 2' +=== transform_expression_for_closure 'animation.resolve(strip_len_) - 2' +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.cosine_osc(engine) + provider.min_value = (-1) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) + provider.duration = duration_ + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +> process_value context=1 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +DSL compilation failed +Errors: + Line 29: Template 'cylon_effect' body error: Line 9: Unknown function or identifier 'abs2'. Make sure it's defined before use. + Line 29: Template 'cylon_effect' body error: Line 17: Function 'triangle' cannot be used in computed expressions. This creates a new instance at each evaluation. Use either: + set var_name = triangle() # Single function call + set computed = (existing_var + 1) / 2 # Computation with existing values +``` + +## computed_values_demo.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-------------------|----------------------------|---------|-----------|------------| +| `abs` | math_function | ✓ | | ✓ | +| `base_speed` | variable | | | | +| `blue` | color | ✓ | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `red` | color | ✓ | | | +| `stream1` | animation | | | | +| `stream2` | animation | | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='animation.strip_length(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=StripLengthProvider) +> process_value context=1 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=4 result=ExpressionResult(expr='strip_len_ / 4', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation._math.abs(strip_len_ / 4)', funcs=true, vars=false, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'animation._math.abs(strip_len_ / 4)' +=== transform_expression_for_closure 'animation._math.abs(animation.resolve(strip_len_) / 4)' +> process_value context=1 result=ExpressionResult(expr='1.5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2.0', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFF0000FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='strip_len_ / 8 + (2 * strip_len_) - 10', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ / 8 + (2 * strip_len_) - 10' +=== transform_expression_for_closure 'animation.resolve(strip_len_) / 8 + (2 * animation.resolve(strip_len_)) - 10' +> process_value context=1 result=ExpressionResult(expr='base_speed_ * 1.5', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'base_speed_ * 1.5' +=== transform_expression_for_closure 'animation.resolve(base_speed_) * 1.5' +> process_value context=1 result=ExpressionResult(expr='(-1)', funcs=false, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='strip_len_ / 5', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ / 5' +=== transform_expression_for_closure 'animation.resolve(strip_len_) / 5' +> process_value context=5 result=ExpressionResult(expr='strip_len_ * 4', funcs=false, vars=true, props=false, comp=true, type=variable, instance=nil) ++++ transform_expression_for_closure 'strip_len_ * 4' +=== transform_expression_for_closure 'animation.resolve(strip_len_) * 4' +SUCCESS +``` + +## breathing_colors.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|----------------------------|---------|-----------|------------| +| `breathe_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `breathe_blue` | color | | | | +| `breathe_green` | color | | | | +| `breathe_orange` | color | | | | +| `breathe_palette` | palette | | | | +| `breathe_purple` | color | | | | +| `breathe_red` | color | | | | +| `breathing` | animation | | | | +| `palette_pattern` | color | | | | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=2 result=ExpressionResult(expr='0xFF00FF00', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=2 result=ExpressionResult(expr='0xFF0000FF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=2 result=ExpressionResult(expr='0xFF800080', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=2 result=ExpressionResult(expr='0xFFFF8000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='breathe_palette_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='15000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='palette_pattern_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='100', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='255', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='4000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='(def (engine) + var provider = animation.smooth(engine) + provider.min_value = 100 + provider.max_value = 255 + provider.duration = 4000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=value_provider, instance=OscillatorValueProvider) +SUCCESS +``` + +## test_template_simple_reusable.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------|----------|---------|-----------|------------| +| `pulse_effect` | template | | | | +| `red` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='base_color_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='duration_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=5 result=ExpressionResult(expr='brightness_', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='0xFFFF0000', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=4 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=4 result=ExpressionResult(expr='204', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## palette_showcase.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|--------------------------|-----------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `aurora_borealis` | palette | | | | +| `aurora_lights` | animation | | | | +| `black` | color | ✓ | | | +| `blue` | color | ✓ | | | +| `cyan` | color | ✓ | | | +| `fire_effect` | animation | | | | +| `fire_gradient` | palette | | | | +| `navy` | color | ✓ | | | +| `ocean_depths` | palette | | | | +| `ocean_waves` | animation | | | | +| `orange` | color | ✓ | | | +| `palette_showcase` | sequence | | | | +| `purple` | color | ✓ | | | +| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | color_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `sunset_glow` | animation | | | | +| `sunset_sky` | palette | | | | +| `white` | color | ✓ | | | +| `yellow` | color | ✓ | | | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='fire_gradient_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(def (engine) + var provider = animation.rich_palette(engine) + provider.palette = fire_gradient_ + provider.cycle_period = 3000 + return provider +end)(engine)', funcs=true, vars=false, props=false, comp=false, type=color, instance=RichPaletteColorProvider) +> process_value context=1 result=ExpressionResult(expr='ocean_depths_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='200', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='aurora_borealis_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='12000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='180', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='sunset_sky_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='6000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='animation.SINE', funcs=false, vars=true, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='220', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=6 result=ExpressionResult(expr='3', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## rainbow_cycle.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|-----------------------|---------|-----------|------------| +| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | +| `rainbow_animation` | animation | | | | +| `rainbow_cycle` | color | | | | +| `rainbow_palette` | palette | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=1 result=ExpressionResult(expr='rainbow_palette_', funcs=false, vars=true, props=false, comp=false, type=palette, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='rainbow_cycle_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +SUCCESS +``` + +## comet_chase.anim + +**Status:** ✅ Success + +## Symbol Table + +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|-----------------------|---------|-----------|------------| +| `background` | animation | | | | +| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `comet_main` | animation | | | | +| `comet_secondary` | animation | | | | +| `comet_sparkles` | animation | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `space_blue` | color | | | | +| `twinkle_animation` | animation_constructor | ✓ | ⚠️ | ✓ | + +### Compilation Output + +``` +> process_value context=2 result=ExpressionResult(expr='0xFF000066', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='space_blue_', funcs=false, vars=true, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFFFFFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='10', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='2000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='7', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFFF4500', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='3000', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='(-1)', funcs=false, vars=false, props=false, comp=true, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='5', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='0xFFAAAAFF', funcs=false, vars=false, props=false, comp=false, type=color, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='400', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +> process_value context=1 result=ExpressionResult(expr='8', funcs=false, vars=false, props=false, comp=false, type=variable, instance=nil) +SUCCESS +``` + +## Summary + +- **Total files processed:** 47 +- **Successfully compiled:** 42 +- **Failed to compile:** 5 + +### Successful Files + +- ✅ heartbeat_pulse.anim +- ✅ twinkle_stars.anim +- ✅ sequence_assignments_demo.anim +- ✅ fire_flicker.anim +- ✅ demo_shutter_rainbow_central.anim +- ✅ disco_strobe.anim +- ✅ test_simple_math.anim +- ✅ matrix_rain.anim +- ✅ demo_shutter_rainbow2.anim +- ✅ scanner_larson.anim +- ✅ test_complex_template.anim +- ✅ demo_shutter_rainbow_leftright.anim +- ✅ candy_cane.anim +- ✅ test_shutter_rainbow_bidir.anim +- ✅ property_assignment_demo.anim +- ✅ cylon_generic.anim +- ✅ cylon_rainbow.anim +- ✅ demo_shutter_rainbow_bidir.anim +- ✅ christmas_tree.anim +- ✅ plasma_wave.anim +- ✅ ocean_waves.anim +- ✅ swipe_rainbow.anim +- ✅ meteor_shower.anim +- ✅ palette_demo.anim +- ✅ sunrise_sunset.anim +- ✅ simple_palette.anim +- ✅ demo_pattern_fire_opacity.anim +- ✅ neon_glow.anim +- ✅ cylon_red_eye.anim +- ✅ import_demo.anim +- ✅ lava_lamp.anim +- ✅ police_lights.anim +- ✅ user_functions_demo.anim +- ✅ test_template_simple.anim +- ✅ test_compute_multiple.anim +- ✅ lightning_storm.anim +- ✅ computed_values_demo.anim +- ✅ breathing_colors.anim +- ✅ test_template_simple_reusable.anim +- ✅ palette_showcase.anim +- ✅ rainbow_cycle.anim +- ✅ comet_chase.anim + +### Failed Files + +- ❌ fail_color_predefined.anim +- ❌ fail_value_provider_add.anim +- ❌ fail_name_predefined.anim +- ❌ test_shutter_rainbow_central.anim +- ❌ test_cylon_generic.anim + +--- + diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be deleted file mode 100644 index a24c00541..000000000 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be +++ /dev/null @@ -1,144 +0,0 @@ -# Generated Berry code from Animation DSL -# Source: demo_shutter_rainbow.anim -# -# This file was automatically generated by compile_all_examples.sh -# Do not edit manually - changes will be overwritten - -import animation - -# Demo Shutter Rainbow -# -# Shutter from left to right iterating in all colors, then right to left -# Auto-generated strip initialization (using Tasmota configuration) -var engine = animation.init_strip() - -# Template function: shutter_bidir -def shutter_bidir_template(engine, colors_, duration_) - var strip_len_ = animation.strip_length(engine) - var shutter_size_ = (def (engine) - var provider = animation.sawtooth(engine) - provider.min_value = 0 - provider.max_value = strip_len_ - provider.duration = duration_ - return provider - end)(engine) - var col1_ = animation.color_cycle(engine) - col1_.palette = colors_ - col1_.cycle_period = 0 - var col2_ = animation.color_cycle(engine) - col2_.palette = colors_ - col2_.cycle_period = 0 - col2_.next = 1 - # shutter moving from left to right - var shutter_lr_animation_ = animation.beacon_animation(engine) - shutter_lr_animation_.color = col2_ - shutter_lr_animation_.back_color = col1_ - shutter_lr_animation_.pos = 0 - shutter_lr_animation_.beacon_size = shutter_size_ - shutter_lr_animation_.slew_size = 0 - shutter_lr_animation_.priority = 5 - # shutter moving from right to left - var shutter_rl_animation_ = animation.beacon_animation(engine) - shutter_rl_animation_.color = col1_ - shutter_rl_animation_.back_color = col2_ - shutter_rl_animation_.pos = 0 - shutter_rl_animation_.beacon_size = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - self.resolve(shutter_size_) end) - shutter_rl_animation_.slew_size = 0 - shutter_rl_animation_.priority = 5 - var shutter_seq_ = animation.SequenceManager(engine, -1) - .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) - .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) - .push_play_step(shutter_lr_animation_, duration_) - .push_closure_step(def (engine) col1_.next = 1 end) - .push_closure_step(def (engine) col2_.next = 1 end) - ) - .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) - .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) - .push_play_step(shutter_rl_animation_, duration_) - .push_closure_step(def (engine) col1_.next = 1 end) - .push_closure_step(def (engine) col2_.next = 1 end) - ) - engine.add(shutter_seq_) -end - -animation.register_user_function('shutter_bidir', shutter_bidir_template) - -var rainbow_with_white_ = bytes( - "FFFF0000" - "FFFFA500" - "FFFFFF00" - "FF008000" # comma left on-purpose to test transpiler - "FF0000FF" # need for a lighter blue - "FF4B0082" - "FFFFFFFF" -) -shutter_bidir_template(engine, rainbow_with_white_, 1500) -engine.run() - - -#- Original DSL source: -# Demo Shutter Rainbow -# -# Shutter from left to right iterating in all colors, then right to left - -template shutter_bidir { - param colors type palette - param duration - - set strip_len = strip_length() - set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = duration) - - color col1 = color_cycle(palette=colors, cycle_period=0) - color col2 = color_cycle(palette=colors, cycle_period=0) - col2.next = 1 - - # shutter moving from left to right - animation shutter_lr_animation = beacon_animation( - color = col2 - back_color = col1 - pos = 0 - beacon_size = shutter_size - slew_size = 0 - priority = 5 - ) - - # shutter moving from right to left - animation shutter_rl_animation = beacon_animation( - color = col1 - back_color = col2 - pos = 0 - beacon_size = strip_len - shutter_size - slew_size = 0 - priority = 5 - ) - - sequence shutter_seq repeat forever { - repeat col1.palette_size times { - reset shutter_size - play shutter_lr_animation for duration - col1.next = 1 - col2.next = 1 - } - repeat col1.palette_size times { - reset shutter_size - play shutter_rl_animation for duration - col1.next = 1 - col2.next = 1 - } - } - - run shutter_seq -} - -palette rainbow_with_white = [ red - orange - yellow - green, # comma left on-purpose to test transpiler - blue # need for a lighter blue - indigo - white -] - -shutter_bidir(rainbow_with_white, 1.5s) - --# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be index 252c87065..ea200adc3 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be @@ -9,9 +9,6 @@ import animation # Demo Shutter Rainbow # # Shutter from center to both left and right -# Auto-generated strip initialization (using Tasmota configuration) -var engine = animation.init_strip() - # Template function: shutter_central def shutter_central_template(engine, colors_, duration_) var strip_len_ = animation.strip_length(engine) @@ -30,24 +27,43 @@ def shutter_central_template(engine, colors_, duration_) col2_.palette = colors_ col2_.cycle_period = 0 col2_.next = 1 - # shutter moving from left to right - var shutter_central_animation_ = animation.beacon_animation(engine) - shutter_central_animation_.color = col2_ - shutter_central_animation_.back_color = col1_ - shutter_central_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len2_) - animation.resolve(shutter_size_) / 2 end) - shutter_central_animation_.beacon_size = shutter_size_ - shutter_central_animation_.slew_size = 0 - shutter_central_animation_.priority = 5 + # shutter moving in to out + var shutter_inout_animation_ = animation.beacon_animation(engine) + shutter_inout_animation_.color = col2_ + shutter_inout_animation_.back_color = col1_ + shutter_inout_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len2_) - (animation.resolve(shutter_size_) + 1) / 2 end) + shutter_inout_animation_.beacon_size = shutter_size_ + shutter_inout_animation_.slew_size = 0 + shutter_inout_animation_.priority = 5 + # shutter moving out to in + var shutter_outin_animation_ = animation.beacon_animation(engine) + shutter_outin_animation_.color = col1_ + shutter_outin_animation_.back_color = col2_ + shutter_outin_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len2_) - (animation.resolve(strip_len_) - animation.resolve(shutter_size_) + 1) / 2 end) + shutter_outin_animation_.beacon_size = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - animation.resolve(shutter_size_) end) + shutter_outin_animation_.slew_size = 0 + shutter_outin_animation_.priority = 5 var shutter_seq_ = animation.SequenceManager(engine, -1) - .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) - .push_play_step(shutter_central_animation_, duration_) - .push_closure_step(def (engine) col1_.next = 1 end) - .push_closure_step(def (engine) col2_.next = 1 end) + .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) + .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) + .push_play_step(shutter_inout_animation_, duration_) + .push_closure_step(def (engine) col1_.next = 1 end) + .push_closure_step(def (engine) col2_.next = 1 end) + ) + .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) + .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) + .push_play_step(shutter_outin_animation_, duration_) + .push_closure_step(def (engine) col1_.next = 1 end) + .push_closure_step(def (engine) col2_.next = 1 end) + ) engine.add(shutter_seq_) end animation.register_user_function('shutter_central', shutter_central_template) +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + var rainbow_with_white_ = bytes( "FFFF0000" "FFFFA500" @@ -78,21 +94,39 @@ template shutter_central { color col2 = color_cycle(palette=colors, cycle_period=0) col2.next = 1 - # shutter moving from left to right - animation shutter_central_animation = beacon_animation( + # shutter moving in to out + animation shutter_inout_animation = beacon_animation( color = col2 back_color = col1 - pos = strip_len2 - shutter_size / 2 + pos = strip_len2 - (shutter_size + 1) / 2 beacon_size = shutter_size slew_size = 0 priority = 5 ) + # shutter moving out to in + animation shutter_outin_animation = beacon_animation( + color = col1 + back_color = col2 + pos = strip_len2 - (strip_len - shutter_size + 1) / 2 + beacon_size = strip_len - shutter_size + slew_size = 0 + priority = 5 + ) + sequence shutter_seq repeat forever { - restart shutter_size - play shutter_central_animation for duration - col1.next = 1 - col2.next = 1 + repeat col1.palette_size times { + restart shutter_size + play shutter_inout_animation for duration + col1.next = 1 + col2.next = 1 + } + repeat col1.palette_size times { + restart shutter_size + play shutter_outin_animation for duration + col1.next = 1 + col2.next = 1 + } } run shutter_seq diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be b/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be index 251b0d916..ffed52d21 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be @@ -23,11 +23,13 @@ var disco_colors_ = bytes( "FFFF00FF" # Magenta ) # Fast color cycling base -var disco_base_ = animation.rich_palette_animation(engine) -disco_base_.palette = disco_colors_ -disco_base_.cycle_period = 1000 -disco_base_.transition_type = animation.LINEAR -disco_base_.brightness = 255 +var disco_rich_color_ = animation.rich_palette(engine) +disco_rich_color_.palette = disco_colors_ +disco_rich_color_.cycle_period = 1000 +disco_rich_color_.transition_type = animation.LINEAR +disco_rich_color_.brightness = 255 +var disco_base_ = animation.solid(engine) +disco_base_.color = disco_rich_color_ # Add strobe effect disco_base_.opacity = (def (engine) var provider = animation.square(engine) @@ -105,7 +107,8 @@ palette disco_colors = [ ] # Fast color cycling base -animation disco_base = rich_palette_animation(palette=disco_colors, cycle_period=1s, transition_type=LINEAR, brightness=255) +color disco_rich_color = rich_palette(palette=disco_colors, cycle_period=1s, transition_type=LINEAR, brightness=255) +animation disco_base = solid(color=disco_rich_color) # Add strobe effect disco_base.opacity = square(min_value=0, max_value=255, duration=100ms, duty_cycle=30) # Fast strobe diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be b/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be index 4291c3f50..c11f095fa 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be @@ -21,11 +21,13 @@ var fire_colors_ = bytes( "FFFFFF00" # Yellow ) # Create base fire animation with palette -var fire_base_ = animation.rich_palette_animation(engine) -fire_base_.palette = fire_colors_ -fire_base_.cycle_period = 3000 -fire_base_.transition_type = animation.LINEAR -fire_base_.brightness = 255 +var fire_base_color_ = animation.rich_palette(engine) +fire_base_color_.palette = fire_colors_ +fire_base_color_.cycle_period = 3000 +fire_base_color_.transition_type = animation.LINEAR +fire_base_color_.brightness = 255 +var fire_base_ = animation.solid(engine) +fire_base_.color = fire_base_color_ # Add flickering effect with random intensity changes fire_base_.opacity = (def (engine) var provider = animation.smooth(engine) @@ -67,7 +69,8 @@ palette fire_colors = [ ] # Create base fire animation with palette -animation fire_base = rich_palette_animation(palette=fire_colors, cycle_period=3s, transition_type=LINEAR, brightness=255) +color fire_base_color = rich_palette(palette=fire_colors, cycle_period=3s, transition_type=LINEAR, brightness=255) +animation fire_base = solid(color=fire_base_color) # Add flickering effect with random intensity changes fire_base.opacity = smooth(min_value=180, max_value=255, duration=800ms) diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be index b9f8b4d2e..23d756233 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be @@ -42,13 +42,13 @@ import user_functions # Create animations that use imported user functions animation random_red = solid(color=red) -random_red.opacity = user.rand_demo() +random_red.opacity = rand_demo() animation breathing_blue = solid(color=blue) -breathing_blue.opacity = max(50, min(255, user.rand_demo() + 100)) +breathing_blue.opacity = max(50, min(255, rand_demo() + 100)) animation dynamic_green = solid(color=green) -dynamic_green.opacity = abs(user.rand_demo() - 128) + 64 +dynamic_green.opacity = abs(rand_demo() - 128) + 64 # Create a sequence that cycles through the animations sequence import_demo { diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be b/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be index 07fd47878..795b603ca 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be @@ -49,9 +49,13 @@ var sunset_sky_ = bytes( "FFFFFF00" # Sun ) # Create animations using each palette -var fire_effect_ = animation.rich_palette_animation(engine) -fire_effect_.palette = fire_gradient_ -fire_effect_.cycle_period = 3000 +var fire_effect_ = animation.solid(engine) +fire_effect_.color = (def (engine) + var provider = animation.rich_palette(engine) + provider.palette = fire_gradient_ + provider.cycle_period = 3000 + return provider +end)(engine) var ocean_waves_ = animation.rich_palette_animation(engine) ocean_waves_.palette = ocean_depths_ ocean_waves_.cycle_period = 8000 @@ -139,7 +143,7 @@ palette sunset_sky = [ ] # Create animations using each palette -animation fire_effect = rich_palette_animation(palette=fire_gradient, cycle_period=3s) +animation fire_effect = solid(color=rich_palette(palette=fire_gradient, cycle_period=3s)) animation ocean_waves = rich_palette_animation(palette=ocean_depths, cycle_period=8s, transition_type=SINE, brightness=200) diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/run_tests.be b/lib/libesp32/berry_animation/anim_examples/compiled/run_tests.be deleted file mode 100644 index 3770f8e7d..000000000 --- a/lib/libesp32/berry_animation/anim_examples/compiled/run_tests.be +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env berry -# Test runner for compiled DSL examples -# Generated automatically by compile_dsl_examples.be - -import os -import sys - -# Add animation library path -sys.path().push("lib/libesp32/berry_animation/src") - -# Import animation framework -import animation -import animation_dsl - -def run_compiled_example(filename) - print(f"Running {filename}...") - try - var f = open(f"lib/libesp32/berry_animation/anim_examples/compiled/{filename}", "r") - var code = f.read() - f.close() - - var compiled_func = compile(code) - if compiled_func != nil - compiled_func() - print(f" ✓ {filename} executed successfully") - return true - else - print(f" ✗ {filename} failed to compile") - return false - end - except .. as e, msg - print(f" ✗ {filename} execution failed: {msg}") - return false - end -end - -def run_all_examples() - var files = os.listdir("lib/libesp32/berry_animation/anim_examples/compiled") - var success_count = 0 - var total_count = 0 - - for file : files - if string.endswith(file, ".be") - total_count += 1 - if run_compiled_example(file) - success_count += 1 - end - end - end - - print(f"\nTest Results: {success_count}/{total_count} examples ran successfully") -end - -# Run all examples if script is executed directly -run_all_examples() diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_compute_multiple.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_compute_multiple.be new file mode 100644 index 000000000..3017bda49 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_compute_multiple.be @@ -0,0 +1,29 @@ +# Generated Berry code from Animation DSL +# Source: test_compute_multiple.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Computed Values Demo - Example from the original request +# Shows how to use computed values from value providers +# Get the current strip length +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +var strip_len_ = animation.strip_length(engine) +var a_ = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) / 4 end) +var b_ = animation.create_closure_value(engine, def (engine) return animation._math.abs(animation.resolve(strip_len_) / 4) end) + + +#- Original DSL source: +# Computed Values Demo - Example from the original request +# Shows how to use computed values from value providers + +# Get the current strip length +set strip_len = strip_length() +set a = strip_len / 4 +set b = abs(strip_len / 4) + +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be index 9717a1074..00a154e61 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be @@ -9,9 +9,6 @@ import animation # Demo Shutter Rainbow Bidir # # Shutter from left to right iterating in all colors, then right to left -# Auto-generated strip initialization (using Tasmota configuration) -var engine = animation.init_strip() - # Template function: shutter_bidir def shutter_bidir_template(engine, colors_, duration_) var strip_len_ = animation.strip_length(engine) @@ -43,16 +40,18 @@ def shutter_bidir_template(engine, colors_, duration_) shutter_rl_animation_.back_color = col2_ shutter_rl_animation_.pos = 0 shutter_rl_animation_.beacon_size = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - animation.resolve(shutter_size_) end) - shutter_rl_animation_.slew_size = animation.create_closure_value(engine, def (engine) return 0 + 0 end) + shutter_rl_animation_.slew_size = 0 + 0 shutter_rl_animation_.priority = 5 var shutter_seq_ = animation.SequenceManager(engine, -1) .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) + .push_closure_step(def (engine) log(f"begin 1", 3) end) .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) .push_play_step(shutter_lr_animation_, duration_) .push_closure_step(def (engine) col1_.next = 1 end) .push_closure_step(def (engine) col2_.next = 1 end) ) .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) + .push_closure_step(def (engine) log(f"begin 2", 3) end) .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) .push_play_step(shutter_rl_animation_, duration_) .push_closure_step(def (engine) col1_.next = 1 end) @@ -63,6 +62,9 @@ end animation.register_user_function('shutter_bidir', shutter_bidir_template) +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + var rainbow_with_white_ = bytes( "FFFF0000" "FFFFA500" @@ -114,12 +116,14 @@ template shutter_bidir { sequence shutter_seq repeat forever { repeat col1.palette_size times { + log("begin 1") restart shutter_size play shutter_lr_animation for duration col1.next = 1 col2.next = 1 } repeat col1.palette_size times { + log("begin 2") restart shutter_size play shutter_rl_animation for duration col1.next = 1 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_central.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_central.be deleted file mode 100644 index 28b98a072..000000000 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_central.be +++ /dev/null @@ -1,116 +0,0 @@ -# Generated Berry code from Animation DSL -# Source: test_shutter_rainbow_central.anim -# -# This file was automatically generated by compile_all_examples.sh -# Do not edit manually - changes will be overwritten - -import animation - -# Demo Shutter Rainbow -# -# Shutter from center to both left and right -# Auto-generated strip initialization (using Tasmota configuration) -var engine = animation.init_strip() - -# Template function: shutter_central -def shutter_central_template(engine, colors_, duration_) - var strip_len_ = animation.strip_length(engine) - var strip_len2_ = animation.create_closure_value(engine, def (engine) return (animation.resolve(strip_len_) + 1) / 2 end) - # the following is highly discouraged because it creates a new value provider at each tick - var strip_len3_ = animation.create_closure_value(engine, def (engine) return (animation.resolve(animation.strip_length(engine)) + 1) / 2 end) - var shutter_size_ = (def (engine) - var provider = animation.sawtooth(engine) - provider.min_value = 0 - provider.max_value = strip_len_ - provider.duration = duration_ - return provider - end)(engine) - var col1_ = animation.color_cycle(engine) - col1_.palette = colors_ - col1_.cycle_period = 0 - var col2_ = animation.color_cycle(engine) - col2_.palette = colors_ - col2_.cycle_period = 0 - col2_.next = 1 - # shutter moving from left to right - var shutter_central_animation_ = animation.beacon_animation(engine) - shutter_central_animation_.color = col2_ - shutter_central_animation_.back_color = col1_ - shutter_central_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len3_) - animation.resolve(shutter_size_) / 2 end) - shutter_central_animation_.beacon_size = shutter_size_ - shutter_central_animation_.slew_size = 0 - shutter_central_animation_.priority = 5 - var shutter_seq_ = animation.SequenceManager(engine, -1) - .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) - .push_play_step(shutter_central_animation_, duration_) - .push_closure_step(def (engine) col1_.next = 1 end) - .push_closure_step(def (engine) col2_.next = 1 end) - engine.add(shutter_seq_) -end - -animation.register_user_function('shutter_central', shutter_central_template) - -var rainbow_with_white_ = bytes( - "FFFF0000" - "FFFFA500" - "FFFFFF00" - "FF008000" # comma left on-purpose to test transpiler - "FF0000FF" # need for a lighter blue - "FF4B0082" - "FFFFFFFF" -) -shutter_central_template(engine, rainbow_with_white_, 1500) -engine.run() - - -#- Original DSL source: -# Demo Shutter Rainbow -# -# Shutter from center to both left and right - -template shutter_central { - param colors type palette - param duration - - set strip_len = strip_length() - set strip_len2 = (strip_len + 1) / 2 - # the following is highly discouraged because it creates a new value provider at each tick - set strip_len3 = (strip_length() + 1) / 2 - set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = duration) - - color col1 = color_cycle(palette=colors, cycle_period=0) - color col2 = color_cycle(palette=colors, cycle_period=0) - col2.next = 1 - - # shutter moving from left to right - animation shutter_central_animation = beacon_animation( - color = col2 - back_color = col1 - pos = strip_len3 - shutter_size / 2 - beacon_size = shutter_size - slew_size = 0 - priority = 5 - ) - - sequence shutter_seq repeat forever { - restart shutter_size - play shutter_central_animation for duration - col1.next = 1 - col2.next = 1 - } - - run shutter_seq - } - - palette rainbow_with_white = [ red - orange - yellow - green, # comma left on-purpose to test transpiler - blue # need for a lighter blue - indigo - white - ] - - shutter_central(rainbow_with_white, 1.5s) - --# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_simple_math.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_simple_math.be new file mode 100644 index 000000000..25d00ac27 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_simple_math.be @@ -0,0 +1,23 @@ +# Generated Berry code from Animation DSL +# Source: test_simple_math.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Test simple math +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +var x_ = 2000 +var y_ = animation.create_closure_value(engine, def (engine) return animation.resolve(x_) + 4 end) + + +#- Original DSL source: +# Test simple math + +set x = 2s +set y = x + 4 + +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be index 12b5416ef..4f4ec332b 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be @@ -68,7 +68,7 @@ animation random_base = solid( priority=10 ) # Use user function in property assignment -random_base.opacity = user.rand_demo() +random_base.opacity = rand_demo() # Example 2: User function with mathematical operations animation random_bounded = solid( @@ -76,7 +76,7 @@ animation random_bounded = solid( priority=8 ) # User function with bounds using math functions -random_bounded.opacity = max(50, min(255, user.rand_demo() + 100)) +random_bounded.opacity = max(50, min(255, rand_demo() + 100)) # Example 3: User function in arithmetic expressions animation random_variation = solid( @@ -84,7 +84,7 @@ animation random_variation = solid( priority=15 ) # Mix user function with arithmetic operations -random_variation.opacity = abs(user.rand_demo() - 128) + 64 +random_variation.opacity = abs(rand_demo() - 128) + 64 # Example 4: User function affecting different properties animation random_multi = solid( @@ -92,7 +92,7 @@ animation random_multi = solid( priority=12 ) # Use user function for multiple properties -random_multi.opacity = max(100, user.rand_demo()) +random_multi.opacity = max(100, rand_demo()) # Example 5: Complex expression with user function animation random_complex = solid( @@ -100,7 +100,7 @@ animation random_complex = solid( priority=20 ) # Complex expression with user function and math operations -random_complex.opacity = round((user.rand_demo() + 128) / 2 + abs(user.rand_demo() - 100)) +random_complex.opacity = round((rand_demo() + 128) / 2 + abs(rand_demo() - 100)) # Run all animations to demonstrate the effects run random_base diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim index 9a03ab06f..2d699bbd0 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim @@ -14,21 +14,39 @@ template shutter_central { color col2 = color_cycle(palette=colors, cycle_period=0) col2.next = 1 - # shutter moving from left to right - animation shutter_central_animation = beacon_animation( + # shutter moving in to out + animation shutter_inout_animation = beacon_animation( color = col2 back_color = col1 - pos = strip_len2 - shutter_size / 2 + pos = strip_len2 - (shutter_size + 1) / 2 beacon_size = shutter_size slew_size = 0 priority = 5 ) + # shutter moving out to in + animation shutter_outin_animation = beacon_animation( + color = col1 + back_color = col2 + pos = strip_len2 - (strip_len - shutter_size + 1) / 2 + beacon_size = strip_len - shutter_size + slew_size = 0 + priority = 5 + ) + sequence shutter_seq repeat forever { - restart shutter_size - play shutter_central_animation for duration - col1.next = 1 - col2.next = 1 + repeat col1.palette_size times { + restart shutter_size + play shutter_inout_animation for duration + col1.next = 1 + col2.next = 1 + } + repeat col1.palette_size times { + restart shutter_size + play shutter_outin_animation for duration + col1.next = 1 + col2.next = 1 + } } run shutter_seq diff --git a/lib/libesp32/berry_animation/anim_examples/disco_strobe.anim b/lib/libesp32/berry_animation/anim_examples/disco_strobe.anim index b0583b49a..d71d87621 100644 --- a/lib/libesp32/berry_animation/anim_examples/disco_strobe.anim +++ b/lib/libesp32/berry_animation/anim_examples/disco_strobe.anim @@ -15,7 +15,8 @@ palette disco_colors = [ ] # Fast color cycling base -animation disco_base = rich_palette_animation(palette=disco_colors, cycle_period=1s, transition_type=LINEAR, brightness=255) +color disco_rich_color = rich_palette(palette=disco_colors, cycle_period=1s, transition_type=LINEAR, brightness=255) +animation disco_base = solid(color=disco_rich_color) # Add strobe effect disco_base.opacity = square(min_value=0, max_value=255, duration=100ms, duty_cycle=30) # Fast strobe diff --git a/lib/libesp32/berry_animation/anim_examples/fail_color_predefined.anim b/lib/libesp32/berry_animation/anim_examples/fail_color_predefined.anim new file mode 100644 index 000000000..b317da9e3 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/fail_color_predefined.anim @@ -0,0 +1,4 @@ +# Cylon Red Eye +# Automatically adapts to the length of the strip + +set red = 0xFF0000 diff --git a/lib/libesp32/berry_animation/anim_examples/fail_name_predefined.anim b/lib/libesp32/berry_animation/anim_examples/fail_name_predefined.anim new file mode 100644 index 000000000..2e5fa7afe --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/fail_name_predefined.anim @@ -0,0 +1,4 @@ +# Cylon Red Eye +# Automatically adapts to the length of the strip + +set abs = 0xFF0000 diff --git a/lib/libesp32/berry_animation/anim_examples/fail_value_provider_add.anim b/lib/libesp32/berry_animation/anim_examples/fail_value_provider_add.anim new file mode 100644 index 000000000..16fd591fe --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/fail_value_provider_add.anim @@ -0,0 +1,6 @@ +# Fail value_provider addition +#1+1 + +set a = linear() + triangle() +set b = triangle() +set c = linear() + triangle() diff --git a/lib/libesp32/berry_animation/anim_examples/fire_flicker.anim b/lib/libesp32/berry_animation/anim_examples/fire_flicker.anim index 1de35dcbb..789aaeaf4 100644 --- a/lib/libesp32/berry_animation/anim_examples/fire_flicker.anim +++ b/lib/libesp32/berry_animation/anim_examples/fire_flicker.anim @@ -13,7 +13,8 @@ palette fire_colors = [ ] # Create base fire animation with palette -animation fire_base = rich_palette_animation(palette=fire_colors, cycle_period=3s, transition_type=LINEAR, brightness=255) +color fire_base_color = rich_palette(palette=fire_colors, cycle_period=3s, transition_type=LINEAR, brightness=255) +animation fire_base = solid(color=fire_base_color) # Add flickering effect with random intensity changes fire_base.opacity = smooth(min_value=180, max_value=255, duration=800ms) diff --git a/lib/libesp32/berry_animation/anim_examples/import_demo.anim b/lib/libesp32/berry_animation/anim_examples/import_demo.anim index d1c581447..c9c9ab5ab 100644 --- a/lib/libesp32/berry_animation/anim_examples/import_demo.anim +++ b/lib/libesp32/berry_animation/anim_examples/import_demo.anim @@ -6,13 +6,13 @@ import user_functions # Create animations that use imported user functions animation random_red = solid(color=red) -random_red.opacity = user.rand_demo() +random_red.opacity = rand_demo() animation breathing_blue = solid(color=blue) -breathing_blue.opacity = max(50, min(255, user.rand_demo() + 100)) +breathing_blue.opacity = max(50, min(255, rand_demo() + 100)) animation dynamic_green = solid(color=green) -dynamic_green.opacity = abs(user.rand_demo() - 128) + 64 +dynamic_green.opacity = abs(rand_demo() - 128) + 64 # Create a sequence that cycles through the animations sequence import_demo { diff --git a/lib/libesp32/berry_animation/anim_examples/ocean_waves.anim b/lib/libesp32/berry_animation/anim_examples/old/ocean_waves.anim similarity index 100% rename from lib/libesp32/berry_animation/anim_examples/ocean_waves.anim rename to lib/libesp32/berry_animation/anim_examples/old/ocean_waves.anim diff --git a/lib/libesp32/berry_animation/anim_examples/plasma_wave.anim b/lib/libesp32/berry_animation/anim_examples/old/plasma_wave.anim similarity index 100% rename from lib/libesp32/berry_animation/anim_examples/plasma_wave.anim rename to lib/libesp32/berry_animation/anim_examples/old/plasma_wave.anim diff --git a/lib/libesp32/berry_animation/anim_examples/palette_showcase.anim b/lib/libesp32/berry_animation/anim_examples/palette_showcase.anim index 3dc5128a1..c552fdb3d 100644 --- a/lib/libesp32/berry_animation/anim_examples/palette_showcase.anim +++ b/lib/libesp32/berry_animation/anim_examples/palette_showcase.anim @@ -44,7 +44,7 @@ palette sunset_sky = [ ] # Create animations using each palette -animation fire_effect = rich_palette_animation(palette=fire_gradient, cycle_period=3s) +animation fire_effect = solid(color=rich_palette(palette=fire_gradient, cycle_period=3s)) animation ocean_waves = rich_palette_animation(palette=ocean_depths, cycle_period=8s, transition_type=SINE, brightness=200) diff --git a/lib/libesp32/berry_animation/anim_examples/test_compute_multiple.anim b/lib/libesp32/berry_animation/anim_examples/test_compute_multiple.anim new file mode 100644 index 000000000..1218ee00b --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/test_compute_multiple.anim @@ -0,0 +1,7 @@ +# Computed Values Demo - Example from the original request +# Shows how to use computed values from value providers + +# Get the current strip length +set strip_len = strip_length() +set a = strip_len / 4 +set b = abs(strip_len / 4) diff --git a/lib/libesp32/berry_animation/anim_examples/test_cylon_generic.anim b/lib/libesp32/berry_animation/anim_examples/test_cylon_generic.anim new file mode 100644 index 000000000..8ebc78389 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/test_cylon_generic.anim @@ -0,0 +1,29 @@ +# Cylon Red Eye +# Automatically adapts to the length of the strip + +template cylon_effect { + param eye_color type color + param back_color type color + param duration + + set aaa = abs2(45) + 2 + set strip_len = strip_length() + set strip_len_div_2 = abs(strip_len / 2) + set strip_len2 = strip_length(is_running=0) # artifically putting an argument to cause a closure + + set osc1 = sawtooth() + set osc2 = triangle() + set osc3 = scale(osc1 + osc2, 0, 200, 0, 255) + set osc9 = sawtooth() + triangle() # this should fail + + animation eye_animation = beacon_animation( + color = eye_color + back_color = back_color + pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = duration) + beacon_size = 3 # small 3 pixels eye + slew_size = 2 # with 2 pixel shading around + priority = 5 + ) + + run eye_animation +} diff --git a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim index 98d341f1e..cac96ec86 100644 --- a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim +++ b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim @@ -35,12 +35,14 @@ template shutter_bidir { sequence shutter_seq repeat forever { repeat col1.palette_size times { + log("begin 1") restart shutter_size play shutter_lr_animation for duration col1.next = 1 col2.next = 1 } repeat col1.palette_size times { + log("begin 2") restart shutter_size play shutter_rl_animation for duration col1.next = 1 diff --git a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_central.anim b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_central.anim index 018dc01d0..961bc036d 100644 --- a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_central.anim +++ b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_central.anim @@ -9,7 +9,8 @@ template shutter_central { set strip_len = strip_length() set strip_len2 = (strip_len + 1) / 2 # the following is highly discouraged because it creates a new value provider at each tick - set strip_len3 = (strip_length() + 1) / 2 + set strip_len3 = 1 + strip_length() + set strip_len4 = (strip_length() + 1) / 2 set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = duration) color col1 = color_cycle(palette=colors, cycle_period=0) diff --git a/lib/libesp32/berry_animation/anim_examples/test_simple_math.anim b/lib/libesp32/berry_animation/anim_examples/test_simple_math.anim new file mode 100644 index 000000000..0ba224c27 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/test_simple_math.anim @@ -0,0 +1,4 @@ +# Test simple math + +set x = 2s +set y = x + 4 diff --git a/lib/libesp32/berry_animation/anim_examples/user_functions_demo.anim b/lib/libesp32/berry_animation/anim_examples/user_functions_demo.anim index 41c7baee6..c2f9cd263 100644 --- a/lib/libesp32/berry_animation/anim_examples/user_functions_demo.anim +++ b/lib/libesp32/berry_animation/anim_examples/user_functions_demo.anim @@ -12,7 +12,7 @@ animation random_base = solid( priority=10 ) # Use user function in property assignment -random_base.opacity = user.rand_demo() +random_base.opacity = rand_demo() # Example 2: User function with mathematical operations animation random_bounded = solid( @@ -20,7 +20,7 @@ animation random_bounded = solid( priority=8 ) # User function with bounds using math functions -random_bounded.opacity = max(50, min(255, user.rand_demo() + 100)) +random_bounded.opacity = max(50, min(255, rand_demo() + 100)) # Example 3: User function in arithmetic expressions animation random_variation = solid( @@ -28,7 +28,7 @@ animation random_variation = solid( priority=15 ) # Mix user function with arithmetic operations -random_variation.opacity = abs(user.rand_demo() - 128) + 64 +random_variation.opacity = abs(rand_demo() - 128) + 64 # Example 4: User function affecting different properties animation random_multi = solid( @@ -36,7 +36,7 @@ animation random_multi = solid( priority=12 ) # Use user function for multiple properties -random_multi.opacity = max(100, user.rand_demo()) +random_multi.opacity = max(100, rand_demo()) # Example 5: Complex expression with user function animation random_complex = solid( @@ -44,7 +44,7 @@ animation random_complex = solid( priority=20 ) # Complex expression with user function and math operations -random_complex.opacity = round((user.rand_demo() + 128) / 2 + abs(user.rand_demo() - 100)) +random_complex.opacity = round((rand_demo() + 128) / 2 + abs(rand_demo() - 100)) # Run all animations to demonstrate the effects run random_base diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md index dc2c6504c..985653fdb 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md @@ -18,21 +18,14 @@ ParameterizedObject ├── Animation │ ├── BreatheAnimation │ ├── CometAnimation -│ ├── SparkleAnimation -│ ├── BounceAnimation │ ├── FireAnimation │ ├── GradientAnimation -│ ├── JitterAnimation │ ├── NoiseAnimation -│ ├── PlasmaAnimation -│ ├── PulseAnimation │ ├── BeaconAnimation │ ├── CrenelPositionAnimation │ ├── RichPaletteAnimation │ ├── TwinkleAnimation │ ├── WaveAnimation -│ ├── ShiftAnimation -│ ├── ScaleAnimation │ ├── PalettePatternAnimation │ │ ├── PaletteWaveAnimation │ │ ├── PaletteGradientAnimation @@ -442,119 +435,8 @@ Creates a comet effect with a bright head and fading tail. Inherits from `Animat **Factory**: `animation.comet_animation(engine)` -### SparkleAnimation -Creates random twinkling effects where individual pixels appear as sparkles that fade out over time. Perfect for starfield effects, magical sparkles, or glitter-like accents. Inherits from `Animation`. -| Parameter | Type | Default | Constraints | Description | -|-----------|------|---------|-------------|-------------| -| `color` | int | 0xFFFFFFFF | - | Sparkle color | -| `back_color` | int | 0xFF000000 | - | Background color shown when no sparkle is active | -| `density` | int | 30 | 0-255 | Sparkle frequency (0=none, 255=maximum rate) | -| `fade_speed` | int | 50 | 0-255 | How quickly sparkles dim and fade out | -| `sparkle_duration` | int | 60 | 0-255 | How long sparkles last in frames (~30 FPS) | -| `min_brightness` | int | 100 | 0-255 | Minimum brightness for new sparkles | -| `max_brightness` | int | 255 | 0-255 | Maximum brightness for new sparkles | -| *(inherits all Animation parameters)* | | | | | - -#### Sparkle Lifecycle - -Each sparkle follows a predictable lifecycle: -1. **Creation**: Random appearance based on density parameter -2. **Brightness**: Random value between min_brightness and max_brightness -3. **Aging**: Frame-by-frame age tracking -4. **Fading**: Brightness reduction based on age and fade_speed -5. **Death**: Sparkle removed when too dim or duration exceeded - -#### Density Effects - -- **Low density (10-40)**: Occasional, subtle sparkles -- **Medium density (50-100)**: Regular twinkling effect -- **High density (120-200)**: Frequent, busy sparkles -- **Maximum density (255)**: Nearly constant sparkles - -#### Fade Speed Effects - -- **Slow fade (10-30)**: Long, gentle fade-out -- **Medium fade (40-80)**: Balanced sparkle lifecycle -- **Fast fade (100-200)**: Quick, snappy sparkles - -#### Usage Examples - -```berry -# Basic white starfield -animation starfield = sparkle_animation( - color=white, - back_color=black, - density=80, - fade_speed=60 -) - -# Magical rainbow sparkles -animation magic_sparkles = sparkle_animation( - color=rainbow_cycle, - density=100, - fade_speed=50, - min_brightness=80, - max_brightness=220 -) - -# Subtle ambient sparkles -animation ambient_sparkles = sparkle_animation( - color=0xFFFFFFAA, - density=20, - fade_speed=30 -) -``` - -#### Common Use Cases - -- **Starfield**: White sparkles on black background with low density -- **Magic Effects**: Rainbow sparkles with medium density -- **Accent Lighting**: Subtle colored sparkles over other effects -- **Party Atmosphere**: High-density, fast-fading sparkles -- **Ambient Decoration**: Low-density, slow-fading warm sparkles - -### BounceAnimation - -Creates physics-based bouncing effects with configurable gravity, damping, and motion parameters. Inherits from `Animation`. - -| Parameter | Type | Default | Constraints | Description | -|-----------|------|---------|-------------|-------------| -| `source_animation` | instance | nil | - | Animation to bounce | -| `bounce_speed` | int | 128 | 0-255 | Initial bounce speed | -| `bounce_range` | int | 0 | 0-1000 | Bounce range in pixels (0 = full strip) | -| `damping` | int | 250 | 0-255 | Velocity damping factor (255 = no damping) | -| `gravity` | int | 0 | 0-255 | Gravity strength (0 = no gravity) | -| *(inherits all Animation parameters)* | | | | | - -#### Physics Behavior - -- **Realistic Physics**: Simulates gravity, velocity, and damping -- **Bounce Range**: Can be constrained to specific strip regions -- **Damping Effects**: Controls energy loss on each bounce -- **Gravity Simulation**: Optional downward acceleration - -#### Usage Examples - -```berry -# Bouncing ball effect with gravity -animation ball = pulsating_animation(color=green, period=2s) -animation bouncing_ball = bounce_animation( - source_animation=ball, - bounce_speed=150, - gravity=80 -) - -# Elastic bounce without gravity -animation elastic_bounce = bounce_animation( - source_animation=ball, - bounce_speed=120, - damping=240 -) -``` - -**Factories**: `animation.bounce_animation(engine)`, `animation.bounce_basic(engine)`, `animation.bounce_gravity(engine)`, `animation.bounce_constrained(engine)` ### FireAnimation @@ -588,50 +470,7 @@ Creates smooth color gradients that can be linear or radial. Inherits from `Anim **Factories**: `animation.gradient_animation(engine)`, `animation.gradient_rainbow_linear(engine)`, `animation.gradient_rainbow_radial(engine)`, `animation.gradient_two_color_linear(engine)` -### JitterAnimation -Adds random shake effects to patterns with configurable intensity, frequency, and jitter types. Inherits from `Animation`. - -| Parameter | Type | Default | Constraints | Description | -|-----------|------|---------|-------------|-------------| -| `source_animation` | instance | nil | - | Animation to apply jitter to | -| `jitter_intensity` | int | 100 | 0-255 | Overall jitter intensity | -| `jitter_frequency` | int | 60 | 0-255 | Jitter frequency in Hz (0-30 Hz) | -| `jitter_type` | int | 0 | 0-3 | 0=position, 1=color, 2=brightness, 3=all | -| `position_range` | int | 50 | 0-255 | Position jitter range in pixels | -| `color_range` | int | 30 | 0-255 | Color jitter range | -| `brightness_range` | int | 40 | 0-255 | Brightness jitter range | -| *(inherits all Animation parameters)* | | | | | - -#### Jitter Types - -- **0 - Position**: Random position shifts -- **1 - Color**: Random color variations -- **2 - Brightness**: Random brightness changes -- **3 - All**: Combination of all jitter types - -#### Usage Examples - -```berry -# Digital glitch effect -animation base_pattern = gradient_animation(color=rainbow_cycle) -animation glitch_effect = jitter_animation( - source_animation=base_pattern, - jitter_intensity=200, - jitter_frequency=120, - jitter_type=3 -) - -# Subtle shake effect -animation subtle_shake = jitter_animation( - source_animation=base_pattern, - jitter_intensity=60, - jitter_frequency=40, - jitter_type=0 -) -``` - -**Factories**: `animation.jitter_animation(engine)`, `animation.jitter_position(engine)`, `animation.jitter_color(engine)`, `animation.jitter_brightness(engine)`, `animation.jitter_all(engine)` ### NoiseAnimation @@ -701,78 +540,7 @@ animation cloud_pattern = noise_animation( - **Cloud Simulation**: White/gray colors with large-scale patterns - **Abstract Art**: Rainbow colors with high detail and multiple octaves -### PlasmaAnimation -Creates classic plasma effects using sine wave interference patterns. Generates smooth, flowing patterns reminiscent of 1990s demoscene effects and natural phenomena like aurora. Inherits from `Animation`. - -| Parameter | Type | Default | Constraints | Description | -|-----------|------|---------|-------------|-------------| -| `color` | instance | nil | - | Color provider for plasma mapping (nil = rainbow) | -| `freq_x` | int | 32 | 1-255 | Primary wave frequency | -| `freq_y` | int | 23 | 1-255 | Secondary wave frequency | -| `phase_x` | int | 0 | 0-255 | Primary wave phase shift | -| `phase_y` | int | 64 | 0-255 | Secondary wave phase shift | -| `time_speed` | int | 50 | 0-255 | Animation speed (0 = static pattern) | -| `blend_mode` | int | 0 | 0-2 | 0=add, 1=multiply, 2=average | -| *(inherits all Animation parameters)* | | | | | - -#### Wave Interference - -The plasma effect combines two sine waves with different frequencies to create interference patterns. The interaction between these waves produces complex, organic-looking effects. - -#### Frequency Effects - -- **Low frequencies (10-30)**: Large, flowing waves -- **Medium frequencies (30-80)**: Balanced wave patterns -- **High frequencies (100-200)**: Fine, detailed interference - -#### Blend Modes - -- **Add (0)**: Bright, energetic patterns with high contrast -- **Multiply (1)**: Darker patterns with rich color depth -- **Average (2)**: Balanced patterns with smooth transitions - -#### Phase Relationships - -- **In-phase (phase_y = 0)**: Aligned waves create regular patterns -- **Quarter-phase (phase_y = 64)**: Creates diagonal flow effects -- **Opposite-phase (phase_y = 128)**: Creates standing wave patterns - -#### Usage Examples - -```berry -# Classic rainbow plasma -animation rainbow_plasma = plasma_animation( - freq_x=32, - freq_y=23, - time_speed=60, - blend_mode=0 -) - -# High-frequency intense plasma -animation intense_plasma = plasma_animation( - color=purple, - freq_x=100, - freq_y=80, - time_speed=120, - blend_mode=1 -) - -# Static plasma pattern for backgrounds -animation static_plasma = plasma_animation( - color=blue, - freq_x=40, - freq_y=30, - time_speed=0 -) -``` - -#### Common Use Cases - -- **Ambient Lighting**: Slow, smooth plasma for relaxing environments -- **Party Effects**: Fast, rainbow plasma for energetic atmospheres -- **Retro Gaming**: Classic plasma effects for nostalgic themes -- **Abstract Art**: Complex frequency combinations for artistic displays ### PulseAnimation @@ -1133,90 +901,7 @@ animation strobe = wave_animation( - **Color Cycling**: Rainbow waves for spectrum effects - **Pulse Patterns**: Triangle waves for rhythmic pulses -### ShiftAnimation -Creates scrolling and translation effects by moving patterns horizontally across the LED strip. Inherits from `Animation`. - -| Parameter | Type | Default | Constraints | Description | -|-----------|------|---------|-------------|-------------| -| `source_animation` | instance | nil | - | Animation to shift/scroll | -| `shift_speed` | int | 128 | 0-255 | Scrolling speed (0=static, 255=fastest) | -| `direction` | int | 1 | -1 to 1 | Scroll direction (1=right, -1=left) | -| `wrap_around` | bool | true | - | Whether to wrap around the strip edges | -| *(inherits all Animation parameters)* | | | | | - -#### Movement Behavior - -- **Horizontal Scrolling**: Moves patterns left or right across the strip -- **Wrap-Around**: Patterns can wrap around strip edges or disappear -- **Variable Speed**: Configurable scrolling speed from static to very fast -- **Direction Control**: Forward and reverse scrolling - -#### Usage Examples - -```berry -# Scrolling text effect -animation text_pattern = solid(color=white) -animation scrolling_text = shift_animation( - source_animation=text_pattern, - shift_speed=100, - direction=1, - wrap_around=true -) - -# Moving rainbow pattern -animation rainbow_base = gradient_animation(color=rainbow_cycle) -animation moving_rainbow = shift_animation( - source_animation=rainbow_base, - shift_speed=80, - direction=-1 -) -``` - -**Factories**: `animation.shift_animation(engine)`, `animation.shift_scroll_right(engine)`, `animation.shift_scroll_left(engine)`, `animation.shift_fast_scroll(engine)` - -### ScaleAnimation - -Creates size transformation effects with multiple animation modes including static scaling, oscillation, growing, and shrinking. Inherits from `Animation`. - -| Parameter | Type | Default | Constraints | Description | -|-----------|------|---------|-------------|-------------| -| `source_animation` | instance | nil | - | Animation to scale | -| `scale_factor` | int | 128 | 1-255 | Scale factor (128=1.0x, 64=0.5x, 255=2.0x) | -| `scale_speed` | int | 0 | 0-255 | Animation speed for dynamic modes | -| `scale_mode` | int | 0 | 0-3 | 0=static, 1=oscillate, 2=grow, 3=shrink | -| `scale_center` | int | 128 | 0-255 | Center point for scaling (128=center) | -| `interpolation` | int | 1 | 0-1 | 0=nearest neighbor, 1=linear interpolation | -| *(inherits all Animation parameters)* | | | | | - -#### Scale Modes - -- **0 - Static**: Fixed scale factor -- **1 - Oscillate**: Oscillates between 0.5x and 2.0x (breathing effect) -- **2 - Grow**: Grows from 0.5x to 2.0x -- **3 - Shrink**: Shrinks from 2.0x to 0.5x - -#### Usage Examples - -```berry -# Breathing effect with oscillating scale -animation base_pattern = gradient_animation(color=rainbow_cycle) -animation breathing_effect = scale_animation( - source_animation=base_pattern, - scale_mode=1, - scale_speed=60 -) - -# Static zoom effect -animation zoomed_sparkles = scale_animation( - source_animation=sparkle_animation(color=white), - scale_factor=180, - scale_mode=0 -) -# Scale factor 180 = 1.4x zoom -``` - -**Factories**: `animation.scale_animation(engine)`, `animation.scale_static(engine)`, `animation.scale_oscillate(engine)`, `animation.scale_grow(engine)` ### PalettePatternAnimation @@ -1305,34 +990,31 @@ Motion effects can be chained to create sophisticated transformations: # Base animation animation base_pulse = pulsating_animation(color=blue, period=3s) -# Chain multiple transformations -animation scaled_pulse = scale_animation( - source_animation=base_pulse, - scale_factor=150 +# Simple animation composition +animation fire_effect = fire_animation( + color=fire_colors, + intensity=180, + flicker_speed=8 ) -animation scrolling_scaled = shift_animation( - source_animation=scaled_pulse, - shift_speed=60, - direction=-1 +animation gradient_wave = gradient_animation( + color=rainbow_cycle, + gradient_type=0, + movement_speed=50 ) -animation final_effect = jitter_animation( - source_animation=scrolling_scaled, - jitter_intensity=40, - jitter_type=1 -) - -# Result: A scaled, scrolling, color-jittered pulse -run final_effect +# Result: Multiple independent animations +run base_pulse +run fire_effect +run gradient_wave ``` ### Performance Considerations -- Each motion effect uses approximately 4 bytes per pixel for color storage -- Bounce animation includes additional physics calculations -- Scale animation requires interpolation calculations -- Limit jitter frequency for better performance +- Each animation uses approximately 4 bytes per pixel for color storage +- Fire animation includes additional flicker calculations +- Gradient animation requires color interpolation calculations +- Noise animation includes pseudo-random pattern generation - Consider strip length impact on transformation calculations ## Parameter Constraints diff --git a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md index f1bd89420..c431f563e 100644 --- a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md +++ b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md @@ -58,6 +58,7 @@ The following keywords are reserved and cannot be used as identifiers: - `strip` - Strip configuration (temporarily disabled, reserved keyword) - `set` - Variable assignment - `import` - Import Berry modules +- `berry` - Embed arbitrary Berry code **Definition Keywords:** - `color` - Color definition @@ -237,7 +238,7 @@ import string # Import utility modules import user_functions animation dynamic = solid(color=blue) -dynamic.opacity = user.my_custom_function() +dynamic.opacity = my_custom_function() # Import custom animation libraries import fire_effects @@ -254,6 +255,46 @@ import user_functions import "user_functions" ``` +### Berry Code Blocks + +The `berry` keyword allows embedding arbitrary Berry code within DSL files using triple-quoted strings: + +```berry +berry """ +import math +var custom_value = math.pi * 2 +print("Custom calculation:", custom_value) +""" + +berry ''' +# Alternative syntax with single quotes +def helper_function(x) + return x * 1.5 +end +''' +``` + +**Berry Code Block Features:** +- Code is copied verbatim to the generated Berry code +- Supports both `"""` and `'''` triple-quote syntax +- Can span multiple lines and include complex Berry syntax +- Variables and functions defined in one block are available in subsequent blocks +- Can interact with DSL-generated objects (e.g., `animation_name_.property = value`) + +**Example with DSL Integration:** +```berry +animation pulse = pulsating_animation(color=red, period=2s) + +berry """ +# Modify animation using Berry code +pulse_.opacity = 200 +pulse_.priority = 10 +print("Animation configured") +""" + +run pulse +``` + ## Color Definitions The `color` keyword defines static colors or color providers: @@ -379,7 +420,7 @@ animation.register_user_function("custom_palette", create_custom_palette) ```berry # Use in DSL animation dynamic_anim = rich_palette( - palette=user.custom_palette(0xFF0000, 200) + palette=custom_palette(0xFF0000, 200) cycle_period=3s ) ``` @@ -446,10 +487,15 @@ pulse_red.opacity = opacity_mask # Dynamic opacity from animation The DSL supports computed values using arithmetic expressions with value providers and mathematical functions: +### Safe Patterns + ```berry -# Get strip dimensions +# ✅ RECOMMENDED: Single value provider assignment set strip_len = strip_length() +# ✅ RECOMMENDED: Computation with existing values +set strip_len2 = (strip_len + 1) / 2 + # Use computed values in animation parameters animation stream1 = comet_animation( color=red @@ -457,7 +503,43 @@ animation stream1 = comet_animation( speed=1.5 priority=10 ) +``` +### ⚠️ Dangerous Patterns (Prevented by Transpiler) + +The transpiler prevents dangerous patterns that would create new value provider instances at each evaluation: + +```berry +# ❌ DANGEROUS: Function creation in computed expression +# This would create a new strip_length() instance at each evaluation +set strip_len3 = (strip_length() + 1) / 2 + +# ❌ ERROR: Transpiler will reject this with: +# "Function 'strip_length()' cannot be used in computed expressions. +# This creates a new instance at each evaluation." +``` + +**Why This Is Dangerous:** +- Creates a new function instance every time the expression is evaluated +- Causes memory leaks and performance degradation +- Each new instance has its own timing and state, leading to inconsistent behavior + +**Safe Alternative:** +```berry +# ✅ CORRECT: Separate the value provider creation from computation +set strip_len = strip_length() # Single value provider +set strip_len3 = (strip_len + 1) / 2 # Computation with existing value +``` + +**Functions That Are Restricted in Computed Expressions:** +- Any function that creates instances (value providers, animations, etc.) when called +- Examples: `strip_length()`, `triangle()`, `smooth()`, `solid()`, etc. + +**Note:** These functions are allowed in `set` statements as they create the instance once, but they cannot be used inside arithmetic expressions that get wrapped in closures, as this would create new instances at each evaluation. + +### Advanced Computed Values + +```berry # Complex expressions with multiple operations set base_speed = 2.0 animation stream2 = comet_animation( @@ -541,37 +623,37 @@ test.opacity = min(255, max(50, scale(sqrt(strip_len), 0, 16, 100, 255))) When the DSL detects arithmetic expressions containing value providers, variable references, or mathematical functions, it automatically creates closure functions that capture the computation. These closures are called with `(self, param_name, time_ms)` parameters, allowing the computation to be re-evaluated dynamically as needed. Mathematical functions are automatically prefixed with `animation._math.` in the closure context to access the ClosureValueProvider's mathematical methods. **User Functions in Computed Parameters:** -User-defined functions can also be used in computed parameter expressions, providing powerful custom effects. User functions must be called with the `user.` prefix: +User-defined functions can also be used in computed parameter expressions, providing powerful custom effects: ```berry # Simple user function in computed parameter animation base = solid(color=blue) -base.opacity = user.rand_demo() +base.opacity = rand_demo() # User functions mixed with math operations animation dynamic = solid( color=purple - opacity=max(50, min(255, user.rand_demo() + 100)) + opacity=max(50, min(255, rand_demo() + 100)) ) ``` ### User Functions -User functions are custom Berry functions that can be called from computed parameters. They provide dynamic values that change over time. User functions must be called with the `user.` prefix. +User functions are custom Berry functions that can be called from computed parameters. They provide dynamic values that change over time. **Available User Functions:** -- `user.rand_demo()` - Returns random values for demonstration purposes +- `rand_demo()` - Returns random values for demonstration purposes **Usage in Computed Parameters:** ```berry # Simple user function -animation.opacity = user.rand_demo() +animation.opacity = rand_demo() # User function with math operations -animation.opacity = max(100, user.rand_demo()) +animation.opacity = max(100, rand_demo()) # User function in arithmetic expressions -animation.opacity = abs(user.rand_demo() - 128) + 64 +animation.opacity = abs(rand_demo() - 128) + 64 ``` **Available User Functions:** @@ -579,7 +661,7 @@ The following user functions are available by default (see [User Functions Guide | Function | Parameters | Description | |----------|------------|-------------| -| `user.rand_demo()` | none | Returns a random value (0-255) for demonstration | +| `rand_demo()` | none | Returns a random value (0-255) for demonstration | **User Function Behavior:** - User functions are automatically detected by the transpiler @@ -825,6 +907,8 @@ sequence clean_transitions { Templates provide a powerful way to create reusable, parameterized animation patterns. They allow you to define animation blueprints that can be instantiated with different parameters, promoting code reuse and maintainability. +**Template-Only Files**: DSL files containing only template definitions transpile to pure Berry functions without engine initialization or execution code. This allows templates to be used as reusable function libraries. + ### Template Definition Templates are defined using the `template` keyword followed by a parameter block and body: @@ -971,6 +1055,9 @@ end animation.register_user_function('pulse_effect', pulse_effect_template) ``` +**Template-Only Transpilation:** +Files containing only templates generate pure Berry function definitions without `var engine = animation.init_strip()` or `engine.run()` calls, making them suitable as reusable function libraries. + **Parameter Handling:** - Parameters get `_` suffix in generated code to avoid naming conflicts - Templates receive `engine` as the first parameter automatically @@ -1194,13 +1281,7 @@ Animation classes create visual effects on LED strips: | `twinkle_animation` | Twinkling stars effect | | `gradient_animation` | Color gradient effects | | `noise_animation` | Perlin noise-based patterns | -| `plasma_animation` | Plasma wave effects | -| `sparkle_animation` | Sparkling/glitter effects | | `wave_animation` | Wave propagation effects | -| `shift_animation` | Shifting/scrolling patterns | -| `bounce_animation` | Bouncing ball effects | -| `scale_animation` | Scaling/zooming effects | -| `jitter_animation` | Random jitter/shake effects | | `rich_palette_animation` | Palette-based color cycling | | `palette_wave_animation` | Wave patterns using palettes | | `palette_gradient_animation` | Gradient patterns using palettes | diff --git a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md index 5297a9eac..d96f00038 100644 --- a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md +++ b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md @@ -104,7 +104,7 @@ The Animation DSL uses a declarative syntax with named parameters. All animation - **Named colors**: `red`, `blue`, `white`, etc. - **Comments**: `# This is a comment` - **Property assignment**: `animation.property = value` -- **User functions**: `user.function_name()` for custom functions +- **User functions**: `function_name()` for custom functions ### Basic Structure @@ -125,7 +125,7 @@ animation comet_blue = comet_animation(color=blue, tail_length=10, speed=1500) # Property assignments with user functions pulse_red.priority = 10 -pulse_red.opacity = user.breathing_effect() +pulse_red.opacity = breathing_effect() comet_blue.direction = -1 # Execution @@ -242,7 +242,7 @@ animation.register_user_function("rand_demo", rand_demo) import user_functions animation test = solid(color=blue) -test.opacity = user.rand_demo() +test.opacity = rand_demo() run test ``` @@ -260,12 +260,69 @@ engine.add(test_) engine.run() ``` +## Berry Code Block Transpilation + +The DSL supports embedding arbitrary Berry code using the `berry` keyword with triple-quoted strings. This provides an escape hatch for complex logic while maintaining the declarative nature of the DSL. + +### Berry Code Block Syntax + +```berry +# DSL Berry Code Block +berry """ +import math +var custom_value = math.pi * 2 +print("Custom calculation:", custom_value) +""" +``` + +### Transpilation Behavior + +Berry code blocks are copied verbatim to the generated Berry code with comment markers: + +```berry +# DSL Code +berry """ +var test_var = 42 +print("Hello from berry block") +""" + +# Transpiles to Berry Code +# Berry code block +var test_var = 42 +print("Hello from berry block") +# End berry code block +``` + +### Integration with DSL Objects + +Berry code can interact with DSL-generated objects by using the underscore suffix naming convention: + +```berry +# DSL Code +animation pulse = pulsating_animation(color=red, period=2s) +berry """ +pulse_.opacity = 200 +pulse_.priority = 10 +""" + +# Transpiles to Berry Code +var pulse_ = animation.pulsating_animation(engine) +pulse_.color = animation.red +pulse_.period = 2000 +# Berry code block +pulse_.opacity = 200 +pulse_.priority = 10 +# End berry code block +``` + ## Advanced DSL Features ### Templates Templates provide a DSL-native way to create reusable animation patterns with parameters. Templates are transpiled into Berry functions and automatically registered for use. +**Template-Only Files**: DSL files containing only template definitions generate pure Berry function code without engine initialization or execution, creating reusable function libraries. + #### Template Definition Transpilation ```berry @@ -361,6 +418,7 @@ animation.register_user_function("comet_chase", comet_chase) - Automatically registered - Type annotations supported - Transpiled to Berry functions +- Template-only files generate pure function libraries **User Functions** (Berry-native): - Defined in Berry code @@ -375,23 +433,24 @@ Register custom Berry functions for use in DSL. User functions must take `engine ```berry # Define custom function in Berry - engine must be first parameter -def custom_sparkle(engine, color, density, speed) +def custom_twinkle(engine, color, count, period) var anim = animation.twinkle_animation(engine) anim.color = color - anim.density = density - anim.speed = speed + anim.count = count + atml:parameter> + return anim end # Register the function for DSL use -animation.register_user_function("sparkle", custom_sparkle) +animation.register_user_function("twinkle", custom_twinkle) ``` ```berry # Use in DSL - engine is automatically passed as first argument -animation gold_sparkle = sparkle(#FFD700, 8, 500ms) -animation blue_sparkle = sparkle(blue, 12, 300ms) -run gold_sparkle +animation gold_twinkle = twinkle(#FFD700, 8, 500ms) +animation blue_twinkle = twinkle(blue, 12, 300ms) +run gold_twinkle ``` **Important**: The DSL transpiler automatically passes `engine` as the first argument to all user functions. Your function signature must include `engine` as the first parameter, but DSL users don't need to provide it when calling the function. @@ -433,16 +492,13 @@ DSL supports nested function calls for complex compositions: ```berry # Nested calls in animation definitions (now supported) animation complex = pulsating_animation( - source=shift_animation( - source=solid(color=red), - offset=triangle(min=0, max=29, period=3s) - ), + color=red, period=2s ) # Nested calls in run statements sequence demo { - play pulsating_animation(source=shift_animation(source=solid(color=blue), offset=5), period=1s) for 10s + play pulsating_animation(color=blue, period=1s) for 10s } ``` @@ -521,6 +577,29 @@ sequence demo { # Transpiler error: "Undefined reference 'nonexistent_animation' in sequence play" ``` +**Function Call Safety Validation:** +```berry +# Error: Dangerous function creation in computed expression +set strip_len3 = (strip_length() + 1) / 2 +# Transpiler error: "Function 'strip_length()' cannot be used in computed expressions. +# This creates a new instance at each evaluation. Use either: +# set var_name = strip_length() # Single function call +# set computed = (existing_var + 1) / 2 # Computation with existing values" +``` + +**Why This Validation Exists:** +The transpiler prevents dangerous patterns where functions that create instances are called inside computed expressions that get wrapped in closures. This would create a new instance every time the closure is evaluated, leading to: +- Memory leaks +- Performance degradation +- Inconsistent behavior due to multiple timing states + +**Safe Alternative:** +```berry +# ✅ CORRECT: Separate function call from computation +set strip_len = strip_length() # Single function call +set strip_len3 = (strip_len + 1) / 2 # Computation with existing value +``` + ### Error Categories - **Syntax errors**: Invalid DSL syntax (lexer/parser errors) @@ -529,6 +608,7 @@ sequence demo { - **Constraint validation**: Parameter values that violate defined constraints (min/max, enums, types) - **Reference validation**: Using undefined colors, animations, or variables - **Type validation**: Incorrect parameter types or incompatible assignments +- **Safety validation**: Dangerous patterns that could cause memory leaks or performance issues - **Runtime errors**: Errors during Berry code execution (rare with good validation) ## Performance Considerations diff --git a/lib/libesp32/berry_animation/docs/QUICK_START.md b/lib/libesp32/berry_animation/docs/QUICK_START.md index da347ac55..0b712ffc0 100644 --- a/lib/libesp32/berry_animation/docs/QUICK_START.md +++ b/lib/libesp32/berry_animation/docs/QUICK_START.md @@ -123,11 +123,11 @@ animation comet = comet_animation( speed=2000 ) -# Sparkle effect -animation sparkles = sparkle_animation( +# Twinkling effect +animation sparkles = twinkle_animation( color=white - density=80 - fade_speed=60 + count=8 + period=800ms ) run breathing @@ -241,22 +241,22 @@ For complex logic, create custom functions in Berry: ```berry # Define custom function - engine must be first parameter -def my_sparkle(engine, color, density, speed) +def my_twinkle(engine, color, count, period) var anim = animation.twinkle_animation(engine) anim.color = color - anim.density = density - anim.speed = speed + anim.count = count + anim.period = period return anim end # Register for DSL use -animation.register_user_function("sparkle", my_sparkle) +animation.register_user_function("twinkle", my_twinkle) ``` ```berry # Use in DSL - engine is automatically passed -animation gold_sparkles = sparkle(0xFFD700, 8, 500ms) -run gold_sparkles +animation gold_twinkles = twinkle(0xFFD700, 8, 500ms) +run gold_twinkles ``` **Note**: The DSL automatically passes `engine` as the first argument to user functions. diff --git a/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md b/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md index 1ece900c1..1ab593c6b 100644 --- a/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md +++ b/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md @@ -56,6 +56,8 @@ transpile() │ │ ├── process_restart_statement_fluent() │ │ └── process_sequence_assignment_fluent() │ ├── process_import() (direct Berry import generation) +│ ├── process_event_handler() (basic event system support) +│ ├── process_berry_code_block() (embed arbitrary Berry code) │ ├── process_run() (collect for single engine.run()) │ └── process_property_assignment() └── generate_engine_start() (single call for all run statements) @@ -217,24 +219,210 @@ is_anonymous_function(expr_str) └── Skip closure wrapping for already-wrapped functions ``` +## Enhanced Symbol Table System + +The transpiler uses a sophisticated **SymbolTable** system for holistic symbol management and caching. This system provides dynamic symbol detection, type validation, and conflict prevention. + +### SymbolTable Architecture + +The symbol table consists of two main classes in `symbol_table.be`: + +#### SymbolEntry Class +``` +SymbolEntry +├── name: string # Symbol name +├── type: string # Symbol type classification +├── instance: object # Actual instance for validation +├── takes_args: boolean # Whether symbol accepts arguments +├── arg_type: string # "positional", "named", or "none" +└── is_builtin: boolean # Whether this is a built-in symbol from animation module +``` + +**Symbol Types Supported:** +- `"palette"` - Palette objects like `PALETTE_RAINBOW` (bytes instances) +- `"constant"` - Integer constants like `LINEAR`, `SINE`, `COSINE` +- `"math_function"` - Mathematical functions like `max`, `min` +- `"user_function"` - User-defined functions registered at runtime +- `"value_provider"` - Value provider constructors +- `"animation"` - Animation constructors +- `"color"` - Color definitions and providers +- `"variable"` - User-defined variables +- `"sequence"` - Sequence definitions +- `"template"` - Template definitions + +#### SymbolTable Class +``` +SymbolTable +├── entries: map # Map of name -> SymbolEntry +├── mock_engine: MockEngine # For validation testing +├── Dynamic Detection Methods: +│ ├── _detect_and_cache_symbol() # On-demand symbol detection +│ ├── contains() # Existence check with auto-detection +│ └── get() # Retrieval with auto-detection +├── Creation Methods: +│ ├── create_palette() +│ ├── create_color() +│ ├── create_animation() +│ ├── create_value_provider() +│ ├── create_variable() +│ ├── create_sequence() +│ └── create_template() +└── Validation Methods: + ├── symbol_exists() + ├── get_reference() + └── takes_args() / takes_positional_args() / takes_named_args() +``` + +### Dynamic Symbol Detection + +The SymbolTable uses **lazy detection** to identify and cache symbols as they are encountered: + +``` +_detect_and_cache_symbol(name) +├── Check if already cached → return cached entry +├── Check animation module using introspection: +│ ├── Detect bytes() instances → create_palette() +│ ├── Detect integer constants (type == "int") → create_constant() +│ ├── Detect math functions in animation._math → create_math_function() +│ ├── Detect user functions via animation.is_user_function() → create_user_function() +│ ├── Test constructors with MockEngine: +│ │ ├── Create instance with mock_engine +│ │ ├── Check isinstance(instance, animation.value_provider) → create_value_provider() +│ │ └── Check isinstance(instance, animation.animation) → create_animation() +│ └── Cache result for future lookups +└── Return nil if not found (handled as user-defined) +``` + +### Symbol Type Detection Examples + +**Palette Detection:** +```berry +# DSL: animation rainbow = rich_palette_animation(palette=PALETTE_RAINBOW) +# Detection: PALETTE_RAINBOW exists in animation module, isinstance(obj, bytes) +# Result: SymbolEntry("PALETTE_RAINBOW", "palette", bytes_instance, true) +# Reference: "animation.PALETTE_RAINBOW" +``` + +**Constant Detection:** +```berry +# DSL: animation wave = wave_animation(waveform=LINEAR) +# Detection: LINEAR exists in animation module, type(LINEAR) == "int" +# Result: SymbolEntry("LINEAR", "constant", 1, true) +# Reference: "animation.LINEAR" +``` + +**Math Function Detection:** +```berry +# DSL: animation.opacity = max(100, min(255, brightness)) +# Detection: max exists in animation._math, is callable +# Result: SymbolEntry("max", "math_function", nil, true) +# Reference: "animation.max" (transformed to "animation._math.max" in closures) +``` + +**Value Provider Detection:** +```berry +# DSL: set oscillator = triangle(min_value=0, max_value=100, period=2s) +# Detection: triangle(mock_engine) creates instance, isinstance(instance, animation.value_provider) +# Result: SymbolEntry("triangle", "value_provider", instance, true) +# Reference: "animation.triangle" +``` + +**User Function Detection:** +```berry +# DSL: animation demo = rand_demo(color=red) +# Detection: animation.is_user_function("rand_demo") returns true +# Result: SymbolEntry("rand_demo", "user_function", nil, true) +# Reference: "rand_demo_" (handled specially in function calls) +``` + +### Symbol Conflict Prevention + +The SymbolTable prevents symbol redefinition conflicts: + +``` +add(name, entry) +├── Check for built-in symbol conflicts: +│ ├── _detect_and_cache_symbol(name) +│ └── Raise "symbol_redefinition_error" if types differ +├── Check existing user-defined symbols: +│ ├── Compare entry.type with existing.type +│ └── Raise "symbol_redefinition_error" if types differ +├── Allow same-type updates (reassignment) +└── Return entry for method chaining +``` + +**Example Conflict Detection:** +```berry +# This would raise an error: +color max = #FF0000 # Conflicts with built-in math function "max" + +# This would also raise an error: +color red = #FF0000 +animation red = solid(color=blue) # Redefining "red" as different type +``` + +### Integration with Transpiler + +The SymbolTable integrates seamlessly with the transpiler's processing flow: + +### Performance Optimizations + +**Caching Strategy:** +- **Lazy Detection**: Symbols detected only when first encountered +- **Instance Reuse**: MockEngine instances reused for validation +- **Introspection Caching**: Built-in symbol detection cached permanently + +**Memory Efficiency:** +- **Minimal Storage**: Only essential information stored per symbol +- **Shared MockEngine**: Single MockEngine instance for all validation +- **Reference Counting**: Automatic cleanup of unused entries + +### MockEngine Integration + +The SymbolTable uses a lightweight MockEngine for constructor validation: + +``` +MockEngine +├── time_ms: 0 # Mock time for validation +├── get_strip_length(): 30 # Default strip length +└── Minimal interface for instance creation testing +``` + +**Usage in Detection:** +```berry +# Test if function creates value provider +try + var instance = factory_func(self.mock_engine) + if isinstance(instance, animation.value_provider) + return SymbolEntry.create_value_provider(name, instance, animation.value_provider) + end +except .. as e, msg + # Constructor failed - not a valid provider +end +``` + ## Validation System (Comprehensive) The transpiler includes **extensive compile-time validation** with robust error handling: -### Factory Function Validation (Enhanced) +### Factory Function Validation (Simplified using SymbolTable) ``` -_validate_factory_function(func_name, expected_base_class) -├── Check if function exists in animation module using introspection -├── Check if it's callable (function or class) -├── Create mock instance with MockEngine for type checking -├── Validate instance type matches expected base class -├── Handle mathematical functions separately (skip validation) -└── Graceful error handling with try/catch +_validate_animation_factory_exists(func_name) +├── Skip validation for mathematical functions +├── Use symbol_table.get(func_name) for dynamic detection +└── Return true if entry exists (any callable function is valid) -MockEngine class provides: -├── time_ms property for validation -├── get_strip_length() method returning default 30 -└── Minimal interface for instance creation +_validate_animation_factory_creates_animation(func_name) +├── Use symbol_table.get(func_name) for dynamic detection +└── Return true if entry.type == "animation" + +_validate_color_provider_factory_onsts(func_name) +├── Use symbol_table.get(func_name) for dynamic detection +└── Return true if entry exists (any callable function is valid) + +_validate_value_provider_factory_exists(func_name) +├── Use symbol_table.get(func_name) for dynamic detection +└── Return true if entry.type == "value_provider" ``` ### Parameter Validation (Real-time) @@ -246,33 +434,29 @@ _validate_single_parameter(func_name, param_name, animation_instance) ├── Validate immediately as parameters are parsed └── Graceful error handling to ensure transpiler robustness -_create_instance_for_validation(func_name) -├── Create MockEngine for validation -├── Call factory function with mock engine -├── Return instance for parameter validation -└── Handle creation failures gracefully +_create_instance_for_validation(func_name) - Simplified using SymbolTable +├── Use symbol_table.get(func_name) for dynamic detection +└── Return entry.instance if available, nil otherwise ``` -### Reference Validation (Consolidated) +### Reference Validation (Simplified using SymbolTable) ``` -resolve_symbol_reference(name) - Unified symbol resolution -├── Check if it's a named color → get_named_color_value() -├── Check symbol_table for user-defined objects → name_ -├── Check sequence_names for sequences → name_ -├── Check animation module using introspection → animation.name -└── Default to user-defined format → name_ +resolve_symbol_reference(name) - Simplified using SymbolTable +└── Use symbol_table.get_reference(name) for all symbol resolution validate_symbol_reference(name, context) - With error reporting -├── Use symbol_exists() to check all sources +├── Use symbol_exists() to check symbol_table ├── Report detailed error with context information └── Return validation status -symbol_exists(name) - Existence check -├── Check animation_dsl.is_color_name(name) -├── Check symbol_table.contains(name) -├── Check sequence_names.contains(name) -├── Check introspect.contains(animation, name) -└── Return boolean result +symbol_exists(name) - Simplified existence check +└── Use symbol_table.symbol_exists(name) for unified checking + +_validate_value_provider_reference(object_name, context) - Simplified +├── Check symbol_exists() using symbol_table +├── Use symbol_table.get(name) for type information +├── Check entry.type == "value_provider" || entry.type == "animation" +└── Report detailed error messages for invalid types ``` ### User Name Validation (Reserved Names) @@ -309,13 +493,15 @@ pulse_.color = animation.red pulse_.period = 2000 ``` -### Symbol Resolution (Consolidated) -The transpiler resolves symbols at compile time using **unified resolution logic**: -```berry -# Built-in symbols from animation module → animation.symbol -animation.red, animation.PALETTE_RAINBOW, animation.SINE, animation.COSINE +**Template-Only Exception**: Files containing only template definitions skip engine initialization and `engine.run()` generation, producing pure function libraries. -# User-defined symbols → symbol_ +### Symbol Resolution (Consolidated) +The transpiler resolves symbols at compile time using **unified resolution logic** based on the `is_builtin` flag: +```berry +# Built-in symbols (is_builtin=true) from animation module → animation.symbol +animation.linear, animation.PALETTE_RAINBOW, animation.SINE, animation.solid + +# User-defined symbols (is_builtin=false) → symbol_ my_color_, my_animation_, my_sequence_ # Named colors → direct ARGB values (resolved at compile time) @@ -323,7 +509,7 @@ red → 0xFFFF0000, blue → 0xFF0000FF # Template calls → template_function(engine, args) my_template(red, 2s) → my_template_template(engine, 0xFFFF0000, 2000) -``` + ### Closure Generation (Enhanced) Dynamic expressions are wrapped in closures with **mathematical function support**: @@ -333,7 +519,7 @@ Dynamic expressions are wrapped in closures with **mathematical function support animation.opacity = animation.create_closure_value(engine, def (self) return animation.resolve(strip_length_(engine)) / 2 + 50 end) -# DSL: animation.opacity = max(100, min(255, user.rand_demo() + 50)) +# DSL: animation.opacity = max(100, min(255, rand_demo() + 50)) # Generated: animation.opacity = animation.create_closure_value(engine, def (self) return animation._math.max(100, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 50)) end) @@ -385,6 +571,8 @@ var demo_ = animation.SequenceManager(engine) Templates are transpiled into Berry functions with **comprehensive parameter handling**: +**Template-Only Optimization**: Files containing only template definitions skip engine initialization and execution code generation, producing pure Berry function libraries. + ``` process_template() ├── expect_identifier() → template name @@ -445,6 +633,7 @@ The transpiler provides **comprehensive error reporting** with graceful degradat - **Reference validation** - Undefined object references with context information - **Constraint validation** - Parameter values outside valid ranges - **Type validation** - Incorrect parameter types with expected types +- **Safety validation** - Dangerous patterns that could cause memory leaks or performance issues - **Template errors** - Template definition and call validation - **Reserved name conflicts** - User names conflicting with built-ins @@ -509,7 +698,7 @@ get_error_report() ### User Function Integration - **Template registration** as user functions with automatic naming -- **User function call detection** with user. prefix handling +- **User function call detection** usable as normal functions with positional arguments - **Closure generation** for computed parameters with mathematical functions - **Template call resolution** in multiple contexts (animation, property, standalone) - **Import statement processing** for user function modules @@ -535,9 +724,86 @@ The refactored transpiler emphasizes: 1. **Simplicity** - Ultra-simplified single-pass architecture 2. **Robustness** - Comprehensive error handling and graceful degradation -3. **Validation** - Extensive compile-time validation with detailed error messages -4. **Flexibility** - Support for templates, multiple syntax variants, and user functions -5. **Performance** - Efficient processing with minimal memory overhead -6. **Maintainability** - Clear separation of concerns and unified processing methods +3. **Enhanced Symbol Management** - Dynamic SymbolTable system with intelligent caching and conflict detection +4. **Validation** - Extensive compile-time validation with detailed error messages +5. **Flexibility** - Support for templates, multiple syntax variants, and user functions +6. **Performance** - Efficient processing with minimal memory overhead and lazy symbol detection +7. **Maintainability** - Clear separation of concerns and unified processing methods -This architecture ensures robust, efficient transpilation from DSL to executable Berry code while providing comprehensive validation, detailed error reporting, and extensive language features. \ No newline at end of file +## Recent Refactoring Improvements + +### Code Simplification Using SymbolTable + +The transpiler has been significantly refactored to leverage the `symbol_table.be` system more extensively: + +#### **Factory Validation Simplification** +- **Before**: Complex validation with introspection and manual instance creation (~50 lines) +- **After**: Simple validation using symbol_table's dynamic detection (~25 lines) +- **Improvement**: 50% code reduction with better maintainability + +#### **Symbol Resolution Consolidation** +- **Before**: Multiple separate checks for sequences, introspection, etc. +- **After**: Unified resolution through `symbol_table.get_reference()` +- **Improvement**: Single source of truth for all symbol resolution + +#### **Duplicate Code Elimination** +- **Before**: Duplicate code patterns in `process_color()` and `process_animation()` methods +- **After**: Consolidated into reusable `_process_simple_value_assignment()` helper +- **Improvement**: 70% reduction in duplicate code blocks + +#### **Legacy Variable Removal** +- **Before**: Separate tracking of sequences in `sequence_names` variable +- **After**: All symbols tracked uniformly in `symbol_table` +- **Improvement**: Eliminated redundancy and simplified state management + +### Major Enhancements + +**SymbolTable System:** +- **Dynamic Detection**: Automatically detects and caches symbol types as encountered +- **Conflict Prevention**: Prevents redefinition of symbols with different types +- **Performance Optimization**: Lazy loading and efficient symbol resolution for optimal performance +- **Type Safety**: Comprehensive type checking with MockEngine validation +- **Modular Design**: Separated into `symbol_table.be` for reusability +- **Constant Detection**: Added support for integer constants like `LINEAR`, `SINE`, `COSINE` + +**Enhanced Symbol Detection:** +- **Palette Objects**: `PALETTE_RAINBOW` → `animation.PALETTE_RAINBOW` +- **Integer Constants**: `LINEAR`, `SINE`, `COSINE` → `animation.LINEAR`, `animation.SINE`, `animation.COSINE` +- **Math Functions**: `max`, `min` → `animation.max`, `animation.min` (transformed to `animation._math.*` in closures) +- **Value Providers**: `triangle`, `smooth` → `animation.triangle`, `animation.smooth` +- **Animation Constructors**: `solid`, `pulsating_animation` → `animation.solid`, `animation.pulsating_animation` +- **User-defined Symbols**: `my_color`, `my_animation` → `my_color_`, `my_animation_` + +**Validation Improvements:** +- **Real-time Validation**: Parameter validation as symbols are parsed +- **Instance-based Checking**: Uses actual instances for accurate validation +- **Graceful Error Handling**: Robust error recovery with detailed error messages +- **Simplified Validation Methods**: Factory validation reduced from ~50 to ~25 lines using symbol_table +- **Unified Symbol Checking**: All symbol existence checks go through symbol_table system +- **Enhanced Type Detection**: Automatic detection of constants, palettes, functions, and constructors + +This architecture ensures robust, efficient transpilation from DSL to executable Berry code while providing comprehensive validation, detailed error reporting, intelligent symbol management, and extensive language features. + +### Symbol Reference Generation + +The enhanced SymbolEntry system uses the `is_builtin` flag to determine correct reference generation: + +```berry +# SymbolEntry.get_reference() method +def get_reference() + if self.is_builtin + return f"animation.{self.name}" # Built-in symbols: animation.LINEAR + else + return f"{self.name}_" # User-defined symbols: my_color_ + end +end +``` + +**Examples:** +- **Built-in Constants**: `LINEAR` → `animation.LINEAR` +- **Built-in Functions**: `triangle` → `animation.triangle` +- **Built-in Palettes**: `PALETTE_RAINBOW` → `animation.PALETTE_RAINBOW` +- **User-defined Colors**: `my_red` → `my_red_` +- **User-defined Animations**: `pulse_anim` → `pulse_anim_` + +This ensures consistent and correct symbol resolution throughout the transpilation process. \ No newline at end of file diff --git a/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md b/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md index 70ac529dd..33e71b5b2 100644 --- a/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md +++ b/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md @@ -30,7 +30,7 @@ animation.register_user_function("breathing", my_breathing) ### 3. Use It in DSL -First, import your user functions module, then call your function with the `user.` prefix in computed parameters: +First, import your user functions module, then call your function directly in computed parameters: ```berry # Import your user functions module @@ -38,10 +38,10 @@ import user_functions # Use your custom function in computed parameters animation calm = solid(color=blue) -calm.opacity = user.breathing_effect() +calm.opacity = breathing_effect() animation energetic = solid(color=red) -energetic.opacity = user.breathing_effect() +energetic.opacity = breathing_effect() sequence demo { play calm for 10s @@ -61,9 +61,9 @@ The DSL supports importing Berry modules using the `import` keyword. This is the # Import user functions at the beginning of your DSL file import user_functions -# Now user functions are available with the user. prefix +# Now user functions are available directly animation test = solid(color=blue) -test.opacity = user.my_function() +test.opacity = my_function() ``` ### Import Behavior @@ -107,15 +107,15 @@ import user_functions # Simple user function call animation random_test = solid(color=red) -random_test.opacity = user.rand_demo() +random_test.opacity = rand_demo() # User function with parameters animation breathing_blue = solid(color=blue) -breathing_blue.opacity = user.breathing(128, 64) +breathing_blue.opacity = breathing(128, 64) # User functions in mathematical expressions animation complex = solid(color=green) -complex.opacity = max(50, min(255, user.rand_demo() + 100)) +complex.opacity = max(50, min(255, rand_demo() + 100)) run random_test ``` @@ -129,11 +129,11 @@ import user_functions # Basic user functions import fire_effects # Fire animation functions import color_utilities # Color manipulation functions -animation base = solid(color=user.random_color()) -base.opacity = user.breathing(200, 50) +animation base = solid(color=random_color()) +base.opacity = breathing(200, 50) animation flames = solid(color=red) -flames.opacity = user.fire_intensity(180) +flames.opacity = fire_intensity(180) ``` ## Common Patterns @@ -153,10 +153,10 @@ animation.register_user_function("bright", solid_bright) ```berry animation bright_red = solid(color=red) -bright_red.opacity = user.bright(80) +bright_red.opacity = bright(80) animation dim_blue = solid(color=blue) -dim_blue.opacity = user.bright(30) +dim_blue.opacity = bright(30) ``` ### Fire Effects @@ -178,32 +178,32 @@ animation.register_user_function("fire", custom_fire) ```berry animation campfire = solid(color=red) -campfire.opacity = user.fire(200, 2000) +campfire.opacity = fire(200, 2000) animation torch = solid(color=orange) -torch.opacity = user.fire(255, 500) +torch.opacity = fire(255, 500) ``` -### Sparkle Effects +### Twinkling Effects ```berry -def sparkles(engine, color, density, speed) +def twinkles(engine, color, count, period) var anim = animation.twinkle_animation(engine) anim.color = color - anim.density = density - anim.speed = speed + anim.count = count + anim.period = period return anim end -animation.register_user_function("sparkles", sparkles) +animation.register_user_function("twinkles", twinkles) ``` ```berry animation stars = solid(color=white) -stars.opacity = user.sparkles(12, 300) +stars.opacity = twinkles(12, 800ms) animation fairy_dust = solid(color=#FFD700) -fairy_dust.opacity = user.sparkles(8, 500) +fairy_dust.opacity = twinkles(8, 600ms) ``` ### Position-Based Effects @@ -223,10 +223,10 @@ animation.register_user_function("pulse_at", pulse_at) ```berry animation left_pulse = solid(color=green) -left_pulse.position = user.pulse_at(5, 3, 2000) +left_pulse.position = pulse_at(5, 3, 2000) animation right_pulse = solid(color=blue) -right_pulse.position = user.pulse_at(25, 3, 2000) +right_pulse.position = pulse_at(25, 3, 2000) ``` ## Advanced Examples @@ -234,7 +234,7 @@ right_pulse.position = user.pulse_at(25, 3, 2000) ### Multi-Layer Effects ```berry -def rainbow_sparkle(engine, base_speed, sparkle_density) +def rainbow_twinkle(engine, base_speed, twinkle_density) # Create base rainbow animation var rainbow_provider = animation.rich_palette(engine) rainbow_provider.palette = animation.PALETTE_RAINBOW @@ -291,7 +291,7 @@ animation.register_user_function("custom_palette", create_custom_palette) ```berry # Use dynamic palette in DSL animation gradient_effect = rich_palette( - palette=user.custom_palette(0xFF6B35, 5, 255) + palette=custom_palette(0xFF6B35, 5, 255) cycle_period=4s ) @@ -325,13 +325,13 @@ animation.register_user_function("alert", gentle_alert) ```berry animation emergency = solid(color=red) -emergency.opacity = user.strobe() +emergency.opacity = strobe() animation notification = solid(color=yellow) -notification.opacity = user.alert() +notification.opacity = alert() animation custom_police = solid(color=blue) -custom_police.opacity = user.police(500) +custom_police.opacity = police(500) ``` ## Function Organization @@ -350,14 +350,14 @@ def fire_effect(engine, intensity, speed) # ... implementation end -def sparkle_effect(engine, color, density, speed) +def twinkle_effect(engine, color, count, period) # ... implementation end # Register all functions animation.register_user_function("breathing", breathing) animation.register_user_function("fire", fire_effect) -animation.register_user_function("sparkle", sparkle_effect) +animation.register_user_function("twinkle", twinkle_effect) print("Custom animations loaded!") ``` @@ -456,7 +456,7 @@ User functions can be used in computed parameter expressions alongside mathemati ```berry # Simple user function call in property assignment animation base = solid(color=blue, priority=10) -base.opacity = user.rand_demo() # User function as computed parameter +base.opacity = rand_demo() # User function as computed parameter ``` ### User Functions with Mathematical Operations @@ -468,7 +468,7 @@ set strip_len = strip_length() # Mix user functions with mathematical functions animation dynamic_solid = solid( color=purple - opacity=max(50, min(255, user.rand_demo() + 100)) # Random opacity with bounds + opacity=max(50, min(255, rand_demo() + 100)) # Random opacity with bounds priority=15 ) ``` @@ -479,7 +479,7 @@ animation dynamic_solid = solid( # Use user function in arithmetic expressions animation random_effect = solid( color=cyan - opacity=abs(user.rand_demo() - 128) + 64 # Random variation around middle value + opacity=abs(rand_demo() - 128) + 64 # Random variation around middle value priority=12 ) ``` @@ -496,7 +496,7 @@ When you use user functions in computed parameters: **Generated Code Example:** ```berry # DSL code -animation.opacity = max(100, user.breathing(red, 2000)) +animation.opacity = max(100, breathing(red, 2000)) ``` **Transpiles to:** @@ -513,7 +513,7 @@ The following user functions are available by default: | Function | Parameters | Description | |----------|------------|-------------| -| `user.rand_demo()` | none | Returns a random value (0-255) for demonstration | +| `rand_demo()` | none | Returns a random value (0-255) for demonstration | ### Best Practices for Computed Parameters @@ -537,13 +537,13 @@ var dsl_code = "import user_functions\n" "\n" "animation my_fire = solid(color=red)\n" - "my_fire.opacity = user.fire(200, 1500)\n" - "animation my_sparkles = solid(color=white)\n" - "my_sparkles.opacity = user.sparkle(8, 400)\n" + "my_fire.opacity = fire(200, 1500)\n" + "animation my_twinkles = solid(color=white)\n" + "my_twinkles.opacity = twinkle(8, 400ms)\n" "\n" "sequence show {\n" " play my_fire for 10s\n" - " play my_sparkles for 5s\n" + " play my_twinkles for 5s\n" "}\n" "\n" "run show" @@ -559,9 +559,9 @@ var my_show = "import user_functions\n" "\n" "animation campfire = solid(color=orange)\n" - "campfire.opacity = user.fire(180, 2000)\n" + "campfire.opacity = fire(180, 2000)\n" "animation stars = solid(color=#FFFFFF)\n" - "stars.opacity = user.sparkle(6, 600)\n" + "stars.opacity = twinkle(6, 600ms)\n" "\n" "sequence night_scene {\n" " play campfire for 30s\n" diff --git a/lib/libesp32/berry_animation/src/animation.be b/lib/libesp32/berry_animation/src/animation.be index d877ac2e5..4be3a4722 100644 --- a/lib/libesp32/berry_animation/src/animation.be +++ b/lib/libesp32/berry_animation/src/animation.be @@ -107,6 +107,8 @@ import "providers/oscillator_value_provider.be" as oscillator_value_provider register_to_animation(oscillator_value_provider) import "providers/strip_length_provider.be" as strip_length_provider register_to_animation(strip_length_provider) +import "providers/iteration_number_provider.be" as iteration_number_provider +register_to_animation(iteration_number_provider) import "providers/closure_value_provider.be" as closure_value_provider register_to_animation(closure_value_provider) @@ -145,24 +147,26 @@ import "animations/gradient" as gradient_animation register_to_animation(gradient_animation) import "animations/noise" as noise_animation register_to_animation(noise_animation) -import "animations/plasma" as plasma_animation -register_to_animation(plasma_animation) -import "animations/sparkle" as sparkle_animation -register_to_animation(sparkle_animation) +# import "animations/plasma" as plasma_animation +# register_to_animation(plasma_animation) +# import "animations/sparkle" as sparkle_animation +# register_to_animation(sparkle_animation) import "animations/wave" as wave_animation register_to_animation(wave_animation) -import "animations/shift" as shift_animation -register_to_animation(shift_animation) -import "animations/bounce" as bounce_animation -register_to_animation(bounce_animation) -import "animations/scale" as scale_animation -register_to_animation(scale_animation) -import "animations/jitter" as jitter_animation -register_to_animation(jitter_animation) +# import "animations/shift" as shift_animation +# register_to_animation(shift_animation) +# import "animations/bounce" as bounce_animation +# register_to_animation(bounce_animation) +# import "animations/scale" as scale_animation +# register_to_animation(scale_animation) +# import "animations/jitter" as jitter_animation +# register_to_animation(jitter_animation) # Import palette examples import "animations/palettes" as palettes register_to_animation(palettes) +# import "animations/all_wled_palettes" as all_wled_palettes +# register_to_animation(all_wled_palettes) # Import specialized animation classes import "animations/rich_palette_animation" as rich_palette_animation diff --git a/lib/libesp32/berry_animation/src/animation_dsl.be b/lib/libesp32/berry_animation/src/animation_dsl.be index 8dd93e25c..bc24505b6 100644 --- a/lib/libesp32/berry_animation/src/animation_dsl.be +++ b/lib/libesp32/berry_animation/src/animation_dsl.be @@ -25,6 +25,7 @@ import animation # We don't include it to not create a closure, but use the global instead # Create the DSL module and make it globally accessible +#@ solidify:animation_dsl.SimpleDSLTranspiler.ExpressionResult,weak #@ solidify:animation_dsl,weak var animation_dsl = module("animation_dsl") global.animation_dsl = animation_dsl @@ -46,8 +47,12 @@ import "dsl/lexer.be" as dsl_lexer register_to_dsl(dsl_lexer) import "dsl/transpiler.be" as dsl_transpiler register_to_dsl(dsl_transpiler) +import "dsl/symbol_table.be" as dsl_symbol_table +register_to_dsl(dsl_symbol_table) import "dsl/runtime.be" as dsl_runtime register_to_dsl(dsl_runtime) +import "dsl/named_colors.be" as dsl_named_colors +register_to_dsl(dsl_named_colors) # Main DSL compilation function # Compiles DSL source code to Berry code diff --git a/lib/libesp32/berry_animation/src/animations/all_wled_palettes.be b/lib/libesp32/berry_animation/src/animations/all_wled_palettes.be new file mode 100644 index 000000000..61aa31c92 --- /dev/null +++ b/lib/libesp32/berry_animation/src/animations/all_wled_palettes.be @@ -0,0 +1,1244 @@ +# Generated Berry code from Animation DSL +# Source: all_wled_palettes.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +# Complete WLED Palette Collection for Berry Animation Framework +# Converted from both .c3g files and WLED header definitions +# Total palettes: 104 +# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# = +# Palettes from downloaded .c3g files +# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# = +# Source: Analogous_1.c3g +# Auto-generated strip initialization (using Tasmota configuration) + +var PALETTE_ANALOGOUS_1_ = bytes( + "003300FF" # 0.0% rgb(51,0,255) (start) + "406600FF" # 25.0% rgb(102,0,255) + "809900FF" # 50.0% rgb(153,0,255) + "BFCC0080" # 75.0% rgb(204,0,128) + "FFFF0000" # 100.0% rgb(255,0,0) (end) +) +# Source: Another_Sunset.c3g +var PALETTE_ANOTHER_SUNSET_ = bytes( + "00B97949" # 0.0% rgb(185,121,73) (start) + "1E8E6747" # 11.7% rgb(142,103,71) + "44645445" # 26.8% rgb(100,84,69) + "44F9B842" # 26.8% rgb(249,184,66) + "61F1CC69" # 38.2% rgb(241,204,105) + "7DEAE190" # 48.8% rgb(234,225,144) + "B3757D8C" # 70.1% rgb(117,125,140) + "FF001A88" # 100.0% rgb(0,26,136) (end) +) +# Source: Beech.c3g +var PALETTE_BEECH_ = bytes( + "00FFFEEE" # 0.0% rgb(255,254,238) (start) + "0CFFFEEE" # 4.8% rgb(255,254,238) + "17FFFEEE" # 9.0% rgb(255,254,238) + "1AE4E0BA" # 10.3% rgb(228,224,186) + "1DC9C387" # 11.3% rgb(201,195,135) + "1DBAFFEA" # 11.3% rgb(186,255,234) + "338AFBEE" # 19.9% rgb(138,251,238) + "475AF6F3" # 27.9% rgb(90,246,243) + "5D2DE1E7" # 36.6% rgb(45,225,231) + "7800CCDB" # 47.2% rgb(0,204,219) + "8608A8BA" # 52.4% rgb(8,168,186) + "88108499" # 53.4% rgb(16,132,153) + "8841BDD9" # 53.4% rgb(65,189,217) + "D1219FCF" # 81.8% rgb(33,159,207) + "FF0081C5" # 100.0% rgb(0,129,197) (end) +) +# Source: BlacK_Blue_Magenta_White.c3g +var PALETTE_BLACK_BLUE_MAGENTA_WHITE_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "2B000080" # 16.7% rgb(0,0,128) + "550000FF" # 33.3% rgb(0,0,255) + "808000FF" # 50.0% rgb(128,0,255) + "AAFF00FF" # 66.7% rgb(255,0,255) + "D4FF80FF" # 83.3% rgb(255,128,255) + "FFFFFFFF" # 100.0% rgb(255,255,255) (end) +) +# Source: BlacK_Magenta_Red.c3g +var PALETTE_BLACK_MAGENTA_RED_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "40800080" # 25.0% rgb(128,0,128) + "80FF00FF" # 50.0% rgb(255,0,255) + "BFFF0080" # 75.0% rgb(255,0,128) + "FFFF0000" # 100.0% rgb(255,0,0) (end) +) +# Source: BlacK_Red_Magenta_Yellow.c3g +var PALETTE_BLACK_RED_MAGENTA_YELLOW_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "2B800000" # 16.7% rgb(128,0,0) + "55FF0000" # 33.3% rgb(255,0,0) + "80FF0080" # 50.0% rgb(255,0,128) + "AAFF00FF" # 66.7% rgb(255,0,255) + "D4FF8080" # 83.3% rgb(255,128,128) + "FFFFFF00" # 100.0% rgb(255,255,0) (end) +) +# Source: Blue_Cyan_Yellow.c3g +var PALETTE_BLUE_CYAN_YELLOW_ = bytes( + "000000FF" # 0.0% rgb(0,0,255) (start) + "400080FF" # 25.0% rgb(0,128,255) + "8000FFFF" # 50.0% rgb(0,255,255) + "BF80FF80" # 75.0% rgb(128,255,128) + "FFFFFF00" # 100.0% rgb(255,255,0) (end) +) +# Source: Colorfull.c3g +var PALETTE_COLORFULL_ = bytes( + "004C9B36" # 0.0% rgb(76,155,54) (start) + "1A6FAE59" # 10.0% rgb(111,174,89) + "3C92C17D" # 23.5% rgb(146,193,125) + "5DA6A688" # 36.6% rgb(166,166,136) + "6AB98A93" # 41.6% rgb(185,138,147) + "6DC17994" # 42.9% rgb(193,121,148) + "71CA6895" # 44.4% rgb(202,104,149) + "75E5B3AE" # 45.7% rgb(229,179,174) + "7DFFFFC7" # 48.9% rgb(255,255,199) + "A8B2DAD1" # 65.9% rgb(178,218,209) + "FF64B6DB" # 100.0% rgb(100,182,219) (end) +) +# Source: GMT_drywet.c3g +var PALETTE_GMT_DRYWET_ = bytes( + "0086612A" # 0.0% rgb(134,97,42) (start) + "2BEEC764" # 16.7% rgb(238,199,100) + "55B4EE87" # 33.3% rgb(180,238,135) + "8032EEEB" # 50.0% rgb(50,238,235) + "AA0C78EE" # 66.7% rgb(12,120,238) + "D42601B7" # 83.3% rgb(38,1,183) + "FF083371" # 100.0% rgb(8,51,113) (end) +) +# Source: Pink_Purple.c3g +var PALETTE_PINK_PURPLE_ = bytes( + "005F2079" # 0.0% rgb(95,32,121) (start) + "1A6A2880" # 10.0% rgb(106,40,128) + "33753087" # 20.0% rgb(117,48,135) + "4C9A87C0" # 30.0% rgb(154,135,192) + "66BEDEF9" # 40.0% rgb(190,222,249) + "6DD7ECFC" # 42.9% rgb(215,236,252) + "73F0FAFF" # 44.9% rgb(240,250,255) + "7AD5C8F1" # 47.9% rgb(213,200,241) + "96BB95E2" # 58.8% rgb(187,149,226) + "B7C482D1" # 72.0% rgb(196,130,209) + "FFCE6FBF" # 100.0% rgb(206,111,191) (end) +) +# Source: Sunset_Real.c3g +var PALETTE_SUNSET_REAL_ = bytes( + "00BF0000" # 0.0% rgb(191,0,0) (start) + "17DF5500" # 8.8% rgb(223,85,0) + "34FFAA00" # 20.4% rgb(255,170,0) + "55D95559" # 33.4% rgb(217,85,89) + "88B200B2" # 53.3% rgb(178,0,178) + "C65900C3" # 77.8% rgb(89,0,195) + "FF0000D4" # 100.0% rgb(0,0,212) (end) +) +# Source: Sunset_Yellow.c3g +var PALETTE_SUNSET_YELLOW_ = bytes( + "004C87BF" # 0.0% rgb(76,135,191) (start) + "258FBCB2" # 14.5% rgb(143,188,178) + "57D2F1A5" # 34.2% rgb(210,241,165) + "64E8ED97" # 39.2% rgb(232,237,151) + "6CFFE88A" # 42.2% rgb(255,232,138) + "74FCCA8D" # 45.4% rgb(252,202,141) + "78F9AC90" # 47.2% rgb(249,172,144) + "81FCCA8D" # 50.4% rgb(252,202,141) + "B5FFE88A" # 71.0% rgb(255,232,138) + "DFFFF283" # 87.5% rgb(255,242,131) + "FFFFFC7D" # 100.0% rgb(255,252,125) (end) +) +# Source: Tertiary_01.c3g +var PALETTE_TERTIARY_01_ = bytes( + "000019FF" # 0.0% rgb(0,25,255) (start) + "40338C80" # 25.0% rgb(51,140,128) + "8066FF00" # 50.0% rgb(102,255,0) + "BFB28C1A" # 75.0% rgb(178,140,26) + "FFFF1933" # 100.0% rgb(255,25,51) (end) +) +# Source: bhw1_01.c3g +var PALETTE_BHW1_01_ = bytes( + "00F4A830" # 0.0% rgb(244,168,48) (start) + "75E64E5C" # 46.0% rgb(230,78,92) + "FFAD36E4" # 100.0% rgb(173,54,228) (end) +) +# Source: bhw1_04.c3g +var PALETTE_BHW1_04_ = bytes( + "00F5F21F" # 0.0% rgb(245,242,31) (start) + "0FF4A830" # 6.0% rgb(244,168,48) + "8F7E15A1" # 56.0% rgb(126,21,161) + "C75A16A0" # 78.0% rgb(90,22,160) + "FF000080" # 100.0% rgb(0,0,128) (end) +) +# Source: bhw1_05.c3g +var PALETTE_BHW1_05_ = bytes( + "0005EF89" # 0.0% rgb(5,239,137) (start) + "FF9E23DD" # 100.0% rgb(158,35,221) (end) +) +# Source: bhw1_06.c3g +var PALETTE_BHW1_06_ = bytes( + "00E113C2" # 0.0% rgb(225,19,194) (start) + "A113E1DF" # 63.0% rgb(19,225,223) + "DBD2F2E3" # 86.0% rgb(210,242,227) + "FFFFFFFF" # 100.0% rgb(255,255,255) (end) +) +# Source: bhw1_14.c3g +var PALETTE_BHW1_14_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "0C230430" # 4.8% rgb(35,4,48) + "36460860" # 21.0% rgb(70,8,96) + "513830A8" # 31.7% rgb(56,48,168) + "782B59EF" # 47.0% rgb(43,89,239) + "92403BAF" # 57.1% rgb(64,59,175) + "BA561E6E" # 73.0% rgb(86,30,110) + "EA2B0F37" # 91.6% rgb(43,15,55) + "FF000000" # 100.0% rgb(0,0,0) (end) +) +# Source: bhw1_three.c3g +var PALETTE_BHW1_THREE_ = bytes( + "00FFFFFF" # 0.0% rgb(255,255,255) (start) + "2E4040FF" # 18.0% rgb(64,64,255) + "70F410C1" # 44.0% rgb(244,16,193) + "70F410C1" # 44.0% rgb(244,16,193) + "8CFFFFFF" # 55.0% rgb(255,255,255) + "9CF410C1" # 61.0% rgb(244,16,193) + "C4830DAF" # 77.0% rgb(131,13,175) + "FFFFFFFF" # 100.0% rgb(255,255,255) (end) +) +# Source: bhw1_w00t.c3g +var PALETTE_BHW1_W00T_ = bytes( + "0031447E" # 0.0% rgb(49,68,126) (start) + "69A2C3F9" # 41.0% rgb(162,195,249) + "BDFF0000" # 74.0% rgb(255,0,0) + "FF6E0E0E" # 100.0% rgb(110,14,14) (end) +) +# Source: bhw2_22.c3g +var PALETTE_BHW2_22_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "63F40C0C" # 39.0% rgb(244,12,12) + "82FDE4AC" # 51.0% rgb(253,228,172) + "9CF40C0C" # 61.0% rgb(244,12,12) + "FF000000" # 100.0% rgb(0,0,0) (end) +) +# Source: bhw2_23.c3g +var PALETTE_BHW2_23_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "4290F2F6" # 26.0% rgb(144,242,246) + "61FFFF40" # 38.0% rgb(255,255,64) + "7DFFFFFF" # 49.0% rgb(255,255,255) + "99FFFF40" # 60.0% rgb(255,255,64) + "BD90F2F6" # 74.0% rgb(144,242,246) + "FF000000" # 100.0% rgb(0,0,0) (end) +) +# Source: bhw2_45.c3g +var PALETTE_BHW2_45_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "0A1E151E" # 3.8% rgb(30,21,30) + "293C2B3C" # 16.0% rgb(60,43,60) + "423C2B3C" # 26.0% rgb(60,43,60) + "664C104D" # 40.0% rgb(76,16,77) + "FF000000" # 100.0% rgb(0,0,0) (end) +) +# Source: bhw2_xc.c3g +var PALETTE_BHW2_XC_ = bytes( + "00381E44" # 0.0% rgb(56,30,68) (start) + "3B590082" # 23.0% rgb(89,0,130) + "7A670056" # 48.0% rgb(103,0,86) + "9ECD391D" # 62.0% rgb(205,57,29) + "B8DF7523" # 72.0% rgb(223,117,35) + "DBF1B129" # 86.0% rgb(241,177,41) + "FFF7F723" # 100.0% rgb(247,247,35) (end) +) +# Source: bhw3_40.c3g +var PALETTE_BHW3_40_ = bytes( + "00070707" # 0.0% rgb(7,7,7) (start) + "2B351949" # 17.0% rgb(53,25,73) + "4C4C0F2E" # 30.0% rgb(76,15,46) + "6ED6276C" # 43.0% rgb(214,39,108) + "80FF9CBF" # 50.0% rgb(255,156,191) + "A6C249D4" # 65.0% rgb(194,73,212) + "CC7842F2" # 80.0% rgb(120,66,242) + "FF5D1D5A" # 100.0% rgb(93,29,90) (end) +) +# Source: bhw3_52.c3g +var PALETTE_BHW3_52_ = bytes( + "00721669" # 0.0% rgb(114,22,105) (start) + "2E761655" # 18.0% rgb(118,22,85) + "63C92D43" # 39.0% rgb(201,45,67) + "85EEBB46" # 52.0% rgb(238,187,70) + "B0E85522" # 69.0% rgb(232,85,34) + "C9E8383B" # 79.0% rgb(232,56,59) + "FF050004" # 100.0% rgb(5,0,4) (end) +) +# Source: bhw4_017.c3g +var PALETTE_BHW4_017_ = bytes( + "007C6672" # 0.0% rgb(124,102,114) (start) + "1A373153" # 10.0% rgb(55,49,83) + "30886060" # 19.0% rgb(136,96,96) + "4AF3D622" # 29.0% rgb(243,214,34) + "59DE6836" # 35.0% rgb(222,104,54) + "82373153" # 51.0% rgb(55,49,83) + "A3FFB13A" # 64.0% rgb(255,177,58) + "BAF3D622" # 73.0% rgb(243,214,34) + "D47C6672" # 83.0% rgb(124,102,114) + "FF1D1312" # 100.0% rgb(29,19,18) (end) +) +# Source: bhw4_097.c3g +var PALETTE_BHW4_097_ = bytes( + "00FC2E00" # 0.0% rgb(252,46,0) (start) + "1CFF8B21" # 11.0% rgb(255,139,33) + "2BF79E4A" # 17.0% rgb(247,158,74) + "3BF7D886" # 23.0% rgb(247,216,134) + "54F55E0F" # 33.0% rgb(245,94,15) + "73BB4110" # 45.0% rgb(187,65,16) + "8CFFF17F" # 55.0% rgb(255,241,127) + "A8BB4110" # 66.0% rgb(187,65,16) + "C4FBE9A7" # 77.0% rgb(251,233,167) + "D9FF5E09" # 85.0% rgb(255,94,9) + "FF8C0806" # 100.0% rgb(140,8,6) (end) +) +# Source: departure.c3g +var PALETTE_DEPARTURE_ = bytes( + "00442200" # 0.0% rgb(68,34,0) (start) + "2B442200" # 16.7% rgb(68,34,0) + "2B663300" # 16.7% rgb(102,51,0) + "40663300" # 25.0% rgb(102,51,0) + "40A06C3C" # 25.0% rgb(160,108,60) + "55A06C3C" # 33.3% rgb(160,108,60) + "55DAA678" # 33.3% rgb(218,166,120) + "6ADAA678" # 41.7% rgb(218,166,120) + "6AEED4BC" # 41.7% rgb(238,212,188) + "75EED4BC" # 45.8% rgb(238,212,188) + "75FFFFFF" # 45.8% rgb(255,255,255) + "8AFFFFFF" # 54.2% rgb(255,255,255) + "8AC8FFC8" # 54.2% rgb(200,255,200) + "95C8FFC8" # 58.3% rgb(200,255,200) + "9564FF64" # 58.3% rgb(100,255,100) + "AA64FF64" # 66.7% rgb(100,255,100) + "AA00FF00" # 66.7% rgb(0,255,0) + "BF00FF00" # 75.0% rgb(0,255,0) + "BF00C000" # 75.0% rgb(0,192,0) + "D400C000" # 83.3% rgb(0,192,0) + "D4008000" # 83.3% rgb(0,128,0) + "FF008000" # 100.0% rgb(0,128,0) (end) +) +# Source: es_autumn_19.c3g +var PALETTE_ES_AUTUMN_19_ = bytes( + "006A0E08" # 0.0% rgb(106,14,8) (start) + "33992913" # 20.0% rgb(153,41,19) + "54BE4618" # 33.0% rgb(190,70,24) + "69C9CA88" # 41.0% rgb(201,202,136) + "70BB8905" # 44.0% rgb(187,137,5) + "7AC7C88E" # 48.0% rgb(199,200,142) + "7DC9CA87" # 49.0% rgb(201,202,135) + "87BB8905" # 53.0% rgb(187,137,5) + "8FCACB81" # 56.0% rgb(202,203,129) + "A3BB4418" # 64.0% rgb(187,68,24) + "CC8E2311" # 80.0% rgb(142,35,17) + "FA5A0504" # 98.0% rgb(90,5,4) + "FF5A0504" # 100.0% rgb(90,5,4) (end) +) +# Source: es_landscape_33.c3g +var PALETTE_ES_LANDSCAPE_33_ = bytes( + "00132D00" # 0.0% rgb(19,45,0) (start) + "14745603" # 7.8% rgb(116,86,3) + "26D68007" # 15.0% rgb(214,128,7) + "40F5C519" # 25.0% rgb(245,197,25) + "427CC49C" # 26.0% rgb(124,196,156) + "FF09270B" # 100.0% rgb(9,39,11) (end) +) +# Source: es_landscape_64.c3g +var PALETTE_ES_LANDSCAPE_64_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "252B591A" # 14.7% rgb(43,89,26) + "4C57B235" # 30.0% rgb(87,178,53) + "80A3EB08" # 50.0% rgb(163,235,8) + "81C3EA82" # 50.5% rgb(195,234,130) + "82E3E9FC" # 51.0% rgb(227,233,252) + "99CDDBEA" # 60.0% rgb(205,219,234) + "CC92B3FD" # 80.0% rgb(146,179,253) + "FF276BE4" # 100.0% rgb(39,107,228) (end) +) +# Source: es_ocean_breeze_036.c3g +var PALETTE_ES_OCEAN_BREEZE_036_ = bytes( + "0019303E" # 0.0% rgb(25,48,62) (start) + "5926A6B7" # 35.0% rgb(38,166,183) + "99CDE9FF" # 60.0% rgb(205,233,255) + "FF0091A2" # 100.0% rgb(0,145,162) (end) +) +# Source: es_pinksplash_08.c3g +var PALETTE_ES_PINKSPLASH_08_ = bytes( + "00C33FFF" # 0.0% rgb(195,63,255) (start) + "80E70961" # 50.0% rgb(231,9,97) + "B0EDCDDA" # 69.0% rgb(237,205,218) + "DED426B8" # 87.0% rgb(212,38,184) + "FFD426B8" # 100.0% rgb(212,38,184) (end) +) +# Source: es_rivendell_15.c3g +var PALETTE_ES_RIVENDELL_15_ = bytes( + "00234536" # 0.0% rgb(35,69,54) (start) + "66586952" # 40.0% rgb(88,105,82) + "A68F8C6D" # 65.0% rgb(143,140,109) + "F2D0CCAF" # 95.0% rgb(208,204,175) + "FFD0CCAF" # 100.0% rgb(208,204,175) (end) +) +# Source: es_vintage_01.c3g +var PALETTE_ES_VINTAGE_01_ = bytes( + "00361220" # 0.0% rgb(54,18,32) (start) + "3359001E" # 20.0% rgb(89,0,30) + "4CB0AA30" # 30.0% rgb(176,170,48) + "66FFBD5C" # 40.0% rgb(255,189,92) + "80993832" # 50.0% rgb(153,56,50) + "9959001E" # 60.0% rgb(89,0,30) + "E5361220" # 90.0% rgb(54,18,32) + "FF361220" # 100.0% rgb(54,18,32) (end) +) +# Source: es_vintage_57.c3g +var PALETTE_ES_VINTAGE_57_ = bytes( + "00290805" # 0.0% rgb(41,8,5) (start) + "365C0100" # 21.0% rgb(92,1,0) + "689B6024" # 40.9% rgb(155,96,36) + "99D9BF48" # 60.0% rgb(217,191,72) + "FF848134" # 100.0% rgb(132,129,52) (end) +) +# Source: fierce-ice.c3g +var PALETTE_FIERCE_ICE_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "3C003380" # 23.4% rgb(0,51,128) + "770066FF" # 46.8% rgb(0,102,255) + "963399FF" # 58.8% rgb(51,153,255) + "B466CCFF" # 70.8% rgb(102,204,255) + "DAB2E6FF" # 85.4% rgb(178,230,255) + "FFFFFFFF" # 100.0% rgb(255,255,255) (end) +) +# Source: gr64_hult.c3g +var PALETTE_GR64_HULT_ = bytes( + "0022B8B6" # 0.0% rgb(34,184,182) (start) + "420EA2A0" # 26.0% rgb(14,162,160) + "698B890B" # 41.0% rgb(139,137,11) + "82BCBA1E" # 51.0% rgb(188,186,30) + "968B890B" # 59.0% rgb(139,137,11) + "C90A9C9A" # 79.0% rgb(10,156,154) + "F0008080" # 94.0% rgb(0,128,128) + "FF008080" # 100.0% rgb(0,128,128) (end) +) +# Source: gr65_hult.c3g +var PALETTE_GR65_HULT_ = bytes( + "00FCD8FC" # 0.0% rgb(252,216,252) (start) + "30FFC0FF" # 19.0% rgb(255,192,255) + "59F15FF3" # 35.0% rgb(241,95,243) + "A14199DD" # 63.0% rgb(65,153,221) + "D922B8B6" # 85.0% rgb(34,184,182) + "FF22B8B6" # 100.0% rgb(34,184,182) (end) +) +# Source: ib15.c3g +var PALETTE_IB15_ = bytes( + "00BBA0CD" # 0.0% rgb(187,160,205) (start) + "48D49E9F" # 28.4% rgb(212,158,159) + "59EC9B71" # 35.0% rgb(236,155,113) + "6BFF5F4A" # 42.0% rgb(255,95,74) + "8DC96279" # 55.3% rgb(201,98,121) + "FF9265A8" # 100.0% rgb(146,101,168) (end) +) +# Source: ib_jul01.c3g +var PALETTE_IB_JUL01_ = bytes( + "00E60611" # 0.0% rgb(230,6,17) (start) + "5E25605A" # 37.0% rgb(37,96,90) + "8590BD6A" # 52.0% rgb(144,189,106) + "FFBB030D" # 100.0% rgb(187,3,13) (end) +) +# Source: lava.c3g +var PALETTE_LAVA_ = bytes( + "00000000" # 0.0% rgb(0,0,0) (start) + "2E5D0000" # 18.1% rgb(93,0,0) + "61BB0000" # 38.0% rgb(187,0,0) + "6CCC260D" # 42.4% rgb(204,38,13) + "77DD4C1A" # 46.8% rgb(221,76,26) + "93EE7326" # 57.6% rgb(238,115,38) + "AEFF9933" # 68.4% rgb(255,153,51) + "BDFFB233" # 74.0% rgb(255,178,51) + "CBFFCC33" # 79.5% rgb(255,204,51) + "DAFFE633" # 85.7% rgb(255,230,51) + "EAFFFF33" # 91.8% rgb(255,255,51) + "F5FFFF99" # 95.9% rgb(255,255,153) + "FFFFFFFF" # 100.0% rgb(255,255,255) (end) +) +# Source: rainbowsherbet.c3g +var PALETTE_RAINBOWSHERBET_ = bytes( + "00FF6633" # 0.0% rgb(255,102,51) (start) + "2BFF8C66" # 17.0% rgb(255,140,102) + "57FF3366" # 34.0% rgb(255,51,102) + "80FF99B2" # 50.0% rgb(255,153,178) + "ABFFFFFA" # 67.0% rgb(255,255,250) + "D180FF61" # 82.0% rgb(128,255,97) + "FFA9FF94" # 100.0% rgb(169,255,148) (end) +) +# Source: retro2_16.c3g +var PALETTE_RETRO2_16_ = bytes( + "00E3BF0C" # 0.0% rgb(227,191,12) (start) + "FF843402" # 100.0% rgb(132,52,2) (end) +) +# Source: rgi_15.c3g +var PALETTE_RGI_15_ = bytes( + "00360E6F" # 0.0% rgb(54,14,111) (start) + "208E1856" # 12.5% rgb(142,24,86) + "40E7223D" # 25.0% rgb(231,34,61) + "60921F58" # 37.5% rgb(146,31,88) + "803D1D72" # 50.0% rgb(61,29,114) + "9F7C2F71" # 62.5% rgb(124,47,113) + "BFBA4270" # 75.0% rgb(186,66,112) + "DF8F3974" # 87.5% rgb(143,57,116) + "FF643078" # 100.0% rgb(100,48,120) (end) +) +# Source: temperature.c3g +var PALETTE_TEMPERATURE_ = bytes( + "001E5CB3" # 0.0% rgb(30,92,179) (start) + "0E1E5CB3" # 5.5% rgb(30,92,179) + "0E176FC1" # 5.5% rgb(23,111,193) + "1C176FC1" # 11.2% rgb(23,111,193) + "1C0B8ED8" # 11.2% rgb(11,142,216) + "2B0B8ED8" # 16.7% rgb(11,142,216) + "2B04A1E6" # 16.7% rgb(4,161,230) + "3904A1E6" # 22.2% rgb(4,161,230) + "3919B5F1" # 22.2% rgb(25,181,241) + "4719B5F1" # 27.8% rgb(25,181,241) + "4733BCCF" # 27.8% rgb(51,188,207) + "5533BCCF" # 33.3% rgb(51,188,207) + "5566CCCE" # 33.3% rgb(102,204,206) + "6366CCCE" # 38.8% rgb(102,204,206) + "6399DBB8" # 38.8% rgb(153,219,184) + "7199DBB8" # 44.5% rgb(153,219,184) + "71C0E588" # 44.5% rgb(192,229,136) + "80C0E588" # 50.0% rgb(192,229,136) + "80CCE64B" # 50.0% rgb(204,230,75) + "8ECCE64B" # 55.5% rgb(204,230,75) + "8EF3F01D" # 55.5% rgb(243,240,29) + "9CF3F01D" # 61.2% rgb(243,240,29) + "9CFEDE27" # 61.2% rgb(254,222,39) + "AAFEDE27" # 66.7% rgb(254,222,39) + "AAFCC707" # 66.7% rgb(252,199,7) + "B8FCC707" # 72.2% rgb(252,199,7) + "B8F89D0E" # 72.2% rgb(248,157,14) + "C6F89D0E" # 77.8% rgb(248,157,14) + "C6F57215" # 77.8% rgb(245,114,21) + "D4F57215" # 83.3% rgb(245,114,21) + "D4F1471C" # 83.3% rgb(241,71,28) + "E3F1471C" # 88.8% rgb(241,71,28) + "E3DB1E26" # 88.8% rgb(219,30,38) + "F1DB1E26" # 94.5% rgb(219,30,38) + "F1A4262C" # 94.5% rgb(164,38,44) + "FFA4262C" # 100.0% rgb(164,38,44) (end) +) +# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# = +# Palettes from WLED header file +# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# = +# Source: Jul (ib_jul01_gp) from wled_palettes.h +var PALETTE_JUL_ = bytes( + "00E60611" # pos=0 wled=rgb(226,6,12) orig=rgb(230,6,17) + "5E25605A" # pos=94 wled=rgb(26,96,78) orig=rgb(37,96,90) + "8490BD6A" # pos=132 wled=rgb(130,189,94) orig=rgb(144,189,106) + "FFBB030D" # pos=255 wled=rgb(177,3,9) orig=rgb(187,3,13) +) +# Source: Grintage (es_vintage_57_gp) from wled_palettes.h +var PALETTE_GRINTAGE_ = bytes( + "00290805" # pos=0 wled=rgb(29,8,3) orig=rgb(41,8,5) + "355C0100" # pos=53 wled=rgb(76,1,0) orig=rgb(92,1,0) + "689B6024" # pos=104 wled=rgb(142,96,28) orig=rgb(155,96,36) + "99D9BF48" # pos=153 wled=rgb(211,191,61) orig=rgb(217,191,72) + "FF848134" # pos=255 wled=rgb(117,129,42) orig=rgb(132,129,52) +) +# Source: Vintage (es_vintage_01_gp) from wled_palettes.h +var PALETTE_VINTAGE_ = bytes( + "00361220" # pos=0 wled=rgb(41,18,24) orig=rgb(54,18,32) + "3359001D" # pos=51 wled=rgb(73,0,22) orig=rgb(89,0,29) + "4CB0AA30" # pos=76 wled=rgb(165,170,38) orig=rgb(176,170,48) + "65FFBD5C" # pos=101 wled=rgb(255,189,80) orig=rgb(255,189,92) + "7F993832" # pos=127 wled=rgb(139,56,40) orig=rgb(153,56,50) + "9959001D" # pos=153 wled=rgb(73,0,22) orig=rgb(89,0,29) + "E5361220" # pos=229 wled=rgb(41,18,24) orig=rgb(54,18,32) + "FF361220" # pos=255 wled=rgb(41,18,24) orig=rgb(54,18,32) +) +# Source: Rivendell (es_rivendell_15_gp) from wled_palettes.h +var PALETTE_RIVENDELL_ = bytes( + "00234536" # pos=0 wled=rgb(24,69,44) orig=rgb(35,69,54) + "65596952" # pos=101 wled=rgb(73,105,70) orig=rgb(89,105,82) + "A58F8C6D" # pos=165 wled=rgb(129,140,97) orig=rgb(143,140,109) + "F2D0CCAF" # pos=242 wled=rgb(200,204,166) orig=rgb(208,204,175) + "FFD0CCAF" # pos=255 wled=rgb(200,204,166) orig=rgb(208,204,175) +) +# Source: Red & Blue (rgi_15_gp) from wled_palettes.h +var PALETTE_RED_AND_BLUE_ = bytes( + "00360E6F" # pos=0 wled=rgb(41,14,99) orig=rgb(54,14,111) + "1F8E1856" # pos=31 wled=rgb(128,24,74) orig=rgb(142,24,86) + "3FE7223D" # pos=63 wled=rgb(227,34,50) orig=rgb(231,34,61) + "5F921F58" # pos=95 wled=rgb(132,31,76) orig=rgb(146,31,88) + "7F3D1D72" # pos=127 wled=rgb(47,29,102) orig=rgb(61,29,114) + "9F7C2F71" # pos=159 wled=rgb(109,47,101) orig=rgb(124,47,113) + "BFBA4270" # pos=191 wled=rgb(176,66,100) orig=rgb(186,66,112) + "DF8F3974" # pos=223 wled=rgb(129,57,104) orig=rgb(143,57,116) + "FF643078" # pos=255 wled=rgb(84,48,108) orig=rgb(100,48,120) +) +# Source: Yellowout (retro2_16_gp) from wled_palettes.h +var PALETTE_YELLOWOUT_ = bytes( + "00E3BF0C" # pos=0 wled=rgb(222,191,8) orig=rgb(227,191,12) + "FF843402" # pos=255 wled=rgb(117,52,1) orig=rgb(132,52,2) +) +# Source: Analogous (Analogous_1_gp) from wled_palettes.h +var PALETTE_ANALOGOUS_ = bytes( + "003300FF" # pos=0 wled=rgb(38,0,255) orig=rgb(51,0,255) + "3F6600FF" # pos=63 wled=rgb(86,0,255) orig=rgb(102,0,255) + "7F9900FF" # pos=127 wled=rgb(139,0,255) orig=rgb(153,0,255) + "BFCC0080" # pos=191 wled=rgb(196,0,117) orig=rgb(204,0,128) + "FFFF0000" # pos=255 wled=rgb(255,0,0) orig=rgb(255,0,0) +) +# Source: Splash (es_pinksplash_08_gp) from wled_palettes.h +var PALETTE_SPLASH_ = bytes( + "00C33FFF" # pos=0 wled=rgb(186,63,255) orig=rgb(195,63,255) + "7FE70961" # pos=127 wled=rgb(227,9,85) orig=rgb(231,9,97) + "AFEDCDDA" # pos=175 wled=rgb(234,205,213) orig=rgb(237,205,218) + "DDD426B8" # pos=221 wled=rgb(205,38,176) orig=rgb(212,38,184) + "FFD426B8" # pos=255 wled=rgb(205,38,176) orig=rgb(212,38,184) +) +# Source: Breeze (es_ocean_breeze_036_gp) from wled_palettes.h +var PALETTE_BREEZE_ = bytes( + "0019303E" # pos=0 wled=rgb(16,48,51) orig=rgb(25,48,62) + "5926A6B7" # pos=89 wled=rgb(27,166,175) orig=rgb(38,166,183) + "99CDE9FF" # pos=153 wled=rgb(197,233,255) orig=rgb(205,233,255) + "FF0091A2" # pos=255 wled=rgb(0,145,152) orig=rgb(0,145,162) +) +# Source: Departure (departure_gp) from wled_palettes.h +# var PALETTE_DEPARTURE_ = bytes( +# "00442200" # pos=0 wled=rgb(53,34,0) orig=rgb(68,34,0) +# "2A663300" # pos=42 wled=rgb(86,51,0) orig=rgb(102,51,0) +# "3FA06C3C" # pos=63 wled=rgb(147,108,49) orig=rgb(160,108,60) +# "54DAA678" # pos=84 wled=rgb(212,166,108) orig=rgb(218,166,120) +# "6AEED4BC" # pos=106 wled=rgb(235,212,180) orig=rgb(238,212,188) +# "74FFFFFF" # pos=116 wled=rgb(255,255,255) orig=rgb(255,255,255) +# "8AC8FFC8" # pos=138 wled=rgb(191,255,193) orig=rgb(200,255,200) +# "9464FF64" # pos=148 wled=rgb(84,255,88) orig=rgb(100,255,100) +# "AA00FF00" # pos=170 wled=rgb(0,255,0) orig=rgb(0,255,0) +# "BF00C000" # pos=191 wled=rgb(0,192,0) orig=rgb(0,192,0) +# "D4008000" # pos=212 wled=rgb(0,128,0) orig=rgb(0,128,0) +# "FF008000" # pos=255 wled=rgb(0,128,0) orig=rgb(0,128,0) +# ) +# Source: Landscape (es_landscape_64_gp) from wled_palettes.h +var PALETTE_LANDSCAPE_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "252B591A" # pos=37 wled=rgb(31,89,19) orig=rgb(43,89,26) + "4C57B235" # pos=76 wled=rgb(72,178,43) orig=rgb(87,178,53) + "7FA3EB08" # pos=127 wled=rgb(150,235,5) orig=rgb(163,235,8) + "80C3EA82" # pos=128 wled=rgb(186,234,119) orig=rgb(195,234,130) + "82E3E9FC" # pos=130 wled=rgb(222,233,252) orig=rgb(227,233,252) + "99CDDBEA" # pos=153 wled=rgb(197,219,231) orig=rgb(205,219,234) + "CC92B3FD" # pos=204 wled=rgb(132,179,253) orig=rgb(146,179,253) + "FF276BE4" # pos=255 wled=rgb(28,107,225) orig=rgb(39,107,228) +) +# Source: Beach (es_landscape_33_gp) from wled_palettes.h +var PALETTE_BEACH_ = bytes( + "00132D00" # pos=0 wled=rgb(12,45,0) orig=rgb(19,45,0) + "13745604" # pos=19 wled=rgb(101,86,2) orig=rgb(116,86,4) + "26D68007" # pos=38 wled=rgb(207,128,4) orig=rgb(214,128,7) + "3FF5C519" # pos=63 wled=rgb(243,197,18) orig=rgb(245,197,25) + "427CC49C" # pos=66 wled=rgb(109,196,146) orig=rgb(124,196,156) + "FF09270B" # pos=255 wled=rgb(5,39,7) orig=rgb(9,39,11) +) +# Source: Sherbet (rainbowsherbet_gp) from wled_palettes.h +var PALETTE_SHERBET_ = bytes( + "00FF6633" # pos=0 wled=rgb(255,102,41) orig=rgb(255,102,51) + "2BFF8C66" # pos=43 wled=rgb(255,140,90) orig=rgb(255,140,102) + "56FF3366" # pos=86 wled=rgb(255,51,90) orig=rgb(255,51,102) + "7FFF99B2" # pos=127 wled=rgb(255,153,169) orig=rgb(255,153,178) + "AAFFFFFA" # pos=170 wled=rgb(255,255,249) orig=rgb(255,255,250) + "D180FF61" # pos=209 wled=rgb(113,255,85) orig=rgb(128,255,97) + "FFA9FF94" # pos=255 wled=rgb(157,255,137) orig=rgb(169,255,148) +) +# Source: Hult (gr65_hult_gp) from wled_palettes.h +var PALETTE_HULT_ = bytes( + "00FCD8FC" # pos=0 wled=rgb(251,216,252) orig=rgb(252,216,252) + "30FFC0FF" # pos=48 wled=rgb(255,192,255) orig=rgb(255,192,255) + "59F15FF3" # pos=89 wled=rgb(239,95,241) orig=rgb(241,95,243) + "A04199DD" # pos=160 wled=rgb(51,153,217) orig=rgb(65,153,221) + "D823B8B6" # pos=216 wled=rgb(24,184,174) orig=rgb(35,184,182) + "FF23B8B6" # pos=255 wled=rgb(24,184,174) orig=rgb(35,184,182) +) +# Source: Hult64 (gr64_hult_gp) from wled_palettes.h +var PALETTE_HULT64_ = bytes( + "0023B8B6" # pos=0 wled=rgb(24,184,174) orig=rgb(35,184,182) + "420EA2A0" # pos=66 wled=rgb(8,162,150) orig=rgb(14,162,160) + "688B890B" # pos=104 wled=rgb(124,137,7) orig=rgb(139,137,11) + "82BCBA1D" # pos=130 wled=rgb(178,186,22) orig=rgb(188,186,29) + "968B890B" # pos=150 wled=rgb(124,137,7) orig=rgb(139,137,11) + "C90B9C9A" # pos=201 wled=rgb(6,156,144) orig=rgb(11,156,154) + "EF008080" # pos=239 wled=rgb(0,128,117) orig=rgb(0,128,128) + "FF008080" # pos=255 wled=rgb(0,128,117) orig=rgb(0,128,128) +) +# Source: Drywet (GMT_drywet_gp) from wled_palettes.h +var PALETTE_DRYWET_ = bytes( + "0086612A" # pos=0 wled=rgb(119,97,33) orig=rgb(134,97,42) + "2AEEC764" # pos=42 wled=rgb(235,199,88) orig=rgb(238,199,100) + "54B4EE87" # pos=84 wled=rgb(169,238,124) orig=rgb(180,238,135) + "7F32EEEB" # pos=127 wled=rgb(37,238,232) orig=rgb(50,238,235) + "AA0C78EE" # pos=170 wled=rgb(7,120,236) orig=rgb(12,120,238) + "D42601B7" # pos=212 wled=rgb(27,1,175) orig=rgb(38,1,183) + "FF083371" # pos=255 wled=rgb(4,51,101) orig=rgb(8,51,113) +) +# Source: Rewhi (ib15_gp) from wled_palettes.h +var PALETTE_REWHI_ = bytes( + "00BBA0CD" # pos=0 wled=rgb(177,160,199) orig=rgb(187,160,205) + "48D49E9F" # pos=72 wled=rgb(205,158,149) orig=rgb(212,158,159) + "59EC9B71" # pos=89 wled=rgb(233,155,101) orig=rgb(236,155,113) + "6BFF5F4A" # pos=107 wled=rgb(255,95,63) orig=rgb(255,95,74) + "8DC96279" # pos=141 wled=rgb(192,98,109) orig=rgb(201,98,121) + "FF9265A8" # pos=255 wled=rgb(132,101,159) orig=rgb(146,101,168) +) +# Source: Tertiary (Tertiary_01_gp) from wled_palettes.h +var PALETTE_TERTIARY_ = bytes( + "000019FF" # pos=0 wled=rgb(0,25,255) orig=rgb(0,25,255) + "3F338C80" # pos=63 wled=rgb(38,140,117) orig=rgb(51,140,128) + "7F66FF00" # pos=127 wled=rgb(86,255,0) orig=rgb(102,255,0) + "BFB28C1A" # pos=191 wled=rgb(167,140,19) orig=rgb(178,140,26) + "FFFF1933" # pos=255 wled=rgb(255,25,41) orig=rgb(255,25,51) +) +# Source: Fire (lava_gp) from wled_palettes.h +var PALETTE_FIRE_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "2E5D0000" # pos=46 wled=rgb(77,0,0) orig=rgb(93,0,0) + "60BB0000" # pos=96 wled=rgb(177,0,0) orig=rgb(187,0,0) + "6CCC260D" # pos=108 wled=rgb(196,38,9) orig=rgb(204,38,13) + "77DD4C1A" # pos=119 wled=rgb(215,76,19) orig=rgb(221,76,26) + "92EE7326" # pos=146 wled=rgb(235,115,29) orig=rgb(238,115,38) + "AEFF9933" # pos=174 wled=rgb(255,153,41) orig=rgb(255,153,51) + "BCFFB233" # pos=188 wled=rgb(255,178,41) orig=rgb(255,178,51) + "CAFFCC33" # pos=202 wled=rgb(255,204,41) orig=rgb(255,204,51) + "DAFFE633" # pos=218 wled=rgb(255,230,41) orig=rgb(255,230,51) + "EAFFFF33" # pos=234 wled=rgb(255,255,41) orig=rgb(255,255,51) + "F4FFFF99" # pos=244 wled=rgb(255,255,143) orig=rgb(255,255,153) + "FFFFFFFF" # pos=255 wled=rgb(255,255,255) orig=rgb(255,255,255) +) +# Source: Icefire (fierce_ice_gp) from wled_palettes.h +var PALETTE_ICEFIRE_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "3B003380" # pos=59 wled=rgb(0,51,117) orig=rgb(0,51,128) + "770066FF" # pos=119 wled=rgb(0,102,255) orig=rgb(0,102,255) + "953399FF" # pos=149 wled=rgb(38,153,255) orig=rgb(51,153,255) + "B466CCFF" # pos=180 wled=rgb(86,204,255) orig=rgb(102,204,255) + "D9B2E6FF" # pos=217 wled=rgb(167,230,255) orig=rgb(178,230,255) + "FFFFFFFF" # pos=255 wled=rgb(255,255,255) orig=rgb(255,255,255) +) +# Source: Cyane (Colorfull_gp) from wled_palettes.h +var PALETTE_CYANE_ = bytes( + "004C9B36" # pos=0 wled=rgb(61,155,44) orig=rgb(76,155,54) + "196FAE59" # pos=25 wled=rgb(95,174,77) orig=rgb(111,174,89) + "3C92C17D" # pos=60 wled=rgb(132,193,113) orig=rgb(146,193,125) + "5DA6A688" # pos=93 wled=rgb(154,166,125) orig=rgb(166,166,136) + "6AB98A93" # pos=106 wled=rgb(175,138,136) orig=rgb(185,138,147) + "6DC17994" # pos=109 wled=rgb(183,121,137) orig=rgb(193,121,148) + "71CA6895" # pos=113 wled=rgb(194,104,138) orig=rgb(202,104,149) + "74E5B3AE" # pos=116 wled=rgb(225,179,165) orig=rgb(229,179,174) + "7CFFFFC7" # pos=124 wled=rgb(255,255,192) orig=rgb(255,255,199) + "A8B2DAD1" # pos=168 wled=rgb(167,218,203) orig=rgb(178,218,209) + "FF64B6DB" # pos=255 wled=rgb(84,182,215) orig=rgb(100,182,219) +) +# Source: Light Pink (Pink_Purple_gp) from wled_palettes.h +var PALETTE_LIGHT_PINK_ = bytes( + "005F2079" # pos=0 wled=rgb(79,32,109) orig=rgb(95,32,121) + "196A2880" # pos=25 wled=rgb(90,40,117) orig=rgb(106,40,128) + "33753087" # pos=51 wled=rgb(102,48,124) orig=rgb(117,48,135) + "4C9A87C0" # pos=76 wled=rgb(141,135,185) orig=rgb(154,135,192) + "66BEDEF9" # pos=102 wled=rgb(180,222,248) orig=rgb(190,222,249) + "6DD7ECFC" # pos=109 wled=rgb(208,236,252) orig=rgb(215,236,252) + "72F0FAFF" # pos=114 wled=rgb(237,250,255) orig=rgb(240,250,255) + "7AD5C8F1" # pos=122 wled=rgb(206,200,239) orig=rgb(213,200,241) + "95BB95E2" # pos=149 wled=rgb(177,149,222) orig=rgb(187,149,226) + "B7C482D1" # pos=183 wled=rgb(187,130,203) orig=rgb(196,130,209) + "FFCE6FBF" # pos=255 wled=rgb(198,111,184) orig=rgb(206,111,191) +) +# Source: Sunset (Sunset_Real_gp) from wled_palettes.h +var PALETTE_SUNSET_ = bytes( + "00BF0000" # pos=0 wled=rgb(181,0,0) orig=rgb(191,0,0) + "16DF5500" # pos=22 wled=rgb(218,85,0) orig=rgb(223,85,0) + "33FFAA00" # pos=51 wled=rgb(255,170,0) orig=rgb(255,170,0) + "55D95559" # pos=85 wled=rgb(211,85,77) orig=rgb(217,85,89) + "87B200B2" # pos=135 wled=rgb(167,0,169) orig=rgb(178,0,178) + "C65900C3" # pos=198 wled=rgb(73,0,188) orig=rgb(89,0,195) + "FF0000D4" # pos=255 wled=rgb(0,0,207) orig=rgb(0,0,212) +) +# Source: Pastel (Sunset_Yellow_gp) from wled_palettes.h +var PALETTE_PASTEL_ = bytes( + "004C87BF" # pos=0 wled=rgb(61,135,184) orig=rgb(76,135,191) + "248FBCB2" # pos=36 wled=rgb(129,188,169) orig=rgb(143,188,178) + "57D2F1A5" # pos=87 wled=rgb(203,241,155) orig=rgb(210,241,165) + "64E8ED97" # pos=100 wled=rgb(228,237,141) orig=rgb(232,237,151) + "6BFFE88A" # pos=107 wled=rgb(255,232,127) orig=rgb(255,232,138) + "73FCCA8D" # pos=115 wled=rgb(251,202,130) orig=rgb(252,202,141) + "78F9AC90" # pos=120 wled=rgb(248,172,133) orig=rgb(249,172,144) + "80FCCA8D" # pos=128 wled=rgb(251,202,130) orig=rgb(252,202,141) + "B4FFE88A" # pos=180 wled=rgb(255,232,127) orig=rgb(255,232,138) + "DFFFF283" # pos=223 wled=rgb(255,242,120) orig=rgb(255,242,131) + "FFFFFC7D" # pos=255 wled=rgb(255,252,113) orig=rgb(255,252,125) +) +# Source: Beech (Beech_gp) from wled_palettes.h +# var PALETTE_BEECH_ = bytes( +# "00FFFEEE" # pos=0 wled=rgb(255,254,236) orig=rgb(255,254,238) +# "0CFFFEEE" # pos=12 wled=rgb(255,254,236) orig=rgb(255,254,238) +# "16FFFEEE" # pos=22 wled=rgb(255,254,236) orig=rgb(255,254,238) +# "1AE4E0BA" # pos=26 wled=rgb(223,224,178) orig=rgb(228,224,186) +# "1CC9C387" # pos=28 wled=rgb(192,195,124) orig=rgb(201,195,135) +# "1CBAFFEA" # pos=28 wled=rgb(176,255,231) orig=rgb(186,255,234) +# "328AFBEE" # pos=50 wled=rgb(123,251,236) orig=rgb(138,251,238) +# "475AF6F3" # pos=71 wled=rgb(74,246,241) orig=rgb(90,246,243) +# "5D2DE1E7" # pos=93 wled=rgb(33,225,228) orig=rgb(45,225,231) +# "7800CCDB" # pos=120 wled=rgb(0,204,215) orig=rgb(0,204,219) +# "8508A8BA" # pos=133 wled=rgb(4,168,178) orig=rgb(8,168,186) +# "88108499" # pos=136 wled=rgb(10,132,143) orig=rgb(16,132,153) +# "8841BDD9" # pos=136 wled=rgb(51,189,212) orig=rgb(65,189,217) +# "D0219FCF" # pos=208 wled=rgb(23,159,201) orig=rgb(33,159,207) +# "FF0081C5" # pos=255 wled=rgb(0,129,190) orig=rgb(0,129,197) +# ) +# Source: Sunset2 (Another_Sunset_gp) from wled_palettes.h +var PALETTE_SUNSET2_ = bytes( + "00B97949" # pos=0 wled=rgb(175,121,62) orig=rgb(185,121,73) + "1D8E6747" # pos=29 wled=rgb(128,103,60) orig=rgb(142,103,71) + "44645445" # pos=68 wled=rgb(84,84,58) orig=rgb(100,84,69) + "44F9B842" # pos=68 wled=rgb(248,184,55) orig=rgb(249,184,66) + "61F1CC69" # pos=97 wled=rgb(239,204,93) orig=rgb(241,204,105) + "7CEAE190" # pos=124 wled=rgb(230,225,133) orig=rgb(234,225,144) + "B2757D8C" # pos=178 wled=rgb(102,125,129) orig=rgb(117,125,140) + "FF001A88" # pos=255 wled=rgb(0,26,125) orig=rgb(0,26,136) +) +# Source: Autumn (es_autumn_19_gp) from wled_palettes.h +var PALETTE_AUTUMN_ = bytes( + "006A0E08" # pos=0 wled=rgb(90,14,5) orig=rgb(106,14,8) + "33992913" # pos=51 wled=rgb(139,41,13) orig=rgb(153,41,19) + "54BE4618" # pos=84 wled=rgb(180,70,17) orig=rgb(190,70,24) + "68C9CA88" # pos=104 wled=rgb(192,202,125) orig=rgb(201,202,136) + "70BB8905" # pos=112 wled=rgb(177,137,3) orig=rgb(187,137,5) + "7AC7C88E" # pos=122 wled=rgb(190,200,131) orig=rgb(199,200,142) + "7CC9CA87" # pos=124 wled=rgb(192,202,124) orig=rgb(201,202,135) + "87BB8905" # pos=135 wled=rgb(177,137,3) orig=rgb(187,137,5) + "8ECACB81" # pos=142 wled=rgb(194,203,118) orig=rgb(202,203,129) + "A3BB4418" # pos=163 wled=rgb(177,68,17) orig=rgb(187,68,24) + "CC8E2311" # pos=204 wled=rgb(128,35,12) orig=rgb(142,35,17) + "F95A0504" # pos=249 wled=rgb(74,5,2) orig=rgb(90,5,4) + "FF5A0504" # pos=255 wled=rgb(74,5,2) orig=rgb(90,5,4) +) +# Source: Magenta (BlacK_Blue_Magenta_White_gp) from wled_palettes.h +var PALETTE_MAGENTA_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "2A000080" # pos=42 wled=rgb(0,0,117) orig=rgb(0,0,128) + "540000FF" # pos=84 wled=rgb(0,0,255) orig=rgb(0,0,255) + "7F8000FF" # pos=127 wled=rgb(113,0,255) orig=rgb(128,0,255) + "AAFF00FF" # pos=170 wled=rgb(255,0,255) orig=rgb(255,0,255) + "D4FF80FF" # pos=212 wled=rgb(255,128,255) orig=rgb(255,128,255) + "FFFFFFFF" # pos=255 wled=rgb(255,255,255) orig=rgb(255,255,255) +) +# Source: Magred (BlacK_Magenta_Red_gp) from wled_palettes.h +var PALETTE_MAGRED_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "3F800080" # pos=63 wled=rgb(113,0,117) orig=rgb(128,0,128) + "7FFF00FF" # pos=127 wled=rgb(255,0,255) orig=rgb(255,0,255) + "BFFF0080" # pos=191 wled=rgb(255,0,117) orig=rgb(255,0,128) + "FFFF0000" # pos=255 wled=rgb(255,0,0) orig=rgb(255,0,0) +) +# Source: Yelmag (BlacK_Red_Magenta_Yellow_gp) from wled_palettes.h +var PALETTE_YELMAG_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "2A800000" # pos=42 wled=rgb(113,0,0) orig=rgb(128,0,0) + "54FF0000" # pos=84 wled=rgb(255,0,0) orig=rgb(255,0,0) + "7FFF0080" # pos=127 wled=rgb(255,0,117) orig=rgb(255,0,128) + "AAFF00FF" # pos=170 wled=rgb(255,0,255) orig=rgb(255,0,255) + "D4FF8080" # pos=212 wled=rgb(255,128,117) orig=rgb(255,128,128) + "FFFFFF00" # pos=255 wled=rgb(255,255,0) orig=rgb(255,255,0) +) +# Source: Yelblu (Blue_Cyan_Yellow_gp) from wled_palettes.h +var PALETTE_YELBLU_ = bytes( + "000000FF" # pos=0 wled=rgb(0,0,255) orig=rgb(0,0,255) + "3F0080FF" # pos=63 wled=rgb(0,128,255) orig=rgb(0,128,255) + "7F00FFFF" # pos=127 wled=rgb(0,255,255) orig=rgb(0,255,255) + "BF80FF80" # pos=191 wled=rgb(113,255,117) orig=rgb(128,255,128) + "FFFFFF00" # pos=255 wled=rgb(255,255,0) orig=rgb(255,255,0) +) +# Source: Temperature (temperature_gp) from wled_palettes.h +# var PALETTE_TEMPERATURE_ = bytes( +# "001E5CB3" # pos=0 wled=rgb(20,92,171) orig=rgb(30,92,179) +# "0E176FC1" # pos=14 wled=rgb(15,111,186) orig=rgb(23,111,193) +# "1C0B8ED8" # pos=28 wled=rgb(6,142,211) orig=rgb(11,142,216) +# "2A04A1E6" # pos=42 wled=rgb(2,161,227) orig=rgb(4,161,230) +# "3819B5F1" # pos=56 wled=rgb(16,181,239) orig=rgb(25,181,241) +# "4633BCCF" # pos=70 wled=rgb(38,188,201) orig=rgb(51,188,207) +# "5466CCCE" # pos=84 wled=rgb(86,204,200) orig=rgb(102,204,206) +# "6399DBB8" # pos=99 wled=rgb(139,219,176) orig=rgb(153,219,184) +# "71C0E588" # pos=113 wled=rgb(182,229,125) orig=rgb(192,229,136) +# "7FCCE64A" # pos=127 wled=rgb(196,230,63) orig=rgb(204,230,74) +# "8DF3F01D" # pos=141 wled=rgb(241,240,22) orig=rgb(243,240,29) +# "9BFEDE27" # pos=155 wled=rgb(254,222,30) orig=rgb(254,222,39) +# "AAFCC707" # pos=170 wled=rgb(251,199,4) orig=rgb(252,199,7) +# "B8F89D0D" # pos=184 wled=rgb(247,157,9) orig=rgb(248,157,13) +# "C6F57215" # pos=198 wled=rgb(243,114,15) orig=rgb(245,114,21) +# "E2DB1E26" # pos=226 wled=rgb(213,30,29) orig=rgb(219,30,38) +# "F0A4262C" # pos=240 wled=rgb(151,38,35) orig=rgb(164,38,44) +# "FFA4262C" # pos=255 wled=rgb(151,38,35) orig=rgb(164,38,44) +# ) +# Source: Retro Clown (retro_clown_gp) from wled_palettes.h +var PALETTE_RETRO_CLOWN_ = bytes( + "00F4A830" # pos=0 wled=rgb(242,168,38) orig=rgb(244,168,48) + "75E64E5C" # pos=117 wled=rgb(226,78,80) orig=rgb(230,78,92) + "FFAD36E4" # pos=255 wled=rgb(161,54,225) orig=rgb(173,54,228) +) +# Source: Candy (candy_gp) from wled_palettes.h +var PALETTE_CANDY_ = bytes( + "00F5F21F" # pos=0 wled=rgb(243,242,23) orig=rgb(245,242,31) + "0FF4A830" # pos=15 wled=rgb(242,168,38) orig=rgb(244,168,48) + "8E7E15A1" # pos=142 wled=rgb(111,21,151) orig=rgb(126,21,161) + "C65A16A0" # pos=198 wled=rgb(74,22,150) orig=rgb(90,22,160) + "FF000080" # pos=255 wled=rgb(0,0,117) orig=rgb(0,0,128) +) +# Source: Toxy Reaf (toxy_reaf_gp) from wled_palettes.h +var PALETTE_TOXY_REAF_ = bytes( + "0004EF89" # pos=0 wled=rgb(2,239,126) orig=rgb(4,239,137) + "FF9E23DD" # pos=255 wled=rgb(145,35,217) orig=rgb(158,35,221) +) +# Source: Fairy Reaf (fairy_reaf_gp) from wled_palettes.h +var PALETTE_FAIRY_REAF_ = bytes( + "00E113C2" # pos=0 wled=rgb(220,19,187) orig=rgb(225,19,194) + "A013E1DF" # pos=160 wled=rgb(12,225,219) orig=rgb(19,225,223) + "DBD2F2E3" # pos=219 wled=rgb(203,242,223) orig=rgb(210,242,227) + "FFFFFFFF" # pos=255 wled=rgb(255,255,255) orig=rgb(255,255,255) +) +# Source: Semi Blue (semi_blue_gp) from wled_palettes.h +var PALETTE_SEMI_BLUE_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "0C230430" # pos=12 wled=rgb(24,4,38) orig=rgb(35,4,48) + "35460860" # pos=53 wled=rgb(55,8,84) orig=rgb(70,8,96) + "503930A8" # pos=80 wled=rgb(43,48,159) orig=rgb(57,48,168) + "772B59EF" # pos=119 wled=rgb(31,89,237) orig=rgb(43,89,239) + "91403BAF" # pos=145 wled=rgb(50,59,166) orig=rgb(64,59,175) + "BA561E6E" # pos=186 wled=rgb(71,30,98) orig=rgb(86,30,110) + "E92B0F37" # pos=233 wled=rgb(31,15,45) orig=rgb(43,15,55) + "FF000000" # pos=255 wled=rgb(0,0,0) orig=rgb(0,0,0) +) +# Source: Pink Candy (pink_candy_gp) from wled_palettes.h +var PALETTE_PINK_CANDY_ = bytes( + "00FFFFFF" # pos=0 wled=rgb(255,255,255) orig=rgb(255,255,255) + "2D4040FF" # pos=45 wled=rgb(50,64,255) orig=rgb(64,64,255) + "70F410C1" # pos=112 wled=rgb(242,16,186) orig=rgb(244,16,193) + "8CFFFFFF" # pos=140 wled=rgb(255,255,255) orig=rgb(255,255,255) + "9BF410C1" # pos=155 wled=rgb(242,16,186) orig=rgb(244,16,193) + "C4830DAF" # pos=196 wled=rgb(116,13,166) orig=rgb(131,13,175) + "FFFFFFFF" # pos=255 wled=rgb(255,255,255) orig=rgb(255,255,255) +) +# Source: Red Reaf (red_reaf_gp) from wled_palettes.h +var PALETTE_RED_REAF_ = bytes( + "0031447E" # pos=0 wled=rgb(36,68,114) orig=rgb(49,68,126) + "68A2C3F9" # pos=104 wled=rgb(149,195,248) orig=rgb(162,195,249) + "BCFF0000" # pos=188 wled=rgb(255,0,0) orig=rgb(255,0,0) + "FF6E0E0D" # pos=255 wled=rgb(94,14,9) orig=rgb(110,14,13) +) +# Source: Aqua Flash (aqua_flash_gp) from wled_palettes.h +var PALETTE_AQUA_FLASH_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "4290F2F6" # pos=66 wled=rgb(130,242,245) orig=rgb(144,242,246) + "60FFFF40" # pos=96 wled=rgb(255,255,53) orig=rgb(255,255,64) + "7CFFFFFF" # pos=124 wled=rgb(255,255,255) orig=rgb(255,255,255) + "99FFFF40" # pos=153 wled=rgb(255,255,53) orig=rgb(255,255,64) + "BC90F2F6" # pos=188 wled=rgb(130,242,245) orig=rgb(144,242,246) + "FF000000" # pos=255 wled=rgb(0,0,0) orig=rgb(0,0,0) +) +# Source: Yelblu Hot (yelblu_hot_gp) from wled_palettes.h +var PALETTE_YELBLU_HOT_ = bytes( + "00391E44" # pos=0 wled=rgb(43,30,57) orig=rgb(57,30,68) + "3A590082" # pos=58 wled=rgb(73,0,119) orig=rgb(89,0,130) + "7A670056" # pos=122 wled=rgb(87,0,74) orig=rgb(103,0,86) + "9ECD391D" # pos=158 wled=rgb(197,57,22) orig=rgb(205,57,29) + "B7DF7523" # pos=183 wled=rgb(218,117,27) orig=rgb(223,117,35) + "DBF1B129" # pos=219 wled=rgb(239,177,32) orig=rgb(241,177,41) + "FFF7F723" # pos=255 wled=rgb(246,247,27) orig=rgb(247,247,35) +) +# Source: Lite Light (lite_light_gp) from wled_palettes.h +var PALETTE_LITE_LIGHT_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "091E151D" # pos=9 wled=rgb(20,21,22) orig=rgb(30,21,29) + "283C2B3C" # pos=40 wled=rgb(46,43,49) orig=rgb(60,43,60) + "423C2B3C" # pos=66 wled=rgb(46,43,49) orig=rgb(60,43,60) + "654C104D" # pos=101 wled=rgb(61,16,65) orig=rgb(76,16,77) + "FF000000" # pos=255 wled=rgb(0,0,0) orig=rgb(0,0,0) +) +# Source: Red Flash (red_flash_gp) from wled_palettes.h +var PALETTE_RED_FLASH_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "63F40C0C" # pos=99 wled=rgb(242,12,8) orig=rgb(244,12,12) + "82FDE4AC" # pos=130 wled=rgb(253,228,163) orig=rgb(253,228,172) + "9BF40C0C" # pos=155 wled=rgb(242,12,8) orig=rgb(244,12,12) + "FF000000" # pos=255 wled=rgb(0,0,0) orig=rgb(0,0,0) +) +# Source: Blink Red (blink_red_gp) from wled_palettes.h +var PALETTE_BLINK_RED_ = bytes( + "00080707" # pos=0 wled=rgb(4,7,4) orig=rgb(8,7,7) + "2B351949" # pos=43 wled=rgb(40,25,62) orig=rgb(53,25,73) + "4C4C0F2E" # pos=76 wled=rgb(61,15,36) orig=rgb(76,15,46) + "6DD6276C" # pos=109 wled=rgb(207,39,96) orig=rgb(214,39,108) + "7FFF9CBF" # pos=127 wled=rgb(255,156,184) orig=rgb(255,156,191) + "A5C249D4" # pos=165 wled=rgb(185,73,207) orig=rgb(194,73,212) + "CC7842F2" # pos=204 wled=rgb(105,66,240) orig=rgb(120,66,242) + "FF5D1D5A" # pos=255 wled=rgb(77,29,78) orig=rgb(93,29,90) +) +# Source: Red Shift (red_shift_gp) from wled_palettes.h +var PALETTE_RED_SHIFT_ = bytes( + "00721669" # pos=0 wled=rgb(98,22,93) orig=rgb(114,22,105) + "2D761655" # pos=45 wled=rgb(103,22,73) orig=rgb(118,22,85) + "63C92D43" # pos=99 wled=rgb(192,45,56) orig=rgb(201,45,67) + "84EEBB46" # pos=132 wled=rgb(235,187,59) orig=rgb(238,187,70) + "AFE85522" # pos=175 wled=rgb(228,85,26) orig=rgb(232,85,34) + "C9E8383B" # pos=201 wled=rgb(228,56,48) orig=rgb(232,56,59) + "FF040004" # pos=255 wled=rgb(2,0,2) orig=rgb(4,0,4) +) +# Source: Red Tide (red_tide_gp) from wled_palettes.h +var PALETTE_RED_TIDE_ = bytes( + "00FC2E00" # pos=0 wled=rgb(251,46,0) orig=rgb(252,46,0) + "1CFF8B21" # pos=28 wled=rgb(255,139,25) orig=rgb(255,139,33) + "2BF79E4A" # pos=43 wled=rgb(246,158,63) orig=rgb(247,158,74) + "3AF7D886" # pos=58 wled=rgb(246,216,123) orig=rgb(247,216,134) + "54F55E0F" # pos=84 wled=rgb(243,94,10) orig=rgb(245,94,15) + "72BB4110" # pos=114 wled=rgb(177,65,11) orig=rgb(187,65,16) + "8CFFF17F" # pos=140 wled=rgb(255,241,115) orig=rgb(255,241,127) + "A8BB4110" # pos=168 wled=rgb(177,65,11) orig=rgb(187,65,16) + "C4FBE9A7" # pos=196 wled=rgb(250,233,158) orig=rgb(251,233,167) + "D8FF5E09" # pos=216 wled=rgb(255,94,6) orig=rgb(255,94,9) + "FF8C0807" # pos=255 wled=rgb(126,8,4) orig=rgb(140,8,7) +) +# Source: Candy2 (candy2_gp) from wled_palettes.h +var PALETTE_CANDY2_ = bytes( + "007C6672" # pos=0 wled=rgb(109,102,102) orig=rgb(124,102,114) + "19373153" # pos=25 wled=rgb(42,49,71) orig=rgb(55,49,83) + "30886060" # pos=48 wled=rgb(121,96,84) orig=rgb(136,96,96) + "49F3D622" # pos=73 wled=rgb(241,214,26) orig=rgb(243,214,34) + "59DE6836" # pos=89 wled=rgb(216,104,44) orig=rgb(222,104,54) + "82373153" # pos=130 wled=rgb(42,49,71) orig=rgb(55,49,83) + "A3FFB13A" # pos=163 wled=rgb(255,177,47) orig=rgb(255,177,58) + "BAF3D622" # pos=186 wled=rgb(241,214,26) orig=rgb(243,214,34) + "D37C6672" # pos=211 wled=rgb(109,102,102) orig=rgb(124,102,114) + "FF1E1313" # pos=255 wled=rgb(20,19,13) orig=rgb(30,19,19) +) +# Source: Orange & Teal (Orange_Teal_gp) from wled_palettes.h +var PALETTE_ORANGE_AND_TEAL_ = bytes( + "00009668" # pos=0 wled=rgb(0,150,92) orig=rgb(0,150,104) + "37009668" # pos=55 wled=rgb(0,150,92) orig=rgb(0,150,104) + "C8FF4800" # pos=200 wled=rgb(255,72,0) orig=rgb(255,72,0) + "FFFF4800" # pos=255 wled=rgb(255,72,0) orig=rgb(255,72,0) +) +# Source: April Night (April_Night_gp) from wled_palettes.h +var PALETTE_APRIL_NIGHT_ = bytes( + "00020537" # pos=0 wled=rgb(1,5,45) orig=rgb(2,5,55) + "0A020537" # pos=10 wled=rgb(1,5,45) orig=rgb(2,5,55) + "1909A9B7" # pos=25 wled=rgb(5,169,175) orig=rgb(9,169,183) + "28020537" # pos=40 wled=rgb(1,5,45) orig=rgb(2,5,55) + "3D020537" # pos=61 wled=rgb(1,5,45) orig=rgb(2,5,55) + "4C3BAF28" # pos=76 wled=rgb(45,175,31) orig=rgb(59,175,40) + "5B020537" # pos=91 wled=rgb(1,5,45) orig=rgb(2,5,55) + "70020537" # pos=112 wled=rgb(1,5,45) orig=rgb(2,5,55) + "7FFA9608" # pos=127 wled=rgb(249,150,5) orig=rgb(250,150,8) + "8F020537" # pos=143 wled=rgb(1,5,45) orig=rgb(2,5,55) + "A2020537" # pos=162 wled=rgb(1,5,45) orig=rgb(2,5,55) + "B2FF5C00" # pos=178 wled=rgb(255,92,0) orig=rgb(255,92,0) + "C1020537" # pos=193 wled=rgb(1,5,45) orig=rgb(2,5,55) + "D6020537" # pos=214 wled=rgb(1,5,45) orig=rgb(2,5,55) + "E5E42D54" # pos=229 wled=rgb(223,45,72) orig=rgb(228,45,84) + "F4020537" # pos=244 wled=rgb(1,5,45) orig=rgb(2,5,55) + "FF020537" # pos=255 wled=rgb(1,5,45) orig=rgb(2,5,55) +) +# Source: Orangery (Orangery_gp) from wled_palettes.h +var PALETTE_ORANGERY_ = bytes( + "00FF5F1F" # pos=0 wled=rgb(255,95,23) orig=rgb(255,95,31) + "1EFF5200" # pos=30 wled=rgb(255,82,0) orig=rgb(255,82,0) + "3CE40D0C" # pos=60 wled=rgb(223,13,8) orig=rgb(228,13,12) + "5A9D2C04" # pos=90 wled=rgb(144,44,2) orig=rgb(157,44,4) + "78FF6E18" # pos=120 wled=rgb(255,110,17) orig=rgb(255,110,24) + "96FF4500" # pos=150 wled=rgb(255,69,0) orig=rgb(255,69,0) + "B4AA0D10" # pos=180 wled=rgb(158,13,11) orig=rgb(170,13,16) + "D2F35218" # pos=210 wled=rgb(241,82,17) orig=rgb(243,82,24) + "FFDB2507" # pos=255 wled=rgb(213,37,4) orig=rgb(219,37,7) +) +# Source: C9 (C9_gp) from wled_palettes.h +var PALETTE_C9_ = bytes( + "00C10400" # pos=0 wled=rgb(184,4,0) orig=rgb(193,4,0) + "3CC10400" # pos=60 wled=rgb(184,4,0) orig=rgb(193,4,0) + "419D2C04" # pos=65 wled=rgb(144,44,2) orig=rgb(157,44,4) + "7D9D2C04" # pos=125 wled=rgb(144,44,2) orig=rgb(157,44,4) + "82086004" # pos=130 wled=rgb(4,96,2) orig=rgb(8,96,4) + "BE086004" # pos=190 wled=rgb(4,96,2) orig=rgb(8,96,4) + "C30C0764" # pos=195 wled=rgb(7,7,88) orig=rgb(12,7,100) + "FF0C0764" # pos=255 wled=rgb(7,7,88) orig=rgb(12,7,100) +) +# Source: Sakura (Sakura_gp) from wled_palettes.h +var PALETTE_SAKURA_ = bytes( + "00CC130F" # pos=0 wled=rgb(196,19,10) orig=rgb(204,19,15) + "41FF4537" # pos=65 wled=rgb(255,69,45) orig=rgb(255,69,55) + "82E42D54" # pos=130 wled=rgb(223,45,72) orig=rgb(228,45,84) + "C3FF5273" # pos=195 wled=rgb(255,82,103) orig=rgb(255,82,115) + "FFE40D18" # pos=255 wled=rgb(223,13,17) orig=rgb(228,13,24) +) +# Source: Aurora (Aurora_gp) from wled_palettes.h +var PALETTE_AURORA_ = bytes( + "00020537" # pos=0 wled=rgb(1,5,45) orig=rgb(2,5,55) + "4000C81F" # pos=64 wled=rgb(0,200,23) orig=rgb(0,200,31) + "8000FF00" # pos=128 wled=rgb(0,255,0) orig=rgb(0,255,0) + "AA00F337" # pos=170 wled=rgb(0,243,45) orig=rgb(0,243,55) + "C800870B" # pos=200 wled=rgb(0,135,7) orig=rgb(0,135,11) + "FF020537" # pos=255 wled=rgb(1,5,45) orig=rgb(2,5,55) +) +# Source: Atlantica (Atlantica_gp) from wled_palettes.h +var PALETTE_ATLANTICA_ = bytes( + "00001C7C" # pos=0 wled=rgb(0,28,112) orig=rgb(0,28,124) + "01553229" # pos=1 wled=rgb(70,50,32) orig=rgb(85,50,41) + "60FFFF70" # pos=96 wled=rgb(255,2060,100) orig=rgb(255,255,112) + "00F52DA0" # pos=0 wled=rgb(243,45,150) orig=rgb(245,45,160) + "0C6F5200" # pos=12 wled=rgb(95,82,0) orig=rgb(111,82,0) + "0542C821" # pos=5 wled=rgb(52,200,25) orig=rgb(66,200,33) + "BE6F1308" # pos=190 wled=rgb(95,19,5) orig=rgb(111,19,8) + "FF35AA5C" # pos=255 wled=rgb(40,170,80) orig=rgb(53,170,92) +) +# Source: C9 2 (C9_2_gp) from wled_palettes.h +var PALETTE_C9_2_ = bytes( + "000B7E04" # pos=0 wled=rgb(6,126,2) orig=rgb(11,126,4) + "2D0B7E04" # pos=45 wled=rgb(6,126,2) orig=rgb(11,126,4) + "2E081E7E" # pos=46 wled=rgb(4,30,114) orig=rgb(8,30,126) + "5A081E7E" # pos=90 wled=rgb(4,30,114) orig=rgb(8,30,126) + "5BFF0500" # pos=91 wled=rgb(255,5,0) orig=rgb(255,5,0) + "87FF0500" # pos=135 wled=rgb(255,5,0) orig=rgb(255,5,0) + "88CC3904" # pos=136 wled=rgb(196,57,2) orig=rgb(204,57,4) + "B4CC3904" # pos=180 wled=rgb(196,57,2) orig=rgb(204,57,4) + "B5975504" # pos=181 wled=rgb(137,85,2) orig=rgb(151,85,4) + "FF975504" # pos=255 wled=rgb(137,85,2) orig=rgb(151,85,4) +) +# Source: trafficlight (trafficlight_gp) from wled_palettes.h +var PALETTE_TRAFFICLIGHT_ = bytes( + "00000000" # pos=0 wled=rgb(0,0,0) orig=rgb(0,0,0) + "5500FF00" # pos=85 wled=rgb(0,255,0) orig=rgb(0,255,0) + "AAFFFF00" # pos=170 wled=rgb(255,255,0) orig=rgb(255,255,0) + "FFFF0000" # pos=255 wled=rgb(255,0,0) orig=rgb(255,0,0) +) +# Source: Aurora 2 (Aurora2_gp) from wled_palettes.h +var PALETTE_AURORA_2_ = bytes( + "001AB113" # pos=0 wled=rgb(17,177,13) orig=rgb(26,177,19) + "4088F208" # pos=64 wled=rgb(121,242,5) orig=rgb(136,242,8) + "8024AD84" # pos=128 wled=rgb(25,173,121) orig=rgb(36,173,132) + "C0FB4D8A" # pos=192 wled=rgb(250,77,127) orig=rgb(251,77,138) + "FFB665E1" # pos=255 wled=rgb(171,101,221) orig=rgb(182,101,225) +) +# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# = +# Export palettes with human-readable names +# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# =# = +# Berry code block + +class WLED_Palettes + static map = { + "Analogous 1": PALETTE_ANALOGOUS_1_, + "Another Sunset": PALETTE_ANOTHER_SUNSET_, + "Beech": PALETTE_BEECH_, + "Black Blue Magenta White": PALETTE_BLACK_BLUE_MAGENTA_WHITE_, + "Black Magenta Red": PALETTE_BLACK_MAGENTA_RED_, + "Black Red Magenta Yellow": PALETTE_BLACK_RED_MAGENTA_YELLOW_, + "Blue Cyan Yellow": PALETTE_BLUE_CYAN_YELLOW_, + "Colorfull": PALETTE_COLORFULL_, + "Gmt Drywet": PALETTE_GMT_DRYWET_, + "Pink Purple": PALETTE_PINK_PURPLE_, + "Sunset Real": PALETTE_SUNSET_REAL_, + "Sunset Yellow": PALETTE_SUNSET_YELLOW_, + "Tertiary 01": PALETTE_TERTIARY_01_, + "Bhw1 01": PALETTE_BHW1_01_, + "Bhw1 04": PALETTE_BHW1_04_, + "Bhw1 05": PALETTE_BHW1_05_, + "Bhw1 06": PALETTE_BHW1_06_, + "Bhw1 14": PALETTE_BHW1_14_, + "Bhw1 Three": PALETTE_BHW1_THREE_, + "Bhw1 W00T": PALETTE_BHW1_W00T_, + "Bhw2 22": PALETTE_BHW2_22_, + "Bhw2 23": PALETTE_BHW2_23_, + "Bhw2 45": PALETTE_BHW2_45_, + "Bhw2 Xc": PALETTE_BHW2_XC_, + "Bhw3 40": PALETTE_BHW3_40_, + "Bhw3 52": PALETTE_BHW3_52_, + "Bhw4 017": PALETTE_BHW4_017_, + "Bhw4 097": PALETTE_BHW4_097_, + "Departure": PALETTE_DEPARTURE_, + "Es Autumn 19": PALETTE_ES_AUTUMN_19_, + "Es Landscape 33": PALETTE_ES_LANDSCAPE_33_, + "Es Landscape 64": PALETTE_ES_LANDSCAPE_64_, + "Es Ocean Breeze 036": PALETTE_ES_OCEAN_BREEZE_036_, + "Es Pinksplash 08": PALETTE_ES_PINKSPLASH_08_, + "Es Rivendell 15": PALETTE_ES_RIVENDELL_15_, + "Es Vintage 01": PALETTE_ES_VINTAGE_01_, + "Es Vintage 57": PALETTE_ES_VINTAGE_57_, + "Fierce-Ice": PALETTE_FIERCE_ICE_, + "Gr64 Hult": PALETTE_GR64_HULT_, + "Gr65 Hult": PALETTE_GR65_HULT_, + "Ib15": PALETTE_IB15_, + "Ib Jul01": PALETTE_IB_JUL01_, + "Lava": PALETTE_LAVA_, + "Rainbowsherbet": PALETTE_RAINBOWSHERBET_, + "Retro2 16": PALETTE_RETRO2_16_, + "Rgi 15": PALETTE_RGI_15_, + "Temperature": PALETTE_TEMPERATURE_, + "Jul": PALETTE_JUL_, + "Grintage": PALETTE_GRINTAGE_, + "Vintage": PALETTE_VINTAGE_, + "Rivendell": PALETTE_RIVENDELL_, + "Red & Blue": PALETTE_RED_AND_BLUE_, + "Yellowout": PALETTE_YELLOWOUT_, + "Analogous": PALETTE_ANALOGOUS_, + "Splash": PALETTE_SPLASH_, + "Breeze": PALETTE_BREEZE_, + "Departure": PALETTE_DEPARTURE_, + "Landscape": PALETTE_LANDSCAPE_, + "Beach": PALETTE_BEACH_, + "Sherbet": PALETTE_SHERBET_, + "Hult": PALETTE_HULT_, + "Hult64": PALETTE_HULT64_, + "Drywet": PALETTE_DRYWET_, + "Rewhi": PALETTE_REWHI_, + "Tertiary": PALETTE_TERTIARY_, + "Fire": PALETTE_FIRE_, + "Icefire": PALETTE_ICEFIRE_, + "Cyane": PALETTE_CYANE_, + "Light Pink": PALETTE_LIGHT_PINK_, + "Sunset": PALETTE_SUNSET_, + "Pastel": PALETTE_PASTEL_, + "Beech": PALETTE_BEECH_, + "Sunset2": PALETTE_SUNSET2_, + "Autumn": PALETTE_AUTUMN_, + "Magenta": PALETTE_MAGENTA_, + "Magred": PALETTE_MAGRED_, + "Yelmag": PALETTE_YELMAG_, + "Yelblu": PALETTE_YELBLU_, + "Temperature": PALETTE_TEMPERATURE_, + "Retro Clown": PALETTE_RETRO_CLOWN_, + "Candy": PALETTE_CANDY_, + "Toxy Reaf": PALETTE_TOXY_REAF_, + "Fairy Reaf": PALETTE_FAIRY_REAF_, + "Semi Blue": PALETTE_SEMI_BLUE_, + "Pink Candy": PALETTE_PINK_CANDY_, + "Red Reaf": PALETTE_RED_REAF_, + "Aqua Flash": PALETTE_AQUA_FLASH_, + "Yelblu Hot": PALETTE_YELBLU_HOT_, + "Lite Light": PALETTE_LITE_LIGHT_, + "Red Flash": PALETTE_RED_FLASH_, + "Blink Red": PALETTE_BLINK_RED_, + "Red Shift": PALETTE_RED_SHIFT_, + "Red Tide": PALETTE_RED_TIDE_, + "Candy2": PALETTE_CANDY2_, + "Orange & Teal": PALETTE_ORANGE_AND_TEAL_, + "April Night": PALETTE_APRIL_NIGHT_, + "Orangery": PALETTE_ORANGERY_, + "C9": PALETTE_C9_, + "Sakura": PALETTE_SAKURA_, + "Aurora": PALETTE_AURORA_, + "Atlantica": PALETTE_ATLANTICA_, + "C9 2": PALETTE_C9_2_, + "trafficlight": PALETTE_TRAFFICLIGHT_, + "Aurora 2": PALETTE_AURORA_2_, + } +end + +return {"wled_palettes": WLED_Palettes} + +# End berry code block + diff --git a/lib/libesp32/berry_animation/src/animations/comet.be b/lib/libesp32/berry_animation/src/animations/comet.be index c5fc81a53..c25c415fc 100644 --- a/lib/libesp32/berry_animation/src/animations/comet.be +++ b/lib/libesp32/berry_animation/src/animations/comet.be @@ -13,7 +13,7 @@ class CometAnimation : animation.animation # Parameter definitions following parameterized class specification static var PARAMS = { - "color": {"default": 0xFFFFFFFF}, # Color for the comet head (32-bit ARGB value) + # 'color' for the comet head (32-bit ARGB value), inherited from animation class "tail_length": {"min": 1, "max": 50, "default": 5}, # Length of the comet tail in pixels "speed": {"min": 1, "max": 25600, "default": 2560}, # Movement speed in 1/256th pixels per second "direction": {"enum": [-1, 1], "default": 1}, # Direction of movement (1 = forward, -1 = backward) @@ -58,6 +58,9 @@ class CometAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + # Cache parameter values for performance (read once, use multiple times) var current_speed = self.speed var current_direction = self.direction @@ -179,8 +182,6 @@ class CometAnimation : animation.animation return true end - - # String representation of the animation def tostring() var color_str @@ -193,4 +194,4 @@ class CometAnimation : animation.animation end end -return {'comet_animation': CometAnimation} \ No newline at end of file +return {'comet_animation': CometAnimation} diff --git a/lib/libesp32/berry_animation/src/animations/crenel_position.be b/lib/libesp32/berry_animation/src/animations/crenel_position.be index a57dbbfb8..53fa41df8 100644 --- a/lib/libesp32/berry_animation/src/animations/crenel_position.be +++ b/lib/libesp32/berry_animation/src/animations/crenel_position.be @@ -24,12 +24,12 @@ class CrenelPositionAnimation : animation.animation # Parameter definitions with constraints static var PARAMS = { - "color": {"default": 0xFFFFFFFF}, - "back_color": {"default": 0xFF000000}, - "pos": {"default": 0}, - "pulse_size": {"min": 0, "default": 1}, - "low_size": {"min": 0, "default": 3}, - "nb_pulse": {"default": -1} + # 'color' for the comet head (32-bit ARGB value), inherited from animation class + "back_color": {"default": 0xFF000000}, # background color, TODO change to transparent + "pos": {"default": 0}, # start of the pulse (in pixel) + "pulse_size": {"min": 0, "default": 1}, # number of pixels of the pulse + "low_size": {"min": 0, "default": 3}, # number of pixel until next pos - full cycle is 2 + 3 + "nb_pulse": {"default": -1} # number of pulses, or `-1` for infinite } # Render the crenel pattern to the provided frame buffer @@ -127,4 +127,4 @@ class CrenelPositionAnimation : animation.animation end end -return {'crenel_position_animation': CrenelPositionAnimation} \ No newline at end of file +return {'crenel_position_animation': CrenelPositionAnimation} diff --git a/lib/libesp32/berry_animation/src/animations/fire.be b/lib/libesp32/berry_animation/src/animations/fire.be index b9cf014c9..86f9948fd 100644 --- a/lib/libesp32/berry_animation/src/animations/fire.be +++ b/lib/libesp32/berry_animation/src/animations/fire.be @@ -6,14 +6,14 @@ #@ solidify:FireAnimation,weak class FireAnimation : animation.animation # Non-parameter instance variables only - var heat_map # Array storing heat values for each pixel (0-255) - var current_colors # Array of current colors for each pixel + var heat_map # bytes() buffer storing heat values for each pixel (0-255) + var current_colors # bytes() buffer storing ARGB colors (4 bytes per pixel) var last_update # Last update time for flicker timing var random_seed # Seed for random number generation # Parameter definitions following parameterized class specification static var PARAMS = { - "color": {"default": nil}, + # 'color' for the comet head (32-bit ARGB value), inherited from animation class "intensity": {"min": 0, "max": 255, "default": 180}, "flicker_speed": {"min": 1, "max": 20, "default": 8}, "flicker_amount": {"min": 0, "max": 255, "default": 100}, @@ -29,8 +29,8 @@ class FireAnimation : animation.animation super(self).init(engine) # Initialize non-parameter instance variables only - self.heat_map = [] - self.current_colors = [] + self.heat_map = bytes() # Use bytes() buffer for efficient 0-255 value storage + self.current_colors = bytes() # Use bytes() buffer for ARGB colors (4 bytes per pixel) self.last_update = 0 # Initialize random seed using engine time @@ -40,14 +40,19 @@ class FireAnimation : animation.animation # Initialize buffers based on current strip length def _initialize_buffers() var strip_length = self.engine.get_strip_length() - self.heat_map.resize(strip_length) - self.current_colors.resize(strip_length) - # Initialize all pixels to zero heat + # Create new bytes() buffer for heat values (1 byte per pixel) + self.heat_map.clear() + self.heat_map.resize(strip_length) + + # Create new bytes() buffer for colors (4 bytes per pixel: ARGB) + self.current_colors.clear() + self.current_colors.resize(strip_length * 4) + + # Initialize all pixels to zero heat and black color (0xFF000000) var i = 0 while i < strip_length - self.heat_map[i] = 0 - self.current_colors[i] = 0xFF000000 # Black with full alpha + self.current_colors.set(i * 4, 0xFF000000, -4) # Black with full alpha i += 1 end end @@ -77,6 +82,9 @@ class FireAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + # Check if it's time to update the fire simulation # Update frequency is based on flicker_speed (Hz) var flicker_speed = self.flicker_speed # Cache parameter value @@ -99,8 +107,8 @@ class FireAnimation : animation.animation var color_param = self.color var strip_length = self.engine.get_strip_length() - # Ensure buffers are correct size - if size(self.heat_map) != strip_length + # Ensure buffers are correct size (bytes() uses .size() method) + if self.heat_map.size() != strip_length || self.current_colors.size() != strip_length * 4 self._initialize_buffers() end @@ -122,7 +130,13 @@ class FireAnimation : animation.animation var k = strip_length - 1 while k >= 2 var heat_avg = (self.heat_map[k-1] + self.heat_map[k-2] + self.heat_map[k-2]) / 3 - self.heat_map[k] = heat_avg + # Ensure the result is an integer in valid range (0-255) + if heat_avg < 0 + heat_avg = 0 + elif heat_avg > 255 + heat_avg = 255 + end + self.heat_map[k] = int(heat_avg) k -= 1 end end @@ -130,7 +144,11 @@ class FireAnimation : animation.animation # Step 3: Randomly ignite new 'sparks' of heat near the bottom if self._random_range(255) < sparking_rate var spark_pos = self._random_range(7) # Sparks only in bottom 7 pixels - var spark_heat = self._random_range(95) + 160 # Heat between 160-255 + var spark_heat = self._random_range(95) + 160 # Heat between 160-254 + # Ensure spark heat is in valid range (should already be, but be explicit) + if spark_heat > 255 + spark_heat = 255 + end if spark_pos < strip_length self.heat_map[spark_pos] = spark_heat end @@ -205,7 +223,7 @@ class FireAnimation : animation.animation end end - self.current_colors[i] = color + self.current_colors.set(i * 4, color, -4) i += 1 end end @@ -229,7 +247,7 @@ class FireAnimation : animation.animation var i = 0 while i < strip_length if i < frame.width - frame.set_pixel_color(i, self.current_colors[i]) + frame.set_pixel_color(i, self.current_colors.get(i * 4, -4)) end i += 1 end diff --git a/lib/libesp32/berry_animation/src/animations/twinkle.be b/lib/libesp32/berry_animation/src/animations/twinkle.be index 50992abe1..c81565308 100644 --- a/lib/libesp32/berry_animation/src/animations/twinkle.be +++ b/lib/libesp32/berry_animation/src/animations/twinkle.be @@ -9,7 +9,7 @@ class TwinkleAnimation : animation.animation # Non-parameter instance variables only var twinkle_states # Array storing twinkle state for each pixel - var current_colors # Array of current colors for each pixel + var current_colors # bytes() buffer storing ARGB colors (4 bytes per pixel) var last_update # Last update time for timing var random_seed # Seed for random number generation @@ -32,7 +32,7 @@ class TwinkleAnimation : animation.animation # Initialize non-parameter instance variables only self.twinkle_states = [] - self.current_colors = [] + self.current_colors = bytes() # Use bytes() buffer for ARGB colors (4 bytes per pixel) self.last_update = 0 # Initialize random seed using engine time @@ -48,13 +48,16 @@ class TwinkleAnimation : animation.animation # Resize arrays self.twinkle_states.resize(strip_length) - self.current_colors.resize(strip_length) + + # Create new bytes() buffer for colors (4 bytes per pixel: ARGB) + self.current_colors.clear() + self.current_colors.resize(strip_length * 4) # Initialize all pixels to off state var i = 0 while i < strip_length self.twinkle_states[i] = 0 # 0 = off, >0 = brightness level - self.current_colors[i] = 0x00000000 # Transparent (alpha = 0) + self.current_colors.set(i * 4, 0x00000000, -4) # Transparent (alpha = 0) i += 1 end end @@ -133,14 +136,14 @@ class TwinkleAnimation : animation.animation var strip_length = self.engine.get_strip_length() # Ensure arrays are properly sized - if size(self.twinkle_states) != strip_length + if size(self.twinkle_states) != strip_length || self.current_colors.size() != strip_length * 4 self._initialize_arrays() end # Step 1: Fade existing twinkles by reducing alpha var i = 0 while i < strip_length - var current_color = self.current_colors[i] + var current_color = self.current_colors.get(i * 4, -4) var alpha = (current_color >> 24) & 0xFF if alpha > 0 @@ -149,12 +152,12 @@ class TwinkleAnimation : animation.animation if alpha <= fade_amount # Star has faded completely - reset to transparent self.twinkle_states[i] = 0 - self.current_colors[i] = 0x00000000 + self.current_colors.set(i * 4, 0x00000000, -4) else # Reduce alpha while keeping RGB components unchanged var new_alpha = alpha - fade_amount var rgb = current_color & 0x00FFFFFF # Keep RGB, clear alpha - self.current_colors[i] = (new_alpha << 24) | rgb + self.current_colors.set(i * 4, (new_alpha << 24) | rgb, -4) end end i += 1 @@ -181,7 +184,7 @@ class TwinkleAnimation : animation.animation # Create new star with full-brightness color and variable alpha self.twinkle_states[j] = 1 # Mark as active (non-zero) - self.current_colors[j] = (star_alpha << 24) | (r << 16) | (g << 8) | b + self.current_colors.set(j * 4, (star_alpha << 24) | (r << 16) | (g << 8) | b, -4) end end j += 1 @@ -204,7 +207,7 @@ class TwinkleAnimation : animation.animation var strip_length = self.engine.get_strip_length() # Ensure arrays are properly sized - if size(self.twinkle_states) != strip_length + if size(self.twinkle_states) != strip_length || self.current_colors.size() != strip_length * 4 self._initialize_arrays() end @@ -213,7 +216,7 @@ class TwinkleAnimation : animation.animation var i = 0 while i < strip_length if i < frame.width - var color = self.current_colors[i] + var color = self.current_colors.get(i * 4, -4) # Only set pixels that have some alpha (are visible) if (color >> 24) & 0xFF > 0 frame.set_pixel_color(i, color) diff --git a/lib/libesp32/berry_animation/src/animations/bounce.be b/lib/libesp32/berry_animation/src/animations_future/bounce.be similarity index 100% rename from lib/libesp32/berry_animation/src/animations/bounce.be rename to lib/libesp32/berry_animation/src/animations_future/bounce.be diff --git a/lib/libesp32/berry_animation/src/animations/jitter.be b/lib/libesp32/berry_animation/src/animations_future/jitter.be similarity index 100% rename from lib/libesp32/berry_animation/src/animations/jitter.be rename to lib/libesp32/berry_animation/src/animations_future/jitter.be diff --git a/lib/libesp32/berry_animation/src/animations/plasma.be b/lib/libesp32/berry_animation/src/animations_future/plasma.be similarity index 100% rename from lib/libesp32/berry_animation/src/animations/plasma.be rename to lib/libesp32/berry_animation/src/animations_future/plasma.be diff --git a/lib/libesp32/berry_animation/src/animations/scale.be b/lib/libesp32/berry_animation/src/animations_future/scale.be similarity index 100% rename from lib/libesp32/berry_animation/src/animations/scale.be rename to lib/libesp32/berry_animation/src/animations_future/scale.be diff --git a/lib/libesp32/berry_animation/src/animations/shift.be b/lib/libesp32/berry_animation/src/animations_future/shift.be similarity index 100% rename from lib/libesp32/berry_animation/src/animations/shift.be rename to lib/libesp32/berry_animation/src/animations_future/shift.be diff --git a/lib/libesp32/berry_animation/src/animations/sparkle.be b/lib/libesp32/berry_animation/src/animations_future/sparkle.be similarity index 100% rename from lib/libesp32/berry_animation/src/animations/sparkle.be rename to lib/libesp32/berry_animation/src/animations_future/sparkle.be diff --git a/lib/libesp32/berry_animation/src/core/animation_engine.be b/lib/libesp32/berry_animation/src/core/animation_engine.be index 8e9875f4b..4ea07e81e 100644 --- a/lib/libesp32/berry_animation/src/core/animation_engine.be +++ b/lib/libesp32/berry_animation/src/core/animation_engine.be @@ -19,6 +19,9 @@ class AnimationEngine # Performance optimization var render_needed # Whether a render pass is needed + # Sequence iteration tracking (stack-based for nested sequences) + var iteration_stack # Stack of iteration numbers for nested sequences + # Initialize the animation engine for a specific LED strip def init(strip) if strip == nil @@ -40,6 +43,9 @@ class AnimationEngine self.time_ms = 0 self.fast_loop_closure = nil self.render_needed = false + + # Initialize iteration tracking stack + self.iteration_stack = [] end # Run the animation engine @@ -454,6 +460,46 @@ class AnimationEngine self.strip = nil end + # Sequence iteration tracking methods + + # Push a new iteration context onto the stack + # Called when a sequence starts repeating + # + # @param iteration_number: int - The current iteration number (0-based) + def push_iteration_context(iteration_number) + self.iteration_stack.push(iteration_number) + end + + # Pop the current iteration context from the stack + # Called when a sequence finishes repeating + def pop_iteration_context() + if size(self.iteration_stack) > 0 + return self.iteration_stack.pop() + end + return nil + end + + # Update the current iteration number in the top context + # Called when a sequence advances to the next iteration + # + # @param iteration_number: int - The new iteration number (0-based) + def update_current_iteration(iteration_number) + if size(self.iteration_stack) > 0 + self.iteration_stack[-1] = iteration_number + end + end + + # Get the current iteration number from the innermost sequence context + # Used by IterationNumberProvider to return the current iteration + # + # @return int|nil - Current iteration number (0-based) or nil if not in sequence + def get_current_iteration_number() + if size(self.iteration_stack) > 0 + return self.iteration_stack[-1] + end + return nil + end + # String representation def tostring() return f"AnimationEngine(running={self.is_running}, animations={size(self.animations)}, width={self.width})" diff --git a/lib/libesp32/berry_animation/src/core/sequence_manager.be b/lib/libesp32/berry_animation/src/core/sequence_manager.be index 234f59b0e..6170cff1f 100644 --- a/lib/libesp32/berry_animation/src/core/sequence_manager.be +++ b/lib/libesp32/berry_animation/src/core/sequence_manager.be @@ -90,6 +90,11 @@ class SequenceManager self.current_iteration = 0 self.is_running = true + # Push iteration context to engine stack if this is a repeat sequence + if self.is_repeat_sequence + self.engine.push_iteration_context(self.current_iteration) + end + # Start executing if we have steps if size(self.steps) > 0 # Execute all consecutive closure steps at the beginning atomically @@ -120,6 +125,11 @@ class SequenceManager if self.is_running self.is_running = false + # Pop iteration context from engine stack if this is a repeat sequence + if self.is_repeat_sequence + self.engine.pop_iteration_context() + end + # Stop any currently playing animations if self.step_index < size(self.steps) var current_step = self.steps[self.step_index] @@ -347,6 +357,11 @@ class SequenceManager def complete_iteration(current_time) self.current_iteration += 1 + # Update iteration context in engine stack if this is a repeat sequence + if self.is_repeat_sequence + self.engine.update_current_iteration(self.current_iteration) + end + # Resolve repeat count (may be a function) var resolved_repeat_count = self.get_resolved_repeat_count() @@ -376,6 +391,11 @@ class SequenceManager else # All iterations complete self.is_running = false + + # Pop iteration context from engine stack if this is a repeat sequence + if self.is_repeat_sequence + self.engine.pop_iteration_context() + end end end diff --git a/lib/libesp32/berry_animation/src/dsl/lexer.be b/lib/libesp32/berry_animation/src/dsl/lexer.be index 57f5eb5fe..bc102e730 100644 --- a/lib/libesp32/berry_animation/src/dsl/lexer.be +++ b/lib/libesp32/berry_animation/src/dsl/lexer.be @@ -68,7 +68,13 @@ class DSLLexer elif self.is_digit(ch) self.scan_number() elif ch == '"' || ch == "'" - self.scan_string(ch) + # Check for triple quotes + if (ch == '"' && self.peek() == '"' && self.peek_ahead(1) == '"') || + (ch == "'" && self.peek() == "'" && self.peek_ahead(1) == "'") + self.scan_triple_quoted_string(ch) + else + self.scan_string(ch) + end elif ch == '$' self.scan_variable_reference() else @@ -268,6 +274,49 @@ class DSLLexer end end + # Scan triple-quoted string literal (for berry code blocks) + def scan_triple_quoted_string(quote_char) + var start_pos = self.position - 1 # Include first opening quote + var start_column = self.column - 1 + var value = "" + + # Consume the two remaining opening quotes + self.advance() # second quote + self.advance() # third quote + + # Look for the closing triple quotes + while !self.at_end() + var ch = self.peek() + + # Check for closing triple quotes + if ch == quote_char && + self.peek_ahead(1) == quote_char && + self.peek_ahead(2) == quote_char + # Found closing triple quotes - consume them + self.advance() # first closing quote + self.advance() # second closing quote + self.advance() # third closing quote + break + end + + # Regular character - add to value + ch = self.advance() + if ch == '\n' + self.line += 1 + self.column = 1 + end + value += ch + end + + # Check if we reached end without finding closing quotes + if self.at_end() && !(self.source[self.position-3..self.position-1] == quote_char + quote_char + quote_char) + self.add_error("Unterminated triple-quoted string literal") + self.add_token(39 #-animation_dsl.Token.ERROR-#, value, self.position - start_pos) + else + self.add_token(3 #-animation_dsl.Token.STRING-#, value, self.position - start_pos) + end + end + # Scan variable reference ($identifier) def scan_variable_reference() var start_pos = self.position - 1 # Include $ @@ -419,6 +468,14 @@ class DSLLexer return self.source[self.position + 1] end + # Peek ahead by n characters without advancing + def peek_ahead(n) + if self.position + n >= size(self.source) + return "" + end + return self.source[self.position + n] + end + # Check if current character matches expected and advance if so def match(expected) if self.at_end() || self.source[self.position] != expected diff --git a/lib/libesp32/berry_animation/src/dsl/named_colors.be b/lib/libesp32/berry_animation/src/dsl/named_colors.be new file mode 100644 index 000000000..7a10da066 --- /dev/null +++ b/lib/libesp32/berry_animation/src/dsl/named_colors.be @@ -0,0 +1,62 @@ +# Named Colors Module for Animation DSL +# Provides color name to ARGB value mappings for the DSL transpiler + +# Static color mapping for named colors (helps with solidification) +# Maps color names to ARGB hex values (0xAARRGGBB format) +# All colors have full alpha (0xFF) except transparent +var named_colors = { + # Primary colors + "red": "0xFFFF0000", # Pure red + "green": "0xFF008000", # HTML/CSS standard green (darker, more readable) + "blue": "0xFF0000FF", # Pure blue + + # Achromatic colors + "white": "0xFFFFFFFF", # Pure white + "black": "0xFF000000", # Pure black + "gray": "0xFF808080", # Medium gray + "grey": "0xFF808080", # Alternative spelling + "silver": "0xFFC0C0C0", # Light gray + + # Secondary colors + "yellow": "0xFFFFFF00", # Pure yellow (red + green) + "cyan": "0xFF00FFFF", # Pure cyan (green + blue) + "magenta": "0xFFFF00FF", # Pure magenta (red + blue) + + # Extended web colors + "orange": "0xFFFFA500", # Orange + "purple": "0xFF800080", # Purple (darker magenta) + "pink": "0xFFFFC0CB", # Light pink + "lime": "0xFF00FF00", # Pure green (HTML/CSS lime = full intensity) + "navy": "0xFF000080", # Dark blue + "olive": "0xFF808000", # Dark yellow-green + "maroon": "0xFF800000", # Dark red + "teal": "0xFF008080", # Dark cyan + "aqua": "0xFF00FFFF", # Same as cyan + "fuchsia": "0xFFFF00FF", # Same as magenta + + # Precious metals + "gold": "0xFFFFD700", # Metallic gold + + # Natural colors + "brown": "0xFFA52A2A", # Saddle brown + "tan": "0xFFD2B48C", # Light brown/beige + "beige": "0xFFF5F5DC", # Very light brown + "ivory": "0xFFFFFFF0", # Off-white with yellow tint + "snow": "0xFFFFFAFA", # Off-white with slight blue tint + + # Flower/nature colors + "indigo": "0xFF4B0082", # Deep blue-purple + "violet": "0xFFEE82EE", # Light purple + "crimson": "0xFFDC143C", # Deep red + "coral": "0xFFFF7F50", # Orange-pink + "salmon": "0xFFFA8072", # Pink-orange + "khaki": "0xFFF0E68C", # Pale yellow-brown + "plum": "0xFFDDA0DD", # Light purple + "orchid": "0xFFDA70D6", # Medium purple + "turquoise": "0xFF40E0D0", # Blue-green + + # Special + "transparent": "0x00000000" # Fully transparent (alpha = 0) +} + +return {"named_colors": named_colors} diff --git a/lib/libesp32/berry_animation/src/dsl/symbol_table.be b/lib/libesp32/berry_animation/src/dsl/symbol_table.be new file mode 100644 index 000000000..32d7ae67a --- /dev/null +++ b/lib/libesp32/berry_animation/src/dsl/symbol_table.be @@ -0,0 +1,601 @@ +# Symbol Table Classes for DSL Transpiler +# Enhanced symbol caching and management for the Animation DSL + +# Symbol table entry class for enhanced symbol caching +#@ solidify:SymbolEntry,weak +class SymbolEntry + # Type constants + static var TYPE_PALETTE_CONSTANT = 1 + static var TYPE_PALETTE = 2 + static var TYPE_CONSTANT = 3 + static var TYPE_MATH_FUNCTION = 4 + static var TYPE_USER_FUNCTION = 5 + static var TYPE_VALUE_PROVIDER_CONSTRUCTOR = 6 + static var TYPE_VALUE_PROVIDER = 7 + static var TYPE_ANIMATION_CONSTRUCTOR = 8 + static var TYPE_ANIMATION = 9 + static var TYPE_COLOR_CONSTRUCTOR = 10 + static var TYPE_COLOR = 11 + static var TYPE_VARIABLE = 12 + static var TYPE_SEQUENCE = 13 + static var TYPE_TEMPLATE = 14 + + var name # Symbol name + var type # Symbol type (int constant) + var instance # Actual instance (for validation) or nil + var takes_args # Boolean: whether this symbol takes arguments + var arg_type # "positional", "named", or "none" + var is_builtin # Boolean: whether this is a built-in symbol from animation module + var is_dangerous # Boolean: whether calling this symbol creates a new instance (dangerous in computed expressions) + var param_types # Map of parameter names to types (for templates and user functions) + + def init(name, typ, instance, is_builtin) + self.name = name + self.type = typ + self.instance = instance + self.is_builtin = is_builtin != nil ? is_builtin : false + self.takes_args = false + self.arg_type = "none" + self.is_dangerous = false + self.param_types = {} + + # Auto-detect argument characteristics and danger level based on type + self._detect_arg_characteristics() + self._detect_danger_level() + end + + # Detect if this symbol takes arguments and what type + def _detect_arg_characteristics() + if self.type == self.TYPE_PALETTE_CONSTANT || self.type == self.TYPE_PALETTE || self.type == self.TYPE_CONSTANT + # Palette objects and constants don't take arguments + self.takes_args = false + self.arg_type = "none" + elif self.type == self.TYPE_MATH_FUNCTION + # Math functions like max, min take positional arguments + self.takes_args = true + self.arg_type = "positional" + elif self.type == self.TYPE_USER_FUNCTION + # User functions take positional arguments (engine + user args) + self.takes_args = true + self.arg_type = "positional" + elif self.type == self.TYPE_VALUE_PROVIDER_CONSTRUCTOR || self.type == self.TYPE_ANIMATION_CONSTRUCTOR || self.type == self.TYPE_COLOR_CONSTRUCTOR + # Constructor functions take named arguments + self.takes_args = true + self.arg_type = "named" + else + # Instances, variables, sequences, templates don't take arguments when referenced + self.takes_args = false + self.arg_type = "none" + end + end + + # Detect if this symbol is dangerous (creates new instances when called) + def _detect_danger_level() + if self.type == self.TYPE_VALUE_PROVIDER_CONSTRUCTOR + # Value provider constructors create new instances - dangerous in computed expressions + self.is_dangerous = true + elif self.type == self.TYPE_ANIMATION_CONSTRUCTOR + # Animation constructors create new instances - dangerous in computed expressions + self.is_dangerous = true + elif self.type == self.TYPE_COLOR_CONSTRUCTOR + # Color provider constructors create new instances - dangerous in computed expressions + self.is_dangerous = true + else + # Constants, math functions, variables, instances, user functions, etc. are safe + self.is_dangerous = false + end + end + + # Check if this symbol is a bytes() instance (for palettes) + def is_bytes_instance() + return (self.type == self.TYPE_PALETTE_CONSTANT || self.type == self.TYPE_PALETTE) && self.instance != nil && isinstance(self.instance, bytes) + end + + # Check if this symbol is a math function + def is_math_function() + return self.type == self.TYPE_MATH_FUNCTION + end + + # Check if this symbol is a user function + def is_user_function() + return self.type == self.TYPE_USER_FUNCTION + end + + + # Check if this symbol is a value provider constructor + def is_value_provider_constructor() + return self.type == self.TYPE_VALUE_PROVIDER_CONSTRUCTOR + end + + # Check if this symbol is a value provider instance + def is_value_provider_instance() + return self.type == self.TYPE_VALUE_PROVIDER + end + + # Check if this symbol is an animation constructor + def is_animation_constructor() + return self.type == self.TYPE_ANIMATION_CONSTRUCTOR + end + + # Check if this symbol is an animation instance + def is_animation_instance() + return self.type == self.TYPE_ANIMATION + end + + # Check if this symbol is a color constructor + def is_color_constructor() + return self.type == self.TYPE_COLOR_CONSTRUCTOR + end + + # Check if this symbol is a color instance + def is_color_instance() + return self.type == self.TYPE_COLOR + end + + # Check if this symbol takes positional arguments + def takes_positional_args() + return self.takes_args && self.arg_type == "positional" + end + + # Check if this symbol takes named arguments + def takes_named_args() + return self.takes_args && self.arg_type == "named" + end + + # Check if this symbol is dangerous (creates new instances when called) + def is_dangerous_call() + return self.is_dangerous + end + + # Set parameter types for templates and user functions + def set_param_types(param_types) + self.param_types = param_types != nil ? param_types : {} + end + + # Get parameter types + def get_param_types() + return self.param_types + end + + # Convert type constant to string for debugging + def type_to_string() + if self.type == self.TYPE_PALETTE_CONSTANT return "palette_constant" + elif self.type == self.TYPE_PALETTE return "palette" + elif self.type == self.TYPE_CONSTANT return "constant" + elif self.type == self.TYPE_MATH_FUNCTION return "math_function" + elif self.type == self.TYPE_USER_FUNCTION return "user_function" + elif self.type == self.TYPE_VALUE_PROVIDER_CONSTRUCTOR return "value_provider_constructor" + elif self.type == self.TYPE_VALUE_PROVIDER return "value_provider" + elif self.type == self.TYPE_ANIMATION_CONSTRUCTOR return "animation_constructor" + elif self.type == self.TYPE_ANIMATION return "animation" + elif self.type == self.TYPE_COLOR_CONSTRUCTOR return "color_constructor" + elif self.type == self.TYPE_COLOR return "color" + elif self.type == self.TYPE_VARIABLE return "variable" + elif self.type == self.TYPE_SEQUENCE return "sequence" + elif self.type == self.TYPE_TEMPLATE return "template" + else return f"unknown({self.type})" + end + end + + # Get the resolved symbol reference for code generation + def get_reference() + # Generate appropriate reference based on whether it's built-in + if self.is_builtin + # Special handling for math functions + if self.type == self.TYPE_MATH_FUNCTION + return f"animation._math.{self.name}" + else + return f"animation.{self.name}" + end + else + # User-defined symbols get underscore suffix + return f"{self.name}_" + end + end + + # String representation for debugging + def tostring() + import string + + var instance_str = "nil" + if self.instance != nil + var instance_type = type(self.instance) + if instance_type == "instance" + instance_str = f"<{classname(self.instance)}>" + else + instance_str = f"<{instance_type}:{str(self.instance)}>" + end + end + + var param_types_str = "" + if size(self.param_types) > 0 + var params_list = "" + var first = true + for key : self.param_types.keys() + if !first + params_list += "," + end + params_list += f"{key}:{self.param_types[key]}" + first = false + end + param_types_str = f" params=[{params_list}]" + end + + return f"SymbolEntry(name='{self.name}', type='{self.type_to_string()}', instance={instance_str}, " + + f"takes_args={self.takes_args}, arg_type='{self.arg_type}', " + + f"is_builtin={self.is_builtin}, is_dangerous={self.is_dangerous}{param_types_str})" + end + + # Create a symbol entry for a palette constant (built-in like PALETTE_RAINBOW) + static def create_palette_constant(name, instance, is_builtin) + return _class(name, _class.TYPE_PALETTE_CONSTANT, instance, is_builtin) + end + + # Create a symbol entry for a palette instance (user-defined) + static def create_palette_instance(name, instance, is_builtin) + return _class(name, _class.TYPE_PALETTE, instance, is_builtin) + end + + # Create a symbol entry for an integer constant + static def create_constant(name, instance, is_builtin) + return _class(name, _class.TYPE_CONSTANT, instance, is_builtin) + end + + # Create a symbol entry for a math function + static def create_math_function(name, is_builtin) + return _class(name, _class.TYPE_MATH_FUNCTION, nil, is_builtin) + end + + # Create a symbol entry for a user function + static def create_user_function(name, is_builtin) + return _class(name, _class.TYPE_USER_FUNCTION, nil, is_builtin) + end + + + # Create a symbol entry for a value provider constructor (built-in like triangle, smooth) + static def create_value_provider_constructor(name, instance, is_builtin) + return _class(name, _class.TYPE_VALUE_PROVIDER_CONSTRUCTOR, instance, is_builtin) + end + + # Create a symbol entry for a value provider instance (user-defined) + static def create_value_provider_instance(name, instance, is_builtin) + return _class(name, _class.TYPE_VALUE_PROVIDER, instance, is_builtin) + end + + # Create a symbol entry for an animation constructor (built-in like solid, pulsating_animation) + static def create_animation_constructor(name, instance, is_builtin) + return _class(name, _class.TYPE_ANIMATION_CONSTRUCTOR, instance, is_builtin) + end + + # Create a symbol entry for an animation instance (user-defined) + static def create_animation_instance(name, instance, is_builtin) + return _class(name, _class.TYPE_ANIMATION, instance, is_builtin) + end + + # Create a symbol entry for a color constructor (built-in like color_cycle, breathe_color) + static def create_color_constructor(name, instance, is_builtin) + return _class(name, _class.TYPE_COLOR_CONSTRUCTOR, instance, is_builtin) + end + + # Create a symbol entry for a color instance (user-defined) + static def create_color_instance(name, instance, is_builtin) + return _class(name, _class.TYPE_COLOR, instance, is_builtin) + end + + # Create a symbol entry for a variable + static def create_variable(name, is_builtin) + return _class(name, _class.TYPE_VARIABLE, nil, is_builtin) + end + + # Create a symbol entry for a sequence + static def create_sequence(name, is_builtin) + return _class(name, _class.TYPE_SEQUENCE, nil, is_builtin) + end + + # Create a symbol entry for a template + static def create_template(name, is_builtin) + return _class(name, _class.TYPE_TEMPLATE, nil, is_builtin) + end +end + +# Mock engine class for parameter validation during transpilation +class MockEngine + var time_ms + + def init() + self.time_ms = 0 + end + + def get_strip_length() + return 30 # Default strip length for validation + end +end + +# Enhanced symbol table class for holistic symbol management and caching +#@ solidify:SymbolTable,weak +class SymbolTable + var entries # Map of name -> SymbolEntry + var mock_engine # MockEngine for validation + + def init() + self.entries = {} + self.mock_engine = animation_dsl.MockEngine() + end + + # Dynamically detect and cache symbol type when first encountered + def _detect_and_cache_symbol(name) + if self.entries.contains(name) + return self.entries[name] # Already cached + end + + try + import introspect + + # Check for named colors first (from animation_dsl.named_colors) + if animation_dsl.named_colors.contains(name) + var entry = animation_dsl._symbol_entry.create_color_instance(name, nil, true) # true = is_builtin + self.entries[name] = entry + return entry + end + + # Check for special built-in functions like 'log' + if name == "log" + var entry = animation_dsl._symbol_entry.create_user_function("log", true) # true = is_builtin + self.entries[name] = entry + return entry + end + + + # Check for user functions (they might not be in animation module directly) + if animation.is_user_function(name) + var entry = animation_dsl._symbol_entry.create_user_function(name, true) + self.entries[name] = entry + return entry + end + + # Check for math functions (they are in animation._math, not directly in animation) + if introspect.contains(animation._math, name) + var entry = animation_dsl._symbol_entry.create_math_function(name, true) + self.entries[name] = entry + return entry + end + + # Check if it exists in animation module + if introspect.contains(animation, name) + var obj = animation.(name) + var obj_type = type(obj) + + # Detect palette objects (bytes() instances) + if isinstance(obj, bytes) + var entry = animation_dsl._symbol_entry.create_palette_constant(name, obj, true) + self.entries[name] = entry + return entry + end + + # Detect integer constants (like LINEAR, SINE, COSINE, etc.) + if obj_type == "int" + var entry = animation_dsl._symbol_entry.create_constant(name, obj, true) + self.entries[name] = entry + return entry + end + + # Detect constructors (functions/classes that create instances) + if obj_type == "function" || obj_type == "class" + try + var instance = obj(self.mock_engine) + if isinstance(instance, animation.color_provider) + # Color providers are a subclass of value providers, check them first + var entry = animation_dsl._symbol_entry.create_color_constructor(name, instance, true) + self.entries[name] = entry + return entry + elif isinstance(instance, animation.value_provider) + var entry = animation_dsl._symbol_entry.create_value_provider_constructor(name, instance, true) + self.entries[name] = entry + return entry + elif isinstance(instance, animation.animation) + var entry = animation_dsl._symbol_entry.create_animation_constructor(name, instance, true) + self.entries[name] = entry + return entry + end + except .. as e, msg + # If instance creation fails, it might still be a valid function + # but not a constructor we can validate + end + end + end + + # If not found in animation module, return nil (will be handled as user-defined) + return nil + + except .. as e, msg + # If detection fails, return nil + return nil + end + end + + # Add a symbol entry to the table (with conflict detection) - returns the entry + def add(name, entry) + # First check if there's a built-in symbol with this name + var builtin_entry = self._detect_and_cache_symbol(name) + if builtin_entry != nil && builtin_entry.type != entry.type + raise "symbol_redefinition_error", f"Cannot define '{name}' as {entry.type_to_string()} - it conflicts with built-in {builtin_entry.type_to_string()}" + end + + # Check existing user-defined symbols + var existing = self.entries.find(name) + if existing != nil + # Check if it's the same type + if existing.type != entry.type + raise "symbol_redefinition_error", f"Cannot redefine symbol '{name}' as {entry.type_to_string()} - it's already defined as {existing.type_to_string()}" + end + # If same type, allow update (for cases like reassignment) + end + + self.entries[name] = entry + return entry + end + + # Check if a symbol exists (with dynamic detection) + def contains(name) + if self.entries.contains(name) + return true + end + + # Try to detect and cache it + var entry = self._detect_and_cache_symbol(name) + return entry != nil + end + + # Get a symbol entry (with dynamic detection) + def get(name) + var entry = self.entries.find(name) + if entry != nil + return entry + end + + # Try to detect and cache it + return self._detect_and_cache_symbol(name) + end + + # Get symbol reference for code generation (with dynamic detection) + def get_reference(name) + # Try to get from cache or detect dynamically (includes named colors) + var entry = self.get(name) + if entry != nil + # For builtin color entries, return the actual color value directly + if entry.is_builtin && entry.type == animation_dsl._symbol_entry.TYPE_COLOR + return animation_dsl.named_colors[name] + end + return entry.get_reference() + end + + # Default to user-defined format + return f"{name}_" + end + + # Check if symbol exists (including named colors, with dynamic detection) + def symbol_exists(name) + # Use proper discovery through _detect_and_cache_symbol via contains() + return self.contains(name) + end + + # Create and register a palette instance symbol (user-defined) + def create_palette(name, instance) + var entry = animation_dsl._symbol_entry.create_palette_instance(name, instance, false) + return self.add(name, entry) + end + + # Create and register a color instance symbol (user-defined) + def create_color(name, instance) + var entry = animation_dsl._symbol_entry.create_color_instance(name, instance, false) + return self.add(name, entry) + end + + # Create and register an animation instance symbol (user-defined) + def create_animation(name, instance) + var entry = animation_dsl._symbol_entry.create_animation_instance(name, instance, false) + return self.add(name, entry) + end + + # Create and register a value provider instance symbol (user-defined) + def create_value_provider(name, instance) + var entry = animation_dsl._symbol_entry.create_value_provider_instance(name, instance, false) + return self.add(name, entry) + end + + # Create and register a variable symbol (user-defined) + def create_variable(name) + var entry = animation_dsl._symbol_entry.create_variable(name, false) + return self.add(name, entry) + end + + # Create and register a sequence symbol (user-defined) + def create_sequence(name) + var entry = animation_dsl._symbol_entry.create_sequence(name, false) + return self.add(name, entry) + end + + # Create and register a template symbol (user-defined) + def create_template(name, param_types) + var entry = animation_dsl._symbol_entry.create_template(name, false) + entry.set_param_types(param_types != nil ? param_types : {}) + return self.add(name, entry) + end + + + # Register a user function (detected at runtime) + def register_user_function(name) + if !self.contains(name) + var entry = animation_dsl._symbol_entry.create_user_function(name, false) + self.add(name, entry) + end + end + + # Generic create function that can specify name/type/instance/builtin directly + def create_generic(name, typ, instance, is_builtin) + var entry = animation_dsl._symbol_entry(name, typ, instance, is_builtin != nil ? is_builtin : false) + return self.add(name, entry) + end + + # Get the type of a symbol + def get_type(name) + var entry = self.get(name) + return entry != nil ? entry.type_to_string() : nil + end + + # Check if symbol takes arguments + def takes_args(name) + var entry = self.get(name) + return entry != nil ? entry.takes_args : false + end + + # Check if symbol takes positional arguments + def takes_positional_args(name) + var entry = self.get(name) + return entry != nil ? entry.takes_positional_args() : false + end + + # Check if symbol takes named arguments + def takes_named_args(name) + var entry = self.get(name) + return entry != nil ? entry.takes_named_args() : false + end + + # Get instance for validation + def get_instance(name) + var entry = self.get(name) + return entry != nil ? entry.instance : nil + end + + # Check if symbol is dangerous (creates new instances when called) + def is_dangerous(name) + var entry = self.get(name) + return entry != nil ? entry.is_dangerous_call() : false + end + + # Helper method to get named color value (uses proper discovery) + def _get_named_color_value(color_name) + var entry = self.get(color_name) # This will trigger _detect_and_cache_symbol if needed + if entry != nil && entry.is_builtin && entry.type == animation_dsl._symbol_entry.TYPE_COLOR + return animation_dsl.named_colors[color_name] + end + return "0xFFFFFFFF" # Default fallback + end + + # Debug method to list all symbols + def list_symbols() + var result = [] + for name : self.entries.keys() + var entry = self.entries[name] + result.push(f"{name}: {entry.type_to_string()}") + end + return result + end +end + +# Return module exports +return { + "_symbol_entry": SymbolEntry, + "_symbol_table": SymbolTable, + "MockEngine": MockEngine +} \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/dsl/token.be b/lib/libesp32/berry_animation/src/dsl/token.be index 3b2ab4f7b..2309ed9bf 100644 --- a/lib/libesp32/berry_animation/src/dsl/token.be +++ b/lib/libesp32/berry_animation/src/dsl/token.be @@ -27,12 +27,12 @@ class Token static var statement_keywords = [ "strip", "set", "color", "palette", "animation", - "sequence", "function", "zone", "on", "run", "template", "param", "import" + "sequence", "function", "zone", "on", "run", "template", "param", "import", "berry" ] static var keywords = [ # Configuration keywords - "strip", "set", "import", + "strip", "set", "import", "berry", # Definition keywords "color", "palette", "animation", "sequence", "function", "zone", "template", "param", "type", diff --git a/lib/libesp32/berry_animation/src/dsl/transpiler.be b/lib/libesp32/berry_animation/src/dsl/transpiler.be index aa8dbb5f3..50be17b8c 100644 --- a/lib/libesp32/berry_animation/src/dsl/transpiler.be +++ b/lib/libesp32/berry_animation/src/dsl/transpiler.be @@ -2,19 +2,6 @@ # Single-pass transpiler with minimal complexity # Leverages Berry's runtime for symbol resolution -# Mock engine class for parameter validation during transpilation -class MockEngine - var time_ms - - def init() - self.time_ms = 0 - end - - def get_strip_length() - return 30 # Default strip length for validation - end -end - #@ solidify:SimpleDSLTranspiler,weak class SimpleDSLTranspiler var tokens # Token stream from lexer @@ -22,30 +9,132 @@ class SimpleDSLTranspiler var output # Generated Berry code lines var errors # Compilation errors var run_statements # Collect all run statements for single engine.run() - var first_statement # Track if we're processing the first statement var strip_initialized # Track if strip was initialized - var sequence_names # Track which names are sequences - var symbol_table # Track created objects: name -> instance + var symbol_table # Enhanced symbol cache: name -> {type, instance, class_obj} var indent_level # Track current indentation level for nested sequences - var template_definitions # Track template definitions: name -> {params, body} var has_template_calls # Track if we have template calls to trigger engine.run() - # Static color mapping for named colors (helps with solidification) - static var named_colors = { - "red": "0xFFFF0000", "green": "0xFF008000", "blue": "0xFF0000FF", - "white": "0xFFFFFFFF", "black": "0xFF000000", "yellow": "0xFFFFFF00", - "orange": "0xFFFFA500", "purple": "0xFF800080", "pink": "0xFFFFC0CB", - "cyan": "0xFF00FFFF", "magenta": "0xFFFF00FF", "gray": "0xFF808080", - "grey": "0xFF808080", "silver": "0xFFC0C0C0", "gold": "0xFFFFD700", - "brown": "0xFFA52A2A", "lime": "0xFF00FF00", "navy": "0xFF000080", - "olive": "0xFF808000", "maroon": "0xFF800000", "teal": "0xFF008080", - "aqua": "0xFF00FFFF", "fuchsia": "0xFFFF00FF", "indigo": "0xFF4B0082", - "violet": "0xFFEE82EE", "crimson": "0xFFDC143C", "coral": "0xFFFF7F50", - "salmon": "0xFFFA8072", "khaki": "0xFFF0E68C", "plum": "0xFFDDA0DD", - "orchid": "0xFFDA70D6", "turquoise": "0xFF40E0D0", "tan": "0xFFD2B48C", - "beige": "0xFFF5F5DC", "ivory": "0xFFFFFFF0", "snow": "0xFFFFFAFA", - "transparent": "0x00000000" - } + # Context constants for process_value calls + static var CONTEXT_VARIABLE = 1 + static var CONTEXT_COLOR = 2 + static var CONTEXT_ANIMATION = 3 + static var CONTEXT_ARGUMENT = 4 + static var CONTEXT_PROPERTY = 5 + static var CONTEXT_REPEAT_COUNT = 6 + static var CONTEXT_ARRAY_ELEMENT = 7 + static var CONTEXT_TIME = 8 + static var CONTEXT_EXPRESSION = 9 + static var CONTEXT_GENERIC = 10 + static var CONTEXT_COLOR_PROVIDER = 11 + + # Helper class to track expression metadata for closure detection + #@ solidify:ExpressionResult,weak + static class ExpressionResult + var expr # The expression string + var has_functions # Boolean: true if contains function calls + var has_variables # Boolean: true if contains variable references + var has_properties # Boolean: true if contains property access + var has_computation # Boolean: true if contains operators (computation) + var return_type # String: result type matching symbol_table.be types + var instance_for_validation # Instance object for validation (nil by default) + + def init(expr, has_functions, has_variables, has_properties, has_computation, return_type, instance_for_validation) + self.expr = (expr != nil) ? expr : "" + self.has_functions = bool(has_functions) + self.has_variables = bool(has_variables) + self.has_properties = bool(has_properties) + self.has_computation = bool(has_computation) + self.return_type = (return_type != nil) ? return_type : "variable" + self.instance_for_validation = instance_for_validation # nil by default + end + + # Check if this expression needs closure wrapping + def needs_closure() + return self.has_computation && (self.has_functions || self.has_variables || self.has_properties) + end + + # Check if this expression needs function wrapping + def needs_function() + return (self.has_functions || self.has_variables || self.has_properties) + end + + # String representation for debugging + def tostring() + var instance_str = (self.instance_for_validation != nil) ? f"instance={classname(self.instance_for_validation)}" : "instance=nil" + return f"ExpressionResult(expr='{self.expr}', funcs={self.has_functions}, vars={self.has_variables}, props={self.has_properties}, comp={self.has_computation}, type={self.return_type}, {instance_str})" + end + + # Static method to combine expression results + # Takes an expression string and 1-2 ExpressionResult parameters (checks for nil) + static def combine(expr_str, result1, result2) + var has_functions = false + var has_variables = false + var has_properties = false + var has_computation = true # If we're combining, it means there's an operator + var return_type = "variable" # Default to variable for composite expressions + + # Combine flags from all non-nil results + if result1 != nil + has_functions = has_functions || result1.has_functions + has_variables = has_variables || result1.has_variables + has_properties = has_properties || result1.has_properties + has_computation = has_computation || result1.has_computation + end + + if result2 != nil + has_functions = has_functions || result2.has_functions + has_variables = has_variables || result2.has_variables + has_properties = has_properties || result2.has_properties + has_computation = has_computation || result2.has_computation + end + + # Compute the new return type + # For composite expressions (combining two results), typically revert to "variable" + # unless both operands are the same specific type + if result1 != nil && result2 != nil + # If both operands have the same specific type, preserve it + if result1.return_type == result2.return_type && result1.return_type != "variable" + return_type = result1.return_type + else + # Different types or one is variable -> result is variable + return_type = "variable" + end + elif result1 != nil + # Only one operand (unary operation) - preserve its type unless it's composite + return_type = has_computation ? "variable" : result1.return_type + elif result2 != nil + # Only one operand (unary operation) - preserve its type unless it's composite + return_type = has_computation ? "variable" : result2.return_type + end + + return _class(expr_str, has_functions, has_variables, has_properties, has_computation, return_type, nil) + end + + # Create a simple literal result (no dynamic elements) + static def literal(expr, return_type, instance_for_validation) + return _class(expr, false, false, false, false, return_type, instance_for_validation) + end + + # Create a function call result (comp=true) + static def function_call(expr, return_type, instance_for_validation) + return _class(expr, true, false, false, true, return_type, instance_for_validation) + end + + # Create a constructor call result (comp=false) + static def constructor_call(expr, return_type, instance_for_validation) + return _class(expr, true, false, false, false, return_type, instance_for_validation) + end + + # Create a variable reference result + static def variable_ref(expr, return_type, instance_for_validation) + return _class(expr, false, true, false, false, return_type, instance_for_validation) + end + + # Create a property access result + static def property_access(expr, return_type, instance_for_validation) + return _class(expr, false, false, true, false, return_type, instance_for_validation) + end + end def init(tokens) self.tokens = tokens != nil ? tokens : [] @@ -53,20 +142,72 @@ class SimpleDSLTranspiler self.output = [] self.errors = [] self.run_statements = [] - self.first_statement = true # Track if we're processing the first statement self.strip_initialized = false # Track if strip was initialized - self.sequence_names = {} # Track which names are sequences - self.symbol_table = {} # Track created objects: name -> instance + self.symbol_table = animation_dsl._symbol_table() # Enhanced symbol cache with built-in detection self.indent_level = 0 # Track current indentation level - self.template_definitions = {} # Track template definitions self.has_template_calls = false # Track if we have template calls + + # Note: Special functions like 'log' are now auto-discovered dynamically by the symbol table end + + + # Check if a function call has parameters by looking ahead + def _has_function_parameters() + # Save current position + var saved_pos = self.pos + + # Expect and consume the opening parenthesis + if self.current() == nil || self.current().type != animation_dsl.Token.LEFT_PAREN + return false + end + self.next() # consume '(' + + # Skip whitespace and check if we immediately hit the closing parenthesis + self.skip_whitespace_including_newlines() + var has_params = !(self.current() != nil && self.current().type == animation_dsl.Token.RIGHT_PAREN) + + # Restore position + self.pos = saved_pos + + return has_params + end + # Get current indentation string def get_indent() return " " * (self.indent_level + 1) # Base indentation is 2 spaces end + # Helper method to process simple value assignments with symbol table tracking + # Consolidates duplicate code from process_color and process_animation + def _process_simple_value_assignment(name, context, symbol_create_method) + # Check if this is a simple identifier reference before processing + var current_tok = self.current() + var is_simple_identifier = (current_tok != nil && current_tok.type == animation_dsl.Token.IDENTIFIER && + (self.peek() == nil || self.peek().type != animation_dsl.Token.LEFT_PAREN)) + var ref_name = is_simple_identifier ? current_tok.value : nil + + # Regular value assignment + var value_result = self.process_value(context) + var inline_comment = self.collect_inline_comment() + self.add(f"var {name}_ = {value_result.expr}{inline_comment}") + + # If this is an identifier reference to another object in our symbol table, + # add this name to the symbol table as well for compile-time validation + if is_simple_identifier && ref_name != nil && self.symbol_table.contains(ref_name) + var ref_entry = self.symbol_table.get(ref_name) + # Only copy actual instances, not just markers + if ref_entry != nil && ref_entry.instance != nil + symbol_create_method(name, ref_entry.instance) + else + symbol_create_method(name, nil) + end + else + # Add simple object to symbol table with a marker + symbol_create_method(name, nil) + end + end + # Helper method to process user function calls (user.function_name()) def _process_user_function_call(func_name) # Check if this is a function call (user.function_name()) @@ -85,6 +226,75 @@ class SimpleDSLTranspiler end end + # Helper method to determine the return type of a function call + def _determine_function_return_type(entry) + if entry != nil + if entry.type == animation_dsl._symbol_entry.TYPE_ANIMATION_CONSTRUCTOR || entry.type == animation_dsl._symbol_entry.TYPE_ANIMATION + return "animation" + elif entry.type == animation_dsl._symbol_entry.TYPE_COLOR_CONSTRUCTOR || entry.type == animation_dsl._symbol_entry.TYPE_COLOR + return "color" + elif entry.type == animation_dsl._symbol_entry.TYPE_VALUE_PROVIDER_CONSTRUCTOR || entry.type == animation_dsl._symbol_entry.TYPE_VALUE_PROVIDER + return "value_provider" + elif entry.type == animation_dsl._symbol_entry.TYPE_PALETTE_CONSTANT || entry.type == animation_dsl._symbol_entry.TYPE_PALETTE + return "palette" + elif entry.type == animation_dsl._symbol_entry.TYPE_MATH_FUNCTION + return "variable" # Math functions return numeric values + elif entry.type == animation_dsl._symbol_entry.TYPE_USER_FUNCTION || entry.type == animation_dsl._symbol_entry.TYPE_TEMPLATE + return "variable" # User functions and templates can return anything + end + end + return "variable" # Default fallback + end + + # Helper method to create symbol entry based on return type string + def _create_symbol_by_return_type(name, return_type, instance) + if return_type == "animation" + return self.symbol_table.create_animation(name, instance) + elif return_type == "color" + return self.symbol_table.create_color(name, instance) + elif return_type == "value_provider" + return self.symbol_table.create_value_provider(name, instance) + elif return_type == "palette" + return self.symbol_table.create_palette(name, instance) + elif return_type == "sequence" + return self.symbol_table.create_sequence(name) + elif return_type == "template" + return self.symbol_table.create_template(name, nil) + else # "variable" or any other type + return self.symbol_table.create_variable(name) + end + end + + # Helper method to determine the return type of a symbol reference + def _determine_symbol_return_type(symbol_name) + # Check if it's a named color first + if animation_dsl.is_color_name(symbol_name) + return "color" + end + + var entry = self.symbol_table.get(symbol_name) + if entry != nil + if entry.type == animation_dsl._symbol_entry.TYPE_ANIMATION || entry.type == animation_dsl._symbol_entry.TYPE_ANIMATION_CONSTRUCTOR + return "animation" + elif entry.type == animation_dsl._symbol_entry.TYPE_COLOR || entry.type == animation_dsl._symbol_entry.TYPE_COLOR_CONSTRUCTOR + return "color" + elif entry.type == animation_dsl._symbol_entry.TYPE_VALUE_PROVIDER || entry.type == animation_dsl._symbol_entry.TYPE_VALUE_PROVIDER_CONSTRUCTOR + return "value_provider" + elif entry.type == animation_dsl._symbol_entry.TYPE_PALETTE || entry.type == animation_dsl._symbol_entry.TYPE_PALETTE_CONSTANT + return "palette" + elif entry.type == animation_dsl._symbol_entry.TYPE_CONSTANT + return "variable" # Constants are numeric values + elif entry.type == animation_dsl._symbol_entry.TYPE_VARIABLE + return "variable" + elif entry.type == animation_dsl._symbol_entry.TYPE_SEQUENCE + return "sequence" + elif entry.type == animation_dsl._symbol_entry.TYPE_TEMPLATE + return "template" + end + end + return "variable" # Default fallback + end + # Main transpilation method - single pass def transpile() try @@ -151,12 +361,6 @@ class SimpleDSLTranspiler return end - # Check if this is the first non-comment, non-whitespace statement - var is_first_real_statement = self.first_statement - if tok.type == animation_dsl.Token.KEYWORD || tok.type == animation_dsl.Token.IDENTIFIER - self.first_statement = false - end - # Handle keywords if tok.type == animation_dsl.Token.KEYWORD if tok.value == "strip" @@ -164,6 +368,8 @@ class SimpleDSLTranspiler self.error("'strip' directive is temporarily disabled. Strip configuration is handled automatically.") self.skip_statement() return + elif tok.value == "template" + self.process_template() else # For any other statement, ensure strip is initialized if !self.strip_initialized @@ -180,15 +386,16 @@ class SimpleDSLTranspiler self.process_set() elif tok.value == "sequence" self.process_sequence() - elif tok.value == "template" - self.process_template() elif tok.value == "run" self.process_run() elif tok.value == "import" self.process_import() elif tok.value == "on" self.process_event_handler() + elif tok.value == "berry" + self.process_berry_code_block() else + self.error(f"Unknown keyword '{tok.value}'.") self.skip_statement() end end @@ -206,6 +413,7 @@ class SimpleDSLTranspiler self.process_property_assignment() end else + self.error(f"Unexpected token '{tok.value}'.") self.skip_statement() end end @@ -239,12 +447,26 @@ class SimpleDSLTranspiler self.next() end + # Get symbol table entry for this function + var entry = self.symbol_table.get(func_name) + # Check if this is a template call first - if self.template_definitions.contains(func_name) + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_TEMPLATE # This is a template call - treat like user function var args = self.process_function_arguments(false) var full_args = args != "" ? f"engine, {args}" : "engine" - self.add(f"{func_name}_template({full_args}){inline_comment}") + self.add(f"var {name}_ = {func_name}_template({full_args}){inline_comment}") + + # Register in symbol table as color instance + self.symbol_table.create_color(name, nil) + elif entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_USER_FUNCTION + # This is a user function call - use positional parameters with engine as first argument + var args = self.process_function_arguments(false) + var full_args = args != "" ? f"engine, {args}" : "engine" + self.add(f"var {name}_ = animation.get_user_function('{func_name}')({full_args}){inline_comment}") + + # Track this symbol in our symbol table as a color instance (user function result) + self.symbol_table.create_color(name, nil) else # Built-in functions use the new engine-first + named parameters pattern # Validate that the factory function exists at transpilation time @@ -260,36 +482,15 @@ class SimpleDSLTranspiler # Track this symbol in our symbol table var instance = self._create_instance_for_validation(func_name) if instance != nil - self.symbol_table[name] = instance + self.symbol_table.create_color(name, instance) end # Process named arguments with validation self._process_named_arguments_for_color_provider(f"{name}_", func_name) end else - # Check if this is a simple identifier reference before processing - var current_tok = self.current() - var is_simple_identifier = (current_tok != nil && current_tok.type == animation_dsl.Token.IDENTIFIER && - (self.peek() == nil || self.peek().type != animation_dsl.Token.LEFT_PAREN)) - var ref_name = is_simple_identifier ? current_tok.value : nil - - # Regular value assignment (simple color value) - var value = self.process_value("color") - var inline_comment = self.collect_inline_comment() - self.add(f"var {name}_ = {value}{inline_comment}") - - # If this is an identifier reference to another color provider in our symbol table, - # add this name to the symbol table as well for compile-time validation - if is_simple_identifier && ref_name != nil && self.symbol_table.contains(ref_name) - var ref_instance = self.symbol_table[ref_name] - # Only copy instances, not sequence markers - if type(ref_instance) != "string" - self.symbol_table[name] = ref_instance - end - else - # Add simple color to symbol table with a marker - self.symbol_table[name] = "color" - end + # Use helper method to process simple value assignment + self._process_simple_value_assignment(name, self.CONTEXT_COLOR, / name, instance -> self.symbol_table.create_color(name, instance)) end end @@ -444,6 +645,9 @@ class SimpleDSLTranspiler self.add(f"var {name}_ = bytes({palette_data}){inline_comment}") end + + # Register palette in symbol table + self.symbol_table.create_palette(name, nil) end # Process animation definition: animation pulse_red = pulse(color=red, period=2s) @@ -475,12 +679,26 @@ class SimpleDSLTranspiler self.next() end + # Get symbol table entry for this function + var entry = self.symbol_table.get(func_name) + # Check if this is a template call first - if self.template_definitions.contains(func_name) + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_TEMPLATE # This is a template call - treat like user function var args = self.process_function_arguments(false) var full_args = args != "" ? f"engine, {args}" : "engine" - self.add(f"{func_name}_template({full_args}){inline_comment}") + self.add(f"var {name}_ = {func_name}_template({full_args}){inline_comment}") + + # Register in symbol table as animation instance + self.symbol_table.create_animation(name, nil) + elif entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_USER_FUNCTION + # This is a user function call - use positional parameters with engine as first argument + var args = self.process_function_arguments(false) + var full_args = args != "" ? f"engine, {args}" : "engine" + self.add(f"var {name}_ = animation.get_user_function('{func_name}')({full_args}){inline_comment}") + + # Track this symbol in our symbol table as animation instance (user function result) + self.symbol_table.create_animation(name, nil) else # Built-in functions use the new engine-first + named parameters pattern # Validate that the factory function creates an animation instance at transpile time @@ -496,36 +714,15 @@ class SimpleDSLTranspiler # Track this symbol in our symbol table var instance = self._create_instance_for_validation(func_name) if instance != nil - self.symbol_table[name] = instance + self.symbol_table.create_animation(name, instance) end # Process named arguments with validation self._process_named_arguments_for_animation(f"{name}_", func_name) end else - # Check if this is a simple identifier reference before processing - var current_tok = self.current() - var is_simple_identifier = (current_tok != nil && current_tok.type == animation_dsl.Token.IDENTIFIER && - (self.peek() == nil || self.peek().type != animation_dsl.Token.LEFT_PAREN)) - var ref_name = is_simple_identifier ? current_tok.value : nil - - # Regular value assignment (identifier, color, etc.) - var value = self.process_value("animation") - var inline_comment = self.collect_inline_comment() - self.add(f"var {name}_ = {value}{inline_comment}") - - # If this is an identifier reference to another animation in our symbol table, - # add this name to the symbol table as well for compile-time validation - if is_simple_identifier && ref_name != nil && self.symbol_table.contains(ref_name) - var ref_instance = self.symbol_table[ref_name] - # Only copy instances, not sequence markers - if type(ref_instance) != "string" - self.symbol_table[name] = ref_instance - end - else - # Add simple animation to symbol table with a marker - self.symbol_table[name] = "animation" - end + # Use helper method to process simple value assignment + self._process_simple_value_assignment(name, self.CONTEXT_ANIMATION, / name, instance -> self.symbol_table.create_animation(name, instance)) end end @@ -555,30 +752,12 @@ class SimpleDSLTranspiler self.expect_assign() - # Check if this is a value provider function call - var is_value_provider = false - var tok = self.current() - if (tok.type == animation_dsl.Token.KEYWORD || tok.type == animation_dsl.Token.IDENTIFIER) && - self.peek() != nil && self.peek().type == animation_dsl.Token.LEFT_PAREN - - var func_name = tok.value - # Check if this is a value provider factory function - if self._validate_value_provider_factory_exists(func_name) - is_value_provider = true - end - end - - var value = self.process_value("variable") + var value_result = self.process_value(self.CONTEXT_VARIABLE) var inline_comment = self.collect_inline_comment() - self.add(f"var {name}_ = {value}{inline_comment}") - - # Add to symbol table with appropriate marker - if is_value_provider - self.symbol_table[name] = "value_provider" - else - # Use a string marker to indicate this is a variable (not an instance) - self.symbol_table[name] = "variable" - end + # Add to symbol table using appropriate method based on return type + var local_entry = self._create_symbol_by_return_type(name, value_result.return_type, value_result.instance_for_validation) + var local_ref = (local_entry != nil) ? local_entry.get_reference() : f"{name}_" + self.add(f"var {local_ref} = {value_result.expr}{inline_comment}") end # Process template definition: template name { param ... } @@ -664,18 +843,11 @@ class SimpleDSLTranspiler self.expect_right_brace() - # Store template definition - self.template_definitions[name] = { - 'params': params, - 'param_types': param_types, - 'body_tokens': body_tokens - } - # Generate Berry function for this template self.generate_template_function(name, params, param_types, body_tokens) - # Add template to symbol table as a special marker - self.symbol_table[name] = "template" + # Add template to symbol table with parameter types + self.symbol_table.create_template(name, param_types) end # Process sequence definition: sequence demo { ... } or sequence demo repeat N times { ... } @@ -689,12 +861,8 @@ class SimpleDSLTranspiler return end - # Track that this name is a sequence - self.sequence_names[name] = true - - # Also add to symbol table with a special marker for sequences - # We use a string marker since sequences don't have real instances - self.symbol_table[name] = "sequence" + # Track sequence in symbol table + self.symbol_table.create_sequence(name) # Check for second syntax: sequence name repeat N times { ... } or sequence name forever { ... } var is_repeat_syntax = false @@ -712,9 +880,9 @@ class SimpleDSLTranspiler self.next() # skip 'forever' repeat_count = "-1" # -1 means forever else - var count_expr = self.process_value("repeat_count") + var count_result = self.process_value(self.CONTEXT_REPEAT_COUNT) self.expect_keyword("times") - repeat_count = count_expr + repeat_count = count_result.expr end elif current_tok.value == "forever" # New syntax: sequence name forever { ... } (repeat is optional) @@ -725,9 +893,9 @@ class SimpleDSLTranspiler elif current_tok != nil && current_tok.type == animation_dsl.Token.NUMBER # New syntax: sequence name N times { ... } (repeat is optional) is_repeat_syntax = true - var count_expr = self.process_value("repeat_count") + var count_result = self.process_value(self.CONTEXT_REPEAT_COUNT) self.expect_keyword("times") - repeat_count = count_expr + repeat_count = count_result.expr end self.expect_left_brace() @@ -801,9 +969,9 @@ class SimpleDSLTranspiler self.next() # skip 'forever' repeat_count = "-1" # -1 means forever else - var count_expr = self.process_value("repeat_count") + var count_result = self.process_value(self.CONTEXT_REPEAT_COUNT) self.expect_keyword("times") - repeat_count = count_expr + repeat_count = count_result.expr end self.expect_left_brace() @@ -847,11 +1015,11 @@ class SimpleDSLTranspiler self.expect_dot() var property_name = self.expect_identifier() self.expect_assign() - var value = self.process_value("property") + var value_result = self.process_value(self.CONTEXT_PROPERTY) var inline_comment = self.collect_inline_comment() # Create assignment step using fluent style - var closure_code = f"def (engine) {object_name}_.{property_name} = {value} end" + var closure_code = f"def (engine) {object_name}_.{property_name} = {value_result.expr} end" self.add(f"{self.get_indent()}.push_closure_step({closure_code}){inline_comment}") end @@ -871,15 +1039,15 @@ class SimpleDSLTranspiler # Validate parameter if we have this object in our symbol table if self.symbol_table.contains(object_name) - var instance = self.symbol_table[object_name] + var entry = self.symbol_table.get(object_name) # Only validate parameters for actual instances, not sequence markers - if type(instance) != "string" - var class_name = classname(instance) + if entry != nil && entry.instance != nil + var class_name = classname(entry.instance) # Use the existing parameter validation logic - self._validate_single_parameter(class_name, property_name, instance) - else + self._validate_single_parameter(class_name, property_name, entry.instance) + elif entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_SEQUENCE # This is a sequence marker - sequences don't have properties self.error(f"Sequences like '{object_name}' do not have properties. Property assignments are only valid for animations and color providers.") return @@ -887,15 +1055,15 @@ class SimpleDSLTranspiler end self.expect_assign() - var value = self.process_value("property") + var value_result = self.process_value(self.CONTEXT_PROPERTY) var inline_comment = self.collect_inline_comment() # Generate assignment step with closure # The closure receives the engine as parameter and performs the assignment - var object_ref = self.resolve_symbol_reference(object_name) + var object_ref = self.symbol_table.get_reference(object_name) # Create closure that performs the assignment - var closure_code = f"def (engine) {object_ref}.{property_name} = {value} end" + var closure_code = f"def (engine) {object_ref}.{property_name} = {value_result.expr} end" self.add(f"{indent}{target_array}.push(animation.create_assign_step({closure_code})){inline_comment}") else # Not a property assignment, this shouldn't happen since we checked for dot @@ -931,7 +1099,7 @@ class SimpleDSLTranspiler var duration = "nil" if self.current() != nil && self.current().type == animation_dsl.Token.KEYWORD && self.current().value == "for" self.next() # skip 'for' - duration = str(self.process_time_value()) + duration = self.process_time_value() end var inline_comment = self.collect_inline_comment() @@ -953,7 +1121,7 @@ class SimpleDSLTranspiler # For sequence context - wrap in closure var closure_code = f"def (engine) log(f\"{args_str}\", 3) end" return f"{self.get_indent()}.push_closure_step({closure_code}){inline_comment}" - elif context_type == "expression" + elif context_type == self.CONTEXT_EXPRESSION # For expression context - return just the call (no inline comment) return f"log(f\"{args_str}\", 3)" else @@ -1074,7 +1242,8 @@ class SimpleDSLTranspiler end # This is a standalone function call - check if it's a template - if self.template_definitions.contains(object_name) + var entry = self.symbol_table.get(object_name) + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_TEMPLATE var args = self.process_function_arguments(false) var full_args = args != "" ? f"engine, {args}" : "engine" var inline_comment = self.collect_inline_comment() @@ -1096,29 +1265,29 @@ class SimpleDSLTranspiler # Validate parameter if we have this object in our symbol table if self.symbol_table.contains(object_name) - var instance = self.symbol_table[object_name] + var entry = self.symbol_table.get(object_name) # Only validate parameters for actual instances, not sequence markers - if type(instance) != "string" - var class_name = classname(instance) + if entry != nil && entry.instance != nil + var class_name = classname(entry.instance) # Use the existing parameter validation logic - self._validate_single_parameter(class_name, property_name, instance) - else + self._validate_single_parameter(class_name, property_name, entry.instance) + elif entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_SEQUENCE # This is a sequence marker - sequences don't have properties self.error(f"Sequences like '{object_name}' do not have properties. Property assignments are only valid for animations and color providers.") end end self.expect_assign() - var value = self.process_value("property") + var value_result = self.process_value(self.CONTEXT_PROPERTY) var inline_comment = self.collect_inline_comment() # Use consolidated symbol resolution for property assignments - var object_ref = self.resolve_symbol_reference(object_name) + var object_ref = self.symbol_table.get_reference(object_name) # Generate property assignment - self.add(f"{object_ref}.{property_name} = {value}{inline_comment}") + self.add(f"{object_ref}.{property_name} = {value_result.expr}{inline_comment}") else # Not a property assignment, skip this statement self.error(f"Expected property assignment for '{object_name}' but found no dot") @@ -1128,7 +1297,31 @@ class SimpleDSLTranspiler # Process any value - unified approach def process_value(context) - return self.process_additive_expression(context, true, false) # true = top-level, false = not raw mode + var result = self.process_additive_expression(context, true, false) # true = top-level, false = not raw mode + # Handle closure wrapping for top-level expressions (not in raw mode) only if there is computation needed + print(f"> process_value {context=} {result=}") + if ((context == self.CONTEXT_VARIABLE || context == self.CONTEXT_PROPERTY) && result.needs_closure()) + || ((context == self.CONTEXT_REPEAT_COUNT) && result.needs_function()) + # Special handling for repeat_count context - always create simple function for property access + if context == self.CONTEXT_REPEAT_COUNT + import string + if string.find(result.expr, ".") >= 0 + var closure_expr = self.create_simple_function_from_string(result.expr) + # Return new ExpressionResult with closure expression but preserve return type + return self.ExpressionResult.function_call(closure_expr) + else + # Return the original result unchanged + return result + end + else + var closure_expr = self.create_computation_closure_from_string(result.expr) + var entry_for_closure_value = self.symbol_table.get("closure_value") + return self.ExpressionResult.function_call(closure_expr, entry_for_closure_value.type, entry_for_closure_value.instance) + end + else + # Return the original result unchanged + return result + end end # Process palette color with strict validation @@ -1167,62 +1360,40 @@ class SimpleDSLTranspiler # Process additive expressions (+ and -) - unified method def process_additive_expression(context, is_top_level, raw_mode) - var left = self.process_multiplicative_expression(context, is_top_level, raw_mode) + var left_result = self.process_multiplicative_expression(context, is_top_level, raw_mode) while !self.at_end() var tok = self.current() if tok != nil && (tok.type == animation_dsl.Token.PLUS || tok.type == animation_dsl.Token.MINUS) var op = tok.value self.next() # consume operator - var right = self.process_multiplicative_expression(context, false, raw_mode) # sub-expressions are not top-level - left = f"{left} {op} {right}" + var right_result = self.process_multiplicative_expression(context, false, raw_mode) # sub-expressions are not top-level + left_result = self.ExpressionResult.combine(f"{left_result.expr} {op} {right_result.expr}", left_result, right_result) else break end end - # Skip closure wrapping in raw mode - if raw_mode - return left - end - - # Only create closures at the top level, but not for anonymous functions - if is_top_level && !self.is_anonymous_function(left) - # Special handling for repeat_count context - always create simple function for property access - if context == "repeat_count" - import string - if self.is_computed_expression_string(left) || string.find(left, ".") >= 0 - return self.create_simple_function_from_string(left) - else - return left - end - elif self.is_computed_expression_string(left) - return self.create_computation_closure_from_string(left) - else - return left - end - else - return left - end + return left_result end # Process multiplicative expressions (* and /) - unified method def process_multiplicative_expression(context, is_top_level, raw_mode) - var left = self.process_unary_expression(context, is_top_level, raw_mode) + var left_result = self.process_unary_expression(context, is_top_level, raw_mode) while !self.at_end() var tok = self.current() if tok != nil && (tok.type == animation_dsl.Token.MULTIPLY || tok.type == animation_dsl.Token.DIVIDE) var op = tok.value self.next() # consume operator - var right = self.process_unary_expression(context, false, raw_mode) # sub-expressions are not top-level - left = f"{left} {op} {right}" + var right_result = self.process_unary_expression(context, false, raw_mode) # sub-expressions are not top-level + left_result = self.ExpressionResult.combine(f"{left_result.expr} {op} {right_result.expr}", left_result, right_result) else break end end - return left + return left_result end # Process unary expressions (- and +) - unified method @@ -1230,14 +1401,14 @@ class SimpleDSLTranspiler var tok = self.current() if tok == nil self.error("Expected value") - return "nil" + return self.ExpressionResult.literal("nil") end # Handle unary minus for negative numbers if tok.type == animation_dsl.Token.MINUS self.next() # consume the minus - var expr = self.process_unary_expression(context, false, raw_mode) # sub-expressions are not top-level - return f"(-{expr})" + var expr_result = self.process_unary_expression(context, false, raw_mode) # sub-expressions are not top-level + return self.ExpressionResult(f"(-{expr_result.expr})", expr_result.has_functions, expr_result.has_variables, expr_result.has_properties, true) end # Handle unary plus (optional) @@ -1245,7 +1416,6 @@ class SimpleDSLTranspiler self.next() # consume the plus return self.process_unary_expression(context, false, raw_mode) # sub-expressions are not top-level end - return self.process_primary_expression(context, is_top_level, raw_mode) end @@ -1254,169 +1424,198 @@ class SimpleDSLTranspiler var tok = self.current() if tok == nil self.error("Expected value") - return "nil" + return self.ExpressionResult.literal("nil") end # Parenthesized expression if tok.type == animation_dsl.Token.LEFT_PAREN self.next() # consume '(' - var expr = self.process_additive_expression(context, false, raw_mode) # parenthesized expressions are not top-level + var expr_result = self.process_additive_expression(context, false, raw_mode) # parenthesized expressions are not top-level self.expect_right_paren() - return f"({expr})" - end - - # Function call: identifier or easing keyword followed by '(' - if (tok.type == animation_dsl.Token.KEYWORD || tok.type == animation_dsl.Token.IDENTIFIER) && - self.peek() != nil && self.peek().type == animation_dsl.Token.LEFT_PAREN - - var func_name = tok.value - - # In raw mode, handle function calls differently - if raw_mode - self.next() - - # Check if this is a mathematical function - if self.is_math_method(func_name) - var args = self.process_function_arguments(true) - return f"animation._math.{func_name}({args})" - end - - # Special case for log function in expressions - if func_name == "log" - var args = self.process_function_arguments(true) - return self.process_log_call(args, "expression", "") - end - - # Check if this is a template call - if self.template_definitions.contains(func_name) - var args = self.process_function_arguments(true) - var full_args = args != "" ? f"engine, {args}" : "engine" - return f"{func_name}_template({full_args})" - end - - # For other functions, this shouldn't happen in expression context - self.error(f"Function '{func_name}' not supported in expression context") - return "nil" - else - # Regular mode - existing logic - # Check if this is a simple function call first - if self._is_simple_function_call(func_name) - return self.process_function_call(context) - # Check if this is a nested function call or a variable assignment with named parameters - elif context == "argument" || context == "property" || context == "variable" - return self.process_nested_function_call() - else - return self.process_function_call(context) - end - end + return self.ExpressionResult(f"({expr_result.expr})", expr_result.has_functions, expr_result.has_variables, expr_result.has_properties, true) end # Color value if tok.type == animation_dsl.Token.COLOR self.next() - return self.convert_color(tok.value) + return self.ExpressionResult.literal(self.convert_color(tok.value), "color") end # Time value if tok.type == animation_dsl.Token.TIME - return str(self.process_time_value()) + return self.ExpressionResult.literal(self.process_time_value()) end # Percentage value if tok.type == animation_dsl.Token.PERCENTAGE - return str(self.process_percentage_value()) + return self.ExpressionResult.literal(str(self.process_percentage_value())) end # Number value if tok.type == animation_dsl.Token.NUMBER var value = tok.value self.next() - return value - end - - # String value - if tok.type == animation_dsl.Token.STRING - var value = tok.value - self.next() - return f'"{value}"' - end - - # Array literal (not supported in raw mode) - if tok.type == animation_dsl.Token.LEFT_BRACKET && !raw_mode - return self.process_array_literal() - end - - # Identifier - could be color, animation, variable, or object property reference - if tok.type == animation_dsl.Token.IDENTIFIER - var name = tok.value - self.next() - - # Check if this is an object property reference (identifier.property) - if self.current() != nil && self.current().type == animation_dsl.Token.DOT - self.next() # consume '.' - var property_name = self.expect_identifier() - - # Special handling for user.function_name() calls - if name == "user" - return self._process_user_function_call(property_name) - end - - # Validate that the property exists on the referenced object (skip in raw mode) - if !raw_mode && self.symbol_table.contains(name) - var instance = self.symbol_table[name] - # Only validate parameters for actual instances, not sequence markers - if type(instance) != "string" - var class_name = classname(instance) - self._validate_single_parameter(class_name, property_name, instance) - else - # This is a sequence marker - sequences don't have properties - self.error(f"Sequences like '{name}' do not have properties. Property references are only valid for animations and color providers.") - return "nil" - end - end - - # Use consolidated symbol resolution for the object reference - var object_ref = self.resolve_symbol_reference(name) - - # In raw mode or repeat_count context, generate simple property access - if raw_mode || context == "repeat_count" - return f"{object_ref}.{property_name}" - else - # Return a closure expression that will be wrapped by the caller if needed - return f"animation.resolve({object_ref}, '{property_name}')" - end - end - - # Use consolidated symbol resolution - return self.resolve_symbol_reference(name) + return self.ExpressionResult.literal(value) end # Boolean keywords if tok.type == animation_dsl.Token.KEYWORD && (tok.value == "true" || tok.value == "false") var value = tok.value self.next() - return value + return self.ExpressionResult.literal(value) end - # Handle keywords that should be treated as identifiers (not sure this actually happens) + # String value + if tok.type == animation_dsl.Token.STRING + var value = tok.value + self.next() + return self.ExpressionResult.literal(f'"{value}"') + end + + # Array literal (not supported in raw mode) + if tok.type == animation_dsl.Token.LEFT_BRACKET && !raw_mode + var result = self.process_array_literal() + return self.ExpressionResult.literal(result) + end + + # Anthing that looks like a function call + if (tok.type == animation_dsl.Token.KEYWORD || tok.type == animation_dsl.Token.IDENTIFIER) && + self.peek() != nil && self.peek().type == animation_dsl.Token.LEFT_PAREN + + var func_name = tok.value + var entry = self.symbol_table.get(func_name) + + # Check if the identifier exists + if entry == nil + self.error(f"Unknown function or identifier '{func_name}'. Make sure it's defined before use.") + self.skip_statement() + return self.ExpressionResult.literal("nil") + end + + # Special handling for user fonction function_name() calls (without 'user.' prefix) + if entry.is_user_function() + self.next() + var result = self._process_user_function_call(func_name) + return self.ExpressionResult.function_call(result) + end + + # Check for dangerous function calls (constructors that create new instances) + # Only block them in computed expressions (when not top-level) + if !is_top_level && entry.is_dangerous_call() + self.error(f"Function '{func_name}' cannot be used in computed expressions. This creates a new instance at each evaluation. Use either:\n set var_name = {func_name}() # Single function call\n set computed = (existing_var + 1) / 2 # Computation with existing values") + self.skip_statement() + return self.ExpressionResult.literal("nil") + end + + # In raw mode, handle function calls differently + if raw_mode + self.next() + + # Check if this is a mathematical function + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_MATH_FUNCTION + var args = self.process_function_arguments(true) + var result = self.ExpressionResult.function_call(f"{entry.get_reference()}({args})") + end + + # Check if this is a template call + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_TEMPLATE + var args = self.process_function_arguments(true) + var full_args = args != "" ? f"engine, {args}" : "engine" + return self.ExpressionResult.function_call(f"{func_name}_template({full_args})") + end + + # For other functions, this shouldn't happen in expression context + self.error(f"Function '{func_name}' not supported in expression context") + return self.ExpressionResult.literal("nil") + else + # Regular mode - function calls are marked as having functions + # Check if this is a simple function call first + if !entry.takes_named_args() + var result = self.process_function_call(context) + var return_type = self._determine_function_return_type(entry) + return self.ExpressionResult.function_call(result, return_type, entry.instance) + # Check if this is a nested function call or a variable assignment with named parameters + elif context == self.CONTEXT_ARGUMENT || context == self.CONTEXT_PROPERTY || context == self.CONTEXT_VARIABLE + var result = self.process_nested_function_call() + var return_type = self._determine_function_return_type(entry) + return self.ExpressionResult.constructor_call(result, return_type, entry.instance) + else + var result = self.process_function_call(context) + var return_type = self._determine_function_return_type(entry) + return self.ExpressionResult.constructor_call(result, return_type, entry.instance) + end + end + end + + # Identifier - could be color, animation, variable, or object property reference + if tok.type == animation_dsl.Token.IDENTIFIER + var name = tok.value + var entry = self.symbol_table.get(name) + + if entry == nil + self.error(f"Unknown identifier '{name}'. Make sure it's defined before use.") + self.skip_statement() + return self.ExpressionResult.literal("nil") + end + self.next() + + # Check if this is an object property reference (identifier.property) + if self.current() != nil && self.current().type == animation_dsl.Token.DOT + self.next() # consume '.' + var property_name = self.expect_identifier() + + # Property access - mark as having properties + var property_expr = f"{name}.{property_name}" + + # Validate that the property exists on the referenced object (skip in raw mode) + if !raw_mode && self.symbol_table.contains(name) + # Only validate parameters for actual instances, not sequence markers + if entry != nil && entry.instance != nil + var class_name = classname(entry.instance) + self._validate_single_parameter(class_name, property_name, entry.instance) + elif entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_SEQUENCE + # This is a sequence marker - sequences don't have properties + self.error(f"Sequences like '{name}' do not have properties. Property references are only valid for animations and color providers.") + return self.ExpressionResult.literal("nil") + end + end + + # Use consolidated symbol resolution for the object reference + var object_ref = self.symbol_table.get_reference(name) + + # In raw mode or repeat_count context, generate simple property access + if raw_mode || context == self.CONTEXT_REPEAT_COUNT + return self.ExpressionResult.property_access(f"{object_ref}.{property_name}", "variable") + else + # Return a closure expression that will be wrapped by the caller if needed + return self.ExpressionResult.property_access(f"animation.resolve({object_ref}, '{property_name}')", "variable") + end + end + + # Regular identifier - check if it's a variable reference + var ref = self.symbol_table.get_reference(name) + if self.symbol_table.symbol_exists(name) + var return_type = self._determine_symbol_return_type(name) + return self.ExpressionResult.variable_ref(ref, return_type) + else + self.error(f"Unknown identifier '{name}'. Make sure it's defined before use.") + self.skip_statement() + return self.ExpressionResult.literal("nil") + end + end + + # Handle keywords that should be treated as identifiers (not sure this actually happens), 'run' if tok.type == animation_dsl.Token.KEYWORD var name = tok.value self.next() - return f"animation.{name}" + return self.ExpressionResult.literal(f"animation.{name}") end self.error(f"Unexpected value: {tok.value}") - self.next() - return "nil" + self.skip_statement() + return self.ExpressionResult.literal("nil") end - # Check if an expression is already an anonymous function - def is_anonymous_function(expr_str) - import string - # Check if the expression starts with "(def " and ends with ")(engine)" - return string.find(expr_str, "(def ") == 0 && string.find(expr_str, ")(engine)") >= 0 - end - # Check if an expression string contains computed values that need a closure def is_computed_expression_string(expr_str) import string @@ -1446,7 +1645,7 @@ class SimpleDSLTranspiler var func_name = expr_str[func_start..paren_pos-1] # Only mark as needing closure if it's NOT a simple function - if !self._is_simple_function_call(func_name) + if self._is_named_arg_constructor(func_name) has_function_calls = true end end @@ -1491,31 +1690,6 @@ class SimpleDSLTranspiler return f"animation.create_closure_value(engine, {closure_code})" end - # Create a closure for computed expressions (legacy method) - def create_computation_closure(left, op, right) - import string - - # Create a closure value provider that wraps the computation - # This replaces the old DSL computed value wrapper approach - - # Transform operands to handle ValueProvider instances - var left_expr = self.transform_operand_for_closure(left) - var right_expr = self.transform_operand_for_closure(right) - - # Clean up spacing in the expression - remove extra spaces - while string.find(left_expr, " ") >= 0 - left_expr = string.replace(left_expr, " ", " ") - end - while string.find(right_expr, " ") >= 0 - right_expr = string.replace(right_expr, " ", " ") - end - - var closure_code = f"def (engine) return {left_expr} {op} {right_expr} end" - - # Return a closure value provider instance - return f"animation.create_closure_value(engine, {closure_code})" - end - # Create a simple function for repeat counts (no closure wrapper) def create_simple_function_from_string(expr_str) # For repeat counts, create a simple function that takes engine and returns the value @@ -1526,41 +1700,35 @@ class SimpleDSLTranspiler # Transform a complete expression for use in a closure, handling ValueProvider instances def transform_expression_for_closure(expr_str) import string - + print(f"+++ transform_expression_for_closure '{expr_str}'") var result = expr_str var pos = 0 - # First pass: Replace value provider function calls with resolve calls - # Handle functions like animation.strip_length(engine) that return value providers - var value_provider_functions = ["strip_length"] + # First pass: Check for and reject dangerous function calls in computed expressions + # This prevents dangerous patterns where functions that create new instances are called + # inside closures, which would create a new instance at each closure evaluation - for func_name : value_provider_functions - var pattern = f"animation.{func_name}(engine)" - var replacement = f"animation.resolve(animation.{func_name}(engine))" - - # Replace all occurrences of this pattern - pos = 0 - while pos < size(result) - var found_pos = string.find(result, pattern, pos) - if found_pos < 0 - break - end - - # Check if it's already wrapped in animation.resolve() - var check_start = found_pos >= 18 ? found_pos - 18 : 0 - var prefix = result[check_start..found_pos-1] - if string.find(prefix, "animation.resolve(") >= 0 - # Already wrapped, skip this occurrence - pos = found_pos + size(pattern) - continue - end - - # Replace the pattern - var before = found_pos > 0 ? result[0..found_pos-1] : "" - var after = found_pos + size(pattern) < size(result) ? result[found_pos + size(pattern)..] : "" - result = before + replacement + after - pos = found_pos + size(replacement) + # Look for animation.function_name(engine) patterns and check if they're dangerous + var search_pos = 0 + while true + var anim_pos = string.find(result, "animation.", search_pos) + if anim_pos < 0 + break end + + # Find the function name after "animation." + var func_start = anim_pos + 10 # length of "animation." + var func_end = func_start + while func_end < size(result) && (self.is_identifier_char(result[func_end]) || result[func_end] == '_') + func_end += 1 + end + + if func_end > func_start && func_end + 8 < size(result) && result[func_end..func_end+7] == "(engine)" + var func_name = result[func_start..func_end-1] + + end + + search_pos = anim_pos + 1 end # Second pass: Replace all user variables (ending with _) with resolve calls @@ -1615,6 +1783,7 @@ class SimpleDSLTranspiler end end + print(f"=== transform_expression_for_closure '{result}'") return result end @@ -1623,50 +1792,6 @@ class SimpleDSLTranspiler return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || ch == '_' end - # Helper method to check if a function name is a mathematical function - def is_math_method(func_name) - try - import introspect - # Check if the function is registered in the animation._math map - return introspect.contains(animation._math, func_name) - except .. as e, msg - # If _math map doesn't exist or access fails, return false to be safe - return false - end - end - - # Transform an operand for use in a closure, handling ValueProvider instances - def transform_operand_for_closure(operand) - import string - - # If the operand is already a closure (contains create_closure_value), extract its inner expression - if string.find(operand, "animation.create_closure_value") >= 0 - # Extract the inner expression from the closure - var start_pos = string.find(operand, "return (") + 8 - var end_pos = size(operand) - 5 # Remove " end)" - var inner_expr = operand[start_pos..end_pos] - # Clean up any extra spaces - while string.find(inner_expr, " ") >= 0 - inner_expr = string.replace(inner_expr, " ", " ") - end - return inner_expr - end - - # Check if this is a simple user variable (identifier ending with _ and no operators/parentheses) - var has_underscore = string.find(operand, "_") >= 0 - var has_operators = string.find(operand, " ") >= 0 # Simple check for operators (they have spaces) - var has_paren = string.find(operand, "(") >= 0 - var has_animation_prefix = string.find(operand, "animation.") >= 0 - - if has_underscore && !has_operators && !has_paren && !has_animation_prefix - # This looks like a simple user variable that might be a ValueProvider - return f"animation.resolve({operand})" - else - # For other expressions (literals, animation module calls, complex expressions), use as-is - return operand - end - end - # Process function call (legacy - for non-animation contexts) def process_function_call(context) var tok = self.current() @@ -1682,23 +1807,24 @@ class SimpleDSLTranspiler end # Check if this is a mathematical function - handle with positional arguments - if self.is_math_method(func_name) + var entry = self.symbol_table.get(func_name) + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_MATH_FUNCTION # Mathematical functions use positional arguments, not named parameters var args = self.process_function_arguments(false) - return f"{func_name}({args})" # Return as-is for transformation in closure + return f"{entry.get_reference()}({args})" end # Special case for log function - call global log function directly if func_name == "log" var args = self.process_function_arguments(false) # Use unified log processing (return expression for use in contexts) - return self.process_log_call(args, "expression", "") + return self.process_log_call(args, self.CONTEXT_EXPRESSION, "") end var args = self.process_function_arguments(false) # Check if it's a template call first - if self.template_definitions.contains(func_name) + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_TEMPLATE # This is a template call - treat like user function var full_args = args != "" ? f"engine, {args}" : "engine" return f"{func_name}_template({full_args})" @@ -1713,16 +1839,18 @@ class SimpleDSLTranspiler end # Process time value - simplified + # + # @Return string def process_time_value() var tok = self.current() if tok != nil && tok.type == animation_dsl.Token.TIME var time_str = tok.value self.next() - return self.convert_time_to_ms(time_str) + return str(self.convert_time_to_ms(time_str)) elif tok != nil && tok.type == animation_dsl.Token.NUMBER var num = tok.value self.next() - return int(real(num)) * 1000 # assume seconds + return str(int(real(num)) * 1000) # assume seconds elif tok != nil && tok.type == animation_dsl.Token.IDENTIFIER # Handle variable references for time values var var_name = tok.value @@ -1730,11 +1858,11 @@ class SimpleDSLTranspiler # Validate that the variable exists before processing self._validate_object_reference(var_name, "duration") - var expr = self.process_primary_expression("time", true, false) - return expr + var result = self.process_primary_expression(self.CONTEXT_TIME, true, false) + return result.expr else self.error("Expected time value") - return 1000 + return "1000" end end @@ -1859,10 +1987,12 @@ class SimpleDSLTranspiler var arg if raw_mode # For expression contexts - use raw mode to avoid closure wrapping - arg = self.process_additive_expression("argument", true, true) # raw_mode = true + var arg_result = self.process_additive_expression(self.CONTEXT_ARGUMENT, true, true) # raw_mode = true + arg = arg_result.expr # Extract the expression string else # For statement contexts - use normal processing with closure wrapping - arg = self.process_value("argument") + var arg_result = self.process_value(self.CONTEXT_ARGUMENT) + arg = arg_result.expr end args.push(arg) @@ -1889,10 +2019,6 @@ class SimpleDSLTranspiler end return result end - - - - # Process nested function call (generates temporary variable or raw expression) def process_nested_function_call() @@ -1907,55 +2033,73 @@ class SimpleDSLTranspiler self.error("Expected function name") return "nil" end + var entry = self.symbol_table.get(func_name) # Check if this is a mathematical function - handle with positional arguments - if self.is_math_method(func_name) + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_MATH_FUNCTION # Mathematical functions use positional arguments, not named parameters var args = self.process_function_arguments(true) - return f"animation._math.{func_name}({args})" # Math functions are under _math namespace + return f"{entry.get_reference()}({args})" # Math functions are under _math namespace end # Special case for log function in nested calls if func_name == "log" var args = self.process_function_arguments(true) # Use unified log processing - return self.process_log_call(args, "expression", "") + return self.process_log_call(args, self.CONTEXT_EXPRESSION, "") end # Check if this is a template call - if self.template_definitions.contains(func_name) + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_TEMPLATE # This is a template call - treat like user function var args = self.process_function_arguments(true) var full_args = args != "" ? f"engine, {args}" : "engine" return f"{func_name}_template({full_args})" else - # Check if this is a simple function call without named parameters - if self._is_simple_function_call(func_name) - # For simple functions like strip_length(), do direct assignment - var args = self.process_function_arguments(false) - if args != "" - return f"animation.{func_name}(engine, {args})" - else - return f"animation.{func_name}(engine)" + # TODO not sure we can go that far with a symbol not in animation + if !self._validate_animation_factory_exists(func_name) + self.error(f"Animation factory function '{func_name}' does not exist. Check the function name and ensure it's available in the animation module.") + self.skip_function_arguments() # Skip the arguments to avoid parsing errors + return "nil" + end + + self.expect_left_paren() + + # lines contains the attriute assignments to put in the closure + var lines = [] + + # Use the core processing logic with a callback for anonymous function assignments + var assignment_callback = def (param_name, param_value, inline_comment) + lines.push(f" provider.{param_name} = {param_value}{inline_comment}") + end + + self._process_parameters_core(func_name, "generic", assignment_callback) + self.expect_right_paren() + + if size(lines) > 0 + # Join all lines into a single expression + var result = "" + for i : 0..size(lines)-1 + if i > 0 + result += "\n" + end + result += lines[i] end + + return f"(def (engine)\n" + " var provider = animation.{func_name}(engine)\n" + "{result}\n" + " return provider\n" + "end)(engine)" else - # Built-in functions use the new engine-first + named parameters pattern - # Validate that the factory function exists at transpilation time - if !self._validate_animation_factory_exists(func_name) - self.error(f"Animation factory function '{func_name}' does not exist. Check the function name and ensure it's available in the animation module.") - self.skip_function_arguments() # Skip the arguments to avoid parsing errors - return "nil" - end - - # Generate anonymous function that creates and configures the provider - return self._generate_anonymous_function_call(func_name) + return f"animation.{func_name}(engine)" end end end # Process named arguments for a variable (new simpler pattern with parameter validation) def process_named_arguments_for_variable(var_name) - self._process_named_arguments_unified(var_name, "", "variable") + self._process_named_arguments_unified(var_name, "", self.CONTEXT_VARIABLE) end def expect_assign() @@ -2093,8 +2237,8 @@ class SimpleDSLTranspiler while !self.at_end() && !self.check_right_bracket() # Process array element - var item = self.process_value("array_element") - items.push(item) + var item_result = self.process_value(self.CONTEXT_ARRAY_ELEMENT) + items.push(item_result.expr) if self.current() != nil && self.current().type == animation_dsl.Token.COMMA self.next() # skip comma @@ -2191,17 +2335,25 @@ class SimpleDSLTranspiler # Get the ARGB value for a named color # This should match the colors supported by is_color_name() def get_named_color_value(color_name) - return animation_dsl.SimpleDSLTranspiler.named_colors.find(color_name, "0xFFFFFFFF") + return self.symbol_table.get_reference(color_name) end # Validate that a user-defined name is not a predefined color or DSL keyword def validate_user_name(name, definition_type) - # Check if it's a predefined color name - for color : animation_dsl.Token.color_names - if name == color - self.error(f"Cannot redefine predefined color '{name}'. Use a different name like '{name}_custom' or 'my_{name}'") - return false - end + # Check if the name already exists in the symbol table + var entry = self.symbol_table.get(name) + if entry == nil + # Name is available - continue with other checks + elif entry.is_builtin && entry.type == animation_dsl._symbol_entry.TYPE_COLOR + self.error(f"Cannot redefine predefined color '{name}'. Use a different name like '{name}_custom' or 'my_{name}'") + return false + elif entry.is_builtin + self.error(f"Cannot redefine built-in symbol '{name}' (type: {entry.type}). Use a different name like '{name}_custom' or 'my_{name}'") + return false + else + # User-defined symbol already exists - this is a redefinition error + self.error(f"Symbol '{name}' is already defined as {entry.type}. Cannot redefine as {definition_type}.") + return false end # Check if it's a DSL statement keyword @@ -2288,6 +2440,160 @@ class SimpleDSLTranspiler return size(self.errors) > 0 end + def get_symbol_table_report() + import string + + var report = "## Symbol Table\n\n" + + var symbols = self.symbol_table.list_symbols() + if size(symbols) == 0 + report += "No symbols defined\n\n" + return report + end + + # Helper function to calculate display width (accounting for Unicode characters) + def display_width(s) + # Common Unicode symbols and their display widths + var unicode_widths = { + "✓": 1, # Check mark + "⚠️": 2, # Warning sign (emoji) - actually displays as 2 characters wide + "⚠": 1 # Warning sign (text) + } + + var width = 0 + var i = 0 + while i < size(s) + var found_unicode = false + # Check for known Unicode symbols + for symbol : unicode_widths.keys() + if i + size(symbol) <= size(s) && s[i..i+size(symbol)-1] == symbol + width += unicode_widths[symbol] + i += size(symbol) + found_unicode = true + break + end + end + + if !found_unicode + # Regular ASCII character + width += 1 + i += 1 + end + end + + return width + end + + # Collect all symbol data first to calculate column widths + var symbol_data = [] + var max_name_len = 6 # "Symbol" + var max_type_len = 4 # "Type" + var max_builtin_len = 7 # "Builtin" + var max_dangerous_len = 9 # "Dangerous" + var max_takes_args_len = 10 # "Takes Args" + + for symbol_info : symbols + var parts = string.split(symbol_info, ": ") + if size(parts) >= 2 + var name = parts[0] + var typ = parts[1] + var entry = self.symbol_table.get(name) + + # Filter out built-in colors to reduce noise + if entry != nil + var builtin = entry.is_builtin ? "✓" : "" + var dangerous = entry.is_dangerous_call() ? "⚠️" : "" + var takes_args = entry.takes_args ? " ✓ " : "" + + # Calculate max widths using display width + var name_with_backticks = f"`{name}`" + if display_width(name_with_backticks) > max_name_len + max_name_len = display_width(name_with_backticks) + end + if display_width(typ) > max_type_len + max_type_len = display_width(typ) + end + if display_width(builtin) > max_builtin_len + max_builtin_len = display_width(builtin) + end + if display_width(dangerous) > max_dangerous_len + max_dangerous_len = display_width(dangerous) + end + if display_width(takes_args) > max_takes_args_len + max_takes_args_len = display_width(takes_args) + end + + symbol_data.push({ + "name": name_with_backticks, + "typ": typ, + "builtin": builtin, + "dangerous": dangerous, + "takes_args": takes_args + }) + end + end + end + + # Sort symbol_data by name (case-insensitive) + def _sort_symbol_data() + var n = size(symbol_data) + if n <= 1 + return + end + + # Insertion sort for small lists + var i = 1 + while i < n + var key = symbol_data[i] + var key_name = key['name'] + var j = i + while j > 0 && symbol_data[j-1]['name'] > key_name + symbol_data[j] = symbol_data[j-1] + j -= 1 + end + symbol_data[j] = key + i += 1 + end + end + + _sort_symbol_data() + + # Helper function to pad strings to specific width (using display width) + def pad_string(s, width) + var padding = width - display_width(s) + if padding <= 0 + return s + end + return s + (" " * padding) + end + + def center_string(s, width) + var padding = width - display_width(s) + if padding <= 0 + return s + end + var left_pad = padding / 2 + var right_pad = padding - left_pad + return (" " * left_pad) + s + (" " * right_pad) + end + + # Create properly formatted table header + var header = f"| {pad_string('Symbol', max_name_len)} | {pad_string('Type', max_type_len)} | {pad_string('Builtin', max_builtin_len)} | {pad_string('Dangerous', max_dangerous_len)} | {pad_string('Takes Args', max_takes_args_len)} |\n" + var separator = f"|{'-' * (max_name_len + 2)}|{'-' * (max_type_len + 2)}|{'-' * (max_builtin_len + 2)}|{'-' * (max_dangerous_len + 2)}|{'-' * (max_takes_args_len + 2)}|\n" + + report += header + report += separator + + # Add formatted rows + for data : symbol_data + var row = f"| {pad_string(data['name'], max_name_len)} | {pad_string(data['typ'], max_type_len)} | {center_string(data['builtin'], max_builtin_len)} | {center_string(data['dangerous'], max_dangerous_len)} | {center_string(data['takes_args'], max_takes_args_len)} |\n" + report += row + end + + report += "\n" + return report + end + def get_error_report() if !self.has_errors() return "No compilation errors" @@ -2353,8 +2659,8 @@ class SimpleDSLTranspiler end else # Assume it's an animation function call or reference - var action = self.process_value("animation") - self.add(f" var temp_anim = {action}") + var action_result = self.process_value(self.CONTEXT_ANIMATION) + self.add(f" var temp_anim = {action_result.expr}") self.add(f" engine.add(temp_anim)") end end @@ -2377,8 +2683,8 @@ class SimpleDSLTranspiler var time_ms = self.process_time_value() params += f"\"interval\": {time_ms}" else - var value = self.process_value("event_param") - params += f"\"value\": {value}" + var value_result = self.process_value("event_param") + params += f"\"value\": {value_result.expr}" end end @@ -2387,6 +2693,36 @@ class SimpleDSLTranspiler return params end + # Process berry code block: berry """""" or berry '''''' + def process_berry_code_block() + self.next() # skip 'berry' + + # Expect a string token containing the berry code + var tok = self.current() + if tok == nil || tok.type != animation_dsl.Token.STRING + self.error("Expected string literal after 'berry' keyword. Use berry \"\"\"\"\"\" or berry ''''''") + self.skip_statement() + return + end + + var berry_code = tok.value + self.next() # consume string token + + var inline_comment = self.collect_inline_comment() + + # Add the berry code verbatim to the output + self.add(f"# Berry code block{inline_comment}") + + # Split the berry code into lines and add each line + import string + var lines = string.split(berry_code, '\n') + for line : lines + self.add(line) + end + + self.add("# End berry code block") + end + # Generate default strip initialization using Tasmota configuration def generate_default_strip_initialization() if self.strip_initialized @@ -2414,12 +2750,12 @@ class SimpleDSLTranspiler # Create a new transpiler instance for the template body var template_transpiler = animation_dsl.SimpleDSLTranspiler(body_tokens) - template_transpiler.symbol_table = {} # Fresh symbol table for template + template_transpiler.symbol_table = animation_dsl._symbol_table() # Fresh symbol table for template template_transpiler.strip_initialized = true # Templates assume engine exists # Add parameters to template's symbol table for param : params - template_transpiler.symbol_table[param] = "parameter" + template_transpiler.symbol_table.create_variable(param) # Parameters are treated as variables end # Transpile the template body @@ -2453,25 +2789,14 @@ class SimpleDSLTranspiler # @param var_name: string - Variable name to assign parameters to # @param func_name: string - Animation function name for validation def _process_named_arguments_for_animation(var_name, func_name) - self._process_named_arguments_unified(var_name, func_name, "animation") + self._process_named_arguments_unified(var_name, func_name, self.CONTEXT_ANIMATION) end - # Create instance for parameter validation at transpile time + # Create instance for parameter validation at transpile time - simplified using symbol_table def _create_instance_for_validation(func_name) - try - var mock_engine = animation_dsl.MockEngine() - import introspect - - if introspect.contains(animation, func_name) - var factory_func = animation.(func_name) - if type(factory_func) == "class" || type(factory_func) == "function" - return factory_func(mock_engine) - end - end - return nil - except .. as e, msg - return nil - end + # Use symbol_table's dynamic detection to get instance + var entry = self.symbol_table.get(func_name) + return entry != nil ? entry.instance : nil end # Validate a single parameter immediately as it's parsed @@ -2511,135 +2836,63 @@ class SimpleDSLTranspiler end end - # Validate factory function at transpile time by creating instance and checking type - def _validate_factory_function(func_name, expected_base_class) - try - import introspect - - # Check if the animation module has the function - if !introspect.contains(animation, func_name) - return false - end - - var factory_func = animation.(func_name) - - # Check if it's callable (function or class) - var func_type = type(factory_func) - if func_type != "function" && func_type != "class" - return false - end - - # If no type checking needed, just return true - if expected_base_class == nil - return true - end - - # Create instance at transpile time to validate type - var mock_engine = animation_dsl.MockEngine() - try - var instance = factory_func(mock_engine) - return isinstance(instance, expected_base_class) - except .. as e, msg - return false - end - - except .. as e, msg - return false - end - end - - # Validate animation factory exists and creates animation.animation instance + # Validate animation factory exists - simplified using symbol_table def _validate_animation_factory_exists(func_name) - # Skip validation for mathematical functions - they will be handled by closure transformation - if self.is_math_method(func_name) - return true # Skip validation for mathematical functions - end - - return self._validate_factory_function(func_name, nil) + # Use symbol table's dynamic detection - any callable function is valid + var entry = self.symbol_table.get(func_name) + return entry != nil end def _validate_animation_factory_creates_animation(func_name) - return self._validate_factory_function(func_name, animation.animation) + # Use symbol table's dynamic detection with type checking for animation constructors only + var entry = self.symbol_table.get(func_name) + return entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_ANIMATION_CONSTRUCTOR end - # Validate color provider factory exists and creates animation.color_provider instance + # Validate color provider factory exists - simplified using symbol_table def _validate_color_provider_factory_exists(func_name) - return self._validate_factory_function(func_name, animation.color_provider) + # Use symbol table's dynamic detection - any callable function is valid + var entry = self.symbol_table.get(func_name) + return entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_COLOR_CONSTRUCTOR end - # Validate value provider factory exists and creates animation.value_provider instance + # Validate value provider factory exists - simplified using symbol_table def _validate_value_provider_factory_exists(func_name) - return self._validate_factory_function(func_name, animation.value_provider) + # Use symbol table's dynamic detection for validation + var entry = self.symbol_table.get(func_name) + return entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_VALUE_PROVIDER_CONSTRUCTOR end - # Consolidated symbol resolution - returns the symbol reference string - def resolve_symbol_reference(name) - import introspect - - # Check if it's a named color - if animation_dsl.is_color_name(name) - return self.get_named_color_value(name) - end - - # Check symbol table, sequences, then animation module - if self.symbol_table.contains(name) || self.sequence_names.contains(name) - return f"{name}_" - elif introspect.contains(animation, name) - return f"animation.{name}" - else - return f"{name}_" # Assume user-defined if not found - end - end + - # Check if a symbol exists (for validation) - def symbol_exists(name) - import introspect - - return ( - animation_dsl.is_color_name(name) || - self.symbol_table.contains(name) || - self.sequence_names.contains(name) || - introspect.contains(animation, name) - ) - end - - # Validate symbol reference with error reporting + # Validate symbol reference with error reporting - simplified using symbol_table def validate_symbol_reference(name, context) - if !self.symbol_exists(name) + if !self.symbol_table.symbol_exists(name) self.error(f"Undefined reference '{name}' in {context}. Make sure the object is defined before use.") return false end return true end - # Validate that a referenced object is a value provider or animation + # Validate that a referenced object is a value provider or animation - simplified using symbol_table def _validate_value_provider_reference(object_name, context) try - # First check if symbol exists - if !self.symbol_exists(object_name) + # First check if symbol exists using symbol_table + if !self.symbol_table.symbol_exists(object_name) self.error(f"Undefined reference '{object_name}' in {context} statement. Make sure the value provider or animation is defined before use.") return false end - # Check if it's a user-defined object in symbol table - if self.symbol_table.contains(object_name) - var marker = self.symbol_table[object_name] - - # Check if it's marked as a value provider or animation - if type(marker) == "string" && (marker == "value_provider" || marker == "animation") - return true # Valid value provider or animation - elif type(marker) == "string" - # It's some other type (variable, color, sequence, etc.) - self.error(f"'{object_name}' in {context} statement is not a value provider or animation. Only value providers (like oscillators) and animations can be restarted.") - return false + # Use symbol_table to get type information + var entry = self.symbol_table.get(object_name) + if entry != nil + # Check if it's a value provider or animation instance (not constructor) + if entry.type == animation_dsl._symbol_entry.TYPE_VALUE_PROVIDER || entry.type == animation_dsl._symbol_entry.TYPE_ANIMATION + return true # Valid value provider or animation instance else - # It's an actual instance - check if it's a value provider or animation - if isinstance(marker, animation.value_provider) || isinstance(marker, animation.animation) - return true # Valid value provider or animation - else - self.error(f"'{object_name}' in {context} statement is not a value provider or animation. Only value providers (like oscillators) and animations can be restarted.") - return false - end + # It's some other type (variable, color, sequence, constructor, etc.) + self.error(f"'{object_name}' in {context} statement is not a value provider or animation instance. Only value provider instances (like oscillators) and animation instances can be restarted.") + return false end end @@ -2662,7 +2915,7 @@ class SimpleDSLTranspiler var instance = nil var effective_func_name = func_name - if validation_type == "variable" + if validation_type == self.CONTEXT_VARIABLE # Extract function name from variable name for validation import string if string.find(func_name, "temp_") == 0 @@ -2695,11 +2948,11 @@ class SimpleDSLTranspiler end self.expect_assign() - var param_value = self.process_value("argument") + var param_value_result = self.process_value(self.CONTEXT_VARIABLE) var inline_comment = self.collect_inline_comment() # Call the assignment callback to handle the parameter - assignment_callback(param_name, param_value, inline_comment) + assignment_callback(param_name, param_value_result.expr, inline_comment) # Skip whitespace but preserve newlines for separator detection while !self.at_end() @@ -2744,61 +2997,23 @@ class SimpleDSLTranspiler # Legacy wrapper methods for backward compatibility def _process_named_arguments_generic(var_name, func_name) - self._process_named_arguments_unified(var_name, func_name, "generic") + self._process_named_arguments_unified(var_name, func_name, self.CONTEXT_GENERIC) end def _process_named_arguments_for_color_provider(var_name, func_name) - self._process_named_arguments_unified(var_name, func_name, "color_provider") + self._process_named_arguments_unified(var_name, func_name, self.CONTEXT_COLOR_PROVIDER) end - # Check if this is a simple function call that doesn't need anonymous function treatment - def _is_simple_function_call(func_name) - # Functions that return simple values and don't use named parameters - # Note: log is handled by unified process_log_call method - var simple_functions = [ - "strip_length", - "static_value" - ] - - for simple_func : simple_functions - if func_name == simple_func - return true - end - end - return false - end - - # Generate anonymous function call that creates and configures a provider without temporary variables - def _generate_anonymous_function_call(func_name) - # Start building the anonymous function - var lines = [] - lines.push("(def (engine)") - lines.push(f" var provider = animation.{func_name}(engine)") - - # Process named arguments and collect them - self.expect_left_paren() - - # Use the core processing logic with a callback for anonymous function assignments - var assignment_callback = def (param_name, param_value, inline_comment) - lines.push(f" provider.{param_name} = {param_value}{inline_comment}") + # Check if this is a function taking named arguments + def _is_named_arg_constructor(func_name) + # Check if the function exists in the symbol table + var entry = self.symbol_table.get(func_name) + if entry != nil + return entry.takes_named_args() end - self._process_parameters_core(func_name, "generic", assignment_callback) - self.expect_right_paren() - - # Complete the anonymous function - lines.push(" return provider") - lines.push("end)(engine)") - - # Join all lines into a single expression - var result = "" - for i : 0..size(lines)-1 - if i > 0 - result += "\n" - end - result += lines[i] - end - return result + # If not in symbol table, assume it's complex (needs named parameter handling) + return true end end @@ -2834,5 +3049,5 @@ end return { "SimpleDSLTranspiler": SimpleDSLTranspiler, "compile_dsl": compile_dsl, - "MockEngine": MockEngine + } \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/providers/breathe_color_provider.be b/lib/libesp32/berry_animation/src/providers/breathe_color_provider.be index 86a2b225d..dbf82d6f1 100644 --- a/lib/libesp32/berry_animation/src/providers/breathe_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/breathe_color_provider.be @@ -37,7 +37,6 @@ class BreatheColorProvider : animation.oscillator_value # Handle parameter changes - no need to sync oscillator min/max since they're fixed def on_param_changed(name, value) - super(self).on_param_changed(name, value) # Only handle curve_factor changes for oscillator form if name == "curve_factor" # For curve_factor = 1, use pure cosine @@ -95,10 +94,10 @@ class BreatheColorProvider : animation.oscillator_value var green = (current_base_color >> 8) & 0xFF var blue = current_base_color & 0xFF - # Apply brightness scaling - red = (red * brightness) / 255 - green = (green * brightness) / 255 - blue = (blue * brightness) / 255 + # Apply brightness scaling using tasmota.scale_uint + red = tasmota.scale_uint(red, 0, 255, 0, brightness) + green = tasmota.scale_uint(green, 0, 255, 0, brightness) + blue = tasmota.scale_uint(blue, 0, 255, 0, brightness) # Reconstruct color return (alpha << 24) | (red << 16) | (green << 8) | blue diff --git a/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be b/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be index ef3834661..5102b6418 100644 --- a/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be @@ -198,21 +198,10 @@ class ColorCycleColorProvider : animation.color_provider return self._get_color_at_index(color_index) end - - - # String representation of the provider def tostring() - try - var mode = self.cycle_period == 0 ? "manual" : "auto" - var palette_size = self._get_palette_size() - return f"ColorCycleColorProvider(palette_size={palette_size}, cycle_period={self.cycle_period}, mode={mode}, current_index={self.current_index})" - except .. - return "ColorCycleColorProvider(uninitialized)" - end + return f"ColorCycleColorProvider(palette_size={self._get_palette_size()}, cycle_period={self.cycle_period}, mode={self.cycle_period ? 'manual' :: 'auto'}, current_index={self.current_index})" end end - - -return {'color_cycle': ColorCycleColorProvider} \ No newline at end of file +return {'color_cycle': ColorCycleColorProvider} diff --git a/lib/libesp32/berry_animation/src/providers/iteration_number_provider.be b/lib/libesp32/berry_animation/src/providers/iteration_number_provider.be new file mode 100644 index 000000000..1fbeccb90 --- /dev/null +++ b/lib/libesp32/berry_animation/src/providers/iteration_number_provider.be @@ -0,0 +1,50 @@ +# IterationNumberProvider - ValueProvider that returns current sequence iteration number +# +# This provider returns the current iteration number (0-based) for the innermost +# sequence context, or nil if not called within a sequence. +# +# The iteration number is tracked by the animation engine using a stack-based +# approach to handle nested sequences properly. +# +# Usage: +# set iteration = iteration_number() +# animation pulse = pulsating_animation(color=red, period=2s) +# pulse.opacity = iteration * 50 + 100 # Brightness increases with each iteration +# +# In sequences: +# sequence demo { +# repeat 5 times { +# play pulse for 1s +# # iteration will be 0, 1, 2, 3, 4 for each repeat +# } +# } + +#@ solidify:IterationNumberProvider,weak +class IterationNumberProvider : animation.value_provider + # Static parameter definitions (no parameters needed) + static var PARAMS = {} + + # Produce the current iteration number from the animation engine + # + # @param name: string - Parameter name being requested (ignored) + # @param time_ms: int - Current time in milliseconds (ignored) + # @return int|nil - Current iteration number (0-based) or nil if not in sequence + def produce_value(name, time_ms) + # Get the current iteration number from the engine's sequence stack + return self.engine.get_current_iteration_number() + end + + # String representation for debugging + # + # @return string - Human-readable description of the provider + def tostring() + var current_iteration = self.engine.get_current_iteration_number() + if current_iteration != nil + return f"IterationNumberProvider(current: {current_iteration})" + else + return "IterationNumberProvider(not_in_sequence)" + end + end +end + +return {'iteration_number': IterationNumberProvider} \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be b/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be index 9e98e968f..637b59123 100644 --- a/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be +++ b/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be @@ -137,12 +137,13 @@ class OscillatorValueProvider : animation.value_provider elif form == animation.EASE_IN # Quadratic ease-in: starts slow, accelerates var t = tasmota.scale_uint(past_with_phase, 0, duration - 1, 0, 255) # 0..255 - var eased = (t * t) / 255 # t^2 scaled back to 0..255 + var eased = tasmota.scale_int(t * t, 0, 255 * 255, 0, 255) # t^2 scaled back to 0..255 self.value = tasmota.scale_int(eased, 0, 255, min_value, max_value) elif form == animation.EASE_OUT # Quadratic ease-out: starts fast, decelerates var t = tasmota.scale_uint(past_with_phase, 0, duration - 1, 0, 255) # 0..255 - var eased = 255 - ((255 - t) * (255 - t)) / 255 # 1 - (1-t)^2 scaled to 0..255 + var inv_t = 255 - t + var eased = 255 - tasmota.scale_int(inv_t * inv_t, 0, 255 * 255, 0, 255) # 1 - (1-t)^2 scaled to 0..255 self.value = tasmota.scale_int(eased, 0, 255, min_value, max_value) elif form == animation.ELASTIC # Elastic easing: overshoots and oscillates like a spring @@ -157,12 +158,12 @@ class OscillatorValueProvider : animation.value_provider var decay = tasmota.scale_uint(255 - t, 0, 255, 255, 32) # Exponential decay approximation var freq_angle = tasmota.scale_uint(t, 0, 255, 0, 32767 * 6) # High frequency oscillation var oscillation = tasmota.sine_int(freq_angle % 32767) # -4096 to 4096 - var elastic_offset = (oscillation * decay) / 4096 # Scale oscillation by decay + var elastic_offset = tasmota.scale_int(oscillation * decay, -4096 * 255, 4096 * 255, -255, 255) # Scale oscillation by decay var base_progress = tasmota.scale_int(t, 0, 255, 0, max_value - min_value) self.value = min_value + base_progress + elastic_offset # Clamp to reasonable bounds to prevent extreme overshoots var value_range = max_value - min_value - var max_overshoot = value_range / 4 # Allow 25% overshoot + var max_overshoot = tasmota.scale_int(value_range, 0, 4, 0, 1) # Allow 25% overshoot if self.value > max_value + max_overshoot self.value = max_value + max_overshoot end if self.value < min_value - max_overshoot self.value = min_value - max_overshoot end end @@ -174,15 +175,18 @@ class OscillatorValueProvider : animation.value_provider # Simplified bounce with 3 segments for better behavior if t < 128 # First big bounce (0-50% of time) var segment_t = tasmota.scale_uint(t, 0, 127, 0, 255) - bounced_t = 255 - ((255 - segment_t) * (255 - segment_t)) / 255 # Ease-out curve + var inv_segment = 255 - segment_t + bounced_t = 255 - tasmota.scale_int(inv_segment * inv_segment, 0, 255 * 255, 0, 255) # Ease-out curve elif t < 192 # Second smaller bounce (50-75% of time) var segment_t = tasmota.scale_uint(t - 128, 0, 63, 0, 255) - var bounce_val = 255 - ((255 - segment_t) * (255 - segment_t)) / 255 - bounced_t = (bounce_val * 128) / 255 # Scale to 50% height + var inv_segment = 255 - segment_t + var bounce_val = 255 - tasmota.scale_int(inv_segment * inv_segment, 0, 255 * 255, 0, 255) + bounced_t = tasmota.scale_int(bounce_val, 0, 255, 0, 128) # Scale to 50% height else # Final settle (75-100% of time) var segment_t = tasmota.scale_uint(t - 192, 0, 63, 0, 255) - var bounce_val = 255 - ((255 - segment_t) * (255 - segment_t)) / 255 - bounced_t = 255 - ((255 - bounce_val) * 64) / 255 # Settle towards full value + var inv_segment = 255 - segment_t + var bounce_val = 255 - tasmota.scale_int(inv_segment * inv_segment, 0, 255 * 255, 0, 255) + bounced_t = 255 - tasmota.scale_int(255 - bounce_val, 0, 255, 0, 64) # Settle towards full value end self.value = tasmota.scale_int(bounced_t, 0, 255, min_value, max_value) diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h index 1de2ed6f8..3d898db52 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h @@ -354,1962 +354,73 @@ be_local_closure(set_event_active, /* name */ ); /*******************************************************************/ -// compact class 'SparkleAnimation' ktab size: 43, total: 77 (saved 272 bytes) -static const bvalue be_ktab_class_SparkleAnimation[43] = { - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(_random), - /* K2 */ be_nested_str_weak(init), - /* K3 */ be_nested_str_weak(random_seed), - /* K4 */ be_nested_str_weak(engine), - /* K5 */ be_nested_str_weak(time_ms), - /* K6 */ be_nested_str_weak(current_colors), - /* K7 */ be_nested_str_weak(sparkle_states), - /* K8 */ be_nested_str_weak(sparkle_ages), - /* K9 */ be_nested_str_weak(last_update), - /* K10 */ be_nested_str_weak(_initialize_buffers), - /* K11 */ be_nested_str_weak(update), - /* K12 */ be_nested_str_weak(_update_sparkles), - /* K13 */ be_nested_str_weak(get_param), - /* K14 */ be_nested_str_weak(color), - /* K15 */ be_nested_str_weak(animation), - /* K16 */ be_nested_str_weak(is_value_provider), - /* K17 */ be_nested_str_weak(0x_X2508x), - /* K18 */ be_nested_str_weak(SparkleAnimation_X28color_X3D_X25s_X2C_X20density_X3D_X25s_X2C_X20fade_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K19 */ be_nested_str_weak(density), - /* K20 */ be_nested_str_weak(fade_speed), - /* K21 */ be_nested_str_weak(priority), - /* K22 */ be_nested_str_weak(is_running), - /* K23 */ be_nested_str_weak(get_strip_length), - /* K24 */ be_nested_str_weak(sparkle_duration), - /* K25 */ be_nested_str_weak(min_brightness), - /* K26 */ be_nested_str_weak(max_brightness), - /* K27 */ be_nested_str_weak(back_color), - /* K28 */ be_const_int(1), - /* K29 */ be_nested_str_weak(tasmota), - /* K30 */ be_nested_str_weak(scale_uint), - /* K31 */ be_nested_str_weak(_update_sparkle_color), - /* K32 */ be_nested_str_weak(_random_range), - /* K33 */ be_const_int(1103515245), - /* K34 */ be_const_int(2147483647), - /* K35 */ be_nested_str_weak(resize), - /* K36 */ be_nested_str_weak(_fix_time_ms), - /* K37 */ be_nested_str_weak(width), - /* K38 */ be_nested_str_weak(set_pixel_color), - /* K39 */ be_nested_str_weak(is_color_provider), - /* K40 */ be_nested_str_weak(get_color_for_value), - /* K41 */ be_nested_str_weak(get_param_value), - /* K42 */ be_nested_str_weak(start), -}; - - -extern const bclass be_class_SparkleAnimation; /******************************************************************** -** Solidified function: _random_range +** Solidified function: noise_rainbow ********************************************************************/ -be_local_closure(class_SparkleAnimation__random_range, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(_random_range), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x18080300, // 0000 LE R2 R1 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80060000, // 0002 RET 1 K0 - 0x8C080101, // 0003 GETMET R2 R0 K1 - 0x7C080200, // 0004 CALL R2 1 - 0x10080401, // 0005 MOD R2 R2 R1 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_SparkleAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080502, // 0003 GETMET R2 R2 K2 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080104, // 0006 GETMBR R2 R0 K4 - 0x88080505, // 0007 GETMBR R2 R2 K5 - 0x540EFFFF, // 0008 LDINT R3 65536 - 0x10080403, // 0009 MOD R2 R2 R3 - 0x90020602, // 000A SETMBR R0 K3 R2 - 0x60080012, // 000B GETGBL R2 G18 - 0x7C080000, // 000C CALL R2 0 - 0x90020C02, // 000D SETMBR R0 K6 R2 - 0x60080012, // 000E GETGBL R2 G18 - 0x7C080000, // 000F CALL R2 0 - 0x90020E02, // 0010 SETMBR R0 K7 R2 - 0x60080012, // 0011 GETGBL R2 G18 - 0x7C080000, // 0012 CALL R2 0 - 0x90021002, // 0013 SETMBR R0 K8 R2 - 0x90021300, // 0014 SETMBR R0 K9 K0 - 0x8C08010A, // 0015 GETMET R2 R0 K10 - 0x7C080200, // 0016 CALL R2 1 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_SparkleAnimation_update, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050B, // 0003 GETMET R2 R2 K11 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x540A0020, // 0009 LDINT R2 33 - 0x880C0109, // 000A GETMBR R3 R0 K9 - 0x040C0203, // 000B SUB R3 R1 R3 - 0x140C0602, // 000C LT R3 R3 R2 - 0x780E0001, // 000D JMPF R3 #0010 - 0x500C0200, // 000E LDBOOL R3 1 0 - 0x80040600, // 000F RET 1 R3 - 0x90021201, // 0010 SETMBR R0 K9 R1 - 0x8C0C010C, // 0011 GETMET R3 R0 K12 - 0x5C140200, // 0012 MOVE R5 R1 - 0x7C0C0400, // 0013 CALL R3 2 - 0x500C0200, // 0014 LDBOOL R3 1 0 - 0x80040600, // 0015 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_SparkleAnimation_tostring, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x8C04010D, // 0000 GETMET R1 R0 K13 - 0x580C000E, // 0001 LDCONST R3 K14 - 0x7C040400, // 0002 CALL R1 2 - 0x4C080000, // 0003 LDNIL R2 - 0xB80E1E00, // 0004 GETNGBL R3 K15 - 0x8C0C0710, // 0005 GETMET R3 R3 K16 - 0x5C140200, // 0006 MOVE R5 R1 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0004, // 0008 JMPF R3 #000E - 0x600C0008, // 0009 GETGBL R3 G8 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C0C0200, // 000B CALL R3 1 - 0x5C080600, // 000C MOVE R2 R3 - 0x70020004, // 000D JMP #0013 - 0x600C0018, // 000E GETGBL R3 G24 - 0x58100011, // 000F LDCONST R4 K17 - 0x8814010E, // 0010 GETMBR R5 R0 K14 - 0x7C0C0400, // 0011 CALL R3 2 - 0x5C080600, // 0012 MOVE R2 R3 - 0x600C0018, // 0013 GETGBL R3 G24 - 0x58100012, // 0014 LDCONST R4 K18 - 0x5C140400, // 0015 MOVE R5 R2 - 0x88180113, // 0016 GETMBR R6 R0 K19 - 0x881C0114, // 0017 GETMBR R7 R0 K20 - 0x88200115, // 0018 GETMBR R8 R0 K21 - 0x88240116, // 0019 GETMBR R9 R0 K22 - 0x7C0C0C00, // 001A CALL R3 6 - 0x80040600, // 001B RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_sparkles -********************************************************************/ -be_local_closure(class_SparkleAnimation__update_sparkles, /* name */ - be_nested_proto( - 19, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(_update_sparkles), - &be_const_str_solidified, - ( &(const binstruction[100]) { /* code */ - 0x88080104, // 0000 GETMBR R2 R0 K4 - 0x8C080517, // 0001 GETMET R2 R2 K23 - 0x7C080200, // 0002 CALL R2 1 - 0x880C0118, // 0003 GETMBR R3 R0 K24 - 0x88100114, // 0004 GETMBR R4 R0 K20 - 0x88140113, // 0005 GETMBR R5 R0 K19 - 0x88180119, // 0006 GETMBR R6 R0 K25 - 0x881C011A, // 0007 GETMBR R7 R0 K26 - 0x8820011B, // 0008 GETMBR R8 R0 K27 - 0x58240000, // 0009 LDCONST R9 K0 - 0x14281202, // 000A LT R10 R9 R2 - 0x782A0056, // 000B JMPF R10 #0063 - 0x88280107, // 000C GETMBR R10 R0 K7 - 0x94281409, // 000D GETIDX R10 R10 R9 - 0x24281500, // 000E GT R10 R10 K0 - 0x782A003A, // 000F JMPF R10 #004B - 0x88280108, // 0010 GETMBR R10 R0 K8 - 0x942C1409, // 0011 GETIDX R11 R10 R9 - 0x002C171C, // 0012 ADD R11 R11 K28 - 0x9828120B, // 0013 SETIDX R10 R9 R11 - 0x88280108, // 0014 GETMBR R10 R0 K8 - 0x94281409, // 0015 GETIDX R10 R10 R9 - 0x28281403, // 0016 GE R10 R10 R3 - 0x782A0006, // 0017 JMPF R10 #001F - 0x88280107, // 0018 GETMBR R10 R0 K7 - 0x98281300, // 0019 SETIDX R10 R9 K0 - 0x88280108, // 001A GETMBR R10 R0 K8 - 0x98281300, // 001B SETIDX R10 R9 K0 - 0x88280106, // 001C GETMBR R10 R0 K6 - 0x98281208, // 001D SETIDX R10 R9 R8 - 0x7002002A, // 001E JMP #004A - 0xB82A3A00, // 001F GETNGBL R10 K29 - 0x8C28151E, // 0020 GETMET R10 R10 K30 - 0x88300108, // 0021 GETMBR R12 R0 K8 - 0x94301809, // 0022 GETIDX R12 R12 R9 - 0x58340000, // 0023 LDCONST R13 K0 - 0x5C380600, // 0024 MOVE R14 R3 - 0x583C0000, // 0025 LDCONST R15 K0 - 0x544200FE, // 0026 LDINT R16 255 - 0x7C280C00, // 0027 CALL R10 6 - 0x542E00FE, // 0028 LDINT R11 255 - 0xB8323A00, // 0029 GETNGBL R12 K29 - 0x8C30191E, // 002A GETMET R12 R12 K30 - 0x5C381400, // 002B MOVE R14 R10 - 0x583C0000, // 002C LDCONST R15 K0 - 0x544200FE, // 002D LDINT R16 255 - 0x58440000, // 002E LDCONST R17 K0 - 0x5C480800, // 002F MOVE R18 R4 - 0x7C300C00, // 0030 CALL R12 6 - 0x042C160C, // 0031 SUB R11 R11 R12 - 0xB8323A00, // 0032 GETNGBL R12 K29 - 0x8C30191E, // 0033 GETMET R12 R12 K30 - 0x88380107, // 0034 GETMBR R14 R0 K7 - 0x94381C09, // 0035 GETIDX R14 R14 R9 - 0x583C0000, // 0036 LDCONST R15 K0 - 0x544200FE, // 0037 LDINT R16 255 - 0x58440000, // 0038 LDCONST R17 K0 - 0x5C481600, // 0039 MOVE R18 R11 - 0x7C300C00, // 003A CALL R12 6 - 0x54360009, // 003B LDINT R13 10 - 0x1434180D, // 003C LT R13 R12 R13 - 0x78360006, // 003D JMPF R13 #0045 - 0x88340107, // 003E GETMBR R13 R0 K7 - 0x98341300, // 003F SETIDX R13 R9 K0 - 0x88340108, // 0040 GETMBR R13 R0 K8 - 0x98341300, // 0041 SETIDX R13 R9 K0 - 0x88340106, // 0042 GETMBR R13 R0 K6 - 0x98341208, // 0043 SETIDX R13 R9 R8 - 0x70020004, // 0044 JMP #004A - 0x8C34011F, // 0045 GETMET R13 R0 K31 - 0x5C3C1200, // 0046 MOVE R15 R9 - 0x5C401800, // 0047 MOVE R16 R12 - 0x5C440200, // 0048 MOVE R17 R1 - 0x7C340800, // 0049 CALL R13 4 - 0x70020015, // 004A JMP #0061 - 0x8C280120, // 004B GETMET R10 R0 K32 - 0x543200FF, // 004C LDINT R12 256 - 0x7C280400, // 004D CALL R10 2 - 0x14281405, // 004E LT R10 R10 R5 - 0x782A000E, // 004F JMPF R10 #005F - 0x8C280120, // 0050 GETMET R10 R0 K32 - 0x04300E06, // 0051 SUB R12 R7 R6 - 0x0030191C, // 0052 ADD R12 R12 K28 - 0x7C280400, // 0053 CALL R10 2 - 0x00280C0A, // 0054 ADD R10 R6 R10 - 0x882C0107, // 0055 GETMBR R11 R0 K7 - 0x982C120A, // 0056 SETIDX R11 R9 R10 - 0x882C0108, // 0057 GETMBR R11 R0 K8 - 0x982C1300, // 0058 SETIDX R11 R9 K0 - 0x8C2C011F, // 0059 GETMET R11 R0 K31 - 0x5C341200, // 005A MOVE R13 R9 - 0x5C381400, // 005B MOVE R14 R10 - 0x5C3C0200, // 005C MOVE R15 R1 - 0x7C2C0800, // 005D CALL R11 4 - 0x70020001, // 005E JMP #0061 - 0x88280106, // 005F GETMBR R10 R0 K6 - 0x98281208, // 0060 SETIDX R10 R9 R8 - 0x0024131C, // 0061 ADD R9 R9 K28 - 0x7001FFA6, // 0062 JMP #000A - 0x80000000, // 0063 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random -********************************************************************/ -be_local_closure(class_SparkleAnimation__random, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(_random), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040103, // 0000 GETMBR R1 R0 K3 - 0x08040321, // 0001 MUL R1 R1 K33 - 0x540A3038, // 0002 LDINT R2 12345 - 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040322, // 0004 AND R1 R1 K34 - 0x90020601, // 0005 SETMBR R0 K3 R1 - 0x88040103, // 0006 GETMBR R1 R0 K3 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_SparkleAnimation__initialize_buffers, /* name */ +be_local_closure(noise_rainbow, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ - 10, /* varg */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C040317, // 0001 GETMET R1 R1 K23 - 0x7C040200, // 0002 CALL R1 1 - 0x88080106, // 0003 GETMBR R2 R0 K6 - 0x8C080523, // 0004 GETMET R2 R2 K35 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x88080107, // 0007 GETMBR R2 R0 K7 - 0x8C080523, // 0008 GETMET R2 R2 K35 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x88080108, // 000B GETMBR R2 R0 K8 - 0x8C080523, // 000C GETMET R2 R2 K35 - 0x5C100200, // 000D MOVE R4 R1 - 0x7C080400, // 000E CALL R2 2 - 0x8808011B, // 000F GETMBR R2 R0 K27 - 0x580C0000, // 0010 LDCONST R3 K0 - 0x14100601, // 0011 LT R4 R3 R1 - 0x78120007, // 0012 JMPF R4 #001B - 0x88100106, // 0013 GETMBR R4 R0 K6 - 0x98100602, // 0014 SETIDX R4 R3 R2 - 0x88100107, // 0015 GETMBR R4 R0 K7 - 0x98100700, // 0016 SETIDX R4 R3 K0 - 0x88100108, // 0017 GETMBR R4 R0 K8 - 0x98100700, // 0018 SETIDX R4 R3 K0 - 0x000C071C, // 0019 ADD R3 R3 K28 - 0x7001FFF5, // 001A JMP #0011 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_SparkleAnimation_render, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x880C0116, // 0000 GETMBR R3 R0 K22 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x8C0C0124, // 0007 GETMET R3 R0 K36 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x5C080600, // 000A MOVE R2 R3 - 0x880C0104, // 000B GETMBR R3 R0 K4 - 0x8C0C0717, // 000C GETMET R3 R3 K23 - 0x7C0C0200, // 000D CALL R3 1 - 0x58100000, // 000E LDCONST R4 K0 - 0x14140803, // 000F LT R5 R4 R3 - 0x78160009, // 0010 JMPF R5 #001B - 0x88140325, // 0011 GETMBR R5 R1 K37 - 0x14140805, // 0012 LT R5 R4 R5 - 0x78160004, // 0013 JMPF R5 #0019 - 0x8C140326, // 0014 GETMET R5 R1 K38 - 0x5C1C0800, // 0015 MOVE R7 R4 - 0x88200106, // 0016 GETMBR R8 R0 K6 - 0x94201004, // 0017 GETIDX R8 R8 R4 - 0x7C140600, // 0018 CALL R5 3 - 0x0010091C, // 0019 ADD R4 R4 K28 - 0x7001FFF3, // 001A JMP #000F - 0x50140200, // 001B LDBOOL R5 1 0 - 0x80040A00, // 001C RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_sparkle_color -********************************************************************/ -be_local_closure(class_SparkleAnimation__update_sparkle_color, /* name */ - be_nested_proto( - 17, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(_update_sparkle_color), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0x5411FFFE, // 0000 LDINT R4 -1 - 0x8814010E, // 0001 GETMBR R5 R0 K14 - 0xB81A1E00, // 0002 GETNGBL R6 K15 - 0x8C180D27, // 0003 GETMET R6 R6 K39 - 0x5C200A00, // 0004 MOVE R8 R5 - 0x7C180400, // 0005 CALL R6 2 - 0x781A0009, // 0006 JMPF R6 #0011 - 0x88180B28, // 0007 GETMBR R6 R5 K40 - 0x4C1C0000, // 0008 LDNIL R7 - 0x20180C07, // 0009 NE R6 R6 R7 - 0x781A0005, // 000A JMPF R6 #0011 - 0x8C180B28, // 000B GETMET R6 R5 K40 - 0x5C200400, // 000C MOVE R8 R2 - 0x58240000, // 000D LDCONST R9 K0 - 0x7C180600, // 000E CALL R6 3 - 0x5C100C00, // 000F MOVE R4 R6 - 0x70020006, // 0010 JMP #0018 - 0x8C180129, // 0011 GETMET R6 R0 K41 - 0x5820000E, // 0012 LDCONST R8 K14 - 0x54260009, // 0013 LDINT R9 10 - 0x08240209, // 0014 MUL R9 R1 R9 - 0x00240609, // 0015 ADD R9 R3 R9 - 0x7C180600, // 0016 CALL R6 3 - 0x5C100C00, // 0017 MOVE R4 R6 - 0x541A0017, // 0018 LDINT R6 24 - 0x3C180806, // 0019 SHR R6 R4 R6 - 0x541E00FE, // 001A LDINT R7 255 - 0x2C180C07, // 001B AND R6 R6 R7 - 0x541E000F, // 001C LDINT R7 16 - 0x3C1C0807, // 001D SHR R7 R4 R7 - 0x542200FE, // 001E LDINT R8 255 - 0x2C1C0E08, // 001F AND R7 R7 R8 - 0x54220007, // 0020 LDINT R8 8 - 0x3C200808, // 0021 SHR R8 R4 R8 - 0x542600FE, // 0022 LDINT R9 255 - 0x2C201009, // 0023 AND R8 R8 R9 - 0x542600FE, // 0024 LDINT R9 255 - 0x2C240809, // 0025 AND R9 R4 R9 - 0xB82A3A00, // 0026 GETNGBL R10 K29 - 0x8C28151E, // 0027 GETMET R10 R10 K30 - 0x5C300400, // 0028 MOVE R12 R2 - 0x58340000, // 0029 LDCONST R13 K0 - 0x543A00FE, // 002A LDINT R14 255 - 0x583C0000, // 002B LDCONST R15 K0 - 0x5C400E00, // 002C MOVE R16 R7 - 0x7C280C00, // 002D CALL R10 6 - 0x5C1C1400, // 002E MOVE R7 R10 - 0xB82A3A00, // 002F GETNGBL R10 K29 - 0x8C28151E, // 0030 GETMET R10 R10 K30 - 0x5C300400, // 0031 MOVE R12 R2 - 0x58340000, // 0032 LDCONST R13 K0 - 0x543A00FE, // 0033 LDINT R14 255 - 0x583C0000, // 0034 LDCONST R15 K0 - 0x5C401000, // 0035 MOVE R16 R8 - 0x7C280C00, // 0036 CALL R10 6 - 0x5C201400, // 0037 MOVE R8 R10 - 0xB82A3A00, // 0038 GETNGBL R10 K29 - 0x8C28151E, // 0039 GETMET R10 R10 K30 - 0x5C300400, // 003A MOVE R12 R2 - 0x58340000, // 003B LDCONST R13 K0 - 0x543A00FE, // 003C LDINT R14 255 - 0x583C0000, // 003D LDCONST R15 K0 - 0x5C401200, // 003E MOVE R16 R9 - 0x7C280C00, // 003F CALL R10 6 - 0x5C241400, // 0040 MOVE R9 R10 - 0x88280106, // 0041 GETMBR R10 R0 K6 - 0x542E0017, // 0042 LDINT R11 24 - 0x382C0C0B, // 0043 SHL R11 R6 R11 - 0x5432000F, // 0044 LDINT R12 16 - 0x38300E0C, // 0045 SHL R12 R7 R12 - 0x302C160C, // 0046 OR R11 R11 R12 - 0x54320007, // 0047 LDINT R12 8 - 0x3830100C, // 0048 SHL R12 R8 R12 - 0x302C160C, // 0049 OR R11 R11 R12 - 0x302C1609, // 004A OR R11 R11 R9 - 0x9828020B, // 004B SETIDX R10 R1 R11 - 0x80000000, // 004C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_SparkleAnimation_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SparkleAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08052A, // 0003 GETMET R2 R2 K42 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080104, // 0006 GETMBR R2 R0 K4 - 0x88080505, // 0007 GETMBR R2 R2 K5 - 0x540EFFFF, // 0008 LDINT R3 65536 - 0x10080403, // 0009 MOD R2 R2 R3 - 0x90020602, // 000A SETMBR R0 K3 R2 - 0x8C08010A, // 000B GETMET R2 R0 K10 - 0x7C080200, // 000C CALL R2 1 - 0x80040000, // 000D RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: SparkleAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(SparkleAnimation, - 5, - &be_class_Animation, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(sparkle_states, -1), be_const_var(1) }, - { be_const_key_weak(start, -1), be_const_closure(class_SparkleAnimation_start_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_SparkleAnimation_init_closure) }, - { be_const_key_weak(PARAMS, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(7, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(fade_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(50) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(density, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(30) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(color, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(max_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(sparkle_duration, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(60) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(back_color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(-16777216) }, - })) ) } )) }, - { be_const_key_weak(min_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(100) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(update, -1), be_const_closure(class_SparkleAnimation_update_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_SparkleAnimation_tostring_closure) }, - { be_const_key_weak(sparkle_ages, -1), be_const_var(2) }, - { be_const_key_weak(current_colors, -1), be_const_var(0) }, - { be_const_key_weak(last_update, -1), be_const_var(4) }, - { be_const_key_weak(_random, -1), be_const_closure(class_SparkleAnimation__random_closure) }, - { be_const_key_weak(random_seed, -1), be_const_var(3) }, - { be_const_key_weak(_update_sparkles, 8), be_const_closure(class_SparkleAnimation__update_sparkles_closure) }, - { be_const_key_weak(_initialize_buffers, -1), be_const_closure(class_SparkleAnimation__initialize_buffers_closure) }, - { be_const_key_weak(render, -1), be_const_closure(class_SparkleAnimation_render_closure) }, - { be_const_key_weak(_update_sparkle_color, -1), be_const_closure(class_SparkleAnimation__update_sparkle_color_closure) }, - { be_const_key_weak(_random_range, 1), be_const_closure(class_SparkleAnimation__random_range_closure) }, - })), - be_str_weak(SparkleAnimation) -); - -extern const bclass be_class_PaletteWaveAnimation; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_PaletteWaveAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(palette_wave), + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(noise_animation), + /* K2 */ be_nested_str_weak(rich_palette), + /* K3 */ be_nested_str_weak(palette), + /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), + /* K5 */ be_nested_str_weak(cycle_period), + /* K6 */ be_nested_str_weak(transition_type), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(brightness), + /* K9 */ be_nested_str_weak(range_min), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(range_max), + /* K12 */ be_nested_str_weak(color), + /* K13 */ be_nested_str_weak(scale), + /* K14 */ be_nested_str_weak(speed), + /* K15 */ be_nested_str_weak(octaves), }), - be_str_weak(init), + be_str_weak(noise_rainbow), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020302, // 0006 SETMBR R0 K1 K2 - 0x80000000, // 0007 RET 0 + ( &(const binstruction[26]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x5C100000, // 0006 MOVE R4 R0 + 0x7C080400, // 0007 CALL R2 2 + 0xB80E0000, // 0008 GETNGBL R3 K0 + 0x880C0704, // 0009 GETMBR R3 R3 K4 + 0x900A0603, // 000A SETMBR R2 K3 R3 + 0x540E1387, // 000B LDINT R3 5000 + 0x900A0A03, // 000C SETMBR R2 K5 R3 + 0x900A0D07, // 000D SETMBR R2 K6 K7 + 0x540E00FE, // 000E LDINT R3 255 + 0x900A1003, // 000F SETMBR R2 K8 R3 + 0x900A130A, // 0010 SETMBR R2 K9 K10 + 0x540E00FE, // 0011 LDINT R3 255 + 0x900A1603, // 0012 SETMBR R2 K11 R3 + 0x90061802, // 0013 SETMBR R1 K12 R2 + 0x540E0031, // 0014 LDINT R3 50 + 0x90061A03, // 0015 SETMBR R1 K13 R3 + 0x540E001D, // 0016 LDINT R3 30 + 0x90061C03, // 0017 SETMBR R1 K14 R3 + 0x90061F07, // 0018 SETMBR R1 K15 K7 + 0x80040200, // 0019 RET 1 R1 }) ) ); /*******************************************************************/ -/******************************************************************** -** Solidified function: _update_value_buffer -********************************************************************/ -be_local_closure(class_PaletteWaveAnimation__update_value_buffer, /* name */ - be_nested_proto( - 18, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(wave_period), - /* K1 */ be_nested_str_weak(wave_length), - /* K2 */ be_nested_str_weak(engine), - /* K3 */ be_nested_str_weak(get_strip_length), - /* K4 */ be_nested_str_weak(value_buffer), - /* K5 */ be_nested_str_weak(resize), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(scale_uint), - /* K8 */ be_const_int(0), - /* K9 */ be_const_real_hex(0x447A0000), - /* K10 */ be_nested_str_weak(sine_int), - /* K11 */ be_nested_str_weak(scale_int), - /* K12 */ be_const_int(1), - }), - be_str_weak(_update_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x8C100903, // 0003 GETMET R4 R4 K3 - 0x7C100200, // 0004 CALL R4 1 - 0x6014000C, // 0005 GETGBL R5 G12 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x7C140200, // 0007 CALL R5 1 - 0x20140A04, // 0008 NE R5 R5 R4 - 0x78160003, // 0009 JMPF R5 #000E - 0x88140104, // 000A GETMBR R5 R0 K4 - 0x8C140B05, // 000B GETMET R5 R5 K5 - 0x5C1C0800, // 000C MOVE R7 R4 - 0x7C140400, // 000D CALL R5 2 - 0xB8160C00, // 000E GETNGBL R5 K6 - 0x8C140B07, // 000F GETMET R5 R5 K7 - 0x101C0202, // 0010 MOD R7 R1 R2 - 0x58200008, // 0011 LDCONST R8 K8 - 0x5C240400, // 0012 MOVE R9 R2 - 0x58280008, // 0013 LDCONST R10 K8 - 0x542E03E7, // 0014 LDINT R11 1000 - 0x7C140C00, // 0015 CALL R5 6 - 0x0C140B09, // 0016 DIV R5 R5 K9 - 0x60180009, // 0017 GETGBL R6 G9 - 0x081C0A03, // 0018 MUL R7 R5 R3 - 0x7C180200, // 0019 CALL R6 1 - 0x581C0008, // 001A LDCONST R7 K8 - 0x14200E04, // 001B LT R8 R7 R4 - 0x78220019, // 001C JMPF R8 #0037 - 0x00200E06, // 001D ADD R8 R7 R6 - 0x10201003, // 001E MOD R8 R8 R3 - 0xB8260C00, // 001F GETNGBL R9 K6 - 0x8C241307, // 0020 GETMET R9 R9 K7 - 0x5C2C1000, // 0021 MOVE R11 R8 - 0x58300008, // 0022 LDCONST R12 K8 - 0x5C340600, // 0023 MOVE R13 R3 - 0x58380008, // 0024 LDCONST R14 K8 - 0x543E7FFE, // 0025 LDINT R15 32767 - 0x7C240C00, // 0026 CALL R9 6 - 0xB82A0C00, // 0027 GETNGBL R10 K6 - 0x8C28150A, // 0028 GETMET R10 R10 K10 - 0x5C301200, // 0029 MOVE R12 R9 - 0x7C280400, // 002A CALL R10 2 - 0xB82E0C00, // 002B GETNGBL R11 K6 - 0x8C2C170B, // 002C GETMET R11 R11 K11 - 0x5C341400, // 002D MOVE R13 R10 - 0x5439EFFF, // 002E LDINT R14 -4096 - 0x543E0FFF, // 002F LDINT R15 4096 - 0x58400008, // 0030 LDCONST R16 K8 - 0x544600FE, // 0031 LDINT R17 255 - 0x7C2C0C00, // 0032 CALL R11 6 - 0x88300104, // 0033 GETMBR R12 R0 K4 - 0x98300E0B, // 0034 SETIDX R12 R7 R11 - 0x001C0F0C, // 0035 ADD R7 R7 K12 - 0x7001FFE3, // 0036 JMP #001B - 0x80000000, // 0037 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: PaletteWaveAnimation -********************************************************************/ -extern const bclass be_class_PalettePatternAnimation; -be_local_class(PaletteWaveAnimation, - 0, - &be_class_PalettePatternAnimation, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(PARAMS, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(wave_period, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(5000) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(wave_length, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(10) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_PaletteWaveAnimation_init_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteWaveAnimation__update_value_buffer_closure) }, - })), - be_str_weak(PaletteWaveAnimation) -); - -/******************************************************************** -** Solidified function: animation_init_strip -********************************************************************/ -be_local_closure(animation_init_strip, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 1, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(introspect), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(_engines), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(stop), - /* K7 */ be_nested_str_weak(clear), - /* K8 */ be_nested_str_weak(Leds), - /* K9 */ be_nested_str_weak(create_engine), - }), - be_str_weak(animation_init_strip), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0xA40E0400, // 0002 IMPORT R3 K2 - 0x8C100703, // 0003 GETMET R4 R3 K3 - 0x5C180400, // 0004 MOVE R6 R2 - 0x581C0004, // 0005 LDCONST R7 K4 - 0x7C100600, // 0006 CALL R4 3 - 0x74120002, // 0007 JMPT R4 #000B - 0x60100013, // 0008 GETGBL R4 G19 - 0x7C100000, // 0009 CALL R4 0 - 0x900A0804, // 000A SETMBR R2 K4 R4 - 0x60100008, // 000B GETGBL R4 G8 - 0x5C140000, // 000C MOVE R5 R0 - 0x7C100200, // 000D CALL R4 1 - 0x88140504, // 000E GETMBR R5 R2 K4 - 0x8C140B05, // 000F GETMET R5 R5 K5 - 0x5C1C0800, // 0010 MOVE R7 R4 - 0x7C140400, // 0011 CALL R5 2 - 0x4C180000, // 0012 LDNIL R6 - 0x20180A06, // 0013 NE R6 R5 R6 - 0x781A0004, // 0014 JMPF R6 #001A - 0x8C180B06, // 0015 GETMET R6 R5 K6 - 0x7C180200, // 0016 CALL R6 1 - 0x8C180B07, // 0017 GETMET R6 R5 K7 - 0x7C180200, // 0018 CALL R6 1 - 0x70020009, // 0019 JMP #0024 - 0x60180016, // 001A GETGBL R6 G22 - 0x881C0308, // 001B GETMBR R7 R1 K8 - 0x5C200000, // 001C MOVE R8 R0 - 0x7C180400, // 001D CALL R6 2 - 0x8C1C0509, // 001E GETMET R7 R2 K9 - 0x5C240C00, // 001F MOVE R9 R6 - 0x7C1C0400, // 0020 CALL R7 2 - 0x5C140E00, // 0021 MOVE R5 R7 - 0x881C0504, // 0022 GETMBR R7 R2 K4 - 0x981C0805, // 0023 SETIDX R7 R4 R5 - 0x80040A00, // 0024 RET 1 R5 - }) - ) -); -/*******************************************************************/ - -// compact class 'RichPaletteAnimation' ktab size: 18, total: 23 (saved 40 bytes) -static const bvalue be_ktab_class_RichPaletteAnimation[18] = { - /* K0 */ be_nested_str_weak(on_param_changed), - /* K1 */ be_nested_str_weak(palette), - /* K2 */ be_nested_str_weak(cycle_period), - /* K3 */ be_nested_str_weak(transition_type), - /* K4 */ be_nested_str_weak(brightness), - /* K5 */ be_nested_str_weak(range_min), - /* K6 */ be_nested_str_weak(range_max), - /* K7 */ be_nested_str_weak(color_provider), - /* K8 */ be_nested_str_weak(set_param), - /* K9 */ be_nested_str_weak(RichPaletteAnimation_X28_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20brightness_X3D_X25s_X29), - /* K10 */ be_nested_str_weak(name), - /* K11 */ be_nested_str_weak(RichPaletteAnimation_X28uninitialized_X29), - /* K12 */ be_nested_str_weak(init), - /* K13 */ be_nested_str_weak(rich_palette), - /* K14 */ be_nested_str_weak(animation), - /* K15 */ be_nested_str_weak(values), - /* K16 */ be_nested_str_weak(color), - /* K17 */ be_nested_str_weak(start), -}; - - -extern const bclass be_class_RichPaletteAnimation; - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_RichPaletteAnimation_on_param_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_RichPaletteAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0301, // 0007 EQ R3 R1 K1 - 0x740E0009, // 0008 JMPT R3 #0013 - 0x1C0C0302, // 0009 EQ R3 R1 K2 - 0x740E0007, // 000A JMPT R3 #0013 - 0x1C0C0303, // 000B EQ R3 R1 K3 - 0x740E0005, // 000C JMPT R3 #0013 - 0x1C0C0304, // 000D EQ R3 R1 K4 - 0x740E0003, // 000E JMPT R3 #0013 - 0x1C0C0305, // 000F EQ R3 R1 K5 - 0x740E0001, // 0010 JMPT R3 #0013 - 0x1C0C0306, // 0011 EQ R3 R1 K6 - 0x780E0005, // 0012 JMPF R3 #0019 - 0x880C0107, // 0013 GETMBR R3 R0 K7 - 0x8C0C0708, // 0014 GETMET R3 R3 K8 - 0x5C140200, // 0015 MOVE R5 R1 - 0x5C180400, // 0016 MOVE R6 R2 - 0x7C0C0600, // 0017 CALL R3 3 - 0x70020006, // 0018 JMP #0020 - 0x600C0003, // 0019 GETGBL R3 G3 - 0x5C100000, // 001A MOVE R4 R0 - 0x7C0C0200, // 001B CALL R3 1 - 0x8C0C0700, // 001C GETMET R3 R3 K0 - 0x5C140200, // 001D MOVE R5 R1 - 0x5C180400, // 001E MOVE R6 R2 - 0x7C0C0600, // 001F CALL R3 3 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_RichPaletteAnimation_tostring, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_RichPaletteAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA8020009, // 0000 EXBLK 0 #000B - 0x60040018, // 0001 GETGBL R1 G24 - 0x58080009, // 0002 LDCONST R2 K9 - 0x880C010A, // 0003 GETMBR R3 R0 K10 - 0x88100102, // 0004 GETMBR R4 R0 K2 - 0x88140104, // 0005 GETMBR R5 R0 K4 - 0x7C040800, // 0006 CALL R1 4 - 0xA8040001, // 0007 EXBLK 1 1 - 0x80040200, // 0008 RET 1 R1 - 0xA8040001, // 0009 EXBLK 1 1 - 0x70020004, // 000A JMP #0010 - 0xAC040000, // 000B CATCH R1 0 0 - 0x70020001, // 000C JMP #000F - 0x80061600, // 000D RET 1 K11 - 0x70020000, // 000E JMP #0010 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_RichPaletteAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_RichPaletteAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050C, // 0003 GETMET R2 R2 K12 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x9002150D, // 0006 SETMBR R0 K10 K13 - 0xB80A1C00, // 0007 GETNGBL R2 K14 - 0x8C08050D, // 0008 GETMET R2 R2 K13 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x90020E02, // 000B SETMBR R0 K7 R2 - 0x8808010F, // 000C GETMBR R2 R0 K15 - 0x880C0107, // 000D GETMBR R3 R0 K7 - 0x980A2003, // 000E SETIDX R2 K16 R3 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_RichPaletteAnimation_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_RichPaletteAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080511, // 0003 GETMET R2 R2 K17 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080107, // 0006 GETMBR R2 R0 K7 - 0x8C080511, // 0007 GETMET R2 R2 K17 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0x80040000, // 000A RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: RichPaletteAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(RichPaletteAnimation, - 1, - &be_class_Animation, - be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tostring, -1), be_const_closure(class_RichPaletteAnimation_tostring_closure) }, - { be_const_key_weak(on_param_changed, 0), be_const_closure(class_RichPaletteAnimation_on_param_changed_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(range_min, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(transition_type, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(enum, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(2, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(1), - be_const_int(5), - })) ) } )) }, - { be_const_key_weak(default, -1), be_const_int(5) }, - })) ) } )) }, - { be_const_key_weak(palette, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - { be_const_key_weak(cycle_period, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(5000) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(range_max, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, 2), be_const_closure(class_RichPaletteAnimation_init_closure) }, - { be_const_key_weak(color_provider, -1), be_const_var(0) }, - { be_const_key_weak(start, -1), be_const_closure(class_RichPaletteAnimation_start_closure) }, - })), - be_str_weak(RichPaletteAnimation) -); -// compact class 'ScaleAnimation' ktab size: 43, total: 84 (saved 328 bytes) -static const bvalue be_ktab_class_ScaleAnimation[43] = { - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(scale_phase), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start_time), - /* K4 */ be_nested_str_weak(engine), - /* K5 */ be_nested_str_weak(time_ms), - /* K6 */ be_nested_str_weak(_initialize_buffers), - /* K7 */ be_nested_str_weak(start), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(scale_uint), - /* K10 */ be_nested_str_weak(update), - /* K11 */ be_nested_str_weak(scale_speed), - /* K12 */ be_nested_str_weak(scale_mode), - /* K13 */ be_nested_str_weak(source_animation), - /* K14 */ be_const_int(2), - /* K15 */ be_nested_str_weak(is_running), - /* K16 */ be_nested_str_weak(_calculate_scale), - /* K17 */ be_nested_str_weak(get_strip_length), - /* K18 */ be_nested_str_weak(current_colors), - /* K19 */ be_nested_str_weak(scale_center), - /* K20 */ be_nested_str_weak(interpolation), - /* K21 */ be_nested_str_weak(source_frame), - /* K22 */ be_nested_str_weak(clear), - /* K23 */ be_nested_str_weak(render), - /* K24 */ be_nested_str_weak(_get_current_scale_factor), - /* K25 */ be_const_int(1), - /* K26 */ be_nested_str_weak(get_pixel_color), - /* K27 */ be_const_int(-16777216), - /* K28 */ be_nested_str_weak(_interpolate_colors), - /* K29 */ be_nested_str_weak(animation), - /* K30 */ be_nested_str_weak(frame_buffer), - /* K31 */ be_nested_str_weak(resize), - /* K32 */ be_nested_str_weak(_fix_time_ms), - /* K33 */ be_nested_str_weak(width), - /* K34 */ be_nested_str_weak(set_pixel_color), - /* K35 */ be_nested_str_weak(scale_factor), - /* K36 */ be_nested_str_weak(_sine), - /* K37 */ be_nested_str_weak(static), - /* K38 */ be_nested_str_weak(oscillate), - /* K39 */ be_nested_str_weak(grow), - /* K40 */ be_nested_str_weak(shrink), - /* K41 */ be_nested_str_weak(unknown), - /* K42 */ be_nested_str_weak(ScaleAnimation_X28_X25s_X2C_X20factor_X3D_X25s_X2C_X20speed_X3D_X25s_X29), -}; - - -extern const bclass be_class_ScaleAnimation; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_ScaleAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020302, // 0006 SETMBR R0 K1 K2 - 0x88080104, // 0007 GETMBR R2 R0 K4 - 0x88080505, // 0008 GETMBR R2 R2 K5 - 0x90020602, // 0009 SETMBR R0 K3 R2 - 0x8C080106, // 000A GETMET R2 R0 K6 - 0x7C080200, // 000B CALL R2 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_ScaleAnimation_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080507, // 0003 GETMET R2 R2 K7 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020302, // 0006 SETMBR R0 K1 K2 - 0x4C080000, // 0007 LDNIL R2 - 0x1C080202, // 0008 EQ R2 R1 R2 - 0x780A0001, // 0009 JMPF R2 #000C - 0x88080104, // 000A GETMBR R2 R0 K4 - 0x88040505, // 000B GETMBR R1 R2 K5 - 0x90020601, // 000C SETMBR R0 K3 R1 - 0x80040000, // 000D RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sine -********************************************************************/ -be_local_closure(class_ScaleAnimation__sine, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(_sine), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0x540A003F, // 0000 LDINT R2 64 - 0x10080202, // 0001 MOD R2 R1 R2 - 0x540E003F, // 0002 LDINT R3 64 - 0x140C0203, // 0003 LT R3 R1 R3 - 0x780E0009, // 0004 JMPF R3 #000F - 0xB80E1000, // 0005 GETNGBL R3 K8 - 0x8C0C0709, // 0006 GETMET R3 R3 K9 - 0x5C140400, // 0007 MOVE R5 R2 - 0x58180002, // 0008 LDCONST R6 K2 - 0x541E003F, // 0009 LDINT R7 64 - 0x5422007F, // 000A LDINT R8 128 - 0x542600FE, // 000B LDINT R9 255 - 0x7C0C0C00, // 000C CALL R3 6 - 0x80040600, // 000D RET 1 R3 - 0x70020025, // 000E JMP #0035 - 0x540E007F, // 000F LDINT R3 128 - 0x140C0203, // 0010 LT R3 R1 R3 - 0x780E000A, // 0011 JMPF R3 #001D - 0xB80E1000, // 0012 GETNGBL R3 K8 - 0x8C0C0709, // 0013 GETMET R3 R3 K9 - 0x5416007F, // 0014 LDINT R5 128 - 0x04140A01, // 0015 SUB R5 R5 R1 - 0x58180002, // 0016 LDCONST R6 K2 - 0x541E003F, // 0017 LDINT R7 64 - 0x5422007F, // 0018 LDINT R8 128 - 0x542600FE, // 0019 LDINT R9 255 - 0x7C0C0C00, // 001A CALL R3 6 - 0x80040600, // 001B RET 1 R3 - 0x70020017, // 001C JMP #0035 - 0x540E00BF, // 001D LDINT R3 192 - 0x140C0203, // 001E LT R3 R1 R3 - 0x780E000A, // 001F JMPF R3 #002B - 0xB80E1000, // 0020 GETNGBL R3 K8 - 0x8C0C0709, // 0021 GETMET R3 R3 K9 - 0x5416007F, // 0022 LDINT R5 128 - 0x04140205, // 0023 SUB R5 R1 R5 - 0x58180002, // 0024 LDCONST R6 K2 - 0x541E003F, // 0025 LDINT R7 64 - 0x5422007F, // 0026 LDINT R8 128 - 0x58240002, // 0027 LDCONST R9 K2 - 0x7C0C0C00, // 0028 CALL R3 6 - 0x80040600, // 0029 RET 1 R3 - 0x70020009, // 002A JMP #0035 - 0xB80E1000, // 002B GETNGBL R3 K8 - 0x8C0C0709, // 002C GETMET R3 R3 K9 - 0x541600FF, // 002D LDINT R5 256 - 0x04140A01, // 002E SUB R5 R5 R1 - 0x58180002, // 002F LDCONST R6 K2 - 0x541E003F, // 0030 LDINT R7 64 - 0x5422007F, // 0031 LDINT R8 128 - 0x58240002, // 0032 LDCONST R9 K2 - 0x7C0C0C00, // 0033 CALL R3 6 - 0x80040600, // 0034 RET 1 R3 - 0x80000000, // 0035 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_ScaleAnimation_update, /* name */ - be_nested_proto( - 13, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050A, // 0003 GETMET R2 R2 K10 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x8808010B, // 0009 GETMBR R2 R0 K11 - 0x880C010C, // 000A GETMBR R3 R0 K12 - 0x8810010D, // 000B GETMBR R4 R0 K13 - 0x24140502, // 000C GT R5 R2 K2 - 0x78160013, // 000D JMPF R5 #0022 - 0x24140702, // 000E GT R5 R3 K2 - 0x78160011, // 000F JMPF R5 #0022 - 0x88140103, // 0010 GETMBR R5 R0 K3 - 0x04140205, // 0011 SUB R5 R1 R5 - 0xB81A1000, // 0012 GETNGBL R6 K8 - 0x8C180D09, // 0013 GETMET R6 R6 K9 - 0x5C200400, // 0014 MOVE R8 R2 - 0x58240002, // 0015 LDCONST R9 K2 - 0x542A00FE, // 0016 LDINT R10 255 - 0x582C0002, // 0017 LDCONST R11 K2 - 0x5830000E, // 0018 LDCONST R12 K14 - 0x7C180C00, // 0019 CALL R6 6 - 0x241C0D02, // 001A GT R7 R6 K2 - 0x781E0005, // 001B JMPF R7 #0022 - 0x081C0A06, // 001C MUL R7 R5 R6 - 0x542203E7, // 001D LDINT R8 1000 - 0x0C1C0E08, // 001E DIV R7 R7 R8 - 0x542200FF, // 001F LDINT R8 256 - 0x101C0E08, // 0020 MOD R7 R7 R8 - 0x90020207, // 0021 SETMBR R0 K1 R7 - 0x4C140000, // 0022 LDNIL R5 - 0x20140805, // 0023 NE R5 R4 R5 - 0x78160007, // 0024 JMPF R5 #002D - 0x8814090F, // 0025 GETMBR R5 R4 K15 - 0x74160002, // 0026 JMPT R5 #002A - 0x8C140907, // 0027 GETMET R5 R4 K7 - 0x881C0103, // 0028 GETMBR R7 R0 K3 - 0x7C140400, // 0029 CALL R5 2 - 0x8C14090A, // 002A GETMET R5 R4 K10 - 0x5C1C0200, // 002B MOVE R7 R1 - 0x7C140400, // 002C CALL R5 2 - 0x8C140110, // 002D GETMET R5 R0 K16 - 0x7C140200, // 002E CALL R5 1 - 0x50140200, // 002F LDBOOL R5 1 0 - 0x80040A00, // 0030 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_scale -********************************************************************/ -be_local_closure(class_ScaleAnimation__calculate_scale, /* name */ - be_nested_proto( - 21, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(_calculate_scale), - &be_const_str_solidified, - ( &(const binstruction[110]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C040311, // 0001 GETMET R1 R1 K17 - 0x7C040200, // 0002 CALL R1 1 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C0112, // 0004 GETMBR R3 R0 K18 - 0x7C080200, // 0005 CALL R2 1 - 0x20080401, // 0006 NE R2 R2 R1 - 0x780A0001, // 0007 JMPF R2 #000A - 0x8C080106, // 0008 GETMET R2 R0 K6 - 0x7C080200, // 0009 CALL R2 1 - 0x8808010D, // 000A GETMBR R2 R0 K13 - 0x880C0113, // 000B GETMBR R3 R0 K19 - 0x88100114, // 000C GETMBR R4 R0 K20 - 0x88140115, // 000D GETMBR R5 R0 K21 - 0x8C140B16, // 000E GETMET R5 R5 K22 - 0x7C140200, // 000F CALL R5 1 - 0x4C140000, // 0010 LDNIL R5 - 0x20140405, // 0011 NE R5 R2 R5 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140517, // 0013 GETMET R5 R2 K23 - 0x881C0115, // 0014 GETMBR R7 R0 K21 - 0x58200002, // 0015 LDCONST R8 K2 - 0x7C140600, // 0016 CALL R5 3 - 0x8C140118, // 0017 GETMET R5 R0 K24 - 0x7C140200, // 0018 CALL R5 1 - 0xB81A1000, // 0019 GETNGBL R6 K8 - 0x8C180D09, // 001A GETMET R6 R6 K9 - 0x5C200600, // 001B MOVE R8 R3 - 0x58240002, // 001C LDCONST R9 K2 - 0x542A00FE, // 001D LDINT R10 255 - 0x582C0002, // 001E LDCONST R11 K2 - 0x04300319, // 001F SUB R12 R1 K25 - 0x7C180C00, // 0020 CALL R6 6 - 0x581C0002, // 0021 LDCONST R7 K2 - 0x14200E01, // 0022 LT R8 R7 R1 - 0x78220048, // 0023 JMPF R8 #006D - 0x04200E06, // 0024 SUB R8 R7 R6 - 0xB8261000, // 0025 GETNGBL R9 K8 - 0x8C241309, // 0026 GETMET R9 R9 K9 - 0x542E007F, // 0027 LDINT R11 128 - 0x082C100B, // 0028 MUL R11 R8 R11 - 0x58300002, // 0029 LDCONST R12 K2 - 0x5436007F, // 002A LDINT R13 128 - 0x543A007F, // 002B LDINT R14 128 - 0x08341A0E, // 002C MUL R13 R13 R14 - 0x58380002, // 002D LDCONST R14 K2 - 0x543E007F, // 002E LDINT R15 128 - 0x083C0A0F, // 002F MUL R15 R5 R15 - 0x7C240C00, // 0030 CALL R9 6 - 0x542A007F, // 0031 LDINT R10 128 - 0x0C24120A, // 0032 DIV R9 R9 R10 - 0x00280C09, // 0033 ADD R10 R6 R9 - 0x1C2C0902, // 0034 EQ R11 R4 K2 - 0x782E000D, // 0035 JMPF R11 #0044 - 0x282C1502, // 0036 GE R11 R10 K2 - 0x782E0008, // 0037 JMPF R11 #0041 - 0x142C1401, // 0038 LT R11 R10 R1 - 0x782E0006, // 0039 JMPF R11 #0041 - 0x882C0112, // 003A GETMBR R11 R0 K18 - 0x88300115, // 003B GETMBR R12 R0 K21 - 0x8C30191A, // 003C GETMET R12 R12 K26 - 0x5C381400, // 003D MOVE R14 R10 - 0x7C300400, // 003E CALL R12 2 - 0x982C0E0C, // 003F SETIDX R11 R7 R12 - 0x70020001, // 0040 JMP #0043 - 0x882C0112, // 0041 GETMBR R11 R0 K18 - 0x982C0F1B, // 0042 SETIDX R11 R7 K27 - 0x70020026, // 0043 JMP #006B - 0x282C1502, // 0044 GE R11 R10 K2 - 0x782E0022, // 0045 JMPF R11 #0069 - 0x042C0319, // 0046 SUB R11 R1 K25 - 0x142C140B, // 0047 LT R11 R10 R11 - 0x782E001F, // 0048 JMPF R11 #0069 - 0x602C0009, // 0049 GETGBL R11 G9 - 0x5C301400, // 004A MOVE R12 R10 - 0x7C2C0200, // 004B CALL R11 1 - 0x60300009, // 004C GETGBL R12 G9 - 0x0434140B, // 004D SUB R13 R10 R11 - 0x543A00FF, // 004E LDINT R14 256 - 0x08341A0E, // 004F MUL R13 R13 R14 - 0x7C300200, // 0050 CALL R12 1 - 0x28341702, // 0051 GE R13 R11 K2 - 0x78360012, // 0052 JMPF R13 #0066 - 0x04340319, // 0053 SUB R13 R1 K25 - 0x1434160D, // 0054 LT R13 R11 R13 - 0x7836000F, // 0055 JMPF R13 #0066 - 0x88340115, // 0056 GETMBR R13 R0 K21 - 0x8C341B1A, // 0057 GETMET R13 R13 K26 - 0x5C3C1600, // 0058 MOVE R15 R11 - 0x7C340400, // 0059 CALL R13 2 - 0x88380115, // 005A GETMBR R14 R0 K21 - 0x8C381D1A, // 005B GETMET R14 R14 K26 - 0x00401719, // 005C ADD R16 R11 K25 - 0x7C380400, // 005D CALL R14 2 - 0x883C0112, // 005E GETMBR R15 R0 K18 - 0x8C40011C, // 005F GETMET R16 R0 K28 - 0x5C481A00, // 0060 MOVE R18 R13 - 0x5C4C1C00, // 0061 MOVE R19 R14 - 0x5C501800, // 0062 MOVE R20 R12 - 0x7C400800, // 0063 CALL R16 4 - 0x983C0E10, // 0064 SETIDX R15 R7 R16 - 0x70020001, // 0065 JMP #0068 - 0x88340112, // 0066 GETMBR R13 R0 K18 - 0x98340F1B, // 0067 SETIDX R13 R7 K27 - 0x70020001, // 0068 JMP #006B - 0x882C0112, // 0069 GETMBR R11 R0 K18 - 0x982C0F1B, // 006A SETIDX R11 R7 K27 - 0x001C0F19, // 006B ADD R7 R7 K25 - 0x7001FFB4, // 006C JMP #0022 - 0x80000000, // 006D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_ScaleAnimation__initialize_buffers, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C040311, // 0001 GETMET R1 R1 K17 - 0x7C040200, // 0002 CALL R1 1 - 0xB80A3A00, // 0003 GETNGBL R2 K29 - 0x8C08051E, // 0004 GETMET R2 R2 K30 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x90022A02, // 0007 SETMBR R0 K21 R2 - 0x60080012, // 0008 GETGBL R2 G18 - 0x7C080000, // 0009 CALL R2 0 - 0x90022402, // 000A SETMBR R0 K18 R2 - 0x88080112, // 000B GETMBR R2 R0 K18 - 0x8C08051F, // 000C GETMET R2 R2 K31 - 0x5C100200, // 000D MOVE R4 R1 - 0x7C080400, // 000E CALL R2 2 - 0x58080002, // 000F LDCONST R2 K2 - 0x140C0401, // 0010 LT R3 R2 R1 - 0x780E0003, // 0011 JMPF R3 #0016 - 0x880C0112, // 0012 GETMBR R3 R0 K18 - 0x980C051B, // 0013 SETIDX R3 R2 K27 - 0x00080519, // 0014 ADD R2 R2 K25 - 0x7001FFF9, // 0015 JMP #0010 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_ScaleAnimation_render, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0203, // 0001 EQ R3 R1 R3 - 0x780E0001, // 0002 JMPF R3 #0005 - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x80040600, // 0004 RET 1 R3 - 0x8C0C0120, // 0005 GETMET R3 R0 K32 - 0x5C140400, // 0006 MOVE R5 R2 - 0x7C0C0400, // 0007 CALL R3 2 - 0x5C080600, // 0008 MOVE R2 R3 - 0x880C0104, // 0009 GETMBR R3 R0 K4 - 0x8C0C0711, // 000A GETMET R3 R3 K17 - 0x7C0C0200, // 000B CALL R3 1 - 0x58100002, // 000C LDCONST R4 K2 - 0x14140803, // 000D LT R5 R4 R3 - 0x78160009, // 000E JMPF R5 #0019 - 0x88140321, // 000F GETMBR R5 R1 K33 - 0x14140805, // 0010 LT R5 R4 R5 - 0x78160004, // 0011 JMPF R5 #0017 - 0x8C140322, // 0012 GETMET R5 R1 K34 - 0x5C1C0800, // 0013 MOVE R7 R4 - 0x88200112, // 0014 GETMBR R8 R0 K18 - 0x94201004, // 0015 GETIDX R8 R8 R4 - 0x7C140600, // 0016 CALL R5 3 - 0x00100919, // 0017 ADD R4 R4 K25 - 0x7001FFF3, // 0018 JMP #000D - 0x50140200, // 0019 LDBOOL R5 1 0 - 0x80040A00, // 001A RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _get_current_scale_factor -********************************************************************/ -be_local_closure(class_ScaleAnimation__get_current_scale_factor, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(_get_current_scale_factor), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x88080123, // 0001 GETMBR R2 R0 K35 - 0x1C0C0302, // 0002 EQ R3 R1 K2 - 0x780E0001, // 0003 JMPF R3 #0006 - 0x80040400, // 0004 RET 1 R2 - 0x70020025, // 0005 JMP #002C - 0x1C0C0319, // 0006 EQ R3 R1 K25 - 0x780E000C, // 0007 JMPF R3 #0015 - 0x8C0C0124, // 0008 GETMET R3 R0 K36 - 0x88140101, // 0009 GETMBR R5 R0 K1 - 0x7C0C0400, // 000A CALL R3 2 - 0xB8121000, // 000B GETNGBL R4 K8 - 0x8C100909, // 000C GETMET R4 R4 K9 - 0x5C180600, // 000D MOVE R6 R3 - 0x581C0002, // 000E LDCONST R7 K2 - 0x542200FE, // 000F LDINT R8 255 - 0x5426003F, // 0010 LDINT R9 64 - 0x542A00FE, // 0011 LDINT R10 255 - 0x7C100C00, // 0012 CALL R4 6 - 0x80040800, // 0013 RET 1 R4 - 0x70020016, // 0014 JMP #002C - 0x1C0C030E, // 0015 EQ R3 R1 K14 - 0x780E0009, // 0016 JMPF R3 #0021 - 0xB80E1000, // 0017 GETNGBL R3 K8 - 0x8C0C0709, // 0018 GETMET R3 R3 K9 - 0x88140101, // 0019 GETMBR R5 R0 K1 - 0x58180002, // 001A LDCONST R6 K2 - 0x541E00FE, // 001B LDINT R7 255 - 0x5422003F, // 001C LDINT R8 64 - 0x542600FE, // 001D LDINT R9 255 - 0x7C0C0C00, // 001E CALL R3 6 - 0x80040600, // 001F RET 1 R3 - 0x7002000A, // 0020 JMP #002C - 0xB80E1000, // 0021 GETNGBL R3 K8 - 0x8C0C0709, // 0022 GETMET R3 R3 K9 - 0x541600FE, // 0023 LDINT R5 255 - 0x88180101, // 0024 GETMBR R6 R0 K1 - 0x04140A06, // 0025 SUB R5 R5 R6 - 0x58180002, // 0026 LDCONST R6 K2 - 0x541E00FE, // 0027 LDINT R7 255 - 0x5422003F, // 0028 LDINT R8 64 - 0x542600FE, // 0029 LDINT R9 255 - 0x7C0C0C00, // 002A CALL R3 6 - 0x80040600, // 002B RET 1 R3 - 0x80000000, // 002C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _interpolate_colors -********************************************************************/ -be_local_closure(class_ScaleAnimation__interpolate_colors, /* name */ - be_nested_proto( - 18, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(_interpolate_colors), - &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0x18100702, // 0000 LE R4 R3 K2 - 0x78120001, // 0001 JMPF R4 #0004 - 0x80040200, // 0002 RET 1 R1 - 0x70020003, // 0003 JMP #0008 - 0x541200FF, // 0004 LDINT R4 256 - 0x28100604, // 0005 GE R4 R3 R4 - 0x78120000, // 0006 JMPF R4 #0008 - 0x80040400, // 0007 RET 1 R2 - 0x54120017, // 0008 LDINT R4 24 - 0x3C100204, // 0009 SHR R4 R1 R4 - 0x541600FE, // 000A LDINT R5 255 - 0x2C100805, // 000B AND R4 R4 R5 - 0x5416000F, // 000C LDINT R5 16 - 0x3C140205, // 000D SHR R5 R1 R5 - 0x541A00FE, // 000E LDINT R6 255 - 0x2C140A06, // 000F AND R5 R5 R6 - 0x541A0007, // 0010 LDINT R6 8 - 0x3C180206, // 0011 SHR R6 R1 R6 - 0x541E00FE, // 0012 LDINT R7 255 - 0x2C180C07, // 0013 AND R6 R6 R7 - 0x541E00FE, // 0014 LDINT R7 255 - 0x2C1C0207, // 0015 AND R7 R1 R7 - 0x54220017, // 0016 LDINT R8 24 - 0x3C200408, // 0017 SHR R8 R2 R8 - 0x542600FE, // 0018 LDINT R9 255 - 0x2C201009, // 0019 AND R8 R8 R9 - 0x5426000F, // 001A LDINT R9 16 - 0x3C240409, // 001B SHR R9 R2 R9 - 0x542A00FE, // 001C LDINT R10 255 - 0x2C24120A, // 001D AND R9 R9 R10 - 0x542A0007, // 001E LDINT R10 8 - 0x3C28040A, // 001F SHR R10 R2 R10 - 0x542E00FE, // 0020 LDINT R11 255 - 0x2C28140B, // 0021 AND R10 R10 R11 - 0x542E00FE, // 0022 LDINT R11 255 - 0x2C2C040B, // 0023 AND R11 R2 R11 - 0x04301004, // 0024 SUB R12 R8 R4 - 0x08301803, // 0025 MUL R12 R12 R3 - 0x543600FF, // 0026 LDINT R13 256 - 0x0C30180D, // 0027 DIV R12 R12 R13 - 0x0030080C, // 0028 ADD R12 R4 R12 - 0x04341205, // 0029 SUB R13 R9 R5 - 0x08341A03, // 002A MUL R13 R13 R3 - 0x543A00FF, // 002B LDINT R14 256 - 0x0C341A0E, // 002C DIV R13 R13 R14 - 0x00340A0D, // 002D ADD R13 R5 R13 - 0x04381406, // 002E SUB R14 R10 R6 - 0x08381C03, // 002F MUL R14 R14 R3 - 0x543E00FF, // 0030 LDINT R15 256 - 0x0C381C0F, // 0031 DIV R14 R14 R15 - 0x00380C0E, // 0032 ADD R14 R6 R14 - 0x043C1607, // 0033 SUB R15 R11 R7 - 0x083C1E03, // 0034 MUL R15 R15 R3 - 0x544200FF, // 0035 LDINT R16 256 - 0x0C3C1E10, // 0036 DIV R15 R15 R16 - 0x003C0E0F, // 0037 ADD R15 R7 R15 - 0x54420017, // 0038 LDINT R16 24 - 0x38401810, // 0039 SHL R16 R12 R16 - 0x5446000F, // 003A LDINT R17 16 - 0x38441A11, // 003B SHL R17 R13 R17 - 0x30402011, // 003C OR R16 R16 R17 - 0x54460007, // 003D LDINT R17 8 - 0x38441C11, // 003E SHL R17 R14 R17 - 0x30402011, // 003F OR R16 R16 R17 - 0x3040200F, // 0040 OR R16 R16 R15 - 0x80042000, // 0041 RET 1 R16 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_ScaleAnimation_tostring, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ScaleAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x40080325, // 0002 CONNECT R2 R1 K37 - 0x40080326, // 0003 CONNECT R2 R1 K38 - 0x40080327, // 0004 CONNECT R2 R1 K39 - 0x40080328, // 0005 CONNECT R2 R1 K40 - 0x8808010C, // 0006 GETMBR R2 R0 K12 - 0x880C0123, // 0007 GETMBR R3 R0 K35 - 0x8810010B, // 0008 GETMBR R4 R0 K11 - 0x94140202, // 0009 GETIDX R5 R1 R2 - 0x4C180000, // 000A LDNIL R6 - 0x20140A06, // 000B NE R5 R5 R6 - 0x78160001, // 000C JMPF R5 #000F - 0x94140202, // 000D GETIDX R5 R1 R2 - 0x70020000, // 000E JMP #0010 - 0x58140029, // 000F LDCONST R5 K41 - 0x60180018, // 0010 GETGBL R6 G24 - 0x581C002A, // 0011 LDCONST R7 K42 - 0x5C200A00, // 0012 MOVE R8 R5 - 0x5C240600, // 0013 MOVE R9 R3 - 0x5C280800, // 0014 MOVE R10 R4 - 0x7C180800, // 0015 CALL R6 4 - 0x80040C00, // 0016 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: ScaleAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(ScaleAnimation, - 4, - &be_class_Animation, - be_nested_map(15, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, -1), be_const_closure(class_ScaleAnimation_init_closure) }, - { be_const_key_weak(tostring, 13), be_const_closure(class_ScaleAnimation_tostring_closure) }, - { be_const_key_weak(_sine, -1), be_const_closure(class_ScaleAnimation__sine_closure) }, - { be_const_key_weak(PARAMS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(scale_center, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(scale_speed, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(source_animation, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - { be_const_key_weak(scale_factor, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(scale_mode, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(3) }, - })) ) } )) }, - { be_const_key_weak(interpolation, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(1) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(1) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(update, -1), be_const_closure(class_ScaleAnimation_update_closure) }, - { be_const_key_weak(_calculate_scale, -1), be_const_closure(class_ScaleAnimation__calculate_scale_closure) }, - { be_const_key_weak(current_colors, -1), be_const_var(2) }, - { be_const_key_weak(source_frame, 14), be_const_var(1) }, - { be_const_key_weak(_interpolate_colors, -1), be_const_closure(class_ScaleAnimation__interpolate_colors_closure) }, - { be_const_key_weak(_get_current_scale_factor, -1), be_const_closure(class_ScaleAnimation__get_current_scale_factor_closure) }, - { be_const_key_weak(_initialize_buffers, 1), be_const_closure(class_ScaleAnimation__initialize_buffers_closure) }, - { be_const_key_weak(start, 8), be_const_closure(class_ScaleAnimation_start_closure) }, - { be_const_key_weak(start_time, -1), be_const_var(3) }, - { be_const_key_weak(scale_phase, -1), be_const_var(0) }, - { be_const_key_weak(render, -1), be_const_closure(class_ScaleAnimation_render_closure) }, - })), - be_str_weak(ScaleAnimation) -); - /******************************************************************** ** Solidified function: twinkle_solid ********************************************************************/ @@ -3391,8 +1502,8 @@ be_local_class(EventManager, })), be_str_weak(EventManager) ); -// compact class 'SequenceManager' ktab size: 41, total: 157 (saved 928 bytes) -static const bvalue be_ktab_class_SequenceManager[41] = { +// compact class 'SequenceManager' ktab size: 44, total: 164 (saved 960 bytes) +static const bvalue be_ktab_class_SequenceManager[44] = { /* K0 */ be_nested_str_weak(step_index), /* K1 */ be_nested_str_weak(steps), /* K2 */ be_nested_str_weak(complete_iteration), @@ -3428,12 +1539,15 @@ static const bvalue be_ktab_class_SequenceManager[41] = { /* K32 */ be_nested_str_weak(repeat_count), /* K33 */ be_nested_str_weak(current_iteration), /* K34 */ be_nested_str_weak(is_repeat_sequence), - /* K35 */ be_nested_str_weak(get_resolved_repeat_count), - /* K36 */ be_nested_str_weak(active_sequence), - /* K37 */ be_nested_str_weak(sequence_state), - /* K38 */ be_nested_str_weak(stop_all_subsequences), - /* K39 */ be_nested_str_weak(execute_closure_steps_batch_atomic), - /* K40 */ be_nested_str_weak(function), + /* K35 */ be_nested_str_weak(update_current_iteration), + /* K36 */ be_nested_str_weak(get_resolved_repeat_count), + /* K37 */ be_nested_str_weak(pop_iteration_context), + /* K38 */ be_nested_str_weak(active_sequence), + /* K39 */ be_nested_str_weak(sequence_state), + /* K40 */ be_nested_str_weak(stop_all_subsequences), + /* K41 */ be_nested_str_weak(execute_closure_steps_batch_atomic), + /* K42 */ be_nested_str_weak(function), + /* K43 */ be_nested_str_weak(push_iteration_context), }; @@ -4045,57 +2159,68 @@ be_local_closure(class_SequenceManager_complete_iteration, /* name */ &be_ktab_class_SequenceManager, /* shared constants */ be_str_weak(complete_iteration), &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ + ( &(const binstruction[61]) { /* code */ 0x88080121, // 0000 GETMBR R2 R0 K33 0x00080515, // 0001 ADD R2 R2 K21 0x90024202, // 0002 SETMBR R0 K33 R2 - 0x8C080123, // 0003 GETMET R2 R0 K35 - 0x7C080200, // 0004 CALL R2 1 - 0x540DFFFE, // 0005 LDINT R3 -1 - 0x1C0C0403, // 0006 EQ R3 R2 R3 - 0x740E0002, // 0007 JMPT R3 #000B - 0x880C0121, // 0008 GETMBR R3 R0 K33 - 0x140C0602, // 0009 LT R3 R3 R2 - 0x780E0023, // 000A JMPF R3 #002F - 0x90020114, // 000B SETMBR R0 K0 K20 - 0x880C0100, // 000C GETMBR R3 R0 K0 - 0x6010000C, // 000D GETGBL R4 G12 - 0x88140101, // 000E GETMBR R5 R0 K1 - 0x7C100200, // 000F CALL R4 1 - 0x140C0604, // 0010 LT R3 R3 R4 - 0x780E0012, // 0011 JMPF R3 #0025 - 0x880C0101, // 0012 GETMBR R3 R0 K1 - 0x88100100, // 0013 GETMBR R4 R0 K0 - 0x940C0604, // 0014 GETIDX R3 R3 R4 - 0x94100703, // 0015 GETIDX R4 R3 K3 - 0x1C10090E, // 0016 EQ R4 R4 K14 - 0x7812000A, // 0017 JMPF R4 #0023 - 0x9410070E, // 0018 GETIDX R4 R3 K14 - 0x4C140000, // 0019 LDNIL R5 - 0x20140805, // 001A NE R5 R4 R5 - 0x78160002, // 001B JMPF R5 #001F - 0x5C140800, // 001C MOVE R5 R4 - 0x88180106, // 001D GETMBR R6 R0 K6 - 0x7C140200, // 001E CALL R5 1 - 0x88140100, // 001F GETMBR R5 R0 K0 - 0x00140B15, // 0020 ADD R5 R5 K21 - 0x90020005, // 0021 SETMBR R0 K0 R5 - 0x70020000, // 0022 JMP #0024 - 0x70020000, // 0023 JMP #0025 - 0x7001FFE6, // 0024 JMP #000C - 0x880C0100, // 0025 GETMBR R3 R0 K0 - 0x6010000C, // 0026 GETGBL R4 G12 - 0x88140101, // 0027 GETMBR R5 R0 K1 - 0x7C100200, // 0028 CALL R4 1 - 0x140C0604, // 0029 LT R3 R3 R4 - 0x780E0002, // 002A JMPF R3 #002E - 0x8C0C0116, // 002B GETMET R3 R0 K22 - 0x5C140200, // 002C MOVE R5 R1 - 0x7C0C0400, // 002D CALL R3 2 - 0x70020001, // 002E JMP #0031 - 0x500C0000, // 002F LDBOOL R3 0 0 - 0x90022E03, // 0030 SETMBR R0 K23 R3 - 0x80000000, // 0031 RET 0 + 0x88080122, // 0003 GETMBR R2 R0 K34 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x88080106, // 0005 GETMBR R2 R0 K6 + 0x8C080523, // 0006 GETMET R2 R2 K35 + 0x88100121, // 0007 GETMBR R4 R0 K33 + 0x7C080400, // 0008 CALL R2 2 + 0x8C080124, // 0009 GETMET R2 R0 K36 + 0x7C080200, // 000A CALL R2 1 + 0x540DFFFE, // 000B LDINT R3 -1 + 0x1C0C0403, // 000C EQ R3 R2 R3 + 0x740E0002, // 000D JMPT R3 #0011 + 0x880C0121, // 000E GETMBR R3 R0 K33 + 0x140C0602, // 000F LT R3 R3 R2 + 0x780E0023, // 0010 JMPF R3 #0035 + 0x90020114, // 0011 SETMBR R0 K0 K20 + 0x880C0100, // 0012 GETMBR R3 R0 K0 + 0x6010000C, // 0013 GETGBL R4 G12 + 0x88140101, // 0014 GETMBR R5 R0 K1 + 0x7C100200, // 0015 CALL R4 1 + 0x140C0604, // 0016 LT R3 R3 R4 + 0x780E0012, // 0017 JMPF R3 #002B + 0x880C0101, // 0018 GETMBR R3 R0 K1 + 0x88100100, // 0019 GETMBR R4 R0 K0 + 0x940C0604, // 001A GETIDX R3 R3 R4 + 0x94100703, // 001B GETIDX R4 R3 K3 + 0x1C10090E, // 001C EQ R4 R4 K14 + 0x7812000A, // 001D JMPF R4 #0029 + 0x9410070E, // 001E GETIDX R4 R3 K14 + 0x4C140000, // 001F LDNIL R5 + 0x20140805, // 0020 NE R5 R4 R5 + 0x78160002, // 0021 JMPF R5 #0025 + 0x5C140800, // 0022 MOVE R5 R4 + 0x88180106, // 0023 GETMBR R6 R0 K6 + 0x7C140200, // 0024 CALL R5 1 + 0x88140100, // 0025 GETMBR R5 R0 K0 + 0x00140B15, // 0026 ADD R5 R5 K21 + 0x90020005, // 0027 SETMBR R0 K0 R5 + 0x70020000, // 0028 JMP #002A + 0x70020000, // 0029 JMP #002B + 0x7001FFE6, // 002A JMP #0012 + 0x880C0100, // 002B GETMBR R3 R0 K0 + 0x6010000C, // 002C GETGBL R4 G12 + 0x88140101, // 002D GETMBR R5 R0 K1 + 0x7C100200, // 002E CALL R4 1 + 0x140C0604, // 002F LT R3 R3 R4 + 0x780E0002, // 0030 JMPF R3 #0034 + 0x8C0C0116, // 0031 GETMET R3 R0 K22 + 0x5C140200, // 0032 MOVE R5 R1 + 0x7C0C0400, // 0033 CALL R3 2 + 0x70020006, // 0034 JMP #003C + 0x500C0000, // 0035 LDBOOL R3 0 0 + 0x90022E03, // 0036 SETMBR R0 K23 R3 + 0x880C0122, // 0037 GETMBR R3 R0 K34 + 0x780E0002, // 0038 JMPF R3 #003C + 0x880C0106, // 0039 GETMBR R3 R0 K6 + 0x8C0C0725, // 003A GETMET R3 R3 K37 + 0x7C0C0200, // 003B CALL R3 1 + 0x80000000, // 003C RET 0 }) ) ); @@ -4121,10 +2246,10 @@ be_local_closure(class_SequenceManager_init, /* name */ ( &(const binstruction[30]) { /* code */ 0x90020C01, // 0000 SETMBR R0 K6 R1 0x4C0C0000, // 0001 LDNIL R3 - 0x90024803, // 0002 SETMBR R0 K36 R3 + 0x90024C03, // 0002 SETMBR R0 K38 R3 0x600C0013, // 0003 GETGBL R3 G19 0x7C0C0000, // 0004 CALL R3 0 - 0x90024A03, // 0005 SETMBR R0 K37 R3 + 0x90024E03, // 0005 SETMBR R0 K39 R3 0x90020114, // 0006 SETMBR R0 K0 K20 0x90022314, // 0007 SETMBR R0 K17 K20 0x600C0012, // 0008 GETGBL R3 G18 @@ -4171,38 +2296,43 @@ be_local_closure(class_SequenceManager_stop, /* name */ &be_ktab_class_SequenceManager, /* shared constants */ be_str_weak(stop), &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ + ( &(const binstruction[36]) { /* code */ 0x88040117, // 0000 GETMBR R1 R0 K23 - 0x7806001B, // 0001 JMPF R1 #001E + 0x78060020, // 0001 JMPF R1 #0023 0x50040000, // 0002 LDBOOL R1 0 0 0x90022E01, // 0003 SETMBR R0 K23 R1 - 0x88040100, // 0004 GETMBR R1 R0 K0 - 0x6008000C, // 0005 GETGBL R2 G12 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x7C080200, // 0007 CALL R2 1 - 0x14040202, // 0008 LT R1 R1 R2 - 0x78060011, // 0009 JMPF R1 #001C - 0x88040101, // 000A GETMBR R1 R0 K1 - 0x88080100, // 000B GETMBR R2 R0 K0 - 0x94040202, // 000C GETIDX R1 R1 R2 - 0x94080303, // 000D GETIDX R2 R1 K3 - 0x1C080504, // 000E EQ R2 R2 K4 - 0x780A0005, // 000F JMPF R2 #0016 - 0x94080305, // 0010 GETIDX R2 R1 K5 - 0x880C0106, // 0011 GETMBR R3 R0 K6 - 0x8C0C070D, // 0012 GETMET R3 R3 K13 - 0x5C140400, // 0013 MOVE R5 R2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x70020005, // 0015 JMP #001C - 0x94080303, // 0016 GETIDX R2 R1 K3 - 0x1C08050F, // 0017 EQ R2 R2 K15 - 0x780A0002, // 0018 JMPF R2 #001C - 0x94080310, // 0019 GETIDX R2 R1 K16 - 0x8C0C050C, // 001A GETMET R3 R2 K12 - 0x7C0C0200, // 001B CALL R3 1 - 0x8C040126, // 001C GETMET R1 R0 K38 - 0x7C040200, // 001D CALL R1 1 - 0x80040000, // 001E RET 1 R0 + 0x88040122, // 0004 GETMBR R1 R0 K34 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040106, // 0006 GETMBR R1 R0 K6 + 0x8C040325, // 0007 GETMET R1 R1 K37 + 0x7C040200, // 0008 CALL R1 1 + 0x88040100, // 0009 GETMBR R1 R0 K0 + 0x6008000C, // 000A GETGBL R2 G12 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x7C080200, // 000C CALL R2 1 + 0x14040202, // 000D LT R1 R1 R2 + 0x78060011, // 000E JMPF R1 #0021 + 0x88040101, // 000F GETMBR R1 R0 K1 + 0x88080100, // 0010 GETMBR R2 R0 K0 + 0x94040202, // 0011 GETIDX R1 R1 R2 + 0x94080303, // 0012 GETIDX R2 R1 K3 + 0x1C080504, // 0013 EQ R2 R2 K4 + 0x780A0005, // 0014 JMPF R2 #001B + 0x94080305, // 0015 GETIDX R2 R1 K5 + 0x880C0106, // 0016 GETMBR R3 R0 K6 + 0x8C0C070D, // 0017 GETMET R3 R3 K13 + 0x5C140400, // 0018 MOVE R5 R2 + 0x7C0C0400, // 0019 CALL R3 2 + 0x70020005, // 001A JMP #0021 + 0x94080303, // 001B GETIDX R2 R1 K3 + 0x1C08050F, // 001C EQ R2 R2 K15 + 0x780A0002, // 001D JMPF R2 #0021 + 0x94080310, // 001E GETIDX R2 R1 K16 + 0x8C0C050C, // 001F GETMET R3 R2 K12 + 0x7C0C0200, // 0020 CALL R3 1 + 0x8C040128, // 0021 GETMET R1 R0 K40 + 0x7C040200, // 0022 CALL R1 1 + 0x80040000, // 0023 RET 1 R0 }) ) ); @@ -4289,7 +2419,7 @@ be_local_closure(class_SequenceManager_advance_to_next_step, /* name */ 0x5C180200, // 001D MOVE R6 R1 0x7C100400, // 001E CALL R4 2 0x70020003, // 001F JMP #0024 - 0x8C100127, // 0020 GETMET R4 R0 K39 + 0x8C100129, // 0020 GETMET R4 R0 K41 0x5C180200, // 0021 MOVE R6 R1 0x5C1C0600, // 0022 MOVE R7 R3 0x7C100600, // 0023 CALL R4 3 @@ -4320,7 +2450,7 @@ be_local_closure(class_SequenceManager_get_resolved_repeat_count, /* name */ 0x60040004, // 0000 GETGBL R1 G4 0x88080120, // 0001 GETMBR R2 R0 K32 0x7C040200, // 0002 CALL R1 1 - 0x1C040328, // 0003 EQ R1 R1 K40 + 0x1C04032A, // 0003 EQ R1 R1 K42 0x78060004, // 0004 JMPF R1 #000A 0x8C040120, // 0005 GETMET R1 R0 K32 0x880C0106, // 0006 GETMBR R3 R0 K6 @@ -4352,58 +2482,64 @@ be_local_closure(class_SequenceManager_start, /* name */ &be_ktab_class_SequenceManager, /* shared constants */ be_str_weak(start), &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ + ( &(const binstruction[57]) { /* code */ 0x88080117, // 0000 GETMBR R2 R0 K23 0x780A0003, // 0001 JMPF R2 #0006 0x50080000, // 0002 LDBOOL R2 0 0 0x90022E02, // 0003 SETMBR R0 K23 R2 - 0x8C080126, // 0004 GETMET R2 R0 K38 + 0x8C080128, // 0004 GETMET R2 R0 K40 0x7C080200, // 0005 CALL R2 1 0x90020114, // 0006 SETMBR R0 K0 K20 0x90022201, // 0007 SETMBR R0 K17 R1 0x90024314, // 0008 SETMBR R0 K33 K20 0x50080200, // 0009 LDBOOL R2 1 0 0x90022E02, // 000A SETMBR R0 K23 R2 - 0x6008000C, // 000B GETGBL R2 G12 - 0x880C0101, // 000C GETMBR R3 R0 K1 - 0x7C080200, // 000D CALL R2 1 - 0x24080514, // 000E GT R2 R2 K20 - 0x780A0021, // 000F JMPF R2 #0032 - 0x88080100, // 0010 GETMBR R2 R0 K0 - 0x600C000C, // 0011 GETGBL R3 G12 - 0x88100101, // 0012 GETMBR R4 R0 K1 - 0x7C0C0200, // 0013 CALL R3 1 - 0x14080403, // 0014 LT R2 R2 R3 - 0x780A0012, // 0015 JMPF R2 #0029 - 0x88080101, // 0016 GETMBR R2 R0 K1 - 0x880C0100, // 0017 GETMBR R3 R0 K0 - 0x94080403, // 0018 GETIDX R2 R2 R3 - 0x940C0503, // 0019 GETIDX R3 R2 K3 - 0x1C0C070E, // 001A EQ R3 R3 K14 - 0x780E000A, // 001B JMPF R3 #0027 - 0x940C050E, // 001C GETIDX R3 R2 K14 - 0x4C100000, // 001D LDNIL R4 - 0x20100604, // 001E NE R4 R3 R4 - 0x78120002, // 001F JMPF R4 #0023 - 0x5C100600, // 0020 MOVE R4 R3 - 0x88140106, // 0021 GETMBR R5 R0 K6 - 0x7C100200, // 0022 CALL R4 1 - 0x88100100, // 0023 GETMBR R4 R0 K0 - 0x00100915, // 0024 ADD R4 R4 K21 - 0x90020004, // 0025 SETMBR R0 K0 R4 - 0x70020000, // 0026 JMP #0028 - 0x70020000, // 0027 JMP #0029 - 0x7001FFE6, // 0028 JMP #0010 - 0x88080100, // 0029 GETMBR R2 R0 K0 - 0x600C000C, // 002A GETGBL R3 G12 - 0x88100101, // 002B GETMBR R4 R0 K1 - 0x7C0C0200, // 002C CALL R3 1 - 0x14080403, // 002D LT R2 R2 R3 - 0x780A0002, // 002E JMPF R2 #0032 - 0x8C080116, // 002F GETMET R2 R0 K22 - 0x5C100200, // 0030 MOVE R4 R1 - 0x7C080400, // 0031 CALL R2 2 - 0x80040000, // 0032 RET 1 R0 + 0x88080122, // 000B GETMBR R2 R0 K34 + 0x780A0003, // 000C JMPF R2 #0011 + 0x88080106, // 000D GETMBR R2 R0 K6 + 0x8C08052B, // 000E GETMET R2 R2 K43 + 0x88100121, // 000F GETMBR R4 R0 K33 + 0x7C080400, // 0010 CALL R2 2 + 0x6008000C, // 0011 GETGBL R2 G12 + 0x880C0101, // 0012 GETMBR R3 R0 K1 + 0x7C080200, // 0013 CALL R2 1 + 0x24080514, // 0014 GT R2 R2 K20 + 0x780A0021, // 0015 JMPF R2 #0038 + 0x88080100, // 0016 GETMBR R2 R0 K0 + 0x600C000C, // 0017 GETGBL R3 G12 + 0x88100101, // 0018 GETMBR R4 R0 K1 + 0x7C0C0200, // 0019 CALL R3 1 + 0x14080403, // 001A LT R2 R2 R3 + 0x780A0012, // 001B JMPF R2 #002F + 0x88080101, // 001C GETMBR R2 R0 K1 + 0x880C0100, // 001D GETMBR R3 R0 K0 + 0x94080403, // 001E GETIDX R2 R2 R3 + 0x940C0503, // 001F GETIDX R3 R2 K3 + 0x1C0C070E, // 0020 EQ R3 R3 K14 + 0x780E000A, // 0021 JMPF R3 #002D + 0x940C050E, // 0022 GETIDX R3 R2 K14 + 0x4C100000, // 0023 LDNIL R4 + 0x20100604, // 0024 NE R4 R3 R4 + 0x78120002, // 0025 JMPF R4 #0029 + 0x5C100600, // 0026 MOVE R4 R3 + 0x88140106, // 0027 GETMBR R5 R0 K6 + 0x7C100200, // 0028 CALL R4 1 + 0x88100100, // 0029 GETMBR R4 R0 K0 + 0x00100915, // 002A ADD R4 R4 K21 + 0x90020004, // 002B SETMBR R0 K0 R4 + 0x70020000, // 002C JMP #002E + 0x70020000, // 002D JMP #002F + 0x7001FFE6, // 002E JMP #0016 + 0x88080100, // 002F GETMBR R2 R0 K0 + 0x600C000C, // 0030 GETGBL R3 G12 + 0x88100101, // 0031 GETMBR R4 R0 K1 + 0x7C0C0200, // 0032 CALL R3 1 + 0x14080403, // 0033 LT R2 R2 R3 + 0x780A0002, // 0034 JMPF R2 #0038 + 0x8C080116, // 0035 GETMET R2 R0 K22 + 0x5C100200, // 0036 MOVE R4 R1 + 0x7C080400, // 0037 CALL R2 2 + 0x80040000, // 0038 RET 1 R0 }) ) ); @@ -4450,42 +2586,6 @@ be_local_class(SequenceManager, be_str_weak(SequenceManager) ); -/******************************************************************** -** Solidified function: scale_static -********************************************************************/ -be_local_closure(scale_static, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(scale_animation), - /* K2 */ be_nested_str_weak(scale_mode), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(scale_speed), - }), - be_str_weak(scale_static), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x90060903, // 0005 SETMBR R1 K4 K3 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: twinkle_intense ********************************************************************/ @@ -4578,55 +2678,6 @@ be_local_closure(wave_single_sine, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: twinkle_classic -********************************************************************/ -be_local_closure(twinkle_classic, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(twinkle_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(density), - /* K4 */ be_nested_str_weak(twinkle_speed), - /* K5 */ be_nested_str_weak(fade_speed), - /* K6 */ be_nested_str_weak(min_brightness), - /* K7 */ be_nested_str_weak(max_brightness), - }), - be_str_weak(twinkle_classic), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A0095, // 0006 LDINT R2 150 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x540A0005, // 0008 LDINT R2 6 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x540A00B3, // 000A LDINT R2 180 - 0x90060A02, // 000B SETMBR R1 K5 R2 - 0x540A001F, // 000C LDINT R2 32 - 0x90060C02, // 000D SETMBR R1 K6 R2 - 0x540A00FE, // 000E LDINT R2 255 - 0x90060E02, // 000F SETMBR R1 K7 R2 - 0x80040200, // 0010 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: gradient_two_color_linear ********************************************************************/ @@ -4667,33 +2718,34 @@ be_local_closure(gradient_two_color_linear, /* name */ ); /*******************************************************************/ -// compact class 'CometAnimation' ktab size: 25, total: 46 (saved 168 bytes) -static const bvalue be_ktab_class_CometAnimation[25] = { +// compact class 'CometAnimation' ktab size: 26, total: 47 (saved 168 bytes) +static const bvalue be_ktab_class_CometAnimation[26] = { /* K0 */ be_nested_str_weak(update), - /* K1 */ be_nested_str_weak(speed), - /* K2 */ be_nested_str_weak(direction), - /* K3 */ be_nested_str_weak(wrap_around), - /* K4 */ be_nested_str_weak(engine), - /* K5 */ be_nested_str_weak(get_strip_length), - /* K6 */ be_nested_str_weak(start_time), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(head_position), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(init), - /* K11 */ be_nested_str_weak(animation), - /* K12 */ be_nested_str_weak(is_value_provider), - /* K13 */ be_nested_str_weak(color), - /* K14 */ be_nested_str_weak(0x_X2508x), - /* K15 */ be_nested_str_weak(CometAnimation_X28color_X3D_X25s_X2C_X20head_pos_X3D_X25_X2E1f_X2C_X20tail_length_X3D_X25s_X2C_X20speed_X3D_X25s_X2C_X20direction_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K16 */ be_nested_str_weak(tail_length), - /* K17 */ be_nested_str_weak(priority), - /* K18 */ be_nested_str_weak(is_running), - /* K19 */ be_nested_str_weak(fade_factor), - /* K20 */ be_nested_str_weak(tasmota), - /* K21 */ be_nested_str_weak(scale_uint), - /* K22 */ be_nested_str_weak(width), - /* K23 */ be_nested_str_weak(set_pixel_color), - /* K24 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(_fix_time_ms), + /* K2 */ be_nested_str_weak(speed), + /* K3 */ be_nested_str_weak(direction), + /* K4 */ be_nested_str_weak(wrap_around), + /* K5 */ be_nested_str_weak(engine), + /* K6 */ be_nested_str_weak(get_strip_length), + /* K7 */ be_nested_str_weak(start_time), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(head_position), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(init), + /* K12 */ be_nested_str_weak(animation), + /* K13 */ be_nested_str_weak(is_value_provider), + /* K14 */ be_nested_str_weak(color), + /* K15 */ be_nested_str_weak(0x_X2508x), + /* K16 */ be_nested_str_weak(CometAnimation_X28color_X3D_X25s_X2C_X20head_pos_X3D_X25_X2E1f_X2C_X20tail_length_X3D_X25s_X2C_X20speed_X3D_X25s_X2C_X20direction_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K17 */ be_nested_str_weak(tail_length), + /* K18 */ be_nested_str_weak(priority), + /* K19 */ be_nested_str_weak(is_running), + /* K20 */ be_nested_str_weak(fade_factor), + /* K21 */ be_nested_str_weak(tasmota), + /* K22 */ be_nested_str_weak(scale_uint), + /* K23 */ be_nested_str_weak(width), + /* K24 */ be_nested_str_weak(set_pixel_color), + /* K25 */ be_nested_str_weak(on_param_changed), }; @@ -4715,7 +2767,7 @@ be_local_closure(class_CometAnimation_update, /* name */ &be_ktab_class_CometAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ + ( &(const binstruction[71]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 @@ -4725,64 +2777,68 @@ be_local_closure(class_CometAnimation_update, /* name */ 0x740A0001, // 0006 JMPT R2 #0009 0x50080000, // 0007 LDBOOL R2 0 0 0x80040400, // 0008 RET 1 R2 - 0x88080101, // 0009 GETMBR R2 R0 K1 - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x88100103, // 000B GETMBR R4 R0 K3 - 0x88140104, // 000C GETMBR R5 R0 K4 - 0x8C140B05, // 000D GETMET R5 R5 K5 - 0x7C140200, // 000E CALL R5 1 - 0x88180106, // 000F GETMBR R6 R0 K6 - 0x04180206, // 0010 SUB R6 R1 R6 - 0x081C0406, // 0011 MUL R7 R2 R6 - 0x081C0E03, // 0012 MUL R7 R7 R3 - 0x542203E7, // 0013 LDINT R8 1000 - 0x0C1C0E08, // 0014 DIV R7 R7 R8 - 0x24200707, // 0015 GT R8 R3 K7 - 0x78220001, // 0016 JMPF R8 #0019 - 0x90021007, // 0017 SETMBR R0 K8 R7 - 0x70020004, // 0018 JMP #001E - 0x04200B09, // 0019 SUB R8 R5 K9 - 0x542600FF, // 001A LDINT R9 256 - 0x08201009, // 001B MUL R8 R8 R9 - 0x00201007, // 001C ADD R8 R8 R7 - 0x90021008, // 001D SETMBR R0 K8 R8 - 0x542200FF, // 001E LDINT R8 256 - 0x08200A08, // 001F MUL R8 R5 R8 - 0x20240907, // 0020 NE R9 R4 K7 - 0x7826000E, // 0021 JMPF R9 #0031 - 0x88240108, // 0022 GETMBR R9 R0 K8 - 0x28241208, // 0023 GE R9 R9 R8 - 0x78260003, // 0024 JMPF R9 #0029 - 0x88240108, // 0025 GETMBR R9 R0 K8 - 0x04241208, // 0026 SUB R9 R9 R8 - 0x90021009, // 0027 SETMBR R0 K8 R9 - 0x7001FFF8, // 0028 JMP #0022 - 0x88240108, // 0029 GETMBR R9 R0 K8 - 0x14241307, // 002A LT R9 R9 K7 - 0x78260003, // 002B JMPF R9 #0030 - 0x88240108, // 002C GETMBR R9 R0 K8 - 0x00241208, // 002D ADD R9 R9 R8 - 0x90021009, // 002E SETMBR R0 K8 R9 - 0x7001FFF8, // 002F JMP #0029 - 0x7002000F, // 0030 JMP #0041 - 0x88240108, // 0031 GETMBR R9 R0 K8 - 0x28241208, // 0032 GE R9 R9 R8 - 0x78260006, // 0033 JMPF R9 #003B - 0x04240B09, // 0034 SUB R9 R5 K9 - 0x542A00FF, // 0035 LDINT R10 256 - 0x0824120A, // 0036 MUL R9 R9 R10 - 0x90021009, // 0037 SETMBR R0 K8 R9 - 0x44240600, // 0038 NEG R9 R3 - 0x90020409, // 0039 SETMBR R0 K2 R9 - 0x70020005, // 003A JMP #0041 - 0x88240108, // 003B GETMBR R9 R0 K8 - 0x14241307, // 003C LT R9 R9 K7 - 0x78260002, // 003D JMPF R9 #0041 - 0x90021107, // 003E SETMBR R0 K8 K7 - 0x44240600, // 003F NEG R9 R3 - 0x90020409, // 0040 SETMBR R0 K2 R9 - 0x50240200, // 0041 LDBOOL R9 1 0 - 0x80041200, // 0042 RET 1 R9 + 0x8C080101, // 0009 GETMET R2 R0 K1 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x5C040400, // 000C MOVE R1 R2 + 0x88080102, // 000D GETMBR R2 R0 K2 + 0x880C0103, // 000E GETMBR R3 R0 K3 + 0x88100104, // 000F GETMBR R4 R0 K4 + 0x88140105, // 0010 GETMBR R5 R0 K5 + 0x8C140B06, // 0011 GETMET R5 R5 K6 + 0x7C140200, // 0012 CALL R5 1 + 0x88180107, // 0013 GETMBR R6 R0 K7 + 0x04180206, // 0014 SUB R6 R1 R6 + 0x081C0406, // 0015 MUL R7 R2 R6 + 0x081C0E03, // 0016 MUL R7 R7 R3 + 0x542203E7, // 0017 LDINT R8 1000 + 0x0C1C0E08, // 0018 DIV R7 R7 R8 + 0x24200708, // 0019 GT R8 R3 K8 + 0x78220001, // 001A JMPF R8 #001D + 0x90021207, // 001B SETMBR R0 K9 R7 + 0x70020004, // 001C JMP #0022 + 0x04200B0A, // 001D SUB R8 R5 K10 + 0x542600FF, // 001E LDINT R9 256 + 0x08201009, // 001F MUL R8 R8 R9 + 0x00201007, // 0020 ADD R8 R8 R7 + 0x90021208, // 0021 SETMBR R0 K9 R8 + 0x542200FF, // 0022 LDINT R8 256 + 0x08200A08, // 0023 MUL R8 R5 R8 + 0x20240908, // 0024 NE R9 R4 K8 + 0x7826000E, // 0025 JMPF R9 #0035 + 0x88240109, // 0026 GETMBR R9 R0 K9 + 0x28241208, // 0027 GE R9 R9 R8 + 0x78260003, // 0028 JMPF R9 #002D + 0x88240109, // 0029 GETMBR R9 R0 K9 + 0x04241208, // 002A SUB R9 R9 R8 + 0x90021209, // 002B SETMBR R0 K9 R9 + 0x7001FFF8, // 002C JMP #0026 + 0x88240109, // 002D GETMBR R9 R0 K9 + 0x14241308, // 002E LT R9 R9 K8 + 0x78260003, // 002F JMPF R9 #0034 + 0x88240109, // 0030 GETMBR R9 R0 K9 + 0x00241208, // 0031 ADD R9 R9 R8 + 0x90021209, // 0032 SETMBR R0 K9 R9 + 0x7001FFF8, // 0033 JMP #002D + 0x7002000F, // 0034 JMP #0045 + 0x88240109, // 0035 GETMBR R9 R0 K9 + 0x28241208, // 0036 GE R9 R9 R8 + 0x78260006, // 0037 JMPF R9 #003F + 0x04240B0A, // 0038 SUB R9 R5 K10 + 0x542A00FF, // 0039 LDINT R10 256 + 0x0824120A, // 003A MUL R9 R9 R10 + 0x90021209, // 003B SETMBR R0 K9 R9 + 0x44240600, // 003C NEG R9 R3 + 0x90020609, // 003D SETMBR R0 K3 R9 + 0x70020005, // 003E JMP #0045 + 0x88240109, // 003F GETMBR R9 R0 K9 + 0x14241308, // 0040 LT R9 R9 K8 + 0x78260002, // 0041 JMPF R9 #0045 + 0x90021308, // 0042 SETMBR R0 K9 K8 + 0x44240600, // 0043 NEG R9 R3 + 0x90020609, // 0044 SETMBR R0 K3 R9 + 0x50240200, // 0045 LDBOOL R9 1 0 + 0x80041200, // 0046 RET 1 R9 }) ) ); @@ -4809,10 +2865,10 @@ be_local_closure(class_CometAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050A, // 0003 GETMET R2 R2 K10 + 0x8C08050B, // 0003 GETMET R2 R2 K11 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x90021107, // 0006 SETMBR R0 K8 K7 + 0x90021308, // 0006 SETMBR R0 K9 K8 0x80000000, // 0007 RET 0 }) ) @@ -4838,32 +2894,32 @@ be_local_closure(class_CometAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ 0x4C040000, // 0000 LDNIL R1 - 0xB80A1600, // 0001 GETNGBL R2 K11 - 0x8C08050C, // 0002 GETMET R2 R2 K12 - 0x8810010D, // 0003 GETMBR R4 R0 K13 + 0xB80A1800, // 0001 GETNGBL R2 K12 + 0x8C08050D, // 0002 GETMET R2 R2 K13 + 0x8810010E, // 0003 GETMBR R4 R0 K14 0x7C080400, // 0004 CALL R2 2 0x780A0004, // 0005 JMPF R2 #000B 0x60080008, // 0006 GETGBL R2 G8 - 0x880C010D, // 0007 GETMBR R3 R0 K13 + 0x880C010E, // 0007 GETMBR R3 R0 K14 0x7C080200, // 0008 CALL R2 1 0x5C040400, // 0009 MOVE R1 R2 0x70020004, // 000A JMP #0010 0x60080018, // 000B GETGBL R2 G24 - 0x580C000E, // 000C LDCONST R3 K14 - 0x8810010D, // 000D GETMBR R4 R0 K13 + 0x580C000F, // 000C LDCONST R3 K15 + 0x8810010E, // 000D GETMBR R4 R0 K14 0x7C080400, // 000E CALL R2 2 0x5C040400, // 000F MOVE R1 R2 0x60080018, // 0010 GETGBL R2 G24 - 0x580C000F, // 0011 LDCONST R3 K15 + 0x580C0010, // 0011 LDCONST R3 K16 0x5C100200, // 0012 MOVE R4 R1 - 0x88140108, // 0013 GETMBR R5 R0 K8 + 0x88140109, // 0013 GETMBR R5 R0 K9 0x541A00FF, // 0014 LDINT R6 256 0x0C140A06, // 0015 DIV R5 R5 R6 - 0x88180110, // 0016 GETMBR R6 R0 K16 - 0x881C0101, // 0017 GETMBR R7 R0 K1 - 0x88200102, // 0018 GETMBR R8 R0 K2 - 0x88240111, // 0019 GETMBR R9 R0 K17 - 0x88280112, // 001A GETMBR R10 R0 K18 + 0x88180111, // 0016 GETMBR R6 R0 K17 + 0x881C0102, // 0017 GETMBR R7 R0 K2 + 0x88200103, // 0018 GETMBR R8 R0 K3 + 0x88240112, // 0019 GETMBR R9 R0 K18 + 0x88280113, // 001A GETMBR R10 R0 K19 0x7C081000, // 001B CALL R2 8 0x80040400, // 001C RET 1 R2 }) @@ -4889,23 +2945,23 @@ be_local_closure(class_CometAnimation_render, /* name */ be_str_weak(render), &be_const_str_solidified, ( &(const binstruction[93]) { /* code */ - 0x880C0112, // 0000 GETMBR R3 R0 K18 + 0x880C0113, // 0000 GETMBR R3 R0 K19 0x780E0002, // 0001 JMPF R3 #0005 0x4C0C0000, // 0002 LDNIL R3 0x1C0C0203, // 0003 EQ R3 R1 R3 0x780E0001, // 0004 JMPF R3 #0007 0x500C0000, // 0005 LDBOOL R3 0 0 0x80040600, // 0006 RET 1 R3 - 0x880C0108, // 0007 GETMBR R3 R0 K8 + 0x880C0109, // 0007 GETMBR R3 R0 K9 0x541200FF, // 0008 LDINT R4 256 0x0C0C0604, // 0009 DIV R3 R3 R4 - 0x8810010D, // 000A GETMBR R4 R0 K13 - 0x88140110, // 000B GETMBR R5 R0 K16 - 0x88180102, // 000C GETMBR R6 R0 K2 - 0x881C0103, // 000D GETMBR R7 R0 K3 - 0x88200113, // 000E GETMBR R8 R0 K19 - 0x88240104, // 000F GETMBR R9 R0 K4 - 0x8C241305, // 0010 GETMET R9 R9 K5 + 0x8810010E, // 000A GETMBR R4 R0 K14 + 0x88140111, // 000B GETMBR R5 R0 K17 + 0x88180103, // 000C GETMBR R6 R0 K3 + 0x881C0104, // 000D GETMBR R7 R0 K4 + 0x88200114, // 000E GETMBR R8 R0 K20 + 0x88240105, // 000F GETMBR R9 R0 K5 + 0x8C241306, // 0010 GETMET R9 R9 K6 0x7C240200, // 0011 CALL R9 1 0x542A0017, // 0012 LDINT R10 24 0x3C28080A, // 0013 SHR R10 R4 R10 @@ -4921,44 +2977,44 @@ be_local_closure(class_CometAnimation_render, /* name */ 0x2C30180D, // 001D AND R12 R12 R13 0x543600FE, // 001E LDINT R13 255 0x2C34080D, // 001F AND R13 R4 R13 - 0x58380007, // 0020 LDCONST R14 K7 + 0x58380008, // 0020 LDCONST R14 K8 0x143C1C05, // 0021 LT R15 R14 R5 0x783E0037, // 0022 JMPF R15 #005B 0x083C1C06, // 0023 MUL R15 R14 R6 0x043C060F, // 0024 SUB R15 R3 R15 - 0x20400F07, // 0025 NE R16 R7 K7 + 0x20400F08, // 0025 NE R16 R7 K8 0x78420008, // 0026 JMPF R16 #0030 0x28401E09, // 0027 GE R16 R15 R9 0x78420001, // 0028 JMPF R16 #002B 0x043C1E09, // 0029 SUB R15 R15 R9 0x7001FFFB, // 002A JMP #0027 - 0x14401F07, // 002B LT R16 R15 K7 + 0x14401F08, // 002B LT R16 R15 K8 0x78420001, // 002C JMPF R16 #002F 0x003C1E09, // 002D ADD R15 R15 R9 0x7001FFFB, // 002E JMP #002B 0x70020005, // 002F JMP #0036 - 0x14401F07, // 0030 LT R16 R15 K7 + 0x14401F08, // 0030 LT R16 R15 K8 0x74420001, // 0031 JMPT R16 #0034 0x28401E09, // 0032 GE R16 R15 R9 0x78420001, // 0033 JMPF R16 #0036 - 0x00381D09, // 0034 ADD R14 R14 K9 + 0x00381D0A, // 0034 ADD R14 R14 K10 0x7001FFEA, // 0035 JMP #0021 0x544200FE, // 0036 LDINT R16 255 - 0x24441D07, // 0037 GT R17 R14 K7 + 0x24441D08, // 0037 GT R17 R14 K8 0x7846000D, // 0038 JMPF R17 #0047 - 0x58440007, // 0039 LDCONST R17 K7 + 0x58440008, // 0039 LDCONST R17 K8 0x1448220E, // 003A LT R18 R17 R14 0x784A000A, // 003B JMPF R18 #0047 - 0xB84A2800, // 003C GETNGBL R18 K20 - 0x8C482515, // 003D GETMET R18 R18 K21 + 0xB84A2A00, // 003C GETNGBL R18 K21 + 0x8C482516, // 003D GETMET R18 R18 K22 0x5C502000, // 003E MOVE R20 R16 - 0x58540007, // 003F LDCONST R21 K7 + 0x58540008, // 003F LDCONST R21 K8 0x545A00FE, // 0040 LDINT R22 255 - 0x585C0007, // 0041 LDCONST R23 K7 + 0x585C0008, // 0041 LDCONST R23 K8 0x5C601000, // 0042 MOVE R24 R8 0x7C480C00, // 0043 CALL R18 6 0x5C402400, // 0044 MOVE R16 R18 - 0x00442309, // 0045 ADD R17 R17 K9 + 0x0044230A, // 0045 ADD R17 R17 K10 0x7001FFF2, // 0046 JMP #003A 0x54460017, // 0047 LDINT R17 24 0x38442011, // 0048 SHL R17 R16 R17 @@ -4969,16 +3025,16 @@ be_local_closure(class_CometAnimation_render, /* name */ 0x38481812, // 004D SHL R18 R12 R18 0x30442212, // 004E OR R17 R17 R18 0x3044220D, // 004F OR R17 R17 R13 - 0x28481F07, // 0050 GE R18 R15 K7 + 0x28481F08, // 0050 GE R18 R15 K8 0x784A0006, // 0051 JMPF R18 #0059 - 0x88480316, // 0052 GETMBR R18 R1 K22 + 0x88480317, // 0052 GETMBR R18 R1 K23 0x14481E12, // 0053 LT R18 R15 R18 0x784A0003, // 0054 JMPF R18 #0059 - 0x8C480317, // 0055 GETMET R18 R1 K23 + 0x8C480318, // 0055 GETMET R18 R1 K24 0x5C501E00, // 0056 MOVE R20 R15 0x5C542200, // 0057 MOVE R21 R17 0x7C480600, // 0058 CALL R18 3 - 0x00381D09, // 0059 ADD R14 R14 K9 + 0x00381D0A, // 0059 ADD R14 R14 K10 0x7001FFC5, // 005A JMP #0021 0x503C0200, // 005B LDBOOL R15 1 0 0x80041E00, // 005C RET 1 R15 @@ -5008,23 +3064,23 @@ be_local_closure(class_CometAnimation_on_param_changed, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0718, // 0003 GETMET R3 R3 K24 + 0x8C0C0719, // 0003 GETMET R3 R3 K25 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0302, // 0007 EQ R3 R1 K2 + 0x1C0C0303, // 0007 EQ R3 R1 K3 0x780E000A, // 0008 JMPF R3 #0014 - 0x880C0104, // 0009 GETMBR R3 R0 K4 - 0x8C0C0705, // 000A GETMET R3 R3 K5 + 0x880C0105, // 0009 GETMBR R3 R0 K5 + 0x8C0C0706, // 000A GETMET R3 R3 K6 0x7C0C0200, // 000B CALL R3 1 - 0x24100507, // 000C GT R4 R2 K7 + 0x24100508, // 000C GT R4 R2 K8 0x78120001, // 000D JMPF R4 #0010 - 0x90021107, // 000E SETMBR R0 K8 K7 + 0x90021308, // 000E SETMBR R0 K9 K8 0x70020003, // 000F JMP #0014 - 0x04100709, // 0010 SUB R4 R3 K9 + 0x0410070A, // 0010 SUB R4 R3 K10 0x541600FF, // 0011 LDINT R5 256 0x08100805, // 0012 MUL R4 R4 R5 - 0x90021004, // 0013 SETMBR R0 K8 R4 + 0x90021204, // 0013 SETMBR R0 K9 R4 0x80000000, // 0014 RET 0 }) ) @@ -5044,14 +3100,14 @@ be_local_class(CometAnimation, { be_const_key_weak(init, -1), be_const_closure(class_CometAnimation_init_closure) }, { be_const_key_weak(update, -1), be_const_closure(class_CometAnimation_update_closure) }, { be_const_key_weak(PARAMS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, + be_const_map( * be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tail_length, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(fade_factor, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(5) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(50) }, + { be_const_key_weak(default, -1), be_const_int(179) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, })) ) } )) }, { be_const_key_weak(wrap_around, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(3, @@ -5060,19 +3116,7 @@ be_local_class(CometAnimation, { be_const_key_weak(min, -1), be_const_int(0) }, { be_const_key_weak(max, 1), be_const_int(1) }, })) ) } )) }, - { be_const_key_weak(speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(2560) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(25600) }, - })) ) } )) }, - { be_const_key_weak(color, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(direction, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(direction, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(enum, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { @@ -5083,12 +3127,19 @@ be_local_class(CometAnimation, })) ) } )) }, { be_const_key_weak(default, -1), be_const_int(1) }, })) ) } )) }, - { be_const_key_weak(fade_factor, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(speed, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(179) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, + { be_const_key_weak(default, -1), be_const_int(2560) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(25600) }, + })) ) } )) }, + { be_const_key_weak(tail_length, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(5) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(50) }, })) ) } )) }, })) ) } )) }, { be_const_key_weak(tostring, -1), be_const_closure(class_CometAnimation_tostring_closure) }, @@ -5098,50 +3149,8 @@ be_local_class(CometAnimation, })), be_str_weak(CometAnimation) ); - -/******************************************************************** -** Solidified function: gradient_rainbow_linear -********************************************************************/ -be_local_closure(gradient_rainbow_linear, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(gradient_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(gradient_type), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(direction), - /* K6 */ be_nested_str_weak(movement_speed), - }), - be_str_weak(gradient_rainbow_linear), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x4C080000, // 0004 LDNIL R2 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x90060B04, // 0007 SETMBR R1 K5 K4 - 0x540A0031, // 0008 LDINT R2 50 - 0x90060C02, // 0009 SETMBR R1 K6 R2 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'FireAnimation' ktab size: 47, total: 75 (saved 224 bytes) -static const bvalue be_ktab_class_FireAnimation[47] = { +// compact class 'FireAnimation' ktab size: 51, total: 81 (saved 240 bytes) +static const bvalue be_ktab_class_FireAnimation[51] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(_random), /* K2 */ be_nested_str_weak(is_running), @@ -5151,44 +3160,48 @@ static const bvalue be_ktab_class_FireAnimation[47] = { /* K6 */ be_nested_str_weak(width), /* K7 */ be_nested_str_weak(set_pixel_color), /* K8 */ be_nested_str_weak(current_colors), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(FireAnimation_X28intensity_X3D_X25s_X2C_X20flicker_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K11 */ be_nested_str_weak(intensity), - /* K12 */ be_nested_str_weak(flicker_speed), - /* K13 */ be_nested_str_weak(priority), - /* K14 */ be_nested_str_weak(init), - /* K15 */ be_nested_str_weak(heat_map), - /* K16 */ be_nested_str_weak(last_update), - /* K17 */ be_nested_str_weak(random_seed), - /* K18 */ be_nested_str_weak(time_ms), - /* K19 */ be_nested_str_weak(resize), - /* K20 */ be_const_int(-16777216), - /* K21 */ be_nested_str_weak(update), - /* K22 */ be_nested_str_weak(_update_fire_simulation), - /* K23 */ be_const_int(1103515245), - /* K24 */ be_const_int(2147483647), - /* K25 */ be_nested_str_weak(cooling_rate), - /* K26 */ be_nested_str_weak(sparking_rate), - /* K27 */ be_nested_str_weak(flicker_amount), - /* K28 */ be_nested_str_weak(color), - /* K29 */ be_nested_str_weak(_initialize_buffers), - /* K30 */ be_nested_str_weak(_random_range), - /* K31 */ be_nested_str_weak(tasmota), - /* K32 */ be_nested_str_weak(scale_uint), - /* K33 */ be_const_int(2), - /* K34 */ be_const_int(3), - /* K35 */ be_nested_str_weak(animation), - /* K36 */ be_nested_str_weak(rich_palette), - /* K37 */ be_nested_str_weak(palette), - /* K38 */ be_nested_str_weak(PALETTE_FIRE), - /* K39 */ be_nested_str_weak(cycle_period), - /* K40 */ be_nested_str_weak(transition_type), - /* K41 */ be_nested_str_weak(brightness), - /* K42 */ be_nested_str_weak(range_min), - /* K43 */ be_nested_str_weak(range_max), - /* K44 */ be_nested_str_weak(is_color_provider), - /* K45 */ be_nested_str_weak(get_color_for_value), - /* K46 */ be_nested_str_weak(start), + /* K9 */ be_nested_str_weak(get), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(FireAnimation_X28intensity_X3D_X25s_X2C_X20flicker_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K12 */ be_nested_str_weak(intensity), + /* K13 */ be_nested_str_weak(flicker_speed), + /* K14 */ be_nested_str_weak(priority), + /* K15 */ be_nested_str_weak(init), + /* K16 */ be_nested_str_weak(heat_map), + /* K17 */ be_nested_str_weak(last_update), + /* K18 */ be_nested_str_weak(random_seed), + /* K19 */ be_nested_str_weak(time_ms), + /* K20 */ be_nested_str_weak(clear), + /* K21 */ be_nested_str_weak(resize), + /* K22 */ be_nested_str_weak(set), + /* K23 */ be_const_int(-16777216), + /* K24 */ be_nested_str_weak(update), + /* K25 */ be_nested_str_weak(_update_fire_simulation), + /* K26 */ be_const_int(1103515245), + /* K27 */ be_const_int(2147483647), + /* K28 */ be_nested_str_weak(cooling_rate), + /* K29 */ be_nested_str_weak(sparking_rate), + /* K30 */ be_nested_str_weak(flicker_amount), + /* K31 */ be_nested_str_weak(color), + /* K32 */ be_nested_str_weak(size), + /* K33 */ be_nested_str_weak(_initialize_buffers), + /* K34 */ be_nested_str_weak(_random_range), + /* K35 */ be_nested_str_weak(tasmota), + /* K36 */ be_nested_str_weak(scale_uint), + /* K37 */ be_const_int(2), + /* K38 */ be_const_int(3), + /* K39 */ be_nested_str_weak(animation), + /* K40 */ be_nested_str_weak(rich_palette), + /* K41 */ be_nested_str_weak(palette), + /* K42 */ be_nested_str_weak(PALETTE_FIRE), + /* K43 */ be_nested_str_weak(cycle_period), + /* K44 */ be_nested_str_weak(transition_type), + /* K45 */ be_nested_str_weak(brightness), + /* K46 */ be_nested_str_weak(range_min), + /* K47 */ be_nested_str_weak(range_max), + /* K48 */ be_nested_str_weak(is_color_provider), + /* K49 */ be_nested_str_weak(get_color_for_value), + /* K50 */ be_nested_str_weak(start), }; @@ -5229,7 +3242,7 @@ be_local_closure(class_FireAnimation__random_range, /* name */ ********************************************************************/ be_local_closure(class_FireAnimation_render, /* name */ be_nested_proto( - 9, /* nstack */ + 12, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -5240,7 +3253,7 @@ be_local_closure(class_FireAnimation_render, /* name */ &be_ktab_class_FireAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ + ( &(const binstruction[33]) { /* code */ 0x880C0102, // 0000 GETMBR R3 R0 K2 0x780E0002, // 0001 JMPF R3 #0005 0x4C0C0000, // 0002 LDNIL R3 @@ -5257,19 +3270,23 @@ be_local_closure(class_FireAnimation_render, /* name */ 0x7C0C0200, // 000D CALL R3 1 0x58100000, // 000E LDCONST R4 K0 0x14140803, // 000F LT R5 R4 R3 - 0x78160009, // 0010 JMPF R5 #001B + 0x7816000D, // 0010 JMPF R5 #001F 0x88140306, // 0011 GETMBR R5 R1 K6 0x14140805, // 0012 LT R5 R4 R5 - 0x78160004, // 0013 JMPF R5 #0019 + 0x78160008, // 0013 JMPF R5 #001D 0x8C140307, // 0014 GETMET R5 R1 K7 0x5C1C0800, // 0015 MOVE R7 R4 0x88200108, // 0016 GETMBR R8 R0 K8 - 0x94201004, // 0017 GETIDX R8 R8 R4 - 0x7C140600, // 0018 CALL R5 3 - 0x00100909, // 0019 ADD R4 R4 K9 - 0x7001FFF3, // 001A JMP #000F - 0x50140200, // 001B LDBOOL R5 1 0 - 0x80040A00, // 001C RET 1 R5 + 0x8C201109, // 0017 GETMET R8 R8 K9 + 0x542A0003, // 0018 LDINT R10 4 + 0x0828080A, // 0019 MUL R10 R4 R10 + 0x542DFFFB, // 001A LDINT R11 -4 + 0x7C200600, // 001B CALL R8 3 + 0x7C140600, // 001C CALL R5 3 + 0x0010090A, // 001D ADD R4 R4 K10 + 0x7001FFEF, // 001E JMP #000F + 0x50140200, // 001F LDBOOL R5 1 0 + 0x80040A00, // 0020 RET 1 R5 }) ) ); @@ -5294,10 +3311,10 @@ be_local_closure(class_FireAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x5808000A, // 0001 LDCONST R2 K10 - 0x880C010B, // 0002 GETMBR R3 R0 K11 - 0x8810010C, // 0003 GETMBR R4 R0 K12 - 0x8814010D, // 0004 GETMBR R5 R0 K13 + 0x5808000B, // 0001 LDCONST R2 K11 + 0x880C010C, // 0002 GETMBR R3 R0 K12 + 0x8810010D, // 0003 GETMBR R4 R0 K13 + 0x8814010E, // 0004 GETMBR R5 R0 K14 0x88180102, // 0005 GETMBR R6 R0 K2 0x7C040A00, // 0006 CALL R1 5 0x80040200, // 0007 RET 1 R1 @@ -5327,21 +3344,21 @@ be_local_closure(class_FireAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050E, // 0003 GETMET R2 R2 K14 + 0x8C08050F, // 0003 GETMET R2 R2 K15 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 + 0x60080015, // 0006 GETGBL R2 G21 0x7C080000, // 0007 CALL R2 0 - 0x90021E02, // 0008 SETMBR R0 K15 R2 - 0x60080012, // 0009 GETGBL R2 G18 + 0x90022002, // 0008 SETMBR R0 K16 R2 + 0x60080015, // 0009 GETGBL R2 G21 0x7C080000, // 000A CALL R2 0 0x90021002, // 000B SETMBR R0 K8 R2 - 0x90022100, // 000C SETMBR R0 K16 K0 + 0x90022300, // 000C SETMBR R0 K17 K0 0x88080104, // 000D GETMBR R2 R0 K4 - 0x88080512, // 000E GETMBR R2 R2 K18 + 0x88080513, // 000E GETMBR R2 R2 K19 0x540EFFFF, // 000F LDINT R3 65536 0x10080403, // 0010 MOD R2 R2 R3 - 0x90022202, // 0011 SETMBR R0 K17 R2 + 0x90022402, // 0011 SETMBR R0 K18 R2 0x80000000, // 0012 RET 0 }) ) @@ -5354,7 +3371,7 @@ be_local_closure(class_FireAnimation_init, /* name */ ********************************************************************/ be_local_closure(class_FireAnimation__initialize_buffers, /* name */ be_nested_proto( - 5, /* nstack */ + 8, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -5365,28 +3382,38 @@ be_local_closure(class_FireAnimation__initialize_buffers, /* name */ &be_ktab_class_FireAnimation, /* shared constants */ be_str_weak(_initialize_buffers), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ + ( &(const binstruction[31]) { /* code */ 0x88040104, // 0000 GETMBR R1 R0 K4 0x8C040305, // 0001 GETMET R1 R1 K5 0x7C040200, // 0002 CALL R1 1 - 0x8808010F, // 0003 GETMBR R2 R0 K15 - 0x8C080513, // 0004 GETMET R2 R2 K19 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x88080108, // 0007 GETMBR R2 R0 K8 - 0x8C080513, // 0008 GETMET R2 R2 K19 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x58080000, // 000B LDCONST R2 K0 - 0x140C0401, // 000C LT R3 R2 R1 - 0x780E0005, // 000D JMPF R3 #0014 - 0x880C010F, // 000E GETMBR R3 R0 K15 - 0x980C0500, // 000F SETIDX R3 R2 K0 - 0x880C0108, // 0010 GETMBR R3 R0 K8 - 0x980C0514, // 0011 SETIDX R3 R2 K20 - 0x00080509, // 0012 ADD R2 R2 K9 - 0x7001FFF7, // 0013 JMP #000C - 0x80000000, // 0014 RET 0 + 0x88080110, // 0003 GETMBR R2 R0 K16 + 0x8C080514, // 0004 GETMET R2 R2 K20 + 0x7C080200, // 0005 CALL R2 1 + 0x88080110, // 0006 GETMBR R2 R0 K16 + 0x8C080515, // 0007 GETMET R2 R2 K21 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x88080108, // 000A GETMBR R2 R0 K8 + 0x8C080514, // 000B GETMET R2 R2 K20 + 0x7C080200, // 000C CALL R2 1 + 0x88080108, // 000D GETMBR R2 R0 K8 + 0x8C080515, // 000E GETMET R2 R2 K21 + 0x54120003, // 000F LDINT R4 4 + 0x08100204, // 0010 MUL R4 R1 R4 + 0x7C080400, // 0011 CALL R2 2 + 0x58080000, // 0012 LDCONST R2 K0 + 0x140C0401, // 0013 LT R3 R2 R1 + 0x780E0008, // 0014 JMPF R3 #001E + 0x880C0108, // 0015 GETMBR R3 R0 K8 + 0x8C0C0716, // 0016 GETMET R3 R3 K22 + 0x54160003, // 0017 LDINT R5 4 + 0x08140405, // 0018 MUL R5 R2 R5 + 0x58180017, // 0019 LDCONST R6 K23 + 0x541DFFFB, // 001A LDINT R7 -4 + 0x7C0C0800, // 001B CALL R3 4 + 0x0008050A, // 001C ADD R2 R2 K10 + 0x7001FFF4, // 001D JMP #0013 + 0x80000000, // 001E RET 0 }) ) ); @@ -5409,29 +3436,33 @@ be_local_closure(class_FireAnimation_update, /* name */ &be_ktab_class_FireAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ + ( &(const binstruction[26]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080515, // 0003 GETMET R2 R2 K21 + 0x8C080518, // 0003 GETMET R2 R2 K24 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x740A0001, // 0006 JMPT R2 #0009 0x50080000, // 0007 LDBOOL R2 0 0 0x80040400, // 0008 RET 1 R2 - 0x8808010C, // 0009 GETMBR R2 R0 K12 - 0x540E03E7, // 000A LDINT R3 1000 - 0x0C0C0602, // 000B DIV R3 R3 R2 - 0x88100110, // 000C GETMBR R4 R0 K16 - 0x04100204, // 000D SUB R4 R1 R4 - 0x28100803, // 000E GE R4 R4 R3 - 0x78120003, // 000F JMPF R4 #0014 - 0x90022001, // 0010 SETMBR R0 K16 R1 - 0x8C100116, // 0011 GETMET R4 R0 K22 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C100400, // 0013 CALL R4 2 - 0x50100200, // 0014 LDBOOL R4 1 0 - 0x80040800, // 0015 RET 1 R4 + 0x8C080103, // 0009 GETMET R2 R0 K3 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x5C040400, // 000C MOVE R1 R2 + 0x8808010D, // 000D GETMBR R2 R0 K13 + 0x540E03E7, // 000E LDINT R3 1000 + 0x0C0C0602, // 000F DIV R3 R3 R2 + 0x88100111, // 0010 GETMBR R4 R0 K17 + 0x04100204, // 0011 SUB R4 R1 R4 + 0x28100803, // 0012 GE R4 R4 R3 + 0x78120003, // 0013 JMPF R4 #0018 + 0x90022201, // 0014 SETMBR R0 K17 R1 + 0x8C100119, // 0015 GETMET R4 R0 K25 + 0x5C180200, // 0016 MOVE R6 R1 + 0x7C100400, // 0017 CALL R4 2 + 0x50100200, // 0018 LDBOOL R4 1 0 + 0x80040800, // 0019 RET 1 R4 }) ) ); @@ -5455,13 +3486,13 @@ be_local_closure(class_FireAnimation__random, /* name */ be_str_weak(_random), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x88040111, // 0000 GETMBR R1 R0 K17 - 0x08040317, // 0001 MUL R1 R1 K23 + 0x88040112, // 0000 GETMBR R1 R0 K18 + 0x0804031A, // 0001 MUL R1 R1 K26 0x540A3038, // 0002 LDINT R2 12345 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040318, // 0004 AND R1 R1 K24 - 0x90022201, // 0005 SETMBR R0 K17 R1 - 0x88040111, // 0006 GETMBR R1 R0 K17 + 0x2C04031B, // 0004 AND R1 R1 K27 + 0x90022401, // 0005 SETMBR R0 K18 R1 + 0x88040112, // 0006 GETMBR R1 R0 K18 0x80040200, // 0007 RET 1 R1 }) ) @@ -5485,216 +3516,243 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ &be_ktab_class_FireAnimation, /* shared constants */ be_str_weak(_update_fire_simulation), &be_const_str_solidified, - ( &(const binstruction[209]) { /* code */ - 0x88080119, // 0000 GETMBR R2 R0 K25 - 0x880C011A, // 0001 GETMBR R3 R0 K26 - 0x8810010B, // 0002 GETMBR R4 R0 K11 - 0x8814011B, // 0003 GETMBR R5 R0 K27 - 0x8818011C, // 0004 GETMBR R6 R0 K28 + ( &(const binstruction[236]) { /* code */ + 0x8808011C, // 0000 GETMBR R2 R0 K28 + 0x880C011D, // 0001 GETMBR R3 R0 K29 + 0x8810010C, // 0002 GETMBR R4 R0 K12 + 0x8814011E, // 0003 GETMBR R5 R0 K30 + 0x8818011F, // 0004 GETMBR R6 R0 K31 0x881C0104, // 0005 GETMBR R7 R0 K4 0x8C1C0F05, // 0006 GETMET R7 R7 K5 0x7C1C0200, // 0007 CALL R7 1 - 0x6020000C, // 0008 GETGBL R8 G12 - 0x8824010F, // 0009 GETMBR R9 R0 K15 + 0x88200110, // 0008 GETMBR R8 R0 K16 + 0x8C201120, // 0009 GETMET R8 R8 K32 0x7C200200, // 000A CALL R8 1 0x20201007, // 000B NE R8 R8 R7 - 0x78220001, // 000C JMPF R8 #000F - 0x8C20011D, // 000D GETMET R8 R0 K29 - 0x7C200200, // 000E CALL R8 1 - 0x58200000, // 000F LDCONST R8 K0 - 0x14241007, // 0010 LT R9 R8 R7 - 0x78260017, // 0011 JMPF R9 #002A - 0x8C24011E, // 0012 GETMET R9 R0 K30 - 0xB82E3E00, // 0013 GETNGBL R11 K31 - 0x8C2C1720, // 0014 GETMET R11 R11 K32 - 0x5C340400, // 0015 MOVE R13 R2 - 0x58380000, // 0016 LDCONST R14 K0 - 0x543E00FE, // 0017 LDINT R15 255 - 0x58400000, // 0018 LDCONST R16 K0 - 0x54460009, // 0019 LDINT R17 10 - 0x7C2C0C00, // 001A CALL R11 6 - 0x002C1721, // 001B ADD R11 R11 K33 - 0x7C240400, // 001C CALL R9 2 - 0x8828010F, // 001D GETMBR R10 R0 K15 - 0x94281408, // 001E GETIDX R10 R10 R8 - 0x2828120A, // 001F GE R10 R9 R10 - 0x782A0002, // 0020 JMPF R10 #0024 - 0x8828010F, // 0021 GETMBR R10 R0 K15 - 0x98281100, // 0022 SETIDX R10 R8 K0 - 0x70020003, // 0023 JMP #0028 - 0x8828010F, // 0024 GETMBR R10 R0 K15 - 0x942C1408, // 0025 GETIDX R11 R10 R8 - 0x042C1609, // 0026 SUB R11 R11 R9 - 0x9828100B, // 0027 SETIDX R10 R8 R11 - 0x00201109, // 0028 ADD R8 R8 K9 - 0x7001FFE5, // 0029 JMP #0010 - 0x28240F22, // 002A GE R9 R7 K34 - 0x78260012, // 002B JMPF R9 #003F - 0x04240F09, // 002C SUB R9 R7 K9 - 0x28281321, // 002D GE R10 R9 K33 - 0x782A000F, // 002E JMPF R10 #003F - 0x04281309, // 002F SUB R10 R9 K9 - 0x882C010F, // 0030 GETMBR R11 R0 K15 - 0x9428160A, // 0031 GETIDX R10 R11 R10 - 0x042C1321, // 0032 SUB R11 R9 K33 - 0x8830010F, // 0033 GETMBR R12 R0 K15 - 0x942C180B, // 0034 GETIDX R11 R12 R11 - 0x0028140B, // 0035 ADD R10 R10 R11 - 0x042C1321, // 0036 SUB R11 R9 K33 - 0x8830010F, // 0037 GETMBR R12 R0 K15 - 0x942C180B, // 0038 GETIDX R11 R12 R11 - 0x0028140B, // 0039 ADD R10 R10 R11 - 0x0C281522, // 003A DIV R10 R10 K34 - 0x882C010F, // 003B GETMBR R11 R0 K15 - 0x982C120A, // 003C SETIDX R11 R9 R10 - 0x04241309, // 003D SUB R9 R9 K9 - 0x7001FFED, // 003E JMP #002D - 0x8C24011E, // 003F GETMET R9 R0 K30 - 0x542E00FE, // 0040 LDINT R11 255 - 0x7C240400, // 0041 CALL R9 2 - 0x14241203, // 0042 LT R9 R9 R3 - 0x7826000B, // 0043 JMPF R9 #0050 - 0x8C24011E, // 0044 GETMET R9 R0 K30 - 0x542E0006, // 0045 LDINT R11 7 - 0x7C240400, // 0046 CALL R9 2 - 0x8C28011E, // 0047 GETMET R10 R0 K30 - 0x5432005E, // 0048 LDINT R12 95 - 0x7C280400, // 0049 CALL R10 2 - 0x542E009F, // 004A LDINT R11 160 - 0x0028140B, // 004B ADD R10 R10 R11 - 0x142C1207, // 004C LT R11 R9 R7 - 0x782E0001, // 004D JMPF R11 #0050 - 0x882C010F, // 004E GETMBR R11 R0 K15 - 0x982C120A, // 004F SETIDX R11 R9 R10 - 0x58200000, // 0050 LDCONST R8 K0 - 0x14241007, // 0051 LT R9 R8 R7 - 0x7826007C, // 0052 JMPF R9 #00D0 - 0x8824010F, // 0053 GETMBR R9 R0 K15 - 0x94241208, // 0054 GETIDX R9 R9 R8 - 0xB82A3E00, // 0055 GETNGBL R10 K31 - 0x8C281520, // 0056 GETMET R10 R10 K32 - 0x5C301200, // 0057 MOVE R12 R9 - 0x58340000, // 0058 LDCONST R13 K0 - 0x543A00FE, // 0059 LDINT R14 255 - 0x583C0000, // 005A LDCONST R15 K0 - 0x5C400800, // 005B MOVE R16 R4 - 0x7C280C00, // 005C CALL R10 6 - 0x5C241400, // 005D MOVE R9 R10 - 0x24280B00, // 005E GT R10 R5 K0 - 0x782A0012, // 005F JMPF R10 #0073 - 0x8C28011E, // 0060 GETMET R10 R0 K30 - 0x5C300A00, // 0061 MOVE R12 R5 - 0x7C280400, // 0062 CALL R10 2 - 0x8C2C011E, // 0063 GETMET R11 R0 K30 - 0x58340021, // 0064 LDCONST R13 K33 - 0x7C2C0400, // 0065 CALL R11 2 - 0x1C2C1700, // 0066 EQ R11 R11 K0 - 0x782E0001, // 0067 JMPF R11 #006A - 0x0024120A, // 0068 ADD R9 R9 R10 - 0x70020004, // 0069 JMP #006F - 0x242C120A, // 006A GT R11 R9 R10 - 0x782E0001, // 006B JMPF R11 #006E - 0x0424120A, // 006C SUB R9 R9 R10 - 0x70020000, // 006D JMP #006F - 0x58240000, // 006E LDCONST R9 K0 - 0x542E00FE, // 006F LDINT R11 255 - 0x242C120B, // 0070 GT R11 R9 R11 - 0x782E0000, // 0071 JMPF R11 #0073 - 0x542600FE, // 0072 LDINT R9 255 - 0x58280014, // 0073 LDCONST R10 K20 - 0x242C1300, // 0074 GT R11 R9 K0 - 0x782E0055, // 0075 JMPF R11 #00CC - 0x5C2C0C00, // 0076 MOVE R11 R6 - 0x4C300000, // 0077 LDNIL R12 - 0x1C30160C, // 0078 EQ R12 R11 R12 - 0x7832000E, // 0079 JMPF R12 #0089 - 0xB8324600, // 007A GETNGBL R12 K35 - 0x8C301924, // 007B GETMET R12 R12 K36 - 0x88380104, // 007C GETMBR R14 R0 K4 - 0x7C300400, // 007D CALL R12 2 - 0xB8364600, // 007E GETNGBL R13 K35 - 0x88341B26, // 007F GETMBR R13 R13 K38 - 0x90324A0D, // 0080 SETMBR R12 K37 R13 - 0x90324F00, // 0081 SETMBR R12 K39 K0 - 0x90325109, // 0082 SETMBR R12 K40 K9 - 0x543600FE, // 0083 LDINT R13 255 - 0x9032520D, // 0084 SETMBR R12 K41 R13 - 0x90325500, // 0085 SETMBR R12 K42 K0 - 0x543600FE, // 0086 LDINT R13 255 - 0x9032560D, // 0087 SETMBR R12 K43 R13 - 0x5C2C1800, // 0088 MOVE R11 R12 - 0xB8324600, // 0089 GETNGBL R12 K35 - 0x8C30192C, // 008A GETMET R12 R12 K44 - 0x5C381600, // 008B MOVE R14 R11 - 0x7C300400, // 008C CALL R12 2 - 0x78320009, // 008D JMPF R12 #0098 - 0x8830172D, // 008E GETMBR R12 R11 K45 - 0x4C340000, // 008F LDNIL R13 - 0x2030180D, // 0090 NE R12 R12 R13 - 0x78320005, // 0091 JMPF R12 #0098 - 0x8C30172D, // 0092 GETMET R12 R11 K45 - 0x5C381200, // 0093 MOVE R14 R9 - 0x583C0000, // 0094 LDCONST R15 K0 - 0x7C300600, // 0095 CALL R12 3 - 0x5C281800, // 0096 MOVE R10 R12 - 0x70020033, // 0097 JMP #00CC - 0x5C281600, // 0098 MOVE R10 R11 - 0x54320017, // 0099 LDINT R12 24 - 0x3C30140C, // 009A SHR R12 R10 R12 - 0x543600FE, // 009B LDINT R13 255 - 0x2C30180D, // 009C AND R12 R12 R13 - 0x5436000F, // 009D LDINT R13 16 - 0x3C34140D, // 009E SHR R13 R10 R13 - 0x543A00FE, // 009F LDINT R14 255 - 0x2C341A0E, // 00A0 AND R13 R13 R14 - 0x543A0007, // 00A1 LDINT R14 8 - 0x3C38140E, // 00A2 SHR R14 R10 R14 - 0x543E00FE, // 00A3 LDINT R15 255 - 0x2C381C0F, // 00A4 AND R14 R14 R15 - 0x543E00FE, // 00A5 LDINT R15 255 - 0x2C3C140F, // 00A6 AND R15 R10 R15 - 0xB8423E00, // 00A7 GETNGBL R16 K31 - 0x8C402120, // 00A8 GETMET R16 R16 K32 - 0x5C481200, // 00A9 MOVE R18 R9 - 0x584C0000, // 00AA LDCONST R19 K0 - 0x545200FE, // 00AB LDINT R20 255 - 0x58540000, // 00AC LDCONST R21 K0 - 0x5C581A00, // 00AD MOVE R22 R13 - 0x7C400C00, // 00AE CALL R16 6 - 0x5C342000, // 00AF MOVE R13 R16 - 0xB8423E00, // 00B0 GETNGBL R16 K31 - 0x8C402120, // 00B1 GETMET R16 R16 K32 - 0x5C481200, // 00B2 MOVE R18 R9 - 0x584C0000, // 00B3 LDCONST R19 K0 - 0x545200FE, // 00B4 LDINT R20 255 - 0x58540000, // 00B5 LDCONST R21 K0 - 0x5C581C00, // 00B6 MOVE R22 R14 - 0x7C400C00, // 00B7 CALL R16 6 - 0x5C382000, // 00B8 MOVE R14 R16 - 0xB8423E00, // 00B9 GETNGBL R16 K31 - 0x8C402120, // 00BA GETMET R16 R16 K32 - 0x5C481200, // 00BB MOVE R18 R9 - 0x584C0000, // 00BC LDCONST R19 K0 - 0x545200FE, // 00BD LDINT R20 255 - 0x58540000, // 00BE LDCONST R21 K0 - 0x5C581E00, // 00BF MOVE R22 R15 - 0x7C400C00, // 00C0 CALL R16 6 - 0x5C3C2000, // 00C1 MOVE R15 R16 - 0x54420017, // 00C2 LDINT R16 24 - 0x38401810, // 00C3 SHL R16 R12 R16 - 0x5446000F, // 00C4 LDINT R17 16 - 0x38441A11, // 00C5 SHL R17 R13 R17 - 0x30402011, // 00C6 OR R16 R16 R17 - 0x54460007, // 00C7 LDINT R17 8 - 0x38441C11, // 00C8 SHL R17 R14 R17 - 0x30402011, // 00C9 OR R16 R16 R17 - 0x3040200F, // 00CA OR R16 R16 R15 - 0x5C282000, // 00CB MOVE R10 R16 - 0x882C0108, // 00CC GETMBR R11 R0 K8 - 0x982C100A, // 00CD SETIDX R11 R8 R10 - 0x00201109, // 00CE ADD R8 R8 K9 - 0x7001FF80, // 00CF JMP #0051 - 0x80000000, // 00D0 RET 0 + 0x74220006, // 000C JMPT R8 #0014 + 0x88200108, // 000D GETMBR R8 R0 K8 + 0x8C201120, // 000E GETMET R8 R8 K32 + 0x7C200200, // 000F CALL R8 1 + 0x54260003, // 0010 LDINT R9 4 + 0x08240E09, // 0011 MUL R9 R7 R9 + 0x20201009, // 0012 NE R8 R8 R9 + 0x78220001, // 0013 JMPF R8 #0016 + 0x8C200121, // 0014 GETMET R8 R0 K33 + 0x7C200200, // 0015 CALL R8 1 + 0x58200000, // 0016 LDCONST R8 K0 + 0x14241007, // 0017 LT R9 R8 R7 + 0x78260017, // 0018 JMPF R9 #0031 + 0x8C240122, // 0019 GETMET R9 R0 K34 + 0xB82E4600, // 001A GETNGBL R11 K35 + 0x8C2C1724, // 001B GETMET R11 R11 K36 + 0x5C340400, // 001C MOVE R13 R2 + 0x58380000, // 001D LDCONST R14 K0 + 0x543E00FE, // 001E LDINT R15 255 + 0x58400000, // 001F LDCONST R16 K0 + 0x54460009, // 0020 LDINT R17 10 + 0x7C2C0C00, // 0021 CALL R11 6 + 0x002C1725, // 0022 ADD R11 R11 K37 + 0x7C240400, // 0023 CALL R9 2 + 0x88280110, // 0024 GETMBR R10 R0 K16 + 0x94281408, // 0025 GETIDX R10 R10 R8 + 0x2828120A, // 0026 GE R10 R9 R10 + 0x782A0002, // 0027 JMPF R10 #002B + 0x88280110, // 0028 GETMBR R10 R0 K16 + 0x98281100, // 0029 SETIDX R10 R8 K0 + 0x70020003, // 002A JMP #002F + 0x88280110, // 002B GETMBR R10 R0 K16 + 0x942C1408, // 002C GETIDX R11 R10 R8 + 0x042C1609, // 002D SUB R11 R11 R9 + 0x9828100B, // 002E SETIDX R10 R8 R11 + 0x0020110A, // 002F ADD R8 R8 K10 + 0x7001FFE5, // 0030 JMP #0017 + 0x28240F26, // 0031 GE R9 R7 K38 + 0x7826001D, // 0032 JMPF R9 #0051 + 0x04240F0A, // 0033 SUB R9 R7 K10 + 0x28281325, // 0034 GE R10 R9 K37 + 0x782A001A, // 0035 JMPF R10 #0051 + 0x0428130A, // 0036 SUB R10 R9 K10 + 0x882C0110, // 0037 GETMBR R11 R0 K16 + 0x9428160A, // 0038 GETIDX R10 R11 R10 + 0x042C1325, // 0039 SUB R11 R9 K37 + 0x88300110, // 003A GETMBR R12 R0 K16 + 0x942C180B, // 003B GETIDX R11 R12 R11 + 0x0028140B, // 003C ADD R10 R10 R11 + 0x042C1325, // 003D SUB R11 R9 K37 + 0x88300110, // 003E GETMBR R12 R0 K16 + 0x942C180B, // 003F GETIDX R11 R12 R11 + 0x0028140B, // 0040 ADD R10 R10 R11 + 0x0C281526, // 0041 DIV R10 R10 K38 + 0x142C1500, // 0042 LT R11 R10 K0 + 0x782E0001, // 0043 JMPF R11 #0046 + 0x58280000, // 0044 LDCONST R10 K0 + 0x70020003, // 0045 JMP #004A + 0x542E00FE, // 0046 LDINT R11 255 + 0x242C140B, // 0047 GT R11 R10 R11 + 0x782E0000, // 0048 JMPF R11 #004A + 0x542A00FE, // 0049 LDINT R10 255 + 0x882C0110, // 004A GETMBR R11 R0 K16 + 0x60300009, // 004B GETGBL R12 G9 + 0x5C341400, // 004C MOVE R13 R10 + 0x7C300200, // 004D CALL R12 1 + 0x982C120C, // 004E SETIDX R11 R9 R12 + 0x0424130A, // 004F SUB R9 R9 K10 + 0x7001FFE2, // 0050 JMP #0034 + 0x8C240122, // 0051 GETMET R9 R0 K34 + 0x542E00FE, // 0052 LDINT R11 255 + 0x7C240400, // 0053 CALL R9 2 + 0x14241203, // 0054 LT R9 R9 R3 + 0x7826000F, // 0055 JMPF R9 #0066 + 0x8C240122, // 0056 GETMET R9 R0 K34 + 0x542E0006, // 0057 LDINT R11 7 + 0x7C240400, // 0058 CALL R9 2 + 0x8C280122, // 0059 GETMET R10 R0 K34 + 0x5432005E, // 005A LDINT R12 95 + 0x7C280400, // 005B CALL R10 2 + 0x542E009F, // 005C LDINT R11 160 + 0x0028140B, // 005D ADD R10 R10 R11 + 0x542E00FE, // 005E LDINT R11 255 + 0x242C140B, // 005F GT R11 R10 R11 + 0x782E0000, // 0060 JMPF R11 #0062 + 0x542A00FE, // 0061 LDINT R10 255 + 0x142C1207, // 0062 LT R11 R9 R7 + 0x782E0001, // 0063 JMPF R11 #0066 + 0x882C0110, // 0064 GETMBR R11 R0 K16 + 0x982C120A, // 0065 SETIDX R11 R9 R10 + 0x58200000, // 0066 LDCONST R8 K0 + 0x14241007, // 0067 LT R9 R8 R7 + 0x78260081, // 0068 JMPF R9 #00EB + 0x88240110, // 0069 GETMBR R9 R0 K16 + 0x94241208, // 006A GETIDX R9 R9 R8 + 0xB82A4600, // 006B GETNGBL R10 K35 + 0x8C281524, // 006C GETMET R10 R10 K36 + 0x5C301200, // 006D MOVE R12 R9 + 0x58340000, // 006E LDCONST R13 K0 + 0x543A00FE, // 006F LDINT R14 255 + 0x583C0000, // 0070 LDCONST R15 K0 + 0x5C400800, // 0071 MOVE R16 R4 + 0x7C280C00, // 0072 CALL R10 6 + 0x5C241400, // 0073 MOVE R9 R10 + 0x24280B00, // 0074 GT R10 R5 K0 + 0x782A0012, // 0075 JMPF R10 #0089 + 0x8C280122, // 0076 GETMET R10 R0 K34 + 0x5C300A00, // 0077 MOVE R12 R5 + 0x7C280400, // 0078 CALL R10 2 + 0x8C2C0122, // 0079 GETMET R11 R0 K34 + 0x58340025, // 007A LDCONST R13 K37 + 0x7C2C0400, // 007B CALL R11 2 + 0x1C2C1700, // 007C EQ R11 R11 K0 + 0x782E0001, // 007D JMPF R11 #0080 + 0x0024120A, // 007E ADD R9 R9 R10 + 0x70020004, // 007F JMP #0085 + 0x242C120A, // 0080 GT R11 R9 R10 + 0x782E0001, // 0081 JMPF R11 #0084 + 0x0424120A, // 0082 SUB R9 R9 R10 + 0x70020000, // 0083 JMP #0085 + 0x58240000, // 0084 LDCONST R9 K0 + 0x542E00FE, // 0085 LDINT R11 255 + 0x242C120B, // 0086 GT R11 R9 R11 + 0x782E0000, // 0087 JMPF R11 #0089 + 0x542600FE, // 0088 LDINT R9 255 + 0x58280017, // 0089 LDCONST R10 K23 + 0x242C1300, // 008A GT R11 R9 K0 + 0x782E0055, // 008B JMPF R11 #00E2 + 0x5C2C0C00, // 008C MOVE R11 R6 + 0x4C300000, // 008D LDNIL R12 + 0x1C30160C, // 008E EQ R12 R11 R12 + 0x7832000E, // 008F JMPF R12 #009F + 0xB8324E00, // 0090 GETNGBL R12 K39 + 0x8C301928, // 0091 GETMET R12 R12 K40 + 0x88380104, // 0092 GETMBR R14 R0 K4 + 0x7C300400, // 0093 CALL R12 2 + 0xB8364E00, // 0094 GETNGBL R13 K39 + 0x88341B2A, // 0095 GETMBR R13 R13 K42 + 0x9032520D, // 0096 SETMBR R12 K41 R13 + 0x90325700, // 0097 SETMBR R12 K43 K0 + 0x9032590A, // 0098 SETMBR R12 K44 K10 + 0x543600FE, // 0099 LDINT R13 255 + 0x90325A0D, // 009A SETMBR R12 K45 R13 + 0x90325D00, // 009B SETMBR R12 K46 K0 + 0x543600FE, // 009C LDINT R13 255 + 0x90325E0D, // 009D SETMBR R12 K47 R13 + 0x5C2C1800, // 009E MOVE R11 R12 + 0xB8324E00, // 009F GETNGBL R12 K39 + 0x8C301930, // 00A0 GETMET R12 R12 K48 + 0x5C381600, // 00A1 MOVE R14 R11 + 0x7C300400, // 00A2 CALL R12 2 + 0x78320009, // 00A3 JMPF R12 #00AE + 0x88301731, // 00A4 GETMBR R12 R11 K49 + 0x4C340000, // 00A5 LDNIL R13 + 0x2030180D, // 00A6 NE R12 R12 R13 + 0x78320005, // 00A7 JMPF R12 #00AE + 0x8C301731, // 00A8 GETMET R12 R11 K49 + 0x5C381200, // 00A9 MOVE R14 R9 + 0x583C0000, // 00AA LDCONST R15 K0 + 0x7C300600, // 00AB CALL R12 3 + 0x5C281800, // 00AC MOVE R10 R12 + 0x70020033, // 00AD JMP #00E2 + 0x5C281600, // 00AE MOVE R10 R11 + 0x54320017, // 00AF LDINT R12 24 + 0x3C30140C, // 00B0 SHR R12 R10 R12 + 0x543600FE, // 00B1 LDINT R13 255 + 0x2C30180D, // 00B2 AND R12 R12 R13 + 0x5436000F, // 00B3 LDINT R13 16 + 0x3C34140D, // 00B4 SHR R13 R10 R13 + 0x543A00FE, // 00B5 LDINT R14 255 + 0x2C341A0E, // 00B6 AND R13 R13 R14 + 0x543A0007, // 00B7 LDINT R14 8 + 0x3C38140E, // 00B8 SHR R14 R10 R14 + 0x543E00FE, // 00B9 LDINT R15 255 + 0x2C381C0F, // 00BA AND R14 R14 R15 + 0x543E00FE, // 00BB LDINT R15 255 + 0x2C3C140F, // 00BC AND R15 R10 R15 + 0xB8424600, // 00BD GETNGBL R16 K35 + 0x8C402124, // 00BE GETMET R16 R16 K36 + 0x5C481200, // 00BF MOVE R18 R9 + 0x584C0000, // 00C0 LDCONST R19 K0 + 0x545200FE, // 00C1 LDINT R20 255 + 0x58540000, // 00C2 LDCONST R21 K0 + 0x5C581A00, // 00C3 MOVE R22 R13 + 0x7C400C00, // 00C4 CALL R16 6 + 0x5C342000, // 00C5 MOVE R13 R16 + 0xB8424600, // 00C6 GETNGBL R16 K35 + 0x8C402124, // 00C7 GETMET R16 R16 K36 + 0x5C481200, // 00C8 MOVE R18 R9 + 0x584C0000, // 00C9 LDCONST R19 K0 + 0x545200FE, // 00CA LDINT R20 255 + 0x58540000, // 00CB LDCONST R21 K0 + 0x5C581C00, // 00CC MOVE R22 R14 + 0x7C400C00, // 00CD CALL R16 6 + 0x5C382000, // 00CE MOVE R14 R16 + 0xB8424600, // 00CF GETNGBL R16 K35 + 0x8C402124, // 00D0 GETMET R16 R16 K36 + 0x5C481200, // 00D1 MOVE R18 R9 + 0x584C0000, // 00D2 LDCONST R19 K0 + 0x545200FE, // 00D3 LDINT R20 255 + 0x58540000, // 00D4 LDCONST R21 K0 + 0x5C581E00, // 00D5 MOVE R22 R15 + 0x7C400C00, // 00D6 CALL R16 6 + 0x5C3C2000, // 00D7 MOVE R15 R16 + 0x54420017, // 00D8 LDINT R16 24 + 0x38401810, // 00D9 SHL R16 R12 R16 + 0x5446000F, // 00DA LDINT R17 16 + 0x38441A11, // 00DB SHL R17 R13 R17 + 0x30402011, // 00DC OR R16 R16 R17 + 0x54460007, // 00DD LDINT R17 8 + 0x38441C11, // 00DE SHL R17 R14 R17 + 0x30402011, // 00DF OR R16 R16 R17 + 0x3040200F, // 00E0 OR R16 R16 R15 + 0x5C282000, // 00E1 MOVE R10 R16 + 0x882C0108, // 00E2 GETMBR R11 R0 K8 + 0x8C2C1716, // 00E3 GETMET R11 R11 K22 + 0x54360003, // 00E4 LDINT R13 4 + 0x0834100D, // 00E5 MUL R13 R8 R13 + 0x5C381400, // 00E6 MOVE R14 R10 + 0x543DFFFB, // 00E7 LDINT R15 -4 + 0x7C2C0800, // 00E8 CALL R11 4 + 0x0020110A, // 00E9 ADD R8 R8 K10 + 0x7001FF7B, // 00EA JMP #0067 + 0x80000000, // 00EB RET 0 }) ) ); @@ -5721,17 +3779,17 @@ be_local_closure(class_FireAnimation_start, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08052E, // 0003 GETMET R2 R2 K46 + 0x8C080532, // 0003 GETMET R2 R2 K50 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x90022100, // 0006 SETMBR R0 K16 K0 - 0x8C08011D, // 0007 GETMET R2 R0 K29 + 0x90022300, // 0006 SETMBR R0 K17 K0 + 0x8C080121, // 0007 GETMET R2 R0 K33 0x7C080200, // 0008 CALL R2 1 0x88080104, // 0009 GETMBR R2 R0 K4 - 0x88080512, // 000A GETMBR R2 R2 K18 + 0x88080513, // 000A GETMBR R2 R2 K19 0x540EFFFF, // 000B LDINT R3 65536 0x10080403, // 000C MOD R2 R2 R3 - 0x90022202, // 000D SETMBR R0 K17 R2 + 0x90022402, // 000D SETMBR R0 K18 R2 0x80040000, // 000E RET 1 R0 }) ) @@ -5758,28 +3816,21 @@ be_local_class(FireAnimation, { be_const_key_weak(last_update, -1), be_const_var(2) }, { be_const_key_weak(_initialize_buffers, 6), be_const_closure(class_FireAnimation__initialize_buffers_closure) }, { be_const_key_weak(PARAMS, 10), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, + be_const_map( * be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(intensity, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(180) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(cooling_rate, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(55) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(flicker_amount, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(flicker_amount, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(default, -1), be_const_int(100) }, { be_const_key_weak(min, -1), be_const_int(0) }, { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(intensity, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(180) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, })) ) } )) }, { be_const_key_weak(flicker_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(3, @@ -5787,11 +3838,6 @@ be_local_class(FireAnimation, { be_const_key_weak(default, -1), be_const_int(8) }, { be_const_key_weak(min, -1), be_const_int(1) }, { be_const_key_weak(max, 1), be_const_int(20) }, - })) ) } )) }, - { be_const_key_weak(color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, })) ) } )) }, { be_const_key_weak(sparking_rate, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(3, @@ -5799,6 +3845,13 @@ be_local_class(FireAnimation, { be_const_key_weak(default, -1), be_const_int(120) }, { be_const_key_weak(min, -1), be_const_int(0) }, { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(cooling_rate, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(55) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, })) ) } )) }, })) ) } )) }, { be_const_key_weak(_random, 2), be_const_closure(class_FireAnimation__random_closure) }, @@ -5808,978 +3861,6 @@ be_local_class(FireAnimation, })), be_str_weak(FireAnimation) ); - -/******************************************************************** -** Solidified function: jitter_position -********************************************************************/ -be_local_closure(jitter_position, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(jitter_animation), - /* K2 */ be_nested_str_weak(jitter_type), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(position_range), - }), - be_str_weak(jitter_position), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A0031, // 0005 LDINT R2 50 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sparkle_white -********************************************************************/ -be_local_closure(sparkle_white, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(sparkle_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(name), - /* K4 */ be_nested_str_weak(sparkle_white), - }), - be_str_weak(sparkle_white), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'JitterAnimation' ktab size: 49, total: 95 (saved 368 bytes) -static const bvalue be_ktab_class_JitterAnimation[49] = { - /* K0 */ be_nested_str_weak(jitter_type), - /* K1 */ be_nested_str_weak(color_range), - /* K2 */ be_nested_str_weak(brightness_range), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(scale_uint), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(_random_range), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str_weak(position), - /* K11 */ be_nested_str_weak(color), - /* K12 */ be_nested_str_weak(brightness), - /* K13 */ be_nested_str_weak(all), - /* K14 */ be_nested_str_weak(unknown), - /* K15 */ be_nested_str_weak(JitterAnimation_X28_X25s_X2C_X20intensity_X3D_X25s_X2C_X20frequency_X3D_X25s_X29), - /* K16 */ be_nested_str_weak(jitter_intensity), - /* K17 */ be_nested_str_weak(jitter_frequency), - /* K18 */ be_nested_str_weak(_random), - /* K19 */ be_nested_str_weak(init), - /* K20 */ be_nested_str_weak(random_seed), - /* K21 */ be_nested_str_weak(engine), - /* K22 */ be_nested_str_weak(time_ms), - /* K23 */ be_nested_str_weak(last_jitter_time), - /* K24 */ be_nested_str_weak(_initialize_buffers), - /* K25 */ be_nested_str_weak(get_strip_length), - /* K26 */ be_nested_str_weak(jitter_offsets), - /* K27 */ be_nested_str_weak(source_animation), - /* K28 */ be_nested_str_weak(position_range), - /* K29 */ be_nested_str_weak(source_frame), - /* K30 */ be_nested_str_weak(clear), - /* K31 */ be_nested_str_weak(render), - /* K32 */ be_const_int(-16777216), - /* K33 */ be_nested_str_weak(get_pixel_color), - /* K34 */ be_nested_str_weak(_apply_color_jitter), - /* K35 */ be_nested_str_weak(current_colors), - /* K36 */ be_nested_str_weak(is_running), - /* K37 */ be_nested_str_weak(_fix_time_ms), - /* K38 */ be_nested_str_weak(width), - /* K39 */ be_nested_str_weak(set_pixel_color), - /* K40 */ be_const_int(1103515245), - /* K41 */ be_const_int(2147483647), - /* K42 */ be_nested_str_weak(update), - /* K43 */ be_nested_str_weak(_update_jitter), - /* K44 */ be_nested_str_weak(_calculate_jitter), - /* K45 */ be_nested_str_weak(start), - /* K46 */ be_nested_str_weak(resize), - /* K47 */ be_nested_str_weak(animation), - /* K48 */ be_nested_str_weak(frame_buffer), -}; - - -extern const bclass be_class_JitterAnimation; - -/******************************************************************** -** Solidified function: _apply_color_jitter -********************************************************************/ -be_local_closure(class_JitterAnimation__apply_color_jitter, /* name */ - be_nested_proto( - 19, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(_apply_color_jitter), - &be_const_str_solidified, - ( &(const binstruction[127]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x541A0017, // 0003 LDINT R6 24 - 0x3C180206, // 0004 SHR R6 R1 R6 - 0x541E00FE, // 0005 LDINT R7 255 - 0x2C180C07, // 0006 AND R6 R6 R7 - 0x541E000F, // 0007 LDINT R7 16 - 0x3C1C0207, // 0008 SHR R7 R1 R7 - 0x542200FE, // 0009 LDINT R8 255 - 0x2C1C0E08, // 000A AND R7 R7 R8 - 0x54220007, // 000B LDINT R8 8 - 0x3C200208, // 000C SHR R8 R1 R8 - 0x542600FE, // 000D LDINT R9 255 - 0x2C201009, // 000E AND R8 R8 R9 - 0x542600FE, // 000F LDINT R9 255 - 0x2C240209, // 0010 AND R9 R1 R9 - 0x1C280703, // 0011 EQ R10 R3 K3 - 0x742A0001, // 0012 JMPT R10 #0015 - 0x1C280704, // 0013 EQ R10 R3 K4 - 0x782A0013, // 0014 JMPF R10 #0029 - 0xB82A0A00, // 0015 GETNGBL R10 K5 - 0x8C281506, // 0016 GETMET R10 R10 K6 - 0x5C300800, // 0017 MOVE R12 R4 - 0x58340007, // 0018 LDCONST R13 K7 - 0x543A00FE, // 0019 LDINT R14 255 - 0x583C0007, // 001A LDCONST R15 K7 - 0x5442001D, // 001B LDINT R16 30 - 0x7C280C00, // 001C CALL R10 6 - 0x8C2C0108, // 001D GETMET R11 R0 K8 - 0x5C341400, // 001E MOVE R13 R10 - 0x7C2C0400, // 001F CALL R11 2 - 0x001C0E0B, // 0020 ADD R7 R7 R11 - 0x8C2C0108, // 0021 GETMET R11 R0 K8 - 0x5C341400, // 0022 MOVE R13 R10 - 0x7C2C0400, // 0023 CALL R11 2 - 0x0020100B, // 0024 ADD R8 R8 R11 - 0x8C2C0108, // 0025 GETMET R11 R0 K8 - 0x5C341400, // 0026 MOVE R13 R10 - 0x7C2C0400, // 0027 CALL R11 2 - 0x0024120B, // 0028 ADD R9 R9 R11 - 0x1C280709, // 0029 EQ R10 R3 K9 - 0x742A0001, // 002A JMPT R10 #002D - 0x1C280704, // 002B EQ R10 R3 K4 - 0x782A002F, // 002C JMPF R10 #005D - 0xB82A0A00, // 002D GETNGBL R10 K5 - 0x8C281506, // 002E GETMET R10 R10 K6 - 0x5C300A00, // 002F MOVE R12 R5 - 0x58340007, // 0030 LDCONST R13 K7 - 0x543A00FE, // 0031 LDINT R14 255 - 0x583C0007, // 0032 LDCONST R15 K7 - 0x54420031, // 0033 LDINT R16 50 - 0x7C280C00, // 0034 CALL R10 6 - 0x542E007F, // 0035 LDINT R11 128 - 0x8C300108, // 0036 GETMET R12 R0 K8 - 0x5C381400, // 0037 MOVE R14 R10 - 0x7C300400, // 0038 CALL R12 2 - 0x002C160C, // 0039 ADD R11 R11 R12 - 0x14301707, // 003A LT R12 R11 K7 - 0x78320001, // 003B JMPF R12 #003E - 0x582C0007, // 003C LDCONST R11 K7 - 0x70020003, // 003D JMP #0042 - 0x543200FE, // 003E LDINT R12 255 - 0x2430160C, // 003F GT R12 R11 R12 - 0x78320000, // 0040 JMPF R12 #0042 - 0x542E00FE, // 0041 LDINT R11 255 - 0xB8320A00, // 0042 GETNGBL R12 K5 - 0x8C301906, // 0043 GETMET R12 R12 K6 - 0x5C380E00, // 0044 MOVE R14 R7 - 0x583C0007, // 0045 LDCONST R15 K7 - 0x544200FE, // 0046 LDINT R16 255 - 0x58440007, // 0047 LDCONST R17 K7 - 0x5C481600, // 0048 MOVE R18 R11 - 0x7C300C00, // 0049 CALL R12 6 - 0x5C1C1800, // 004A MOVE R7 R12 - 0xB8320A00, // 004B GETNGBL R12 K5 - 0x8C301906, // 004C GETMET R12 R12 K6 - 0x5C381000, // 004D MOVE R14 R8 - 0x583C0007, // 004E LDCONST R15 K7 - 0x544200FE, // 004F LDINT R16 255 - 0x58440007, // 0050 LDCONST R17 K7 - 0x5C481600, // 0051 MOVE R18 R11 - 0x7C300C00, // 0052 CALL R12 6 - 0x5C201800, // 0053 MOVE R8 R12 - 0xB8320A00, // 0054 GETNGBL R12 K5 - 0x8C301906, // 0055 GETMET R12 R12 K6 - 0x5C381200, // 0056 MOVE R14 R9 - 0x583C0007, // 0057 LDCONST R15 K7 - 0x544200FE, // 0058 LDINT R16 255 - 0x58440007, // 0059 LDCONST R17 K7 - 0x5C481600, // 005A MOVE R18 R11 - 0x7C300C00, // 005B CALL R12 6 - 0x5C241800, // 005C MOVE R9 R12 - 0x542A00FE, // 005D LDINT R10 255 - 0x24280E0A, // 005E GT R10 R7 R10 - 0x782A0001, // 005F JMPF R10 #0062 - 0x541E00FE, // 0060 LDINT R7 255 - 0x70020002, // 0061 JMP #0065 - 0x14280F07, // 0062 LT R10 R7 K7 - 0x782A0000, // 0063 JMPF R10 #0065 - 0x581C0007, // 0064 LDCONST R7 K7 - 0x542A00FE, // 0065 LDINT R10 255 - 0x2428100A, // 0066 GT R10 R8 R10 - 0x782A0001, // 0067 JMPF R10 #006A - 0x542200FE, // 0068 LDINT R8 255 - 0x70020002, // 0069 JMP #006D - 0x14281107, // 006A LT R10 R8 K7 - 0x782A0000, // 006B JMPF R10 #006D - 0x58200007, // 006C LDCONST R8 K7 - 0x542A00FE, // 006D LDINT R10 255 - 0x2428120A, // 006E GT R10 R9 R10 - 0x782A0001, // 006F JMPF R10 #0072 - 0x542600FE, // 0070 LDINT R9 255 - 0x70020002, // 0071 JMP #0075 - 0x14281307, // 0072 LT R10 R9 K7 - 0x782A0000, // 0073 JMPF R10 #0075 - 0x58240007, // 0074 LDCONST R9 K7 - 0x542A0017, // 0075 LDINT R10 24 - 0x38280C0A, // 0076 SHL R10 R6 R10 - 0x542E000F, // 0077 LDINT R11 16 - 0x382C0E0B, // 0078 SHL R11 R7 R11 - 0x3028140B, // 0079 OR R10 R10 R11 - 0x542E0007, // 007A LDINT R11 8 - 0x382C100B, // 007B SHL R11 R8 R11 - 0x3028140B, // 007C OR R10 R10 R11 - 0x30281409, // 007D OR R10 R10 R9 - 0x80041400, // 007E RET 1 R10 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_JitterAnimation_tostring, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x4008030A, // 0002 CONNECT R2 R1 K10 - 0x4008030B, // 0003 CONNECT R2 R1 K11 - 0x4008030C, // 0004 CONNECT R2 R1 K12 - 0x4008030D, // 0005 CONNECT R2 R1 K13 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x940C0202, // 0007 GETIDX R3 R1 R2 - 0x4C100000, // 0008 LDNIL R4 - 0x200C0604, // 0009 NE R3 R3 R4 - 0x780E0001, // 000A JMPF R3 #000D - 0x940C0202, // 000B GETIDX R3 R1 R2 - 0x70020000, // 000C JMP #000E - 0x580C000E, // 000D LDCONST R3 K14 - 0x60100018, // 000E GETGBL R4 G24 - 0x5814000F, // 000F LDCONST R5 K15 - 0x5C180600, // 0010 MOVE R6 R3 - 0x881C0110, // 0011 GETMBR R7 R0 K16 - 0x88200111, // 0012 GETMBR R8 R0 K17 - 0x7C100800, // 0013 CALL R4 4 - 0x80040800, // 0014 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random_range -********************************************************************/ -be_local_closure(class_JitterAnimation__random_range, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(_random_range), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x18080307, // 0000 LE R2 R1 K7 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80060E00, // 0002 RET 1 K7 - 0x8C080112, // 0003 GETMET R2 R0 K18 - 0x7C080200, // 0004 CALL R2 1 - 0x080C0309, // 0005 MUL R3 R1 K9 - 0x000C0703, // 0006 ADD R3 R3 K3 - 0x10080403, // 0007 MOD R2 R2 R3 - 0x040C0401, // 0008 SUB R3 R2 R1 - 0x80040600, // 0009 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_JitterAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080513, // 0003 GETMET R2 R2 K19 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080115, // 0006 GETMBR R2 R0 K21 - 0x88080516, // 0007 GETMBR R2 R2 K22 - 0x540EFFFF, // 0008 LDINT R3 65536 - 0x10080403, // 0009 MOD R2 R2 R3 - 0x90022802, // 000A SETMBR R0 K20 R2 - 0x90022F07, // 000B SETMBR R0 K23 K7 - 0x8C080118, // 000C GETMET R2 R0 K24 - 0x7C080200, // 000D CALL R2 1 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_jitter -********************************************************************/ -be_local_closure(class_JitterAnimation__update_jitter, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(_update_jitter), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x88040115, // 0000 GETMBR R1 R0 K21 - 0x8C040319, // 0001 GETMET R1 R1 K25 - 0x7C040200, // 0002 CALL R1 1 - 0x88080110, // 0003 GETMBR R2 R0 K16 - 0xB80E0A00, // 0004 GETNGBL R3 K5 - 0x8C0C0706, // 0005 GETMET R3 R3 K6 - 0x5C140400, // 0006 MOVE R5 R2 - 0x58180007, // 0007 LDCONST R6 K7 - 0x541E00FE, // 0008 LDINT R7 255 - 0x58200007, // 0009 LDCONST R8 K7 - 0x54260009, // 000A LDINT R9 10 - 0x7C0C0C00, // 000B CALL R3 6 - 0x58100007, // 000C LDCONST R4 K7 - 0x14140801, // 000D LT R5 R4 R1 - 0x78160006, // 000E JMPF R5 #0016 - 0x8814011A, // 000F GETMBR R5 R0 K26 - 0x8C180108, // 0010 GETMET R6 R0 K8 - 0x5C200600, // 0011 MOVE R8 R3 - 0x7C180400, // 0012 CALL R6 2 - 0x98140806, // 0013 SETIDX R5 R4 R6 - 0x00100903, // 0014 ADD R4 R4 K3 - 0x7001FFF6, // 0015 JMP #000D - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_jitter -********************************************************************/ -be_local_closure(class_JitterAnimation__calculate_jitter, /* name */ - be_nested_proto( - 14, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(_calculate_jitter), - &be_const_str_solidified, - ( &(const binstruction[72]) { /* code */ - 0x88040115, // 0000 GETMBR R1 R0 K21 - 0x8C040319, // 0001 GETMET R1 R1 K25 - 0x7C040200, // 0002 CALL R1 1 - 0x8808011B, // 0003 GETMBR R2 R0 K27 - 0x880C0100, // 0004 GETMBR R3 R0 K0 - 0x8810011C, // 0005 GETMBR R4 R0 K28 - 0x8814011D, // 0006 GETMBR R5 R0 K29 - 0x8C140B1E, // 0007 GETMET R5 R5 K30 - 0x7C140200, // 0008 CALL R5 1 - 0x4C140000, // 0009 LDNIL R5 - 0x20140405, // 000A NE R5 R2 R5 - 0x78160003, // 000B JMPF R5 #0010 - 0x8C14051F, // 000C GETMET R5 R2 K31 - 0x881C011D, // 000D GETMBR R7 R0 K29 - 0x58200007, // 000E LDCONST R8 K7 - 0x7C140600, // 000F CALL R5 3 - 0x58140007, // 0010 LDCONST R5 K7 - 0x14180A01, // 0011 LT R6 R5 R1 - 0x781A0033, // 0012 JMPF R6 #0047 - 0x58180020, // 0013 LDCONST R6 K32 - 0x1C1C0707, // 0014 EQ R7 R3 K7 - 0x741E0001, // 0015 JMPT R7 #0018 - 0x1C1C0704, // 0016 EQ R7 R3 K4 - 0x781E0018, // 0017 JMPF R7 #0031 - 0xB81E0A00, // 0018 GETNGBL R7 K5 - 0x8C1C0F06, // 0019 GETMET R7 R7 K6 - 0x8824011A, // 001A GETMBR R9 R0 K26 - 0x94241205, // 001B GETIDX R9 R9 R5 - 0x5429FFF5, // 001C LDINT R10 -10 - 0x542E0009, // 001D LDINT R11 10 - 0x44300800, // 001E NEG R12 R4 - 0x54360009, // 001F LDINT R13 10 - 0x0C30180D, // 0020 DIV R12 R12 R13 - 0x54360009, // 0021 LDINT R13 10 - 0x0C34080D, // 0022 DIV R13 R4 R13 - 0x7C1C0C00, // 0023 CALL R7 6 - 0x00200A07, // 0024 ADD R8 R5 R7 - 0x28241107, // 0025 GE R9 R8 K7 - 0x78260007, // 0026 JMPF R9 #002F - 0x14241001, // 0027 LT R9 R8 R1 - 0x78260005, // 0028 JMPF R9 #002F - 0x8824011D, // 0029 GETMBR R9 R0 K29 - 0x8C241321, // 002A GETMET R9 R9 K33 - 0x5C2C1000, // 002B MOVE R11 R8 - 0x7C240400, // 002C CALL R9 2 - 0x5C181200, // 002D MOVE R6 R9 - 0x70020000, // 002E JMP #0030 - 0x58180020, // 002F LDCONST R6 K32 - 0x70020004, // 0030 JMP #0036 - 0x881C011D, // 0031 GETMBR R7 R0 K29 - 0x8C1C0F21, // 0032 GETMET R7 R7 K33 - 0x5C240A00, // 0033 MOVE R9 R5 - 0x7C1C0400, // 0034 CALL R7 2 - 0x5C180E00, // 0035 MOVE R6 R7 - 0x1C1C0703, // 0036 EQ R7 R3 K3 - 0x741E0003, // 0037 JMPT R7 #003C - 0x1C1C0709, // 0038 EQ R7 R3 K9 - 0x741E0001, // 0039 JMPT R7 #003C - 0x1C1C0704, // 003A EQ R7 R3 K4 - 0x781E0006, // 003B JMPF R7 #0043 - 0x201C0D20, // 003C NE R7 R6 K32 - 0x781E0004, // 003D JMPF R7 #0043 - 0x8C1C0122, // 003E GETMET R7 R0 K34 - 0x5C240C00, // 003F MOVE R9 R6 - 0x5C280A00, // 0040 MOVE R10 R5 - 0x7C1C0600, // 0041 CALL R7 3 - 0x5C180E00, // 0042 MOVE R6 R7 - 0x881C0123, // 0043 GETMBR R7 R0 K35 - 0x981C0A06, // 0044 SETIDX R7 R5 R6 - 0x00140B03, // 0045 ADD R5 R5 K3 - 0x7001FFC9, // 0046 JMP #0011 - 0x80000000, // 0047 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_JitterAnimation_render, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x880C0124, // 0000 GETMBR R3 R0 K36 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x8C0C0125, // 0007 GETMET R3 R0 K37 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x5C080600, // 000A MOVE R2 R3 - 0x880C0115, // 000B GETMBR R3 R0 K21 - 0x8C0C0719, // 000C GETMET R3 R3 K25 - 0x7C0C0200, // 000D CALL R3 1 - 0x58100007, // 000E LDCONST R4 K7 - 0x14140803, // 000F LT R5 R4 R3 - 0x78160009, // 0010 JMPF R5 #001B - 0x88140326, // 0011 GETMBR R5 R1 K38 - 0x14140805, // 0012 LT R5 R4 R5 - 0x78160004, // 0013 JMPF R5 #0019 - 0x8C140327, // 0014 GETMET R5 R1 K39 - 0x5C1C0800, // 0015 MOVE R7 R4 - 0x88200123, // 0016 GETMBR R8 R0 K35 - 0x94201004, // 0017 GETIDX R8 R8 R4 - 0x7C140600, // 0018 CALL R5 3 - 0x00100903, // 0019 ADD R4 R4 K3 - 0x7001FFF3, // 001A JMP #000F - 0x50140200, // 001B LDBOOL R5 1 0 - 0x80040A00, // 001C RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random -********************************************************************/ -be_local_closure(class_JitterAnimation__random, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(_random), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040114, // 0000 GETMBR R1 R0 K20 - 0x08040328, // 0001 MUL R1 R1 K40 - 0x540A3038, // 0002 LDINT R2 12345 - 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040329, // 0004 AND R1 R1 K41 - 0x90022801, // 0005 SETMBR R0 K20 R1 - 0x88040114, // 0006 GETMBR R1 R0 K20 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_JitterAnimation_update, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08052A, // 0003 GETMET R2 R2 K42 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080111, // 0009 GETMBR R2 R0 K17 - 0x880C011B, // 000A GETMBR R3 R0 K27 - 0x24100507, // 000B GT R4 R2 K7 - 0x78120014, // 000C JMPF R4 #0022 - 0xB8120A00, // 000D GETNGBL R4 K5 - 0x8C100906, // 000E GETMET R4 R4 K6 - 0x5C180400, // 000F MOVE R6 R2 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x542200FE, // 0011 LDINT R8 255 - 0x58240007, // 0012 LDCONST R9 K7 - 0x542A001D, // 0013 LDINT R10 30 - 0x7C100C00, // 0014 CALL R4 6 - 0x24140907, // 0015 GT R5 R4 K7 - 0x78160002, // 0016 JMPF R5 #001A - 0x541603E7, // 0017 LDINT R5 1000 - 0x0C140A04, // 0018 DIV R5 R5 R4 - 0x70020000, // 0019 JMP #001B - 0x541603E7, // 001A LDINT R5 1000 - 0x88180117, // 001B GETMBR R6 R0 K23 - 0x04180206, // 001C SUB R6 R1 R6 - 0x28180C05, // 001D GE R6 R6 R5 - 0x781A0002, // 001E JMPF R6 #0022 - 0x90022E01, // 001F SETMBR R0 K23 R1 - 0x8C18012B, // 0020 GETMET R6 R0 K43 - 0x7C180200, // 0021 CALL R6 1 - 0x4C100000, // 0022 LDNIL R4 - 0x20100604, // 0023 NE R4 R3 R4 - 0x78120002, // 0024 JMPF R4 #0028 - 0x8C10072A, // 0025 GETMET R4 R3 K42 - 0x5C180200, // 0026 MOVE R6 R1 - 0x7C100400, // 0027 CALL R4 2 - 0x8C10012C, // 0028 GETMET R4 R0 K44 - 0x7C100200, // 0029 CALL R4 1 - 0x50100200, // 002A LDBOOL R4 1 0 - 0x80040800, // 002B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_JitterAnimation_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08052D, // 0003 GETMET R2 R2 K45 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x4C080000, // 0006 LDNIL R2 - 0x20080202, // 0007 NE R2 R1 R2 - 0x780A0001, // 0008 JMPF R2 #000B - 0x5C080200, // 0009 MOVE R2 R1 - 0x70020001, // 000A JMP #000D - 0x88080115, // 000B GETMBR R2 R0 K21 - 0x88080516, // 000C GETMBR R2 R2 K22 - 0x90022E02, // 000D SETMBR R0 K23 R2 - 0x8C080118, // 000E GETMET R2 R0 K24 - 0x7C080200, // 000F CALL R2 1 - 0x80040000, // 0010 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_JitterAnimation__initialize_buffers, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_JitterAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x88040115, // 0000 GETMBR R1 R0 K21 - 0x8C040319, // 0001 GETMET R1 R1 K25 - 0x7C040200, // 0002 CALL R1 1 - 0x60080012, // 0003 GETGBL R2 G18 - 0x7C080000, // 0004 CALL R2 0 - 0x90023402, // 0005 SETMBR R0 K26 R2 - 0x8808011A, // 0006 GETMBR R2 R0 K26 - 0x8C08052E, // 0007 GETMET R2 R2 K46 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0xB80A5E00, // 000A GETNGBL R2 K47 - 0x8C080530, // 000B GETMET R2 R2 K48 - 0x5C100200, // 000C MOVE R4 R1 - 0x7C080400, // 000D CALL R2 2 - 0x90023A02, // 000E SETMBR R0 K29 R2 - 0x60080012, // 000F GETGBL R2 G18 - 0x7C080000, // 0010 CALL R2 0 - 0x90024602, // 0011 SETMBR R0 K35 R2 - 0x88080123, // 0012 GETMBR R2 R0 K35 - 0x8C08052E, // 0013 GETMET R2 R2 K46 - 0x5C100200, // 0014 MOVE R4 R1 - 0x7C080400, // 0015 CALL R2 2 - 0x58080007, // 0016 LDCONST R2 K7 - 0x140C0401, // 0017 LT R3 R2 R1 - 0x780E0005, // 0018 JMPF R3 #001F - 0x880C011A, // 0019 GETMBR R3 R0 K26 - 0x980C0507, // 001A SETIDX R3 R2 K7 - 0x880C0123, // 001B GETMBR R3 R0 K35 - 0x980C0520, // 001C SETIDX R3 R2 K32 - 0x00080503, // 001D ADD R2 R2 K3 - 0x7001FFF7, // 001E JMP #0017 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: JitterAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(JitterAnimation, - 5, - &be_class_Animation, - be_nested_map(17, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_apply_color_jitter, 8), be_const_closure(class_JitterAnimation__apply_color_jitter_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_JitterAnimation_tostring_closure) }, - { be_const_key_weak(jitter_offsets, 7), be_const_var(2) }, - { be_const_key_weak(_initialize_buffers, 9), be_const_closure(class_JitterAnimation__initialize_buffers_closure) }, - { be_const_key_weak(last_jitter_time, -1), be_const_var(1) }, - { be_const_key_weak(start, -1), be_const_closure(class_JitterAnimation_start_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_JitterAnimation_update_closure) }, - { be_const_key_weak(_update_jitter, 1), be_const_closure(class_JitterAnimation__update_jitter_closure) }, - { be_const_key_weak(_random, 11), be_const_closure(class_JitterAnimation__random_closure) }, - { be_const_key_weak(source_frame, -1), be_const_var(3) }, - { be_const_key_weak(render, -1), be_const_closure(class_JitterAnimation_render_closure) }, - { be_const_key_weak(current_colors, -1), be_const_var(4) }, - { be_const_key_weak(random_seed, -1), be_const_var(0) }, - { be_const_key_weak(_random_range, 6), be_const_closure(class_JitterAnimation__random_range_closure) }, - { be_const_key_weak(_calculate_jitter, 5), be_const_closure(class_JitterAnimation__calculate_jitter_closure) }, - { be_const_key_weak(init, 3), be_const_closure(class_JitterAnimation_init_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(7, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(brightness_range, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(40) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(jitter_intensity, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(100) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(jitter_type, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(3) }, - })) ) } )) }, - { be_const_key_weak(color_range, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(30) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(source_animation, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - { be_const_key_weak(position_range, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(50) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(jitter_frequency, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(60) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - })), - be_str_weak(JitterAnimation) -); - -/******************************************************************** -** Solidified function: jitter_brightness -********************************************************************/ -be_local_closure(jitter_brightness, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(jitter_animation), - /* K2 */ be_nested_str_weak(jitter_type), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(brightness_range), - }), - be_str_weak(jitter_brightness), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A0027, // 0005 LDINT R2 40 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: scale_grow -********************************************************************/ -be_local_closure(scale_grow, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(scale_animation), - /* K2 */ be_nested_str_weak(scale_mode), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(scale_speed), - }), - be_str_weak(scale_grow), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A007F, // 0005 LDINT R2 128 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: scale_oscillate -********************************************************************/ -be_local_closure(scale_oscillate, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(scale_animation), - /* K2 */ be_nested_str_weak(scale_mode), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(scale_speed), - }), - be_str_weak(scale_oscillate), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A007F, // 0005 LDINT R2 128 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - // compact class 'RichPaletteColorProvider' ktab size: 46, total: 99 (saved 424 bytes) static const bvalue be_ktab_class_RichPaletteColorProvider[46] = { /* K0 */ be_nested_str_weak(on_param_changed), @@ -7807,110 +4888,47 @@ be_local_class(RichPaletteColorProvider, ); /******************************************************************** -** Solidified function: bounce_basic +** Solidified function: list_user_functions ********************************************************************/ -be_local_closure(bounce_basic, /* name */ +be_local_closure(list_user_functions, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 0, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(bounce_animation), - /* K2 */ be_nested_str_weak(bounce_speed), - /* K3 */ be_nested_str_weak(bounce_range), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(damping), - /* K6 */ be_nested_str_weak(gravity), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(bounce_basic), + /* K1 */ be_nested_str_weak(user_functions), + /* K2 */ be_nested_str_weak(keys), + /* K3 */ be_nested_str_weak(push), + /* K4 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(bounce_basic), + be_str_weak(list_user_functions), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A007F, // 0004 LDINT R2 128 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A00F9, // 0007 LDINT R2 250 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x90060D04, // 0009 SETMBR R1 K6 K4 - 0x90060F08, // 000A SETMBR R1 K7 K8 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: wave_rainbow_sine -********************************************************************/ -be_local_closure(wave_rainbow_sine, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(wave_animation), - /* K2 */ be_nested_str_weak(rich_palette), - /* K3 */ be_nested_str_weak(palette), - /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K5 */ be_nested_str_weak(cycle_period), - /* K6 */ be_nested_str_weak(transition_type), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(brightness), - /* K9 */ be_nested_str_weak(range_min), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(range_max), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_nested_str_weak(wave_type), - /* K14 */ be_nested_str_weak(frequency), - /* K15 */ be_nested_str_weak(wave_speed), - }), - be_str_weak(wave_rainbow_sine), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0xB80A0000, // 0004 GETNGBL R2 K0 + ( &(const binstruction[19]) { /* code */ + 0x60000012, // 0000 GETGBL R0 G18 + 0x7C000000, // 0001 CALL R0 0 + 0x60040010, // 0002 GETGBL R1 G16 + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x88080501, // 0004 GETMBR R2 R2 K1 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0xB80E0000, // 0008 GETNGBL R3 K0 - 0x880C0704, // 0009 GETMBR R3 R3 K4 - 0x900A0603, // 000A SETMBR R2 K3 R3 - 0x540E1387, // 000B LDINT R3 5000 - 0x900A0A03, // 000C SETMBR R2 K5 R3 - 0x900A0D07, // 000D SETMBR R2 K6 K7 - 0x540E00FE, // 000E LDINT R3 255 - 0x900A1003, // 000F SETMBR R2 K8 R3 - 0x900A130A, // 0010 SETMBR R2 K9 K10 - 0x540E00FE, // 0011 LDINT R3 255 - 0x900A1603, // 0012 SETMBR R2 K11 R3 - 0x90061802, // 0013 SETMBR R1 K12 R2 - 0x90061B0A, // 0014 SETMBR R1 K13 K10 - 0x540E001F, // 0015 LDINT R3 32 - 0x90061C03, // 0016 SETMBR R1 K14 R3 - 0x540E0031, // 0017 LDINT R3 50 - 0x90061E03, // 0018 SETMBR R1 K15 R3 - 0x80040200, // 0019 RET 1 R1 + 0x7C080200, // 0006 CALL R2 1 + 0x7C040200, // 0007 CALL R1 1 + 0xA8020005, // 0008 EXBLK 0 #000F + 0x5C080200, // 0009 MOVE R2 R1 + 0x7C080000, // 000A CALL R2 0 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x5C140400, // 000C MOVE R5 R2 + 0x7C0C0400, // 000D CALL R3 2 + 0x7001FFF9, // 000E JMP #0009 + 0x58040004, // 000F LDCONST R1 K4 + 0xAC040200, // 0010 CATCH R1 1 0 + 0xB0080000, // 0011 RAISE 2 R0 R0 + 0x80040000, // 0012 RET 1 R0 }) ) ); @@ -7951,98 +4969,6 @@ be_local_closure(trigger_event, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: bounce_constrained -********************************************************************/ -be_local_closure(bounce_constrained, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(bounce_animation), - /* K2 */ be_nested_str_weak(bounce_speed), - /* K3 */ be_nested_str_weak(bounce_range), - /* K4 */ be_nested_str_weak(damping), - /* K5 */ be_nested_str_weak(gravity), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(bounce_constrained), - }), - be_str_weak(bounce_constrained), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A0095, // 0004 LDINT R2 150 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A000E, // 0006 LDINT R2 15 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x540A00F9, // 0008 LDINT R2 250 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x90060B06, // 000A SETMBR R1 K5 K6 - 0x90060F08, // 000B SETMBR R1 K7 K8 - 0x80040200, // 000C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bounce_gravity -********************************************************************/ -be_local_closure(bounce_gravity, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(bounce_animation), - /* K2 */ be_nested_str_weak(bounce_speed), - /* K3 */ be_nested_str_weak(bounce_range), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(damping), - /* K6 */ be_nested_str_weak(gravity), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(bounce_gravity), - }), - be_str_weak(bounce_gravity), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A0063, // 0004 LDINT R2 100 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A00EF, // 0007 LDINT R2 240 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x540A007F, // 0009 LDINT R2 128 - 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x90060F08, // 000B SETMBR R1 K7 K8 - 0x80040200, // 000C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: unregister_event_handler ********************************************************************/ @@ -8075,1057 +5001,6 @@ be_local_closure(unregister_event_handler, /* name */ ); /*******************************************************************/ -// compact class 'BounceAnimation' ktab size: 39, total: 86 (saved 376 bytes) -static const bvalue be_ktab_class_BounceAnimation[39] = { - /* K0 */ be_nested_str_weak(on_param_changed), - /* K1 */ be_nested_str_weak(bounce_speed), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(current_velocity), - /* K6 */ be_nested_str_weak(init), - /* K7 */ be_nested_str_weak(current_position), - /* K8 */ be_nested_str_weak(bounce_center), - /* K9 */ be_nested_str_weak(source_frame), - /* K10 */ be_nested_str_weak(current_colors), - /* K11 */ be_nested_str_weak(last_update_time), - /* K12 */ be_nested_str_weak(_initialize_buffers), - /* K13 */ be_nested_str_weak(update), - /* K14 */ be_nested_str_weak(_update_physics), - /* K15 */ be_nested_str_weak(source_animation), - /* K16 */ be_nested_str_weak(is_running), - /* K17 */ be_nested_str_weak(start), - /* K18 */ be_nested_str_weak(start_time), - /* K19 */ be_nested_str_weak(_calculate_bounce), - /* K20 */ be_nested_str_weak(BounceAnimation_X28speed_X3D_X25s_X2C_X20damping_X3D_X25s_X2C_X20gravity_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K21 */ be_nested_str_weak(damping), - /* K22 */ be_nested_str_weak(gravity), - /* K23 */ be_nested_str_weak(priority), - /* K24 */ be_nested_str_weak(bounce_range), - /* K25 */ be_nested_str_weak(engine), - /* K26 */ be_nested_str_weak(get_strip_length), - /* K27 */ be_const_int(2), - /* K28 */ be_nested_str_weak(animation), - /* K29 */ be_nested_str_weak(frame_buffer), - /* K30 */ be_nested_str_weak(resize), - /* K31 */ be_const_int(-16777216), - /* K32 */ be_const_int(1), - /* K33 */ be_nested_str_weak(width), - /* K34 */ be_nested_str_weak(set_pixel_color), - /* K35 */ be_nested_str_weak(clear), - /* K36 */ be_nested_str_weak(render), - /* K37 */ be_nested_str_weak(get_pixel_color), - /* K38 */ be_nested_str_weak(time_ms), -}; - - -extern const bclass be_class_BounceAnimation; - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_BounceAnimation_on_param_changed, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0301, // 0007 EQ R3 R1 K1 - 0x780E0010, // 0008 JMPF R3 #001A - 0xB80E0400, // 0009 GETNGBL R3 K2 - 0x8C0C0703, // 000A GETMET R3 R3 K3 - 0x5C140400, // 000B MOVE R5 R2 - 0x58180004, // 000C LDCONST R6 K4 - 0x541E00FE, // 000D LDINT R7 255 - 0x58200004, // 000E LDCONST R8 K4 - 0x54260013, // 000F LDINT R9 20 - 0x7C0C0C00, // 0010 CALL R3 6 - 0x541200FF, // 0011 LDINT R4 256 - 0x08100604, // 0012 MUL R4 R3 R4 - 0x88140105, // 0013 GETMBR R5 R0 K5 - 0x14140B04, // 0014 LT R5 R5 K4 - 0x78160002, // 0015 JMPF R5 #0019 - 0x44140800, // 0016 NEG R5 R4 - 0x90020A05, // 0017 SETMBR R0 K5 R5 - 0x70020000, // 0018 JMP #001A - 0x90020A04, // 0019 SETMBR R0 K5 R4 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_BounceAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080506, // 0003 GETMET R2 R2 K6 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020F04, // 0006 SETMBR R0 K7 K4 - 0x90020B04, // 0007 SETMBR R0 K5 K4 - 0x90021104, // 0008 SETMBR R0 K8 K4 - 0x4C080000, // 0009 LDNIL R2 - 0x90021202, // 000A SETMBR R0 K9 R2 - 0x60080012, // 000B GETGBL R2 G18 - 0x7C080000, // 000C CALL R2 0 - 0x90021402, // 000D SETMBR R0 K10 R2 - 0x90021704, // 000E SETMBR R0 K11 K4 - 0x8C08010C, // 000F GETMET R2 R0 K12 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_BounceAnimation_update, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050D, // 0003 GETMET R2 R2 K13 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x8808010B, // 0009 GETMBR R2 R0 K11 - 0x1C080504, // 000A EQ R2 R2 K4 - 0x780A0000, // 000B JMPF R2 #000D - 0x90021601, // 000C SETMBR R0 K11 R1 - 0x8808010B, // 000D GETMBR R2 R0 K11 - 0x04080202, // 000E SUB R2 R1 R2 - 0x180C0504, // 000F LE R3 R2 K4 - 0x780E0001, // 0010 JMPF R3 #0013 - 0x500C0200, // 0011 LDBOOL R3 1 0 - 0x80040600, // 0012 RET 1 R3 - 0x90021601, // 0013 SETMBR R0 K11 R1 - 0x8C0C010E, // 0014 GETMET R3 R0 K14 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x880C010F, // 0017 GETMBR R3 R0 K15 - 0x4C100000, // 0018 LDNIL R4 - 0x20100604, // 0019 NE R4 R3 R4 - 0x78120007, // 001A JMPF R4 #0023 - 0x88100710, // 001B GETMBR R4 R3 K16 - 0x74120002, // 001C JMPT R4 #0020 - 0x8C100711, // 001D GETMET R4 R3 K17 - 0x88180112, // 001E GETMBR R6 R0 K18 - 0x7C100400, // 001F CALL R4 2 - 0x8C10070D, // 0020 GETMET R4 R3 K13 - 0x5C180200, // 0021 MOVE R6 R1 - 0x7C100400, // 0022 CALL R4 2 - 0x8C100113, // 0023 GETMET R4 R0 K19 - 0x7C100200, // 0024 CALL R4 1 - 0x50100200, // 0025 LDBOOL R4 1 0 - 0x80040800, // 0026 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_BounceAnimation_tostring, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080014, // 0001 LDCONST R2 K20 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x88100115, // 0003 GETMBR R4 R0 K21 - 0x88140116, // 0004 GETMBR R5 R0 K22 - 0x88180117, // 0005 GETMBR R6 R0 K23 - 0x881C0110, // 0006 GETMBR R7 R0 K16 - 0x7C040C00, // 0007 CALL R1 6 - 0x80040200, // 0008 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_physics -********************************************************************/ -be_local_closure(class_BounceAnimation__update_physics, /* name */ - be_nested_proto( - 19, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(_update_physics), - &be_const_str_solidified, - ( &(const binstruction[95]) { /* code */ - 0x88080116, // 0000 GETMBR R2 R0 K22 - 0x880C0118, // 0001 GETMBR R3 R0 K24 - 0x88100119, // 0002 GETMBR R4 R0 K25 - 0x8C10091A, // 0003 GETMET R4 R4 K26 - 0x7C100200, // 0004 CALL R4 1 - 0x88140115, // 0005 GETMBR R5 R0 K21 - 0x24180504, // 0006 GT R6 R2 K4 - 0x781A000D, // 0007 JMPF R6 #0016 - 0xB81A0400, // 0008 GETNGBL R6 K2 - 0x8C180D03, // 0009 GETMET R6 R6 K3 - 0x5C200400, // 000A MOVE R8 R2 - 0x58240004, // 000B LDCONST R9 K4 - 0x542A00FE, // 000C LDINT R10 255 - 0x582C0004, // 000D LDCONST R11 K4 - 0x543203E7, // 000E LDINT R12 1000 - 0x7C180C00, // 000F CALL R6 6 - 0x081C0C01, // 0010 MUL R7 R6 R1 - 0x542203E7, // 0011 LDINT R8 1000 - 0x0C1C0E08, // 0012 DIV R7 R7 R8 - 0x88200105, // 0013 GETMBR R8 R0 K5 - 0x00201007, // 0014 ADD R8 R8 R7 - 0x90020A08, // 0015 SETMBR R0 K5 R8 - 0x881C0105, // 0016 GETMBR R7 R0 K5 - 0x081C0E01, // 0017 MUL R7 R7 R1 - 0x542203E7, // 0018 LDINT R8 1000 - 0x0C1C0E08, // 0019 DIV R7 R7 R8 - 0x88180107, // 001A GETMBR R6 R0 K7 - 0x00180C07, // 001B ADD R6 R6 R7 - 0x90020E06, // 001C SETMBR R0 K7 R6 - 0x24180704, // 001D GT R6 R3 K4 - 0x781A0001, // 001E JMPF R6 #0021 - 0x5C180600, // 001F MOVE R6 R3 - 0x70020000, // 0020 JMP #0022 - 0x5C180800, // 0021 MOVE R6 R4 - 0x541E00FF, // 0022 LDINT R7 256 - 0x081C0C07, // 0023 MUL R7 R6 R7 - 0x0C1C0F1B, // 0024 DIV R7 R7 K27 - 0x88200108, // 0025 GETMBR R8 R0 K8 - 0x04201007, // 0026 SUB R8 R8 R7 - 0x88240108, // 0027 GETMBR R9 R0 K8 - 0x00241207, // 0028 ADD R9 R9 R7 - 0x50280000, // 0029 LDBOOL R10 0 0 - 0x882C0107, // 002A GETMBR R11 R0 K7 - 0x182C1608, // 002B LE R11 R11 R8 - 0x782E0005, // 002C JMPF R11 #0033 - 0x90020E08, // 002D SETMBR R0 K7 R8 - 0x882C0105, // 002E GETMBR R11 R0 K5 - 0x442C1600, // 002F NEG R11 R11 - 0x90020A0B, // 0030 SETMBR R0 K5 R11 - 0x50280200, // 0031 LDBOOL R10 1 0 - 0x70020007, // 0032 JMP #003B - 0x882C0107, // 0033 GETMBR R11 R0 K7 - 0x282C1609, // 0034 GE R11 R11 R9 - 0x782E0004, // 0035 JMPF R11 #003B - 0x90020E09, // 0036 SETMBR R0 K7 R9 - 0x882C0105, // 0037 GETMBR R11 R0 K5 - 0x442C1600, // 0038 NEG R11 R11 - 0x90020A0B, // 0039 SETMBR R0 K5 R11 - 0x50280200, // 003A LDBOOL R10 1 0 - 0x782A0021, // 003B JMPF R10 #005E - 0x542E00FE, // 003C LDINT R11 255 - 0x142C0A0B, // 003D LT R11 R5 R11 - 0x782E001E, // 003E JMPF R11 #005E - 0xB82E0400, // 003F GETNGBL R11 K2 - 0x8C2C1703, // 0040 GETMET R11 R11 K3 - 0x5C340A00, // 0041 MOVE R13 R5 - 0x58380004, // 0042 LDCONST R14 K4 - 0x543E00FE, // 0043 LDINT R15 255 - 0x58400004, // 0044 LDCONST R16 K4 - 0x544600FE, // 0045 LDINT R17 255 - 0x7C2C0C00, // 0046 CALL R11 6 - 0xB8320400, // 0047 GETNGBL R12 K2 - 0x8C301903, // 0048 GETMET R12 R12 K3 - 0x88380105, // 0049 GETMBR R14 R0 K5 - 0x583C0004, // 004A LDCONST R15 K4 - 0x544200FE, // 004B LDINT R16 255 - 0x58440004, // 004C LDCONST R17 K4 - 0x5C481600, // 004D MOVE R18 R11 - 0x7C300C00, // 004E CALL R12 6 - 0x90020A0C, // 004F SETMBR R0 K5 R12 - 0x88300105, // 0050 GETMBR R12 R0 K5 - 0x14301904, // 0051 LT R12 R12 K4 - 0x7832000A, // 0052 JMPF R12 #005E - 0xB8320400, // 0053 GETNGBL R12 K2 - 0x8C301903, // 0054 GETMET R12 R12 K3 - 0x88380105, // 0055 GETMBR R14 R0 K5 - 0x44381C00, // 0056 NEG R14 R14 - 0x583C0004, // 0057 LDCONST R15 K4 - 0x544200FE, // 0058 LDINT R16 255 - 0x58440004, // 0059 LDCONST R17 K4 - 0x5C481600, // 005A MOVE R18 R11 - 0x7C300C00, // 005B CALL R12 6 - 0x44301800, // 005C NEG R12 R12 - 0x90020A0C, // 005D SETMBR R0 K5 R12 - 0x80000000, // 005E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_BounceAnimation__initialize_buffers, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x88040119, // 0000 GETMBR R1 R0 K25 - 0x8C04031A, // 0001 GETMET R1 R1 K26 - 0x7C040200, // 0002 CALL R1 1 - 0x540A00FF, // 0003 LDINT R2 256 - 0x08080202, // 0004 MUL R2 R1 R2 - 0x0C08051B, // 0005 DIV R2 R2 K27 - 0x90021002, // 0006 SETMBR R0 K8 R2 - 0x88080108, // 0007 GETMBR R2 R0 K8 - 0x90020E02, // 0008 SETMBR R0 K7 R2 - 0xB80A0400, // 0009 GETNGBL R2 K2 - 0x8C080503, // 000A GETMET R2 R2 K3 - 0x88100101, // 000B GETMBR R4 R0 K1 - 0x58140004, // 000C LDCONST R5 K4 - 0x541A00FE, // 000D LDINT R6 255 - 0x581C0004, // 000E LDCONST R7 K4 - 0x54220013, // 000F LDINT R8 20 - 0x7C080C00, // 0010 CALL R2 6 - 0x540E00FF, // 0011 LDINT R3 256 - 0x080C0403, // 0012 MUL R3 R2 R3 - 0x90020A03, // 0013 SETMBR R0 K5 R3 - 0xB80E3800, // 0014 GETNGBL R3 K28 - 0x8C0C071D, // 0015 GETMET R3 R3 K29 - 0x5C140200, // 0016 MOVE R5 R1 - 0x7C0C0400, // 0017 CALL R3 2 - 0x90021203, // 0018 SETMBR R0 K9 R3 - 0x880C010A, // 0019 GETMBR R3 R0 K10 - 0x8C0C071E, // 001A GETMET R3 R3 K30 - 0x5C140200, // 001B MOVE R5 R1 - 0x7C0C0400, // 001C CALL R3 2 - 0x580C0004, // 001D LDCONST R3 K4 - 0x14100601, // 001E LT R4 R3 R1 - 0x78120003, // 001F JMPF R4 #0024 - 0x8810010A, // 0020 GETMBR R4 R0 K10 - 0x9810071F, // 0021 SETIDX R4 R3 K31 - 0x000C0720, // 0022 ADD R3 R3 K32 - 0x7001FFF9, // 0023 JMP #001E - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_BounceAnimation_render, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x880C0110, // 0000 GETMBR R3 R0 K16 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x880C0119, // 0007 GETMBR R3 R0 K25 - 0x8C0C071A, // 0008 GETMET R3 R3 K26 - 0x7C0C0200, // 0009 CALL R3 1 - 0x58100004, // 000A LDCONST R4 K4 - 0x14140803, // 000B LT R5 R4 R3 - 0x78160009, // 000C JMPF R5 #0017 - 0x88140321, // 000D GETMBR R5 R1 K33 - 0x14140805, // 000E LT R5 R4 R5 - 0x78160004, // 000F JMPF R5 #0015 - 0x8C140322, // 0010 GETMET R5 R1 K34 - 0x5C1C0800, // 0011 MOVE R7 R4 - 0x8820010A, // 0012 GETMBR R8 R0 K10 - 0x94201004, // 0013 GETIDX R8 R8 R4 - 0x7C140600, // 0014 CALL R5 3 - 0x00100920, // 0015 ADD R4 R4 K32 - 0x7001FFF3, // 0016 JMP #000B - 0x50140200, // 0017 LDBOOL R5 1 0 - 0x80040A00, // 0018 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_bounce -********************************************************************/ -be_local_closure(class_BounceAnimation__calculate_bounce, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(_calculate_bounce), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C040323, // 0001 GETMET R1 R1 K35 - 0x7C040200, // 0002 CALL R1 1 - 0x8804010F, // 0003 GETMBR R1 R0 K15 - 0x4C080000, // 0004 LDNIL R2 - 0x20080202, // 0005 NE R2 R1 R2 - 0x780A0003, // 0006 JMPF R2 #000B - 0x8C080324, // 0007 GETMET R2 R1 K36 - 0x88100109, // 0008 GETMBR R4 R0 K9 - 0x58140004, // 0009 LDCONST R5 K4 - 0x7C080600, // 000A CALL R2 3 - 0x88080119, // 000B GETMBR R2 R0 K25 - 0x8C08051A, // 000C GETMET R2 R2 K26 - 0x7C080200, // 000D CALL R2 1 - 0x880C0107, // 000E GETMBR R3 R0 K7 - 0x541200FF, // 000F LDINT R4 256 - 0x0C0C0604, // 0010 DIV R3 R3 R4 - 0x0C10051B, // 0011 DIV R4 R2 K27 - 0x04100604, // 0012 SUB R4 R3 R4 - 0x58140004, // 0013 LDCONST R5 K4 - 0x14180A02, // 0014 LT R6 R5 R2 - 0x781A000F, // 0015 JMPF R6 #0026 - 0x04180A04, // 0016 SUB R6 R5 R4 - 0x281C0D04, // 0017 GE R7 R6 K4 - 0x781E0008, // 0018 JMPF R7 #0022 - 0x141C0C02, // 0019 LT R7 R6 R2 - 0x781E0006, // 001A JMPF R7 #0022 - 0x881C010A, // 001B GETMBR R7 R0 K10 - 0x88200109, // 001C GETMBR R8 R0 K9 - 0x8C201125, // 001D GETMET R8 R8 K37 - 0x5C280C00, // 001E MOVE R10 R6 - 0x7C200400, // 001F CALL R8 2 - 0x981C0A08, // 0020 SETIDX R7 R5 R8 - 0x70020001, // 0021 JMP #0024 - 0x881C010A, // 0022 GETMBR R7 R0 K10 - 0x981C0B1F, // 0023 SETIDX R7 R5 K31 - 0x00140B20, // 0024 ADD R5 R5 K32 - 0x7001FFED, // 0025 JMP #0014 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_BounceAnimation_start, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080511, // 0003 GETMET R2 R2 K17 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x4C080000, // 0006 LDNIL R2 - 0x20080202, // 0007 NE R2 R1 R2 - 0x780A0001, // 0008 JMPF R2 #000B - 0x5C080200, // 0009 MOVE R2 R1 - 0x70020001, // 000A JMP #000D - 0x88080119, // 000B GETMBR R2 R0 K25 - 0x88080526, // 000C GETMBR R2 R2 K38 - 0x90021602, // 000D SETMBR R0 K11 R2 - 0x8C0C010C, // 000E GETMET R3 R0 K12 - 0x7C0C0200, // 000F CALL R3 1 - 0x880C010F, // 0010 GETMBR R3 R0 K15 - 0x4C100000, // 0011 LDNIL R4 - 0x20100604, // 0012 NE R4 R3 R4 - 0x78120002, // 0013 JMPF R4 #0017 - 0x8C100711, // 0014 GETMET R4 R3 K17 - 0x5C180400, // 0015 MOVE R6 R2 - 0x7C100400, // 0016 CALL R4 2 - 0x80040000, // 0017 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: BounceAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(BounceAnimation, - 6, - &be_class_Animation, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(last_update_time, -1), be_const_var(5) }, - { be_const_key_weak(_calculate_bounce, 14), be_const_closure(class_BounceAnimation__calculate_bounce_closure) }, - { be_const_key_weak(render, 0), be_const_closure(class_BounceAnimation_render_closure) }, - { be_const_key_weak(init, 1), be_const_closure(class_BounceAnimation_init_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_BounceAnimation_update_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_BounceAnimation_tostring_closure) }, - { be_const_key_weak(source_frame, -1), be_const_var(3) }, - { be_const_key_weak(current_colors, -1), be_const_var(4) }, - { be_const_key_weak(current_velocity, -1), be_const_var(1) }, - { be_const_key_weak(_update_physics, -1), be_const_closure(class_BounceAnimation__update_physics_closure) }, - { be_const_key_weak(current_position, -1), be_const_var(0) }, - { be_const_key_weak(bounce_center, -1), be_const_var(2) }, - { be_const_key_weak(_initialize_buffers, 10), be_const_closure(class_BounceAnimation__initialize_buffers_closure) }, - { be_const_key_weak(on_param_changed, 2), be_const_closure(class_BounceAnimation_on_param_changed_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(damping, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(250) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(bounce_range, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(1000) }, - })) ) } )) }, - { be_const_key_weak(bounce_speed, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(gravity, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(source_animation, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(start, -1), be_const_closure(class_BounceAnimation_start_closure) }, - })), - be_str_weak(BounceAnimation) -); - -/******************************************************************** -** Solidified function: create_closure_value -********************************************************************/ -be_local_closure(create_closure_value, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(closure_value), - /* K2 */ be_nested_str_weak(closure), - }), - be_str_weak(create_closure_value), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C080400, // 0003 CALL R2 2 - 0x900A0401, // 0004 SETMBR R2 K2 R1 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - -// compact class 'PalettePatternAnimation' ktab size: 22, total: 42 (saved 160 bytes) -static const bvalue be_ktab_class_PalettePatternAnimation[22] = { - /* K0 */ be_nested_str_weak(on_param_changed), - /* K1 */ be_nested_str_weak(pattern_func), - /* K2 */ be_nested_str_weak(color_source), - /* K3 */ be_nested_str_weak(_initialize_value_buffer), - /* K4 */ be_nested_str_weak(is_running), - /* K5 */ be_nested_str_weak(_fix_time_ms), - /* K6 */ be_nested_str_weak(get_param), - /* K7 */ be_nested_str_weak(get_color_for_value), - /* K8 */ be_nested_str_weak(start_time), - /* K9 */ be_nested_str_weak(engine), - /* K10 */ be_nested_str_weak(get_strip_length), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(width), - /* K13 */ be_nested_str_weak(value_buffer), - /* K14 */ be_nested_str_weak(set_pixel_color), - /* K15 */ be_const_int(1), - /* K16 */ be_nested_str_weak(resize), - /* K17 */ be_nested_str_weak(init), - /* K18 */ be_nested_str_weak(PalettePatternAnimation_X28strip_length_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K19 */ be_nested_str_weak(priority), - /* K20 */ be_nested_str_weak(update), - /* K21 */ be_nested_str_weak(_update_value_buffer), -}; - - -extern const bclass be_class_PalettePatternAnimation; - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_on_param_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PalettePatternAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0301, // 0007 EQ R3 R1 K1 - 0x740E0001, // 0008 JMPT R3 #000B - 0x1C0C0302, // 0009 EQ R3 R1 K2 - 0x780E0001, // 000A JMPF R3 #000D - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_render, /* name */ - be_nested_proto( - 13, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PalettePatternAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x880C0104, // 0000 GETMBR R3 R0 K4 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x8C0C0105, // 0007 GETMET R3 R0 K5 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x5C080600, // 000A MOVE R2 R3 - 0x8C0C0106, // 000B GETMET R3 R0 K6 - 0x58140002, // 000C LDCONST R5 K2 - 0x7C0C0400, // 000D CALL R3 2 - 0x4C100000, // 000E LDNIL R4 - 0x1C100604, // 000F EQ R4 R3 R4 - 0x78120001, // 0010 JMPF R4 #0013 - 0x50100000, // 0011 LDBOOL R4 0 0 - 0x80040800, // 0012 RET 1 R4 - 0x88100707, // 0013 GETMBR R4 R3 K7 - 0x4C140000, // 0014 LDNIL R5 - 0x1C100805, // 0015 EQ R4 R4 R5 - 0x78120001, // 0016 JMPF R4 #0019 - 0x50100000, // 0017 LDBOOL R4 0 0 - 0x80040800, // 0018 RET 1 R4 - 0x88100108, // 0019 GETMBR R4 R0 K8 - 0x04100404, // 001A SUB R4 R2 R4 - 0x88140109, // 001B GETMBR R5 R0 K9 - 0x8C140B0A, // 001C GETMET R5 R5 K10 - 0x7C140200, // 001D CALL R5 1 - 0x5818000B, // 001E LDCONST R6 K11 - 0x141C0C05, // 001F LT R7 R6 R5 - 0x781E000E, // 0020 JMPF R7 #0030 - 0x881C030C, // 0021 GETMBR R7 R1 K12 - 0x141C0C07, // 0022 LT R7 R6 R7 - 0x781E000B, // 0023 JMPF R7 #0030 - 0x881C010D, // 0024 GETMBR R7 R0 K13 - 0x941C0E06, // 0025 GETIDX R7 R7 R6 - 0x8C200707, // 0026 GETMET R8 R3 K7 - 0x5C280E00, // 0027 MOVE R10 R7 - 0x5C2C0800, // 0028 MOVE R11 R4 - 0x7C200600, // 0029 CALL R8 3 - 0x8C24030E, // 002A GETMET R9 R1 K14 - 0x5C2C0C00, // 002B MOVE R11 R6 - 0x5C301000, // 002C MOVE R12 R8 - 0x7C240600, // 002D CALL R9 3 - 0x00180D0F, // 002E ADD R6 R6 K15 - 0x7001FFEE, // 002F JMP #001F - 0x501C0200, // 0030 LDBOOL R7 1 0 - 0x80040E00, // 0031 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_value_buffer -********************************************************************/ -be_local_closure(class_PalettePatternAnimation__update_value_buffer, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PalettePatternAnimation, /* shared constants */ - be_str_weak(_update_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x88080101, // 0000 GETMBR R2 R0 K1 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C0C0403, // 0002 EQ R3 R2 R3 - 0x780E0000, // 0003 JMPF R3 #0005 - 0x80000600, // 0004 RET 0 - 0x880C0109, // 0005 GETMBR R3 R0 K9 - 0x8C0C070A, // 0006 GETMET R3 R3 K10 - 0x7C0C0200, // 0007 CALL R3 1 - 0x6010000C, // 0008 GETGBL R4 G12 - 0x8814010D, // 0009 GETMBR R5 R0 K13 - 0x7C100200, // 000A CALL R4 1 - 0x20100803, // 000B NE R4 R4 R3 - 0x78120003, // 000C JMPF R4 #0011 - 0x8810010D, // 000D GETMBR R4 R0 K13 - 0x8C100910, // 000E GETMET R4 R4 K16 - 0x5C180600, // 000F MOVE R6 R3 - 0x7C100400, // 0010 CALL R4 2 - 0x5810000B, // 0011 LDCONST R4 K11 - 0x14140803, // 0012 LT R5 R4 R3 - 0x78160012, // 0013 JMPF R5 #0027 - 0x5C140400, // 0014 MOVE R5 R2 - 0x5C180800, // 0015 MOVE R6 R4 - 0x5C1C0200, // 0016 MOVE R7 R1 - 0x5C200000, // 0017 MOVE R8 R0 - 0x7C140600, // 0018 CALL R5 3 - 0x60180009, // 0019 GETGBL R6 G9 - 0x5C1C0A00, // 001A MOVE R7 R5 - 0x7C180200, // 001B CALL R6 1 - 0x141C0D0B, // 001C LT R7 R6 K11 - 0x781E0000, // 001D JMPF R7 #001F - 0x5818000B, // 001E LDCONST R6 K11 - 0x541E00FE, // 001F LDINT R7 255 - 0x241C0C07, // 0020 GT R7 R6 R7 - 0x781E0000, // 0021 JMPF R7 #0023 - 0x541A00FE, // 0022 LDINT R6 255 - 0x881C010D, // 0023 GETMBR R7 R0 K13 - 0x981C0806, // 0024 SETIDX R7 R4 R6 - 0x0010090F, // 0025 ADD R4 R4 K15 - 0x7001FFEA, // 0026 JMP #0012 - 0x80000000, // 0027 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_value_buffer -********************************************************************/ -be_local_closure(class_PalettePatternAnimation__initialize_value_buffer, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PalettePatternAnimation, /* shared constants */ - be_str_weak(_initialize_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C04030A, // 0001 GETMET R1 R1 K10 - 0x7C040200, // 0002 CALL R1 1 - 0x8808010D, // 0003 GETMBR R2 R0 K13 - 0x8C080510, // 0004 GETMET R2 R2 K16 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x5808000B, // 0007 LDCONST R2 K11 - 0x140C0401, // 0008 LT R3 R2 R1 - 0x780E0003, // 0009 JMPF R3 #000E - 0x880C010D, // 000A GETMBR R3 R0 K13 - 0x980C050B, // 000B SETIDX R3 R2 K11 - 0x0008050F, // 000C ADD R2 R2 K15 - 0x7001FFF9, // 000D JMP #0008 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PalettePatternAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080511, // 0003 GETMET R2 R2 K17 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080015, // 0006 GETGBL R2 G21 - 0x7C080000, // 0007 CALL R2 0 - 0x90021A02, // 0008 SETMBR R0 K13 R2 - 0x8C080103, // 0009 GETMET R2 R0 K3 - 0x7C080200, // 000A CALL R2 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_tostring, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PalettePatternAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C04030A, // 0001 GETMET R1 R1 K10 - 0x7C040200, // 0002 CALL R1 1 - 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0012, // 0004 LDCONST R3 K18 - 0x5C100200, // 0005 MOVE R4 R1 - 0x88140113, // 0006 GETMBR R5 R0 K19 - 0x88180104, // 0007 GETMBR R6 R0 K4 - 0x7C080800, // 0008 CALL R2 4 - 0x80040400, // 0009 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_update, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PalettePatternAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080514, // 0003 GETMET R2 R2 K20 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x8C080105, // 0009 GETMET R2 R0 K5 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x5C040400, // 000C MOVE R1 R2 - 0x88080108, // 000D GETMBR R2 R0 K8 - 0x04080202, // 000E SUB R2 R1 R2 - 0x8C0C0115, // 000F GETMET R3 R0 K21 - 0x5C140400, // 0010 MOVE R5 R2 - 0x7C0C0400, // 0011 CALL R3 2 - 0x500C0200, // 0012 LDBOOL R3 1 0 - 0x80040600, // 0013 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: PalettePatternAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(PalettePatternAnimation, - 1, - &be_class_Animation, - be_nested_map(9, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update, 1), be_const_closure(class_PalettePatternAnimation_update_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_PalettePatternAnimation_tostring_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PalettePatternAnimation__update_value_buffer_closure) }, - { be_const_key_weak(_initialize_value_buffer, -1), be_const_closure(class_PalettePatternAnimation__initialize_value_buffer_closure) }, - { be_const_key_weak(on_param_changed, 8), be_const_closure(class_PalettePatternAnimation_on_param_changed_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(color_source, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - { be_const_key_weak(pattern_func, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(function) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, 5), be_const_closure(class_PalettePatternAnimation_init_closure) }, - { be_const_key_weak(render, 0), be_const_closure(class_PalettePatternAnimation_render_closure) }, - { be_const_key_weak(value_buffer, -1), be_const_var(0) }, - })), - be_str_weak(PalettePatternAnimation) -); // compact class 'StaticColorProvider' ktab size: 2, total: 4 (saved 16 bytes) static const bvalue be_ktab_class_StaticColorProvider[2] = { /* K0 */ be_nested_str_weak(color), @@ -9239,514 +5114,54 @@ be_local_class(StaticColorProvider, ); /******************************************************************** -** Solidified function: get_registered_events +** Solidified function: twinkle_classic ********************************************************************/ -be_local_closure(get_registered_events, /* name */ +be_local_closure(twinkle_classic, /* name */ be_nested_proto( - 2, /* nstack */ - 0, /* argc */ + 4, /* nstack */ + 1, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(event_manager), - /* K2 */ be_nested_str_weak(get_registered_events), + /* K1 */ be_nested_str_weak(twinkle_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(density), + /* K4 */ be_nested_str_weak(twinkle_speed), + /* K5 */ be_nested_str_weak(fade_speed), + /* K6 */ be_nested_str_weak(min_brightness), + /* K7 */ be_nested_str_weak(max_brightness), }), - be_str_weak(get_registered_events), + be_str_weak(twinkle_classic), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xB8020000, // 0000 GETNGBL R0 K0 - 0x88000101, // 0001 GETMBR R0 R0 K1 - 0x8C000102, // 0002 GETMET R0 R0 K2 - 0x7C000200, // 0003 CALL R0 1 - 0x80040000, // 0004 RET 1 R0 - }) - ) -); -/*******************************************************************/ - -// compact class 'ShiftAnimation' ktab size: 35, total: 64 (saved 232 bytes) -static const bvalue be_ktab_class_ShiftAnimation[35] = { - /* K0 */ be_nested_str_weak(engine), - /* K1 */ be_nested_str_weak(get_strip_length), - /* K2 */ be_nested_str_weak(source_frame), - /* K3 */ be_nested_str_weak(animation), - /* K4 */ be_nested_str_weak(frame_buffer), - /* K5 */ be_nested_str_weak(current_colors), - /* K6 */ be_nested_str_weak(resize), - /* K7 */ be_const_int(0), - /* K8 */ be_const_int(-16777216), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(update), - /* K11 */ be_nested_str_weak(shift_speed), - /* K12 */ be_nested_str_weak(direction), - /* K13 */ be_nested_str_weak(wrap_around), - /* K14 */ be_nested_str_weak(source_animation), - /* K15 */ be_nested_str_weak(start_time), - /* K16 */ be_nested_str_weak(tasmota), - /* K17 */ be_nested_str_weak(scale_uint), - /* K18 */ be_nested_str_weak(current_offset), - /* K19 */ be_nested_str_weak(is_running), - /* K20 */ be_nested_str_weak(start), - /* K21 */ be_nested_str_weak(_calculate_shift), - /* K22 */ be_nested_str_weak(priority), - /* K23 */ be_nested_str_weak(right), - /* K24 */ be_nested_str_weak(left), - /* K25 */ be_nested_str_weak(ShiftAnimation_X28_X25s_X2C_X20speed_X3D_X25s_X2C_X20wrap_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K26 */ be_nested_str_weak(_fix_time_ms), - /* K27 */ be_nested_str_weak(width), - /* K28 */ be_nested_str_weak(set_pixel_color), - /* K29 */ be_nested_str_weak(on_param_changed), - /* K30 */ be_nested_str_weak(_initialize_buffers), - /* K31 */ be_nested_str_weak(clear), - /* K32 */ be_nested_str_weak(render), - /* K33 */ be_nested_str_weak(get_pixel_color), - /* K34 */ be_nested_str_weak(init), -}; - - -extern const bclass be_class_ShiftAnimation; - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_ShiftAnimation__initialize_buffers, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ShiftAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + ( &(const binstruction[17]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0xB80A0600, // 0003 GETNGBL R2 K3 - 0x8C080504, // 0004 GETMET R2 R2 K4 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x90020402, // 0007 SETMBR R0 K2 R2 - 0x60080012, // 0008 GETGBL R2 G18 - 0x7C080000, // 0009 CALL R2 0 - 0x90020A02, // 000A SETMBR R0 K5 R2 - 0x88080105, // 000B GETMBR R2 R0 K5 - 0x8C080506, // 000C GETMET R2 R2 K6 - 0x5C100200, // 000D MOVE R4 R1 - 0x7C080400, // 000E CALL R2 2 - 0x58080007, // 000F LDCONST R2 K7 - 0x140C0401, // 0010 LT R3 R2 R1 - 0x780E0003, // 0011 JMPF R3 #0016 - 0x880C0105, // 0012 GETMBR R3 R0 K5 - 0x980C0508, // 0013 SETIDX R3 R2 K8 - 0x00080509, // 0014 ADD R2 R2 K9 - 0x7001FFF9, // 0015 JMP #0010 - 0x80000000, // 0016 RET 0 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x5409FFFE, // 0004 LDINT R2 -1 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A0095, // 0006 LDINT R2 150 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x540A0005, // 0008 LDINT R2 6 + 0x90060802, // 0009 SETMBR R1 K4 R2 + 0x540A00B3, // 000A LDINT R2 180 + 0x90060A02, // 000B SETMBR R1 K5 R2 + 0x540A001F, // 000C LDINT R2 32 + 0x90060C02, // 000D SETMBR R1 K6 R2 + 0x540A00FE, // 000E LDINT R2 255 + 0x90060E02, // 000F SETMBR R1 K7 R2 + 0x80040200, // 0010 RET 1 R1 }) ) ); /*******************************************************************/ -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_ShiftAnimation_update, /* name */ - be_nested_proto( - 16, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ShiftAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050A, // 0003 GETMET R2 R2 K10 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x8808010B, // 0009 GETMBR R2 R0 K11 - 0x880C010C, // 000A GETMBR R3 R0 K12 - 0x8810010D, // 000B GETMBR R4 R0 K13 - 0x8814010E, // 000C GETMBR R5 R0 K14 - 0x88180100, // 000D GETMBR R6 R0 K0 - 0x8C180D01, // 000E GETMET R6 R6 K1 - 0x7C180200, // 000F CALL R6 1 - 0x241C0507, // 0010 GT R7 R2 K7 - 0x781E0020, // 0011 JMPF R7 #0033 - 0x881C010F, // 0012 GETMBR R7 R0 K15 - 0x041C0207, // 0013 SUB R7 R1 R7 - 0xB8222000, // 0014 GETNGBL R8 K16 - 0x8C201111, // 0015 GETMET R8 R8 K17 - 0x5C280400, // 0016 MOVE R10 R2 - 0x582C0007, // 0017 LDCONST R11 K7 - 0x543200FE, // 0018 LDINT R12 255 - 0x58340007, // 0019 LDCONST R13 K7 - 0x543A0009, // 001A LDINT R14 10 - 0x543E00FF, // 001B LDINT R15 256 - 0x08381C0F, // 001C MUL R14 R14 R15 - 0x7C200C00, // 001D CALL R8 6 - 0x24241107, // 001E GT R9 R8 K7 - 0x78260012, // 001F JMPF R9 #0033 - 0x08240E08, // 0020 MUL R9 R7 R8 - 0x542A03E7, // 0021 LDINT R10 1000 - 0x0C24120A, // 0022 DIV R9 R9 R10 - 0x08241203, // 0023 MUL R9 R9 R3 - 0x7812000C, // 0024 JMPF R4 #0032 - 0x542A00FF, // 0025 LDINT R10 256 - 0x08280C0A, // 0026 MUL R10 R6 R10 - 0x1028120A, // 0027 MOD R10 R9 R10 - 0x9002240A, // 0028 SETMBR R0 K18 R10 - 0x88280112, // 0029 GETMBR R10 R0 K18 - 0x14281507, // 002A LT R10 R10 K7 - 0x782A0004, // 002B JMPF R10 #0031 - 0x542E00FF, // 002C LDINT R11 256 - 0x082C0C0B, // 002D MUL R11 R6 R11 - 0x88280112, // 002E GETMBR R10 R0 K18 - 0x0028140B, // 002F ADD R10 R10 R11 - 0x9002240A, // 0030 SETMBR R0 K18 R10 - 0x70020000, // 0031 JMP #0033 - 0x90022409, // 0032 SETMBR R0 K18 R9 - 0x4C1C0000, // 0033 LDNIL R7 - 0x201C0A07, // 0034 NE R7 R5 R7 - 0x781E0007, // 0035 JMPF R7 #003E - 0x881C0B13, // 0036 GETMBR R7 R5 K19 - 0x741E0002, // 0037 JMPT R7 #003B - 0x8C1C0B14, // 0038 GETMET R7 R5 K20 - 0x8824010F, // 0039 GETMBR R9 R0 K15 - 0x7C1C0400, // 003A CALL R7 2 - 0x8C1C0B0A, // 003B GETMET R7 R5 K10 - 0x5C240200, // 003C MOVE R9 R1 - 0x7C1C0400, // 003D CALL R7 2 - 0x8C1C0115, // 003E GETMET R7 R0 K21 - 0x7C1C0200, // 003F CALL R7 1 - 0x501C0200, // 0040 LDBOOL R7 1 0 - 0x80040E00, // 0041 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_ShiftAnimation_tostring, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ShiftAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x8808010B, // 0001 GETMBR R2 R0 K11 - 0x880C010D, // 0002 GETMBR R3 R0 K13 - 0x88100116, // 0003 GETMBR R4 R0 K22 - 0x24140307, // 0004 GT R5 R1 K7 - 0x78160001, // 0005 JMPF R5 #0008 - 0x58140017, // 0006 LDCONST R5 K23 - 0x70020000, // 0007 JMP #0009 - 0x58140018, // 0008 LDCONST R5 K24 - 0x60180018, // 0009 GETGBL R6 G24 - 0x581C0019, // 000A LDCONST R7 K25 - 0x5C200A00, // 000B MOVE R8 R5 - 0x5C240400, // 000C MOVE R9 R2 - 0x5C280600, // 000D MOVE R10 R3 - 0x5C2C0800, // 000E MOVE R11 R4 - 0x88300113, // 000F GETMBR R12 R0 K19 - 0x7C180C00, // 0010 CALL R6 6 - 0x80040C00, // 0011 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_ShiftAnimation_render, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ShiftAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x880C0113, // 0000 GETMBR R3 R0 K19 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x8C0C011A, // 0007 GETMET R3 R0 K26 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x5C080600, // 000A MOVE R2 R3 - 0x880C0100, // 000B GETMBR R3 R0 K0 - 0x8C0C0701, // 000C GETMET R3 R3 K1 - 0x7C0C0200, // 000D CALL R3 1 - 0x58100007, // 000E LDCONST R4 K7 - 0x14140803, // 000F LT R5 R4 R3 - 0x78160009, // 0010 JMPF R5 #001B - 0x8814031B, // 0011 GETMBR R5 R1 K27 - 0x14140805, // 0012 LT R5 R4 R5 - 0x78160004, // 0013 JMPF R5 #0019 - 0x8C14031C, // 0014 GETMET R5 R1 K28 - 0x5C1C0800, // 0015 MOVE R7 R4 - 0x88200105, // 0016 GETMBR R8 R0 K5 - 0x94201004, // 0017 GETIDX R8 R8 R4 - 0x7C140600, // 0018 CALL R5 3 - 0x00100909, // 0019 ADD R4 R4 K9 - 0x7001FFF3, // 001A JMP #000F - 0x50140200, // 001B LDBOOL R5 1 0 - 0x80040A00, // 001C RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_ShiftAnimation_on_param_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ShiftAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C071D, // 0003 GETMET R3 R3 K29 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C030E, // 0007 EQ R3 R1 K14 - 0x780E0001, // 0008 JMPF R3 #000B - 0x8C0C011E, // 0009 GETMET R3 R0 K30 - 0x7C0C0200, // 000A CALL R3 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_shift -********************************************************************/ -be_local_closure(class_ShiftAnimation__calculate_shift, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ShiftAnimation, /* shared constants */ - be_str_weak(_calculate_shift), - &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C0105, // 0004 GETMBR R3 R0 K5 - 0x7C080200, // 0005 CALL R2 1 - 0x20080401, // 0006 NE R2 R2 R1 - 0x780A0001, // 0007 JMPF R2 #000A - 0x8C08011E, // 0008 GETMET R2 R0 K30 - 0x7C080200, // 0009 CALL R2 1 - 0x8808010E, // 000A GETMBR R2 R0 K14 - 0x880C010D, // 000B GETMBR R3 R0 K13 - 0x88100102, // 000C GETMBR R4 R0 K2 - 0x8C10091F, // 000D GETMET R4 R4 K31 - 0x7C100200, // 000E CALL R4 1 - 0x4C100000, // 000F LDNIL R4 - 0x20100404, // 0010 NE R4 R2 R4 - 0x78120003, // 0011 JMPF R4 #0016 - 0x8C100520, // 0012 GETMET R4 R2 K32 - 0x88180102, // 0013 GETMBR R6 R0 K2 - 0x581C0007, // 0014 LDCONST R7 K7 - 0x7C100600, // 0015 CALL R4 3 - 0x88100112, // 0016 GETMBR R4 R0 K18 - 0x541600FF, // 0017 LDINT R5 256 - 0x0C100805, // 0018 DIV R4 R4 R5 - 0x88140112, // 0019 GETMBR R5 R0 K18 - 0x541A00FF, // 001A LDINT R6 256 - 0x10140A06, // 001B MOD R5 R5 R6 - 0x58180007, // 001C LDCONST R6 K7 - 0x141C0C01, // 001D LT R7 R6 R1 - 0x781E001F, // 001E JMPF R7 #003F - 0x041C0C04, // 001F SUB R7 R6 R4 - 0x780E000E, // 0020 JMPF R3 #0030 - 0x14200F07, // 0021 LT R8 R7 K7 - 0x78220001, // 0022 JMPF R8 #0025 - 0x001C0E01, // 0023 ADD R7 R7 R1 - 0x7001FFFB, // 0024 JMP #0021 - 0x28200E01, // 0025 GE R8 R7 R1 - 0x78220001, // 0026 JMPF R8 #0029 - 0x041C0E01, // 0027 SUB R7 R7 R1 - 0x7001FFFB, // 0028 JMP #0025 - 0x88200105, // 0029 GETMBR R8 R0 K5 - 0x88240102, // 002A GETMBR R9 R0 K2 - 0x8C241321, // 002B GETMET R9 R9 K33 - 0x5C2C0E00, // 002C MOVE R11 R7 - 0x7C240400, // 002D CALL R9 2 - 0x98200C09, // 002E SETIDX R8 R6 R9 - 0x7002000C, // 002F JMP #003D - 0x28200F07, // 0030 GE R8 R7 K7 - 0x78220008, // 0031 JMPF R8 #003B - 0x14200E01, // 0032 LT R8 R7 R1 - 0x78220006, // 0033 JMPF R8 #003B - 0x88200105, // 0034 GETMBR R8 R0 K5 - 0x88240102, // 0035 GETMBR R9 R0 K2 - 0x8C241321, // 0036 GETMET R9 R9 K33 - 0x5C2C0E00, // 0037 MOVE R11 R7 - 0x7C240400, // 0038 CALL R9 2 - 0x98200C09, // 0039 SETIDX R8 R6 R9 - 0x70020001, // 003A JMP #003D - 0x88200105, // 003B GETMBR R8 R0 K5 - 0x98200D08, // 003C SETIDX R8 R6 K8 - 0x00180D09, // 003D ADD R6 R6 K9 - 0x7001FFDD, // 003E JMP #001D - 0x80000000, // 003F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_ShiftAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ShiftAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080522, // 0003 GETMET R2 R2 K34 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90022507, // 0006 SETMBR R0 K18 K7 - 0x8C08011E, // 0007 GETMET R2 R0 K30 - 0x7C080200, // 0008 CALL R2 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: ShiftAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(ShiftAnimation, - 3, - &be_class_Animation, - be_nested_map(11, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(current_colors, -1), be_const_var(2) }, - { be_const_key_weak(_initialize_buffers, -1), be_const_closure(class_ShiftAnimation__initialize_buffers_closure) }, - { be_const_key_weak(current_offset, 6), be_const_var(0) }, - { be_const_key_weak(tostring, 2), be_const_closure(class_ShiftAnimation_tostring_closure) }, - { be_const_key_weak(update, 10), be_const_closure(class_ShiftAnimation_update_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ShiftAnimation_on_param_changed_closure) }, - { be_const_key_weak(source_frame, -1), be_const_var(1) }, - { be_const_key_weak(_calculate_shift, -1), be_const_closure(class_ShiftAnimation__calculate_shift_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(shift_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(source_animation, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - { be_const_key_weak(direction, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(1) }, - { be_const_key_weak(min, -1), be_const_int(-1) }, - { be_const_key_weak(max, 1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(wrap_around, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_bool(1) }, - { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_ShiftAnimation_init_closure) }, - { be_const_key_weak(render, -1), be_const_closure(class_ShiftAnimation_render_closure) }, - })), - be_str_weak(ShiftAnimation) -); - /******************************************************************** ** Solidified function: gradient_rainbow_radial ********************************************************************/ @@ -9831,7 +5246,7 @@ extern const bclass be_class_OscillatorValueProvider; ********************************************************************/ be_local_closure(class_OscillatorValueProvider_produce_value, /* name */ be_nested_proto( - 24, /* nstack */ + 26, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -9842,7 +5257,7 @@ be_local_closure(class_OscillatorValueProvider_produce_value, /* name */ &be_ktab_class_OscillatorValueProvider, /* shared constants */ be_str_weak(produce_value), &be_const_str_solidified, - ( &(const binstruction[386]) { /* code */ + ( &(const binstruction[435]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 0x88100101, // 0001 GETMBR R4 R0 K1 0x88140102, // 0002 GETMBR R5 R0 K2 @@ -9908,7 +5323,7 @@ be_local_closure(class_OscillatorValueProvider_produce_value, /* name */ 0x5C480A00, // 003E MOVE R18 R5 0x7C300C00, // 003F CALL R12 6 0x90021A0C, // 0040 SETMBR R0 K13 R12 - 0x7002013D, // 0041 JMP #0180 + 0x7002016E, // 0041 JMP #01B1 0xB8321600, // 0042 GETNGBL R12 K11 0x88301910, // 0043 GETMBR R12 R12 K16 0x1C300C0C, // 0044 EQ R12 R6 R12 @@ -9934,7 +5349,7 @@ be_local_closure(class_OscillatorValueProvider_produce_value, /* name */ 0x5C480800, // 0058 MOVE R18 R4 0x7C300C00, // 0059 CALL R12 6 0x90021A0C, // 005A SETMBR R0 K13 R12 - 0x70020123, // 005B JMP #0180 + 0x70020154, // 005B JMP #01B1 0xB8321600, // 005C GETNGBL R12 K11 0x88301911, // 005D GETMBR R12 R12 K17 0x1C300C0C, // 005E EQ R12 R6 R12 @@ -9944,7 +5359,7 @@ be_local_closure(class_OscillatorValueProvider_produce_value, /* name */ 0x90021A04, // 0062 SETMBR R0 K13 R4 0x70020000, // 0063 JMP #0065 0x90021A05, // 0064 SETMBR R0 K13 R5 - 0x70020119, // 0065 JMP #0180 + 0x7002014A, // 0065 JMP #01B1 0xB8321600, // 0066 GETNGBL R12 K11 0x88301912, // 0067 GETMBR R12 R12 K18 0x1C300C0C, // 0068 EQ R12 R6 R12 @@ -9971,7 +5386,7 @@ be_local_closure(class_OscillatorValueProvider_produce_value, /* name */ 0x5C500A00, // 007D MOVE R20 R5 0x7C380C00, // 007E CALL R14 6 0x90021A0E, // 007F SETMBR R0 K13 R14 - 0x700200FE, // 0080 JMP #0180 + 0x7002012F, // 0080 JMP #01B1 0xB8321600, // 0081 GETNGBL R12 K11 0x88301914, // 0082 GETMBR R12 R12 K20 0x1C300C0C, // 0083 EQ R12 R6 R12 @@ -9997,11 +5412,11 @@ be_local_closure(class_OscillatorValueProvider_produce_value, /* name */ 0x5C500A00, // 0097 MOVE R20 R5 0x7C380C00, // 0098 CALL R14 6 0x90021A0E, // 0099 SETMBR R0 K13 R14 - 0x700200E4, // 009A JMP #0180 + 0x70020115, // 009A JMP #01B1 0xB8321600, // 009B GETNGBL R12 K11 0x88301915, // 009C GETMBR R12 R12 K21 0x1C300C0C, // 009D EQ R12 R6 R12 - 0x78320014, // 009E JMPF R12 #00B4 + 0x7832001B, // 009E JMPF R12 #00BB 0xB8321200, // 009F GETNGBL R12 K9 0x8C30190A, // 00A0 GETMET R12 R12 K10 0x5C381600, // 00A1 MOVE R14 R11 @@ -10010,225 +5425,274 @@ be_local_closure(class_OscillatorValueProvider_produce_value, /* name */ 0x58440007, // 00A4 LDCONST R17 K7 0x544A00FE, // 00A5 LDINT R18 255 0x7C300C00, // 00A6 CALL R12 6 - 0x0834180C, // 00A7 MUL R13 R12 R12 - 0x543A00FE, // 00A8 LDINT R14 255 - 0x0C341A0E, // 00A9 DIV R13 R13 R14 - 0xB83A1200, // 00AA GETNGBL R14 K9 - 0x8C381D0E, // 00AB GETMET R14 R14 K14 - 0x5C401A00, // 00AC MOVE R16 R13 - 0x58440007, // 00AD LDCONST R17 K7 - 0x544A00FE, // 00AE LDINT R18 255 - 0x5C4C0800, // 00AF MOVE R19 R4 - 0x5C500A00, // 00B0 MOVE R20 R5 - 0x7C380C00, // 00B1 CALL R14 6 - 0x90021A0E, // 00B2 SETMBR R0 K13 R14 - 0x700200CB, // 00B3 JMP #0180 - 0xB8321600, // 00B4 GETNGBL R12 K11 - 0x88301916, // 00B5 GETMBR R12 R12 K22 - 0x1C300C0C, // 00B6 EQ R12 R6 R12 - 0x7832001A, // 00B7 JMPF R12 #00D3 - 0xB8321200, // 00B8 GETNGBL R12 K9 - 0x8C30190A, // 00B9 GETMET R12 R12 K10 - 0x5C381600, // 00BA MOVE R14 R11 - 0x583C0007, // 00BB LDCONST R15 K7 - 0x0440070F, // 00BC SUB R16 R3 K15 - 0x58440007, // 00BD LDCONST R17 K7 - 0x544A00FE, // 00BE LDINT R18 255 - 0x7C300C00, // 00BF CALL R12 6 - 0x543600FE, // 00C0 LDINT R13 255 - 0x543A00FE, // 00C1 LDINT R14 255 - 0x04381C0C, // 00C2 SUB R14 R14 R12 - 0x543E00FE, // 00C3 LDINT R15 255 - 0x043C1E0C, // 00C4 SUB R15 R15 R12 - 0x08381C0F, // 00C5 MUL R14 R14 R15 - 0x543E00FE, // 00C6 LDINT R15 255 - 0x0C381C0F, // 00C7 DIV R14 R14 R15 - 0x04341A0E, // 00C8 SUB R13 R13 R14 - 0xB83A1200, // 00C9 GETNGBL R14 K9 - 0x8C381D0E, // 00CA GETMET R14 R14 K14 - 0x5C401A00, // 00CB MOVE R16 R13 - 0x58440007, // 00CC LDCONST R17 K7 - 0x544A00FE, // 00CD LDINT R18 255 - 0x5C4C0800, // 00CE MOVE R19 R4 - 0x5C500A00, // 00CF MOVE R20 R5 - 0x7C380C00, // 00D0 CALL R14 6 - 0x90021A0E, // 00D1 SETMBR R0 K13 R14 - 0x700200AC, // 00D2 JMP #0180 - 0xB8321600, // 00D3 GETNGBL R12 K11 - 0x88301917, // 00D4 GETMBR R12 R12 K23 - 0x1C300C0C, // 00D5 EQ R12 R6 R12 - 0x78320046, // 00D6 JMPF R12 #011E - 0xB8321200, // 00D7 GETNGBL R12 K9 - 0x8C30190A, // 00D8 GETMET R12 R12 K10 - 0x5C381600, // 00D9 MOVE R14 R11 - 0x583C0007, // 00DA LDCONST R15 K7 - 0x0440070F, // 00DB SUB R16 R3 K15 - 0x58440007, // 00DC LDCONST R17 K7 - 0x544A00FE, // 00DD LDINT R18 255 - 0x7C300C00, // 00DE CALL R12 6 - 0x1C341907, // 00DF EQ R13 R12 K7 - 0x78360001, // 00E0 JMPF R13 #00E3 - 0x90021A04, // 00E1 SETMBR R0 K13 R4 - 0x70020039, // 00E2 JMP #011D - 0x543600FE, // 00E3 LDINT R13 255 - 0x1C34180D, // 00E4 EQ R13 R12 R13 - 0x78360001, // 00E5 JMPF R13 #00E8 - 0x90021A05, // 00E6 SETMBR R0 K13 R5 - 0x70020034, // 00E7 JMP #011D - 0xB8361200, // 00E8 GETNGBL R13 K9 - 0x8C341B0A, // 00E9 GETMET R13 R13 K10 - 0x543E00FE, // 00EA LDINT R15 255 - 0x043C1E0C, // 00EB SUB R15 R15 R12 - 0x58400007, // 00EC LDCONST R16 K7 - 0x544600FE, // 00ED LDINT R17 255 - 0x544A00FE, // 00EE LDINT R18 255 - 0x544E001F, // 00EF LDINT R19 32 - 0x7C340C00, // 00F0 CALL R13 6 - 0xB83A1200, // 00F1 GETNGBL R14 K9 - 0x8C381D0A, // 00F2 GETMET R14 R14 K10 - 0x5C401800, // 00F3 MOVE R16 R12 - 0x58440007, // 00F4 LDCONST R17 K7 - 0x544A00FE, // 00F5 LDINT R18 255 - 0x584C0007, // 00F6 LDCONST R19 K7 - 0x54527FFE, // 00F7 LDINT R20 32767 - 0x54560005, // 00F8 LDINT R21 6 - 0x08502815, // 00F9 MUL R20 R20 R21 - 0x7C380C00, // 00FA CALL R14 6 - 0xB83E1200, // 00FB GETNGBL R15 K9 - 0x8C3C1F13, // 00FC GETMET R15 R15 K19 - 0x54467FFE, // 00FD LDINT R17 32767 - 0x10441C11, // 00FE MOD R17 R14 R17 - 0x7C3C0400, // 00FF CALL R15 2 - 0x08401E0D, // 0100 MUL R16 R15 R13 - 0x54460FFF, // 0101 LDINT R17 4096 - 0x0C402011, // 0102 DIV R16 R16 R17 - 0xB8461200, // 0103 GETNGBL R17 K9 - 0x8C44230E, // 0104 GETMET R17 R17 K14 - 0x5C4C1800, // 0105 MOVE R19 R12 - 0x58500007, // 0106 LDCONST R20 K7 - 0x545600FE, // 0107 LDINT R21 255 - 0x58580007, // 0108 LDCONST R22 K7 - 0x045C0A04, // 0109 SUB R23 R5 R4 - 0x7C440C00, // 010A CALL R17 6 - 0x00480811, // 010B ADD R18 R4 R17 - 0x00482410, // 010C ADD R18 R18 R16 - 0x90021A12, // 010D SETMBR R0 K13 R18 - 0x04480A04, // 010E SUB R18 R5 R4 - 0x544E0003, // 010F LDINT R19 4 - 0x0C4C2413, // 0110 DIV R19 R18 R19 - 0x8850010D, // 0111 GETMBR R20 R0 K13 - 0x00540A13, // 0112 ADD R21 R5 R19 - 0x24502815, // 0113 GT R20 R20 R21 - 0x78520001, // 0114 JMPF R20 #0117 - 0x00500A13, // 0115 ADD R20 R5 R19 - 0x90021A14, // 0116 SETMBR R0 K13 R20 - 0x8850010D, // 0117 GETMBR R20 R0 K13 - 0x04540813, // 0118 SUB R21 R4 R19 - 0x14502815, // 0119 LT R20 R20 R21 - 0x78520001, // 011A JMPF R20 #011D - 0x04500813, // 011B SUB R20 R4 R19 - 0x90021A14, // 011C SETMBR R0 K13 R20 - 0x70020061, // 011D JMP #0180 - 0xB8321600, // 011E GETNGBL R12 K11 - 0x88301918, // 011F GETMBR R12 R12 K24 - 0x1C300C0C, // 0120 EQ R12 R6 R12 - 0x7832005D, // 0121 JMPF R12 #0180 - 0xB8321200, // 0122 GETNGBL R12 K9 - 0x8C30190A, // 0123 GETMET R12 R12 K10 - 0x5C381600, // 0124 MOVE R14 R11 - 0x583C0007, // 0125 LDCONST R15 K7 - 0x0440070F, // 0126 SUB R16 R3 K15 - 0x58440007, // 0127 LDCONST R17 K7 - 0x544A00FE, // 0128 LDINT R18 255 - 0x7C300C00, // 0129 CALL R12 6 - 0x58340007, // 012A LDCONST R13 K7 - 0x543A007F, // 012B LDINT R14 128 - 0x1438180E, // 012C LT R14 R12 R14 - 0x783A0012, // 012D JMPF R14 #0141 - 0xB83A1200, // 012E GETNGBL R14 K9 - 0x8C381D0A, // 012F GETMET R14 R14 K10 - 0x5C401800, // 0130 MOVE R16 R12 - 0x58440007, // 0131 LDCONST R17 K7 - 0x544A007E, // 0132 LDINT R18 127 - 0x584C0007, // 0133 LDCONST R19 K7 - 0x545200FE, // 0134 LDINT R20 255 - 0x7C380C00, // 0135 CALL R14 6 - 0x543E00FE, // 0136 LDINT R15 255 - 0x544200FE, // 0137 LDINT R16 255 - 0x0440200E, // 0138 SUB R16 R16 R14 - 0x544600FE, // 0139 LDINT R17 255 - 0x0444220E, // 013A SUB R17 R17 R14 - 0x08402011, // 013B MUL R16 R16 R17 - 0x544600FE, // 013C LDINT R17 255 - 0x0C402011, // 013D DIV R16 R16 R17 - 0x043C1E10, // 013E SUB R15 R15 R16 - 0x5C341E00, // 013F MOVE R13 R15 - 0x70020035, // 0140 JMP #0177 - 0x543A00BF, // 0141 LDINT R14 192 - 0x1438180E, // 0142 LT R14 R12 R14 - 0x783A0017, // 0143 JMPF R14 #015C - 0xB83A1200, // 0144 GETNGBL R14 K9 - 0x8C381D0A, // 0145 GETMET R14 R14 K10 - 0x5442007F, // 0146 LDINT R16 128 - 0x04401810, // 0147 SUB R16 R12 R16 - 0x58440007, // 0148 LDCONST R17 K7 - 0x544A003E, // 0149 LDINT R18 63 - 0x584C0007, // 014A LDCONST R19 K7 - 0x545200FE, // 014B LDINT R20 255 - 0x7C380C00, // 014C CALL R14 6 - 0x543E00FE, // 014D LDINT R15 255 - 0x544200FE, // 014E LDINT R16 255 - 0x0440200E, // 014F SUB R16 R16 R14 - 0x544600FE, // 0150 LDINT R17 255 - 0x0444220E, // 0151 SUB R17 R17 R14 - 0x08402011, // 0152 MUL R16 R16 R17 - 0x544600FE, // 0153 LDINT R17 255 - 0x0C402011, // 0154 DIV R16 R16 R17 - 0x043C1E10, // 0155 SUB R15 R15 R16 - 0x5442007F, // 0156 LDINT R16 128 - 0x08401E10, // 0157 MUL R16 R15 R16 - 0x544600FE, // 0158 LDINT R17 255 - 0x0C402011, // 0159 DIV R16 R16 R17 - 0x5C342000, // 015A MOVE R13 R16 - 0x7002001A, // 015B JMP #0177 - 0xB83A1200, // 015C GETNGBL R14 K9 - 0x8C381D0A, // 015D GETMET R14 R14 K10 - 0x544200BF, // 015E LDINT R16 192 - 0x04401810, // 015F SUB R16 R12 R16 - 0x58440007, // 0160 LDCONST R17 K7 - 0x544A003E, // 0161 LDINT R18 63 - 0x584C0007, // 0162 LDCONST R19 K7 - 0x545200FE, // 0163 LDINT R20 255 - 0x7C380C00, // 0164 CALL R14 6 - 0x543E00FE, // 0165 LDINT R15 255 - 0x544200FE, // 0166 LDINT R16 255 - 0x0440200E, // 0167 SUB R16 R16 R14 - 0x544600FE, // 0168 LDINT R17 255 - 0x0444220E, // 0169 SUB R17 R17 R14 - 0x08402011, // 016A MUL R16 R16 R17 - 0x544600FE, // 016B LDINT R17 255 - 0x0C402011, // 016C DIV R16 R16 R17 - 0x043C1E10, // 016D SUB R15 R15 R16 - 0x544200FE, // 016E LDINT R16 255 - 0x544600FE, // 016F LDINT R17 255 - 0x0444220F, // 0170 SUB R17 R17 R15 - 0x544A003F, // 0171 LDINT R18 64 - 0x08442212, // 0172 MUL R17 R17 R18 - 0x544A00FE, // 0173 LDINT R18 255 - 0x0C442212, // 0174 DIV R17 R17 R18 - 0x04402011, // 0175 SUB R16 R16 R17 - 0x5C342000, // 0176 MOVE R13 R16 - 0xB83A1200, // 0177 GETNGBL R14 K9 - 0x8C381D0E, // 0178 GETMET R14 R14 K14 - 0x5C401A00, // 0179 MOVE R16 R13 - 0x58440007, // 017A LDCONST R17 K7 - 0x544A00FE, // 017B LDINT R18 255 - 0x5C4C0800, // 017C MOVE R19 R4 - 0x5C500A00, // 017D MOVE R20 R5 - 0x7C380C00, // 017E CALL R14 6 - 0x90021A0E, // 017F SETMBR R0 K13 R14 - 0x8830010D, // 0180 GETMBR R12 R0 K13 - 0x80041800, // 0181 RET 1 R12 + 0xB8361200, // 00A7 GETNGBL R13 K9 + 0x8C341B0E, // 00A8 GETMET R13 R13 K14 + 0x083C180C, // 00A9 MUL R15 R12 R12 + 0x58400007, // 00AA LDCONST R16 K7 + 0x544600FE, // 00AB LDINT R17 255 + 0x544A00FE, // 00AC LDINT R18 255 + 0x08442212, // 00AD MUL R17 R17 R18 + 0x58480007, // 00AE LDCONST R18 K7 + 0x544E00FE, // 00AF LDINT R19 255 + 0x7C340C00, // 00B0 CALL R13 6 + 0xB83A1200, // 00B1 GETNGBL R14 K9 + 0x8C381D0E, // 00B2 GETMET R14 R14 K14 + 0x5C401A00, // 00B3 MOVE R16 R13 + 0x58440007, // 00B4 LDCONST R17 K7 + 0x544A00FE, // 00B5 LDINT R18 255 + 0x5C4C0800, // 00B6 MOVE R19 R4 + 0x5C500A00, // 00B7 MOVE R20 R5 + 0x7C380C00, // 00B8 CALL R14 6 + 0x90021A0E, // 00B9 SETMBR R0 K13 R14 + 0x700200F5, // 00BA JMP #01B1 + 0xB8321600, // 00BB GETNGBL R12 K11 + 0x88301916, // 00BC GETMBR R12 R12 K22 + 0x1C300C0C, // 00BD EQ R12 R6 R12 + 0x7832001F, // 00BE JMPF R12 #00DF + 0xB8321200, // 00BF GETNGBL R12 K9 + 0x8C30190A, // 00C0 GETMET R12 R12 K10 + 0x5C381600, // 00C1 MOVE R14 R11 + 0x583C0007, // 00C2 LDCONST R15 K7 + 0x0440070F, // 00C3 SUB R16 R3 K15 + 0x58440007, // 00C4 LDCONST R17 K7 + 0x544A00FE, // 00C5 LDINT R18 255 + 0x7C300C00, // 00C6 CALL R12 6 + 0x543600FE, // 00C7 LDINT R13 255 + 0x04341A0C, // 00C8 SUB R13 R13 R12 + 0x543A00FE, // 00C9 LDINT R14 255 + 0xB83E1200, // 00CA GETNGBL R15 K9 + 0x8C3C1F0E, // 00CB GETMET R15 R15 K14 + 0x08441A0D, // 00CC MUL R17 R13 R13 + 0x58480007, // 00CD LDCONST R18 K7 + 0x544E00FE, // 00CE LDINT R19 255 + 0x545200FE, // 00CF LDINT R20 255 + 0x084C2614, // 00D0 MUL R19 R19 R20 + 0x58500007, // 00D1 LDCONST R20 K7 + 0x545600FE, // 00D2 LDINT R21 255 + 0x7C3C0C00, // 00D3 CALL R15 6 + 0x04381C0F, // 00D4 SUB R14 R14 R15 + 0xB83E1200, // 00D5 GETNGBL R15 K9 + 0x8C3C1F0E, // 00D6 GETMET R15 R15 K14 + 0x5C441C00, // 00D7 MOVE R17 R14 + 0x58480007, // 00D8 LDCONST R18 K7 + 0x544E00FE, // 00D9 LDINT R19 255 + 0x5C500800, // 00DA MOVE R20 R4 + 0x5C540A00, // 00DB MOVE R21 R5 + 0x7C3C0C00, // 00DC CALL R15 6 + 0x90021A0F, // 00DD SETMBR R0 K13 R15 + 0x700200D1, // 00DE JMP #01B1 + 0xB8321600, // 00DF GETNGBL R12 K11 + 0x88301917, // 00E0 GETMBR R12 R12 K23 + 0x1C300C0C, // 00E1 EQ R12 R6 R12 + 0x78320055, // 00E2 JMPF R12 #0139 + 0xB8321200, // 00E3 GETNGBL R12 K9 + 0x8C30190A, // 00E4 GETMET R12 R12 K10 + 0x5C381600, // 00E5 MOVE R14 R11 + 0x583C0007, // 00E6 LDCONST R15 K7 + 0x0440070F, // 00E7 SUB R16 R3 K15 + 0x58440007, // 00E8 LDCONST R17 K7 + 0x544A00FE, // 00E9 LDINT R18 255 + 0x7C300C00, // 00EA CALL R12 6 + 0x1C341907, // 00EB EQ R13 R12 K7 + 0x78360001, // 00EC JMPF R13 #00EF + 0x90021A04, // 00ED SETMBR R0 K13 R4 + 0x70020048, // 00EE JMP #0138 + 0x543600FE, // 00EF LDINT R13 255 + 0x1C34180D, // 00F0 EQ R13 R12 R13 + 0x78360001, // 00F1 JMPF R13 #00F4 + 0x90021A05, // 00F2 SETMBR R0 K13 R5 + 0x70020043, // 00F3 JMP #0138 + 0xB8361200, // 00F4 GETNGBL R13 K9 + 0x8C341B0A, // 00F5 GETMET R13 R13 K10 + 0x543E00FE, // 00F6 LDINT R15 255 + 0x043C1E0C, // 00F7 SUB R15 R15 R12 + 0x58400007, // 00F8 LDCONST R16 K7 + 0x544600FE, // 00F9 LDINT R17 255 + 0x544A00FE, // 00FA LDINT R18 255 + 0x544E001F, // 00FB LDINT R19 32 + 0x7C340C00, // 00FC CALL R13 6 + 0xB83A1200, // 00FD GETNGBL R14 K9 + 0x8C381D0A, // 00FE GETMET R14 R14 K10 + 0x5C401800, // 00FF MOVE R16 R12 + 0x58440007, // 0100 LDCONST R17 K7 + 0x544A00FE, // 0101 LDINT R18 255 + 0x584C0007, // 0102 LDCONST R19 K7 + 0x54527FFE, // 0103 LDINT R20 32767 + 0x54560005, // 0104 LDINT R21 6 + 0x08502815, // 0105 MUL R20 R20 R21 + 0x7C380C00, // 0106 CALL R14 6 + 0xB83E1200, // 0107 GETNGBL R15 K9 + 0x8C3C1F13, // 0108 GETMET R15 R15 K19 + 0x54467FFE, // 0109 LDINT R17 32767 + 0x10441C11, // 010A MOD R17 R14 R17 + 0x7C3C0400, // 010B CALL R15 2 + 0xB8421200, // 010C GETNGBL R16 K9 + 0x8C40210E, // 010D GETMET R16 R16 K14 + 0x08481E0D, // 010E MUL R18 R15 R13 + 0x544DEFFF, // 010F LDINT R19 -4096 + 0x545200FE, // 0110 LDINT R20 255 + 0x084C2614, // 0111 MUL R19 R19 R20 + 0x54520FFF, // 0112 LDINT R20 4096 + 0x545600FE, // 0113 LDINT R21 255 + 0x08502815, // 0114 MUL R20 R20 R21 + 0x5455FF00, // 0115 LDINT R21 -255 + 0x545A00FE, // 0116 LDINT R22 255 + 0x7C400C00, // 0117 CALL R16 6 + 0xB8461200, // 0118 GETNGBL R17 K9 + 0x8C44230E, // 0119 GETMET R17 R17 K14 + 0x5C4C1800, // 011A MOVE R19 R12 + 0x58500007, // 011B LDCONST R20 K7 + 0x545600FE, // 011C LDINT R21 255 + 0x58580007, // 011D LDCONST R22 K7 + 0x045C0A04, // 011E SUB R23 R5 R4 + 0x7C440C00, // 011F CALL R17 6 + 0x00480811, // 0120 ADD R18 R4 R17 + 0x00482410, // 0121 ADD R18 R18 R16 + 0x90021A12, // 0122 SETMBR R0 K13 R18 + 0x04480A04, // 0123 SUB R18 R5 R4 + 0xB84E1200, // 0124 GETNGBL R19 K9 + 0x8C4C270E, // 0125 GETMET R19 R19 K14 + 0x5C542400, // 0126 MOVE R21 R18 + 0x58580007, // 0127 LDCONST R22 K7 + 0x545E0003, // 0128 LDINT R23 4 + 0x58600007, // 0129 LDCONST R24 K7 + 0x5864000F, // 012A LDCONST R25 K15 + 0x7C4C0C00, // 012B CALL R19 6 + 0x8850010D, // 012C GETMBR R20 R0 K13 + 0x00540A13, // 012D ADD R21 R5 R19 + 0x24502815, // 012E GT R20 R20 R21 + 0x78520001, // 012F JMPF R20 #0132 + 0x00500A13, // 0130 ADD R20 R5 R19 + 0x90021A14, // 0131 SETMBR R0 K13 R20 + 0x8850010D, // 0132 GETMBR R20 R0 K13 + 0x04540813, // 0133 SUB R21 R4 R19 + 0x14502815, // 0134 LT R20 R20 R21 + 0x78520001, // 0135 JMPF R20 #0138 + 0x04500813, // 0136 SUB R20 R4 R19 + 0x90021A14, // 0137 SETMBR R0 K13 R20 + 0x70020077, // 0138 JMP #01B1 + 0xB8321600, // 0139 GETNGBL R12 K11 + 0x88301918, // 013A GETMBR R12 R12 K24 + 0x1C300C0C, // 013B EQ R12 R6 R12 + 0x78320073, // 013C JMPF R12 #01B1 + 0xB8321200, // 013D GETNGBL R12 K9 + 0x8C30190A, // 013E GETMET R12 R12 K10 + 0x5C381600, // 013F MOVE R14 R11 + 0x583C0007, // 0140 LDCONST R15 K7 + 0x0440070F, // 0141 SUB R16 R3 K15 + 0x58440007, // 0142 LDCONST R17 K7 + 0x544A00FE, // 0143 LDINT R18 255 + 0x7C300C00, // 0144 CALL R12 6 + 0x58340007, // 0145 LDCONST R13 K7 + 0x543A007F, // 0146 LDINT R14 128 + 0x1438180E, // 0147 LT R14 R12 R14 + 0x783A0017, // 0148 JMPF R14 #0161 + 0xB83A1200, // 0149 GETNGBL R14 K9 + 0x8C381D0A, // 014A GETMET R14 R14 K10 + 0x5C401800, // 014B MOVE R16 R12 + 0x58440007, // 014C LDCONST R17 K7 + 0x544A007E, // 014D LDINT R18 127 + 0x584C0007, // 014E LDCONST R19 K7 + 0x545200FE, // 014F LDINT R20 255 + 0x7C380C00, // 0150 CALL R14 6 + 0x543E00FE, // 0151 LDINT R15 255 + 0x043C1E0E, // 0152 SUB R15 R15 R14 + 0x544200FE, // 0153 LDINT R16 255 + 0xB8461200, // 0154 GETNGBL R17 K9 + 0x8C44230E, // 0155 GETMET R17 R17 K14 + 0x084C1E0F, // 0156 MUL R19 R15 R15 + 0x58500007, // 0157 LDCONST R20 K7 + 0x545600FE, // 0158 LDINT R21 255 + 0x545A00FE, // 0159 LDINT R22 255 + 0x08542A16, // 015A MUL R21 R21 R22 + 0x58580007, // 015B LDCONST R22 K7 + 0x545E00FE, // 015C LDINT R23 255 + 0x7C440C00, // 015D CALL R17 6 + 0x04402011, // 015E SUB R16 R16 R17 + 0x5C342000, // 015F MOVE R13 R16 + 0x70020046, // 0160 JMP #01A8 + 0x543A00BF, // 0161 LDINT R14 192 + 0x1438180E, // 0162 LT R14 R12 R14 + 0x783A0020, // 0163 JMPF R14 #0185 + 0xB83A1200, // 0164 GETNGBL R14 K9 + 0x8C381D0A, // 0165 GETMET R14 R14 K10 + 0x5442007F, // 0166 LDINT R16 128 + 0x04401810, // 0167 SUB R16 R12 R16 + 0x58440007, // 0168 LDCONST R17 K7 + 0x544A003E, // 0169 LDINT R18 63 + 0x584C0007, // 016A LDCONST R19 K7 + 0x545200FE, // 016B LDINT R20 255 + 0x7C380C00, // 016C CALL R14 6 + 0x543E00FE, // 016D LDINT R15 255 + 0x043C1E0E, // 016E SUB R15 R15 R14 + 0x544200FE, // 016F LDINT R16 255 + 0xB8461200, // 0170 GETNGBL R17 K9 + 0x8C44230E, // 0171 GETMET R17 R17 K14 + 0x084C1E0F, // 0172 MUL R19 R15 R15 + 0x58500007, // 0173 LDCONST R20 K7 + 0x545600FE, // 0174 LDINT R21 255 + 0x545A00FE, // 0175 LDINT R22 255 + 0x08542A16, // 0176 MUL R21 R21 R22 + 0x58580007, // 0177 LDCONST R22 K7 + 0x545E00FE, // 0178 LDINT R23 255 + 0x7C440C00, // 0179 CALL R17 6 + 0x04402011, // 017A SUB R16 R16 R17 + 0xB8461200, // 017B GETNGBL R17 K9 + 0x8C44230E, // 017C GETMET R17 R17 K14 + 0x5C4C2000, // 017D MOVE R19 R16 + 0x58500007, // 017E LDCONST R20 K7 + 0x545600FE, // 017F LDINT R21 255 + 0x58580007, // 0180 LDCONST R22 K7 + 0x545E007F, // 0181 LDINT R23 128 + 0x7C440C00, // 0182 CALL R17 6 + 0x5C342200, // 0183 MOVE R13 R17 + 0x70020022, // 0184 JMP #01A8 + 0xB83A1200, // 0185 GETNGBL R14 K9 + 0x8C381D0A, // 0186 GETMET R14 R14 K10 + 0x544200BF, // 0187 LDINT R16 192 + 0x04401810, // 0188 SUB R16 R12 R16 + 0x58440007, // 0189 LDCONST R17 K7 + 0x544A003E, // 018A LDINT R18 63 + 0x584C0007, // 018B LDCONST R19 K7 + 0x545200FE, // 018C LDINT R20 255 + 0x7C380C00, // 018D CALL R14 6 + 0x543E00FE, // 018E LDINT R15 255 + 0x043C1E0E, // 018F SUB R15 R15 R14 + 0x544200FE, // 0190 LDINT R16 255 + 0xB8461200, // 0191 GETNGBL R17 K9 + 0x8C44230E, // 0192 GETMET R17 R17 K14 + 0x084C1E0F, // 0193 MUL R19 R15 R15 + 0x58500007, // 0194 LDCONST R20 K7 + 0x545600FE, // 0195 LDINT R21 255 + 0x545A00FE, // 0196 LDINT R22 255 + 0x08542A16, // 0197 MUL R21 R21 R22 + 0x58580007, // 0198 LDCONST R22 K7 + 0x545E00FE, // 0199 LDINT R23 255 + 0x7C440C00, // 019A CALL R17 6 + 0x04402011, // 019B SUB R16 R16 R17 + 0x544600FE, // 019C LDINT R17 255 + 0xB84A1200, // 019D GETNGBL R18 K9 + 0x8C48250E, // 019E GETMET R18 R18 K14 + 0x545200FE, // 019F LDINT R20 255 + 0x04502810, // 01A0 SUB R20 R20 R16 + 0x58540007, // 01A1 LDCONST R21 K7 + 0x545A00FE, // 01A2 LDINT R22 255 + 0x585C0007, // 01A3 LDCONST R23 K7 + 0x5462003F, // 01A4 LDINT R24 64 + 0x7C480C00, // 01A5 CALL R18 6 + 0x04442212, // 01A6 SUB R17 R17 R18 + 0x5C342200, // 01A7 MOVE R13 R17 + 0xB83A1200, // 01A8 GETNGBL R14 K9 + 0x8C381D0E, // 01A9 GETMET R14 R14 K14 + 0x5C401A00, // 01AA MOVE R16 R13 + 0x58440007, // 01AB LDCONST R17 K7 + 0x544A00FE, // 01AC LDINT R18 255 + 0x5C4C0800, // 01AD MOVE R19 R4 + 0x5C500A00, // 01AE MOVE R20 R5 + 0x7C380C00, // 01AF CALL R14 6 + 0x90021A0E, // 01B0 SETMBR R0 K13 R14 + 0x8830010D, // 01B1 GETMBR R12 R0 K13 + 0x80041800, // 01B2 RET 1 R12 }) ) ); @@ -10461,39 +5925,70 @@ be_local_closure(rich_palette_rainbow, /* name */ /******************************************************************** -** Solidified function: shift_fast_scroll +** Solidified function: animation_init_strip ********************************************************************/ -be_local_closure(shift_fast_scroll, /* name */ +be_local_closure(animation_init_strip, /* name */ be_nested_proto( - 4, /* nstack */ + 10, /* nstack */ 1, /* argc */ - 0, /* varg */ + 1, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(shift_animation), - /* K2 */ be_nested_str_weak(direction), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(shift_speed), - /* K5 */ be_nested_str_weak(wrap_around), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(global), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(introspect), + /* K3 */ be_nested_str_weak(contains), + /* K4 */ be_nested_str_weak(_engines), + /* K5 */ be_nested_str_weak(find), + /* K6 */ be_nested_str_weak(stop), + /* K7 */ be_nested_str_weak(clear), + /* K8 */ be_nested_str_weak(Leds), + /* K9 */ be_nested_str_weak(create_engine), }), - be_str_weak(shift_fast_scroll), + be_str_weak(animation_init_strip), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A00C7, // 0005 LDINT R2 200 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x50080200, // 0007 LDBOOL R2 1 0 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x80040200, // 0009 RET 1 R1 + ( &(const binstruction[37]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0xA40E0400, // 0002 IMPORT R3 K2 + 0x8C100703, // 0003 GETMET R4 R3 K3 + 0x5C180400, // 0004 MOVE R6 R2 + 0x581C0004, // 0005 LDCONST R7 K4 + 0x7C100600, // 0006 CALL R4 3 + 0x74120002, // 0007 JMPT R4 #000B + 0x60100013, // 0008 GETGBL R4 G19 + 0x7C100000, // 0009 CALL R4 0 + 0x900A0804, // 000A SETMBR R2 K4 R4 + 0x60100008, // 000B GETGBL R4 G8 + 0x5C140000, // 000C MOVE R5 R0 + 0x7C100200, // 000D CALL R4 1 + 0x88140504, // 000E GETMBR R5 R2 K4 + 0x8C140B05, // 000F GETMET R5 R5 K5 + 0x5C1C0800, // 0010 MOVE R7 R4 + 0x7C140400, // 0011 CALL R5 2 + 0x4C180000, // 0012 LDNIL R6 + 0x20180A06, // 0013 NE R6 R5 R6 + 0x781A0004, // 0014 JMPF R6 #001A + 0x8C180B06, // 0015 GETMET R6 R5 K6 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180B07, // 0017 GETMET R6 R5 K7 + 0x7C180200, // 0018 CALL R6 1 + 0x70020009, // 0019 JMP #0024 + 0x60180016, // 001A GETGBL R6 G22 + 0x881C0308, // 001B GETMBR R7 R1 K8 + 0x5C200000, // 001C MOVE R8 R0 + 0x7C180400, // 001D CALL R6 2 + 0x8C1C0509, // 001E GETMET R7 R2 K9 + 0x5C240C00, // 001F MOVE R9 R6 + 0x7C1C0400, // 0020 CALL R7 2 + 0x5C140E00, // 0021 MOVE R5 R7 + 0x881C0504, // 0022 GETMBR R7 R2 K4 + 0x981C0805, // 0023 SETIDX R7 R4 R5 + 0x80040A00, // 0024 RET 1 R5 }) ) ); @@ -10537,9 +6032,9 @@ be_local_closure(sine_osc, /* name */ /******************************************************************** -** Solidified function: is_value_provider +** Solidified function: bounce ********************************************************************/ -be_local_closure(is_value_provider, /* name */ +be_local_closure(bounce, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -10549,19 +6044,103 @@ be_local_closure(is_value_provider, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(value_provider), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_nested_str_weak(BOUNCE), }), - be_str_weak(is_value_provider), + be_str_weak(bounce), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x6004000F, // 0000 GETGBL R1 G15 - 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E0000, // 0002 GETNGBL R3 K0 - 0x880C0701, // 0003 GETMBR R3 R3 K1 - 0x7C040400, // 0004 CALL R1 2 - 0x80040200, // 0005 RET 1 R1 + ( &(const binstruction[ 8]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'RichPaletteAnimation' ktab size: 18, total: 23 (saved 40 bytes) +static const bvalue be_ktab_class_RichPaletteAnimation[18] = { + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(palette), + /* K2 */ be_nested_str_weak(cycle_period), + /* K3 */ be_nested_str_weak(transition_type), + /* K4 */ be_nested_str_weak(brightness), + /* K5 */ be_nested_str_weak(range_min), + /* K6 */ be_nested_str_weak(range_max), + /* K7 */ be_nested_str_weak(color_provider), + /* K8 */ be_nested_str_weak(set_param), + /* K9 */ be_nested_str_weak(RichPaletteAnimation_X28_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20brightness_X3D_X25s_X29), + /* K10 */ be_nested_str_weak(name), + /* K11 */ be_nested_str_weak(RichPaletteAnimation_X28uninitialized_X29), + /* K12 */ be_nested_str_weak(init), + /* K13 */ be_nested_str_weak(rich_palette), + /* K14 */ be_nested_str_weak(animation), + /* K15 */ be_nested_str_weak(values), + /* K16 */ be_nested_str_weak(color), + /* K17 */ be_nested_str_weak(start), +}; + + +extern const bclass be_class_RichPaletteAnimation; + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_RichPaletteAnimation_on_param_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_RichPaletteAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x740E0009, // 0008 JMPT R3 #0013 + 0x1C0C0302, // 0009 EQ R3 R1 K2 + 0x740E0007, // 000A JMPT R3 #0013 + 0x1C0C0303, // 000B EQ R3 R1 K3 + 0x740E0005, // 000C JMPT R3 #0013 + 0x1C0C0304, // 000D EQ R3 R1 K4 + 0x740E0003, // 000E JMPT R3 #0013 + 0x1C0C0305, // 000F EQ R3 R1 K5 + 0x740E0001, // 0010 JMPT R3 #0013 + 0x1C0C0306, // 0011 EQ R3 R1 K6 + 0x780E0005, // 0012 JMPF R3 #0019 + 0x880C0107, // 0013 GETMBR R3 R0 K7 + 0x8C0C0708, // 0014 GETMET R3 R3 K8 + 0x5C140200, // 0015 MOVE R5 R1 + 0x5C180400, // 0016 MOVE R6 R2 + 0x7C0C0600, // 0017 CALL R3 3 + 0x70020006, // 0018 JMP #0020 + 0x600C0003, // 0019 GETGBL R3 G3 + 0x5C100000, // 001A MOVE R4 R0 + 0x7C0C0200, // 001B CALL R3 1 + 0x8C0C0700, // 001C GETMET R3 R3 K0 + 0x5C140200, // 001D MOVE R5 R1 + 0x5C180400, // 001E MOVE R6 R2 + 0x7C0C0600, // 001F CALL R3 3 + 0x80000000, // 0020 RET 0 }) ) ); @@ -10569,39 +6148,39 @@ be_local_closure(is_value_provider, /* name */ /******************************************************************** -** Solidified function: shift_scroll_right +** Solidified function: tostring ********************************************************************/ -be_local_closure(shift_scroll_right, /* name */ +be_local_closure(class_RichPaletteAnimation_tostring, /* name */ be_nested_proto( - 4, /* nstack */ + 6, /* nstack */ 1, /* argc */ - 0, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(shift_animation), - /* K2 */ be_nested_str_weak(direction), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(shift_speed), - /* K5 */ be_nested_str_weak(wrap_around), - }), - be_str_weak(shift_scroll_right), + &be_ktab_class_RichPaletteAnimation, /* shared constants */ + be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A007F, // 0005 LDINT R2 128 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x50080200, // 0007 LDBOOL R2 1 0 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x80040200, // 0009 RET 1 R1 + ( &(const binstruction[17]) { /* code */ + 0xA8020009, // 0000 EXBLK 0 #000B + 0x60040018, // 0001 GETGBL R1 G24 + 0x58080009, // 0002 LDCONST R2 K9 + 0x880C010A, // 0003 GETMBR R3 R0 K10 + 0x88100102, // 0004 GETMBR R4 R0 K2 + 0x88140104, // 0005 GETMBR R5 R0 K4 + 0x7C040800, // 0006 CALL R1 4 + 0xA8040001, // 0007 EXBLK 1 1 + 0x80040200, // 0008 RET 1 R1 + 0xA8040001, // 0009 EXBLK 1 1 + 0x70020004, // 000A JMP #0010 + 0xAC040000, // 000B CATCH R1 0 0 + 0x70020001, // 000C JMP #000F + 0x80061600, // 000D RET 1 K11 + 0x70020000, // 000E JMP #0010 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x80000000, // 0010 RET 0 }) ) ); @@ -10609,48 +6188,140 @@ be_local_closure(shift_scroll_right, /* name */ /******************************************************************** -** Solidified function: jitter_all +** Solidified function: init ********************************************************************/ -be_local_closure(jitter_all, /* name */ +be_local_closure(class_RichPaletteAnimation_init, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(jitter_animation), - /* K2 */ be_nested_str_weak(jitter_type), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(position_range), - /* K5 */ be_nested_str_weak(color_range), - /* K6 */ be_nested_str_weak(brightness_range), - }), - be_str_weak(jitter_all), + &be_ktab_class_RichPaletteAnimation, /* shared constants */ + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A0031, // 0005 LDINT R2 50 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x540A001D, // 0007 LDINT R2 30 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x540A0027, // 0009 LDINT R2 40 - 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x80040200, // 000B RET 1 R1 + ( &(const binstruction[16]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08050C, // 0003 GETMET R2 R2 K12 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x9002150D, // 0006 SETMBR R0 K10 K13 + 0xB80A1C00, // 0007 GETNGBL R2 K14 + 0x8C08050D, // 0008 GETMET R2 R2 K13 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x90020E02, // 000B SETMBR R0 K7 R2 + 0x8808010F, // 000C GETMBR R2 R0 K15 + 0x880C0107, // 000D GETMBR R3 R0 K7 + 0x980A2003, // 000E SETIDX R2 K16 R3 + 0x80000000, // 000F RET 0 }) ) ); /*******************************************************************/ +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_RichPaletteAnimation_start, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_RichPaletteAnimation, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080511, // 0003 GETMET R2 R2 K17 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080107, // 0006 GETMBR R2 R0 K7 + 0x8C080511, // 0007 GETMET R2 R2 K17 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x80040000, // 000A RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: RichPaletteAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(RichPaletteAnimation, + 1, + &be_class_Animation, + be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(tostring, -1), be_const_closure(class_RichPaletteAnimation_tostring_closure) }, + { be_const_key_weak(on_param_changed, 0), be_const_closure(class_RichPaletteAnimation_on_param_changed_closure) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(range_min, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(transition_type, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(enum, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(2, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(1), + be_const_int(5), + })) ) } )) }, + { be_const_key_weak(default, -1), be_const_int(5) }, + })) ) } )) }, + { be_const_key_weak(palette, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, + })) ) } )) }, + { be_const_key_weak(cycle_period, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(5000) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(255) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(range_max, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(255) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, 2), be_const_closure(class_RichPaletteAnimation_init_closure) }, + { be_const_key_weak(color_provider, -1), be_const_var(0) }, + { be_const_key_weak(start, -1), be_const_closure(class_RichPaletteAnimation_start_closure) }, + })), + be_str_weak(RichPaletteAnimation) +); + /******************************************************************** ** Solidified function: linear ********************************************************************/ @@ -10686,107 +6357,46 @@ be_local_closure(linear, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: noise_fractal -********************************************************************/ -be_local_closure(noise_fractal, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(noise_animation), - /* K2 */ be_nested_str_weak(rich_palette), - /* K3 */ be_nested_str_weak(palette), - /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K5 */ be_nested_str_weak(cycle_period), - /* K6 */ be_nested_str_weak(transition_type), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(brightness), - /* K9 */ be_nested_str_weak(range_min), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(range_max), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_nested_str_weak(scale), - /* K14 */ be_nested_str_weak(speed), - /* K15 */ be_nested_str_weak(octaves), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(persistence), - }), - be_str_weak(noise_fractal), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0xB80E0000, // 0008 GETNGBL R3 K0 - 0x880C0704, // 0009 GETMBR R3 R3 K4 - 0x900A0603, // 000A SETMBR R2 K3 R3 - 0x540E1387, // 000B LDINT R3 5000 - 0x900A0A03, // 000C SETMBR R2 K5 R3 - 0x900A0D07, // 000D SETMBR R2 K6 K7 - 0x540E00FE, // 000E LDINT R3 255 - 0x900A1003, // 000F SETMBR R2 K8 R3 - 0x900A130A, // 0010 SETMBR R2 K9 K10 - 0x540E00FE, // 0011 LDINT R3 255 - 0x900A1603, // 0012 SETMBR R2 K11 R3 - 0x90061802, // 0013 SETMBR R1 K12 R2 - 0x540E001D, // 0014 LDINT R3 30 - 0x90061A03, // 0015 SETMBR R1 K13 R3 - 0x540E0013, // 0016 LDINT R3 20 - 0x90061C03, // 0017 SETMBR R1 K14 R3 - 0x90061F10, // 0018 SETMBR R1 K15 K16 - 0x540E007F, // 0019 LDINT R3 128 - 0x90062203, // 001A SETMBR R1 K17 R3 - 0x80040200, // 001B RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'BreatheColorProvider' ktab size: 18, total: 29 (saved 88 bytes) -static const bvalue be_ktab_class_BreatheColorProvider[18] = { - /* K0 */ be_nested_str_weak(BreatheColorProvider_X28base_color_X3D0x_X2508x_X2C_X20min_brightness_X3D_X25s_X2C_X20max_brightness_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20curve_factor_X3D_X25s_X29), - /* K1 */ be_nested_str_weak(base_color), - /* K2 */ be_nested_str_weak(min_brightness), - /* K3 */ be_nested_str_weak(max_brightness), - /* K4 */ be_nested_str_weak(duration), - /* K5 */ be_nested_str_weak(curve_factor), - /* K6 */ be_nested_str_weak(on_param_changed), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(form), - /* K9 */ be_nested_str_weak(animation), - /* K10 */ be_nested_str_weak(COSINE), - /* K11 */ be_nested_str_weak(produce_value), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(scale_uint), - /* K14 */ be_const_int(0), - /* K15 */ be_nested_str_weak(init), - /* K16 */ be_nested_str_weak(min_value), - /* K17 */ be_nested_str_weak(max_value), +// compact class 'ColorCycleColorProvider' ktab size: 27, total: 52 (saved 200 bytes) +static const bvalue be_ktab_class_ColorCycleColorProvider[27] = { + /* K0 */ be_nested_str_weak(palette), + /* K1 */ be_nested_str_weak(_get_param_def), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(default), + /* K4 */ be_nested_str_weak(ColorCycleColorProvider_X28palette_size_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20mode_X3D_X25s_X2C_X20current_index_X3D_X25s_X29), + /* K5 */ be_nested_str_weak(_get_palette_size), + /* K6 */ be_nested_str_weak(cycle_period), + /* K7 */ be_nested_str_weak(manual), + /* K8 */ be_nested_str_weak(auto), + /* K9 */ be_nested_str_weak(current_index), + /* K10 */ be_nested_str_weak(_get_palette_bytes), + /* K11 */ be_nested_str_weak(on_param_changed), + /* K12 */ be_nested_str_weak(palette_size), + /* K13 */ be_nested_str_weak(values), + /* K14 */ be_nested_str_weak(value_error), + /* K15 */ be_nested_str_weak(Parameter_X20_X27palette_size_X27_X20is_X20read_X2Donly), + /* K16 */ be_const_int(0), + /* K17 */ be_nested_str_weak(current_color), + /* K18 */ be_nested_str_weak(_get_color_at_index), + /* K19 */ be_nested_str_weak(next), + /* K20 */ be_nested_str_weak(set_param), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str_weak(tasmota), + /* K23 */ be_nested_str_weak(scale_uint), + /* K24 */ be_nested_str_weak(init), + /* K25 */ be_nested_str_weak(get), + /* K26 */ be_const_int(-16777216), }; -extern const bclass be_class_BreatheColorProvider; +extern const bclass be_class_ColorCycleColorProvider; /******************************************************************** -** Solidified function: tostring +** Solidified function: _get_palette_bytes ********************************************************************/ -be_local_closure(class_BreatheColorProvider_tostring, /* name */ +be_local_closure(class_ColorCycleColorProvider__get_palette_bytes, /* name */ be_nested_proto( - 8, /* nstack */ + 6, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -10794,19 +6404,93 @@ be_local_closure(class_BreatheColorProvider_tostring, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheColorProvider, /* shared constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + be_str_weak(_get_palette_bytes), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C080202, // 0002 EQ R2 R1 R2 + 0x780A000A, // 0003 JMPF R2 #000F + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x58100000, // 0005 LDCONST R4 K0 + 0x7C080400, // 0006 CALL R2 2 + 0x4C0C0000, // 0007 LDNIL R3 + 0x200C0403, // 0008 NE R3 R2 R3 + 0x780E0004, // 0009 JMPF R3 #000F + 0x8C0C0502, // 000A GETMET R3 R2 K2 + 0x58140003, // 000B LDCONST R5 K3 + 0x7C0C0400, // 000C CALL R3 2 + 0x780E0000, // 000D JMPF R3 #000F + 0x94040503, // 000E GETIDX R1 R2 K3 + 0x80040200, // 000F RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_tostring, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ + ( &(const binstruction[13]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x88100102, // 0003 GETMBR R4 R0 K2 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x88180104, // 0005 GETMBR R6 R0 K4 - 0x881C0105, // 0006 GETMBR R7 R0 K5 - 0x7C040C00, // 0007 CALL R1 6 - 0x80040200, // 0008 RET 1 R1 + 0x58080004, // 0001 LDCONST R2 K4 + 0x8C0C0105, // 0002 GETMET R3 R0 K5 + 0x7C0C0200, // 0003 CALL R3 1 + 0x88100106, // 0004 GETMBR R4 R0 K6 + 0x88140106, // 0005 GETMBR R5 R0 K6 + 0x78160001, // 0006 JMPF R5 #0009 + 0x58140007, // 0007 LDCONST R5 K7 + 0x70020000, // 0008 JMP #000A + 0x58140008, // 0009 LDCONST R5 K8 + 0x88180109, // 000A GETMBR R6 R0 K9 + 0x7C040A00, // 000B CALL R1 5 + 0x80040200, // 000C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _get_palette_size +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider__get_palette_size, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + be_str_weak(_get_palette_size), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x8C04010A, // 0000 GETMET R1 R0 K10 + 0x7C040200, // 0001 CALL R1 1 + 0x6008000C, // 0002 GETGBL R2 G12 + 0x5C0C0200, // 0003 MOVE R3 R1 + 0x7C080200, // 0004 CALL R2 1 + 0x540E0003, // 0005 LDINT R3 4 + 0x0C080403, // 0006 DIV R2 R2 R3 + 0x80040400, // 0007 RET 1 R2 }) ) ); @@ -10816,9 +6500,9 @@ be_local_closure(class_BreatheColorProvider_tostring, /* name */ /******************************************************************** ** Solidified function: on_param_changed ********************************************************************/ -be_local_closure(class_BreatheColorProvider_on_param_changed, /* name */ +be_local_closure(class_ColorCycleColorProvider_on_param_changed, /* name */ be_nested_proto( - 7, /* nstack */ + 8, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -10826,36 +6510,66 @@ be_local_closure(class_BreatheColorProvider_on_param_changed, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheColorProvider, /* shared constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ + ( &(const binstruction[56]) { /* code */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0706, // 0003 GETMET R3 R3 K6 + 0x8C0C070B, // 0003 GETMET R3 R3 K11 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0305, // 0007 EQ R3 R1 K5 - 0x780E0008, // 0008 JMPF R3 #0012 - 0x1C0C0507, // 0009 EQ R3 R2 K7 - 0x780E0003, // 000A JMPF R3 #000F - 0xB80E1200, // 000B GETNGBL R3 K9 - 0x880C070A, // 000C GETMBR R3 R3 K10 - 0x90021003, // 000D SETMBR R0 K8 R3 - 0x70020002, // 000E JMP #0012 - 0xB80E1200, // 000F GETNGBL R3 K9 - 0x880C070A, // 0010 GETMBR R3 R3 K10 - 0x90021003, // 0011 SETMBR R0 K8 R3 - 0x600C0003, // 0012 GETGBL R3 G3 - 0x5C100000, // 0013 MOVE R4 R0 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C0C0706, // 0015 GETMET R3 R3 K6 - 0x5C140200, // 0016 MOVE R5 R1 - 0x5C180400, // 0017 MOVE R6 R2 - 0x7C0C0600, // 0018 CALL R3 3 - 0x80000000, // 0019 RET 0 + 0x1C0C030C, // 0007 EQ R3 R1 K12 + 0x780E0005, // 0008 JMPF R3 #000F + 0x880C010D, // 0009 GETMBR R3 R0 K13 + 0x8C100105, // 000A GETMET R4 R0 K5 + 0x7C100200, // 000B CALL R4 1 + 0x980E1804, // 000C SETIDX R3 K12 R4 + 0xB0061D0F, // 000D RAISE 1 K14 K15 + 0x70020027, // 000E JMP #0037 + 0x1C0C0300, // 000F EQ R3 R1 K0 + 0x780E000E, // 0010 JMPF R3 #0020 + 0x8C0C0105, // 0011 GETMET R3 R0 K5 + 0x7C0C0200, // 0012 CALL R3 1 + 0x24100710, // 0013 GT R4 R3 K16 + 0x78120007, // 0014 JMPF R4 #001D + 0x88100109, // 0015 GETMBR R4 R0 K9 + 0x28100803, // 0016 GE R4 R4 R3 + 0x78120000, // 0017 JMPF R4 #0019 + 0x90021310, // 0018 SETMBR R0 K9 K16 + 0x8C100112, // 0019 GETMET R4 R0 K18 + 0x88180109, // 001A GETMBR R6 R0 K9 + 0x7C100400, // 001B CALL R4 2 + 0x90022204, // 001C SETMBR R0 K17 R4 + 0x8810010D, // 001D GETMBR R4 R0 K13 + 0x98121803, // 001E SETIDX R4 K12 R3 + 0x70020016, // 001F JMP #0037 + 0x1C0C0313, // 0020 EQ R3 R1 K19 + 0x780E0014, // 0021 JMPF R3 #0037 + 0x200C0510, // 0022 NE R3 R2 K16 + 0x780E0012, // 0023 JMPF R3 #0037 + 0x8C0C0105, // 0024 GETMET R3 R0 K5 + 0x7C0C0200, // 0025 CALL R3 1 + 0x24100710, // 0026 GT R4 R3 K16 + 0x7812000A, // 0027 JMPF R4 #0033 + 0x88100109, // 0028 GETMBR R4 R0 K9 + 0x00100802, // 0029 ADD R4 R4 R2 + 0x10100803, // 002A MOD R4 R4 R3 + 0x14140910, // 002B LT R5 R4 K16 + 0x78160000, // 002C JMPF R5 #002E + 0x00100803, // 002D ADD R4 R4 R3 + 0x90021204, // 002E SETMBR R0 K9 R4 + 0x8C140112, // 002F GETMET R5 R0 K18 + 0x881C0109, // 0030 GETMBR R7 R0 K9 + 0x7C140400, // 0031 CALL R5 2 + 0x90022205, // 0032 SETMBR R0 K17 R5 + 0x8C100114, // 0033 GETMET R4 R0 K20 + 0x58180013, // 0034 LDCONST R6 K19 + 0x581C0010, // 0035 LDCONST R7 K16 + 0x7C100600, // 0036 CALL R4 3 + 0x80000000, // 0037 RET 0 }) ) ); @@ -10865,9 +6579,9 @@ be_local_closure(class_BreatheColorProvider_on_param_changed, /* name */ /******************************************************************** ** Solidified function: produce_value ********************************************************************/ -be_local_closure(class_BreatheColorProvider_produce_value, /* name */ +be_local_closure(class_ColorCycleColorProvider_produce_value, /* name */ be_nested_proto( - 15, /* nstack */ + 13, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -10875,92 +6589,108 @@ be_local_closure(class_BreatheColorProvider_produce_value, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheColorProvider, /* shared constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ be_str_weak(produce_value), &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C070B, // 0003 GETMET R3 R3 K11 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x88100105, // 0007 GETMBR R4 R0 K5 - 0x5C140600, // 0008 MOVE R5 R3 - 0x24180907, // 0009 GT R6 R4 K7 - 0x781A0019, // 000A JMPF R6 #0025 - 0xB81A1800, // 000B GETNGBL R6 K12 - 0x8C180D0D, // 000C GETMET R6 R6 K13 - 0x5C200600, // 000D MOVE R8 R3 - 0x5824000E, // 000E LDCONST R9 K14 - 0x542A00FE, // 000F LDINT R10 255 - 0x582C000E, // 0010 LDCONST R11 K14 - 0x54321FFF, // 0011 LDINT R12 8192 - 0x7C180C00, // 0012 CALL R6 6 - 0x5C1C0800, // 0013 MOVE R7 R4 - 0x24200F07, // 0014 GT R8 R7 K7 - 0x78220005, // 0015 JMPF R8 #001C - 0x08200C06, // 0016 MUL R8 R6 R6 - 0x54261FFF, // 0017 LDINT R9 8192 - 0x0C201009, // 0018 DIV R8 R8 R9 - 0x5C181000, // 0019 MOVE R6 R8 - 0x041C0F07, // 001A SUB R7 R7 K7 - 0x7001FFF7, // 001B JMP #0014 - 0xB8221800, // 001C GETNGBL R8 K12 - 0x8C20110D, // 001D GETMET R8 R8 K13 - 0x5C280C00, // 001E MOVE R10 R6 - 0x582C000E, // 001F LDCONST R11 K14 - 0x54321FFF, // 0020 LDINT R12 8192 - 0x5834000E, // 0021 LDCONST R13 K14 - 0x543A00FE, // 0022 LDINT R14 255 - 0x7C200C00, // 0023 CALL R8 6 - 0x5C141000, // 0024 MOVE R5 R8 - 0xB81A1800, // 0025 GETNGBL R6 K12 - 0x8C180D0D, // 0026 GETMET R6 R6 K13 - 0x5C200A00, // 0027 MOVE R8 R5 - 0x5824000E, // 0028 LDCONST R9 K14 - 0x542A00FE, // 0029 LDINT R10 255 - 0x882C0102, // 002A GETMBR R11 R0 K2 - 0x88300103, // 002B GETMBR R12 R0 K3 - 0x7C180C00, // 002C CALL R6 6 - 0x881C0101, // 002D GETMBR R7 R0 K1 - 0x54220017, // 002E LDINT R8 24 - 0x3C200E08, // 002F SHR R8 R7 R8 - 0x542600FE, // 0030 LDINT R9 255 - 0x2C201009, // 0031 AND R8 R8 R9 - 0x5426000F, // 0032 LDINT R9 16 - 0x3C240E09, // 0033 SHR R9 R7 R9 - 0x542A00FE, // 0034 LDINT R10 255 - 0x2C24120A, // 0035 AND R9 R9 R10 - 0x542A0007, // 0036 LDINT R10 8 - 0x3C280E0A, // 0037 SHR R10 R7 R10 - 0x542E00FE, // 0038 LDINT R11 255 - 0x2C28140B, // 0039 AND R10 R10 R11 - 0x542E00FE, // 003A LDINT R11 255 - 0x2C2C0E0B, // 003B AND R11 R7 R11 - 0x08301206, // 003C MUL R12 R9 R6 - 0x543600FE, // 003D LDINT R13 255 - 0x0C30180D, // 003E DIV R12 R12 R13 - 0x5C241800, // 003F MOVE R9 R12 - 0x08301406, // 0040 MUL R12 R10 R6 - 0x543600FE, // 0041 LDINT R13 255 - 0x0C30180D, // 0042 DIV R12 R12 R13 - 0x5C281800, // 0043 MOVE R10 R12 - 0x08301606, // 0044 MUL R12 R11 R6 - 0x543600FE, // 0045 LDINT R13 255 - 0x0C30180D, // 0046 DIV R12 R12 R13 - 0x5C2C1800, // 0047 MOVE R11 R12 - 0x54320017, // 0048 LDINT R12 24 - 0x3830100C, // 0049 SHL R12 R8 R12 - 0x5436000F, // 004A LDINT R13 16 - 0x3834120D, // 004B SHL R13 R9 R13 - 0x3030180D, // 004C OR R12 R12 R13 - 0x54360007, // 004D LDINT R13 8 - 0x3834140D, // 004E SHL R13 R10 R13 - 0x3030180D, // 004F OR R12 R12 R13 - 0x3030180B, // 0050 OR R12 R12 R11 - 0x80041800, // 0051 RET 1 R12 + ( &(const binstruction[39]) { /* code */ + 0x880C0106, // 0000 GETMBR R3 R0 K6 + 0x8C100105, // 0001 GETMET R4 R0 K5 + 0x7C100200, // 0002 CALL R4 1 + 0x1C140910, // 0003 EQ R5 R4 K16 + 0x78160001, // 0004 JMPF R5 #0007 + 0x5415FFFE, // 0005 LDINT R5 -1 + 0x80040A00, // 0006 RET 1 R5 + 0x1C140915, // 0007 EQ R5 R4 K21 + 0x78160005, // 0008 JMPF R5 #000F + 0x8C140112, // 0009 GETMET R5 R0 K18 + 0x581C0010, // 000A LDCONST R7 K16 + 0x7C140400, // 000B CALL R5 2 + 0x90022205, // 000C SETMBR R0 K17 R5 + 0x88140111, // 000D GETMBR R5 R0 K17 + 0x80040A00, // 000E RET 1 R5 + 0x1C140710, // 000F EQ R5 R3 K16 + 0x78160001, // 0010 JMPF R5 #0013 + 0x88140111, // 0011 GETMBR R5 R0 K17 + 0x80040A00, // 0012 RET 1 R5 + 0x10140403, // 0013 MOD R5 R2 R3 + 0xB81A2C00, // 0014 GETNGBL R6 K22 + 0x8C180D17, // 0015 GETMET R6 R6 K23 + 0x5C200A00, // 0016 MOVE R8 R5 + 0x58240010, // 0017 LDCONST R9 K16 + 0x04280715, // 0018 SUB R10 R3 K21 + 0x582C0010, // 0019 LDCONST R11 K16 + 0x04300915, // 001A SUB R12 R4 K21 + 0x7C180C00, // 001B CALL R6 6 + 0x281C0C04, // 001C GE R7 R6 R4 + 0x781E0001, // 001D JMPF R7 #0020 + 0x041C0915, // 001E SUB R7 R4 K21 + 0x5C180E00, // 001F MOVE R6 R7 + 0x90021206, // 0020 SETMBR R0 K9 R6 + 0x8C1C0112, // 0021 GETMET R7 R0 K18 + 0x5C240C00, // 0022 MOVE R9 R6 + 0x7C1C0400, // 0023 CALL R7 2 + 0x90022207, // 0024 SETMBR R0 K17 R7 + 0x881C0111, // 0025 GETMBR R7 R0 K17 + 0x80040E00, // 0026 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_color_for_value +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + be_str_weak(get_color_for_value), + &be_const_str_solidified, + ( &(const binstruction[36]) { /* code */ + 0x8C0C0105, // 0000 GETMET R3 R0 K5 + 0x7C0C0200, // 0001 CALL R3 1 + 0x1C100710, // 0002 EQ R4 R3 K16 + 0x78120001, // 0003 JMPF R4 #0006 + 0x5411FFFE, // 0004 LDINT R4 -1 + 0x80040800, // 0005 RET 1 R4 + 0x1C100715, // 0006 EQ R4 R3 K21 + 0x78120003, // 0007 JMPF R4 #000C + 0x8C100112, // 0008 GETMET R4 R0 K18 + 0x58180010, // 0009 LDCONST R6 K16 + 0x7C100400, // 000A CALL R4 2 + 0x80040800, // 000B RET 1 R4 + 0x14100310, // 000C LT R4 R1 K16 + 0x78120001, // 000D JMPF R4 #0010 + 0x58040010, // 000E LDCONST R1 K16 + 0x70020003, // 000F JMP #0014 + 0x54120063, // 0010 LDINT R4 100 + 0x24100204, // 0011 GT R4 R1 R4 + 0x78120000, // 0012 JMPF R4 #0014 + 0x54060063, // 0013 LDINT R1 100 + 0xB8122C00, // 0014 GETNGBL R4 K22 + 0x8C100917, // 0015 GETMET R4 R4 K23 + 0x5C180200, // 0016 MOVE R6 R1 + 0x581C0010, // 0017 LDCONST R7 K16 + 0x54220063, // 0018 LDINT R8 100 + 0x58240010, // 0019 LDCONST R9 K16 + 0x04280715, // 001A SUB R10 R3 K21 + 0x7C100C00, // 001B CALL R4 6 + 0x28140803, // 001C GE R5 R4 R3 + 0x78160001, // 001D JMPF R5 #0020 + 0x04140715, // 001E SUB R5 R3 K21 + 0x5C100A00, // 001F MOVE R4 R5 + 0x8C140112, // 0020 GETMET R5 R0 K18 + 0x5C1C0800, // 0021 MOVE R7 R4 + 0x7C140400, // 0022 CALL R5 2 + 0x80040A00, // 0023 RET 1 R5 }) ) ); @@ -10970,9 +6700,9 @@ be_local_closure(class_BreatheColorProvider_produce_value, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_BreatheColorProvider_init, /* name */ +be_local_closure(class_ColorCycleColorProvider_init, /* name */ be_nested_proto( - 5, /* nstack */ + 6, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -10980,25 +6710,28 @@ be_local_closure(class_BreatheColorProvider_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheColorProvider, /* shared constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ + ( &(const binstruction[18]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050F, // 0003 GETMET R2 R2 K15 + 0x8C080518, // 0003 GETMET R2 R2 K24 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0xB80A1200, // 0006 GETNGBL R2 K9 - 0x8808050A, // 0007 GETMBR R2 R2 K10 - 0x90021002, // 0008 SETMBR R0 K8 R2 - 0x9002210E, // 0009 SETMBR R0 K16 K14 - 0x540A00FE, // 000A LDINT R2 255 - 0x90022202, // 000B SETMBR R0 K17 R2 - 0x540A0BB7, // 000C LDINT R2 3000 - 0x90020802, // 000D SETMBR R0 K4 R2 - 0x80000000, // 000E RET 0 + 0x8C08010A, // 0006 GETMET R2 R0 K10 + 0x7C080200, // 0007 CALL R2 1 + 0x8C0C0112, // 0008 GETMET R3 R0 K18 + 0x58140010, // 0009 LDCONST R5 K16 + 0x7C0C0400, // 000A CALL R3 2 + 0x90022203, // 000B SETMBR R0 K17 R3 + 0x90021310, // 000C SETMBR R0 K9 K16 + 0x880C010D, // 000D GETMBR R3 R0 K13 + 0x8C100105, // 000E GETMET R4 R0 K5 + 0x7C100200, // 000F CALL R4 1 + 0x980E1804, // 0010 SETIDX R3 K12 R4 + 0x80000000, // 0011 RET 0 }) ) ); @@ -11006,52 +6739,132 @@ be_local_closure(class_BreatheColorProvider_init, /* name */ /******************************************************************** -** Solidified class: BreatheColorProvider +** Solidified function: _get_color_at_index ********************************************************************/ -extern const bclass be_class_OscillatorValueProvider; -be_local_class(BreatheColorProvider, - 0, - &be_class_OscillatorValueProvider, - be_nested_map(5, +be_local_closure(class_ColorCycleColorProvider__get_color_at_index, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + be_str_weak(_get_color_at_index), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C08010A, // 0000 GETMET R2 R0 K10 + 0x7C080200, // 0001 CALL R2 1 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100400, // 0003 MOVE R4 R2 + 0x7C0C0200, // 0004 CALL R3 1 + 0x54120003, // 0005 LDINT R4 4 + 0x0C0C0604, // 0006 DIV R3 R3 R4 + 0x1C100710, // 0007 EQ R4 R3 K16 + 0x74120003, // 0008 JMPT R4 #000D + 0x14100310, // 0009 LT R4 R1 K16 + 0x74120001, // 000A JMPT R4 #000D + 0x28100203, // 000B GE R4 R1 R3 + 0x78120001, // 000C JMPF R4 #000F + 0x5411FFFE, // 000D LDINT R4 -1 + 0x80040800, // 000E RET 1 R4 + 0x8C100519, // 000F GETMET R4 R2 K25 + 0x541A0003, // 0010 LDINT R6 4 + 0x08180206, // 0011 MUL R6 R1 R6 + 0x541DFFFB, // 0012 LDINT R7 -4 + 0x7C100600, // 0013 CALL R4 3 + 0x3010091A, // 0014 OR R4 R4 K26 + 0x80040800, // 0015 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ColorCycleColorProvider +********************************************************************/ +extern const bclass be_class_ColorProvider; +be_local_class(ColorCycleColorProvider, + 2, + &be_class_ColorProvider, + be_nested_map(11, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tostring, 1), be_const_closure(class_BreatheColorProvider_tostring_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_BreatheColorProvider_init_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_BreatheColorProvider_on_param_changed_closure) }, - { be_const_key_weak(PARAMS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(_get_color_at_index, -1), be_const_closure(class_ColorCycleColorProvider__get_color_at_index_closure) }, + { be_const_key_weak(_get_palette_size, -1), be_const_closure(class_ColorCycleColorProvider__get_palette_size_closure) }, + { be_const_key_weak(current_color, 6), be_const_var(0) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_ColorCycleColorProvider_tostring_closure) }, + { be_const_key_weak(_get_palette_bytes, 1), be_const_closure(class_ColorCycleColorProvider__get_palette_bytes_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ColorCycleColorProvider_on_param_changed_closure) }, + { be_const_key_weak(current_index, -1), be_const_var(1) }, + { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorCycleColorProvider_get_color_for_value_closure) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(4, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(base_color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(palette, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_bytes_instance(FF0000FFFF00FF00FFFF0000) }, + { be_const_key_weak(type, -1), be_nested_str_weak(bytes) }, + })) ) } )) }, + { be_const_key_weak(palette_size, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(3) }, + { be_const_key_weak(type, -1), be_nested_str_weak(int) }, + })) ) } )) }, + { be_const_key_weak(next, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(max_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(curve_factor, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(2) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(5) }, - })) ) } )) }, - { be_const_key_weak(min_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(default, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(cycle_period, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(5000) }, { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, })) ) } )) }, })) ) } )) }, - { be_const_key_weak(produce_value, -1), be_const_closure(class_BreatheColorProvider_produce_value_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_ColorCycleColorProvider_init_closure) }, + { be_const_key_weak(produce_value, 0), be_const_closure(class_ColorCycleColorProvider_produce_value_closure) }, })), - be_str_weak(BreatheColorProvider) + be_str_weak(ColorCycleColorProvider) ); +/******************************************************************** +** Solidified function: is_value_provider +********************************************************************/ +be_local_closure(is_value_provider, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(value_provider), + }), + be_str_weak(is_value_provider), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x6004000F, // 0000 GETGBL R1 G15 + 0x5C080000, // 0001 MOVE R2 R0 + 0xB80E0000, // 0002 GETNGBL R3 K0 + 0x880C0701, // 0003 GETMBR R3 R3 K1 + 0x7C040400, // 0004 CALL R1 2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: register_event_handler ********************************************************************/ @@ -12565,6 +8378,179 @@ be_local_class(AnimationMath, be_str_weak(AnimationMath) ); +/******************************************************************** +** Solidified function: wave_rainbow_sine +********************************************************************/ +be_local_closure(wave_rainbow_sine, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(wave_animation), + /* K2 */ be_nested_str_weak(rich_palette), + /* K3 */ be_nested_str_weak(palette), + /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), + /* K5 */ be_nested_str_weak(cycle_period), + /* K6 */ be_nested_str_weak(transition_type), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(brightness), + /* K9 */ be_nested_str_weak(range_min), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(range_max), + /* K12 */ be_nested_str_weak(color), + /* K13 */ be_nested_str_weak(wave_type), + /* K14 */ be_nested_str_weak(frequency), + /* K15 */ be_nested_str_weak(wave_speed), + }), + be_str_weak(wave_rainbow_sine), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x5C100000, // 0006 MOVE R4 R0 + 0x7C080400, // 0007 CALL R2 2 + 0xB80E0000, // 0008 GETNGBL R3 K0 + 0x880C0704, // 0009 GETMBR R3 R3 K4 + 0x900A0603, // 000A SETMBR R2 K3 R3 + 0x540E1387, // 000B LDINT R3 5000 + 0x900A0A03, // 000C SETMBR R2 K5 R3 + 0x900A0D07, // 000D SETMBR R2 K6 K7 + 0x540E00FE, // 000E LDINT R3 255 + 0x900A1003, // 000F SETMBR R2 K8 R3 + 0x900A130A, // 0010 SETMBR R2 K9 K10 + 0x540E00FE, // 0011 LDINT R3 255 + 0x900A1603, // 0012 SETMBR R2 K11 R3 + 0x90061802, // 0013 SETMBR R1 K12 R2 + 0x90061B0A, // 0014 SETMBR R1 K13 K10 + 0x540E001F, // 0015 LDINT R3 32 + 0x90061C03, // 0016 SETMBR R1 K14 R3 + 0x540E0031, // 0017 LDINT R3 50 + 0x90061E03, // 0018 SETMBR R1 K15 R3 + 0x80040200, // 0019 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: gradient_rainbow_linear +********************************************************************/ +be_local_closure(gradient_rainbow_linear, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(gradient_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(gradient_type), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(direction), + /* K6 */ be_nested_str_weak(movement_speed), + }), + be_str_weak(gradient_rainbow_linear), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x4C080000, // 0004 LDNIL R2 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x90060704, // 0006 SETMBR R1 K3 K4 + 0x90060B04, // 0007 SETMBR R1 K5 K4 + 0x540A0031, // 0008 LDINT R2 50 + 0x90060C02, // 0009 SETMBR R1 K6 R2 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear_all_event_handlers +********************************************************************/ +be_local_closure(clear_all_event_handlers, /* name */ + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(event_manager), + /* K2 */ be_nested_str_weak(clear_all_handlers), + }), + be_str_weak(clear_all_event_handlers), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0xB8020000, // 0000 GETNGBL R0 K0 + 0x88000101, // 0001 GETMBR R0 R0 K1 + 0x8C000102, // 0002 GETMET R0 R0 K2 + 0x7C000200, // 0003 CALL R0 1 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_user_function +********************************************************************/ +be_local_closure(get_user_function, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(_user_functions), + /* K2 */ be_nested_str_weak(find), + }), + be_str_weak(get_user_function), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x8C040302, // 0002 GETMET R1 R1 K2 + 0x5C0C0000, // 0003 MOVE R3 R0 + 0x7C040400, // 0004 CALL R1 2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: twinkle_rainbow ********************************************************************/ @@ -12614,157 +8600,6 @@ be_local_closure(twinkle_rainbow, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: jitter_color -********************************************************************/ -be_local_closure(jitter_color, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(jitter_animation), - /* K2 */ be_nested_str_weak(jitter_type), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(color_range), - }), - be_str_weak(jitter_color), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A001D, // 0005 LDINT R2 30 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_all_event_handlers -********************************************************************/ -be_local_closure(clear_all_event_handlers, /* name */ - be_nested_proto( - 2, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(event_manager), - /* K2 */ be_nested_str_weak(clear_all_handlers), - }), - be_str_weak(clear_all_event_handlers), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xB8020000, // 0000 GETNGBL R0 K0 - 0x88000101, // 0001 GETMBR R0 R0 K1 - 0x8C000102, // 0002 GETMET R0 R0 K2 - 0x7C000200, // 0003 CALL R0 1 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: smooth -********************************************************************/ -be_local_closure(smooth, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_nested_str_weak(COSINE), - }), - be_str_weak(smooth), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: plasma_fast -********************************************************************/ -be_local_closure(plasma_fast, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(plasma_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(time_speed), - /* K4 */ be_nested_str_weak(freq_x), - /* K5 */ be_nested_str_weak(freq_y), - /* K6 */ be_nested_str_weak(name), - /* K7 */ be_nested_str_weak(plasma_fast), - }), - be_str_weak(plasma_fast), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x4C080000, // 0004 LDNIL R2 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A0095, // 0006 LDINT R2 150 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x540A002F, // 0008 LDINT R2 48 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x540A0022, // 000A LDINT R2 35 - 0x90060A02, // 000B SETMBR R1 K5 R2 - 0x90060D07, // 000C SETMBR R1 K6 K7 - 0x80040200, // 000D RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: create_engine ********************************************************************/ @@ -12969,6 +8804,55 @@ be_local_class(PaletteGradientAnimation, })), be_str_weak(PaletteGradientAnimation) ); + +/******************************************************************** +** Solidified function: twinkle_gentle +********************************************************************/ +be_local_closure(twinkle_gentle, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(twinkle_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(density), + /* K4 */ be_nested_str_weak(twinkle_speed), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(fade_speed), + /* K7 */ be_nested_str_weak(min_brightness), + /* K8 */ be_nested_str_weak(max_brightness), + }), + be_str_weak(twinkle_gentle), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x5409D6FF, // 0004 LDINT R2 -10496 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A003F, // 0006 LDINT R2 64 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x90060905, // 0008 SETMBR R1 K4 K5 + 0x540A0077, // 0009 LDINT R2 120 + 0x90060C02, // 000A SETMBR R1 K6 R2 + 0x540A000F, // 000B LDINT R2 16 + 0x90060E02, // 000C SETMBR R1 K7 R2 + 0x540A00B3, // 000D LDINT R2 180 + 0x90061002, // 000E SETMBR R1 K8 R2 + 0x80040200, // 000F RET 1 R1 + }) + ) +); +/*******************************************************************/ + extern const bclass be_class_FrameBuffer; // compact class 'FrameBuffer' ktab size: 33, total: 124 (saved 728 bytes) static const bvalue be_ktab_class_FrameBuffer[33] = { @@ -14743,645 +10627,81 @@ be_local_class(FrameBuffer, })), be_str_weak(FrameBuffer) ); -// compact class 'ColorCycleColorProvider' ktab size: 28, total: 54 (saved 208 bytes) -static const bvalue be_ktab_class_ColorCycleColorProvider[28] = { - /* K0 */ be_nested_str_weak(palette), - /* K1 */ be_nested_str_weak(_get_param_def), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(default), - /* K4 */ be_nested_str_weak(cycle_period), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(manual), - /* K7 */ be_nested_str_weak(auto), - /* K8 */ be_nested_str_weak(_get_palette_size), - /* K9 */ be_nested_str_weak(ColorCycleColorProvider_X28palette_size_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20mode_X3D_X25s_X2C_X20current_index_X3D_X25s_X29), - /* K10 */ be_nested_str_weak(current_index), - /* K11 */ be_nested_str_weak(ColorCycleColorProvider_X28uninitialized_X29), - /* K12 */ be_nested_str_weak(_get_palette_bytes), - /* K13 */ be_nested_str_weak(on_param_changed), - /* K14 */ be_nested_str_weak(palette_size), - /* K15 */ be_nested_str_weak(values), - /* K16 */ be_nested_str_weak(value_error), - /* K17 */ be_nested_str_weak(Parameter_X20_X27palette_size_X27_X20is_X20read_X2Donly), - /* K18 */ be_nested_str_weak(current_color), - /* K19 */ be_nested_str_weak(_get_color_at_index), - /* K20 */ be_nested_str_weak(next), - /* K21 */ be_nested_str_weak(set_param), - /* K22 */ be_const_int(1), - /* K23 */ be_nested_str_weak(tasmota), - /* K24 */ be_nested_str_weak(scale_uint), - /* K25 */ be_nested_str_weak(init), - /* K26 */ be_nested_str_weak(get), - /* K27 */ be_const_int(-16777216), -}; - - -extern const bclass be_class_ColorCycleColorProvider; - -/******************************************************************** -** Solidified function: _get_palette_bytes -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__get_palette_bytes, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(_get_palette_bytes), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C080202, // 0002 EQ R2 R1 R2 - 0x780A000A, // 0003 JMPF R2 #000F - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x58100000, // 0005 LDCONST R4 K0 - 0x7C080400, // 0006 CALL R2 2 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0004, // 0009 JMPF R3 #000F - 0x8C0C0502, // 000A GETMET R3 R2 K2 - 0x58140003, // 000B LDCONST R5 K3 - 0x7C0C0400, // 000C CALL R3 2 - 0x780E0000, // 000D JMPF R3 #000F - 0x94040503, // 000E GETIDX R1 R2 K3 - 0x80040200, // 000F RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_tostring, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA8020012, // 0000 EXBLK 0 #0014 - 0x88040104, // 0001 GETMBR R1 R0 K4 - 0x1C040305, // 0002 EQ R1 R1 K5 - 0x78060001, // 0003 JMPF R1 #0006 - 0x58040006, // 0004 LDCONST R1 K6 - 0x70020000, // 0005 JMP #0007 - 0x58040007, // 0006 LDCONST R1 K7 - 0x8C080108, // 0007 GETMET R2 R0 K8 - 0x7C080200, // 0008 CALL R2 1 - 0x600C0018, // 0009 GETGBL R3 G24 - 0x58100009, // 000A LDCONST R4 K9 - 0x5C140400, // 000B MOVE R5 R2 - 0x88180104, // 000C GETMBR R6 R0 K4 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x8820010A, // 000E GETMBR R8 R0 K10 - 0x7C0C0A00, // 000F CALL R3 5 - 0xA8040001, // 0010 EXBLK 1 1 - 0x80040600, // 0011 RET 1 R3 - 0xA8040001, // 0012 EXBLK 1 1 - 0x70020004, // 0013 JMP #0019 - 0xAC040000, // 0014 CATCH R1 0 0 - 0x70020001, // 0015 JMP #0018 - 0x80061600, // 0016 RET 1 K11 - 0x70020000, // 0017 JMP #0019 - 0xB0080000, // 0018 RAISE 2 R0 R0 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _get_palette_size -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__get_palette_size, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(_get_palette_size), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x8C04010C, // 0000 GETMET R1 R0 K12 - 0x7C040200, // 0001 CALL R1 1 - 0x6008000C, // 0002 GETGBL R2 G12 - 0x5C0C0200, // 0003 MOVE R3 R1 - 0x7C080200, // 0004 CALL R2 1 - 0x540E0003, // 0005 LDINT R3 4 - 0x0C080403, // 0006 DIV R2 R2 R3 - 0x80040400, // 0007 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_on_param_changed, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C070D, // 0003 GETMET R3 R3 K13 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C030E, // 0007 EQ R3 R1 K14 - 0x780E0005, // 0008 JMPF R3 #000F - 0x880C010F, // 0009 GETMBR R3 R0 K15 - 0x8C100108, // 000A GETMET R4 R0 K8 - 0x7C100200, // 000B CALL R4 1 - 0x980E1C04, // 000C SETIDX R3 K14 R4 - 0xB0062111, // 000D RAISE 1 K16 K17 - 0x70020027, // 000E JMP #0037 - 0x1C0C0300, // 000F EQ R3 R1 K0 - 0x780E000E, // 0010 JMPF R3 #0020 - 0x8C0C0108, // 0011 GETMET R3 R0 K8 - 0x7C0C0200, // 0012 CALL R3 1 - 0x24100705, // 0013 GT R4 R3 K5 - 0x78120007, // 0014 JMPF R4 #001D - 0x8810010A, // 0015 GETMBR R4 R0 K10 - 0x28100803, // 0016 GE R4 R4 R3 - 0x78120000, // 0017 JMPF R4 #0019 - 0x90021505, // 0018 SETMBR R0 K10 K5 - 0x8C100113, // 0019 GETMET R4 R0 K19 - 0x8818010A, // 001A GETMBR R6 R0 K10 - 0x7C100400, // 001B CALL R4 2 - 0x90022404, // 001C SETMBR R0 K18 R4 - 0x8810010F, // 001D GETMBR R4 R0 K15 - 0x98121C03, // 001E SETIDX R4 K14 R3 - 0x70020016, // 001F JMP #0037 - 0x1C0C0314, // 0020 EQ R3 R1 K20 - 0x780E0014, // 0021 JMPF R3 #0037 - 0x200C0505, // 0022 NE R3 R2 K5 - 0x780E0012, // 0023 JMPF R3 #0037 - 0x8C0C0108, // 0024 GETMET R3 R0 K8 - 0x7C0C0200, // 0025 CALL R3 1 - 0x24100705, // 0026 GT R4 R3 K5 - 0x7812000A, // 0027 JMPF R4 #0033 - 0x8810010A, // 0028 GETMBR R4 R0 K10 - 0x00100802, // 0029 ADD R4 R4 R2 - 0x10100803, // 002A MOD R4 R4 R3 - 0x14140905, // 002B LT R5 R4 K5 - 0x78160000, // 002C JMPF R5 #002E - 0x00100803, // 002D ADD R4 R4 R3 - 0x90021404, // 002E SETMBR R0 K10 R4 - 0x8C140113, // 002F GETMET R5 R0 K19 - 0x881C010A, // 0030 GETMBR R7 R0 K10 - 0x7C140400, // 0031 CALL R5 2 - 0x90022405, // 0032 SETMBR R0 K18 R5 - 0x8C100115, // 0033 GETMET R4 R0 K21 - 0x58180014, // 0034 LDCONST R6 K20 - 0x581C0005, // 0035 LDCONST R7 K5 - 0x7C100600, // 0036 CALL R4 3 - 0x80000000, // 0037 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_produce_value, /* name */ - be_nested_proto( - 13, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x880C0104, // 0000 GETMBR R3 R0 K4 - 0x8C100108, // 0001 GETMET R4 R0 K8 - 0x7C100200, // 0002 CALL R4 1 - 0x1C140905, // 0003 EQ R5 R4 K5 - 0x78160001, // 0004 JMPF R5 #0007 - 0x5415FFFE, // 0005 LDINT R5 -1 - 0x80040A00, // 0006 RET 1 R5 - 0x1C140916, // 0007 EQ R5 R4 K22 - 0x78160005, // 0008 JMPF R5 #000F - 0x8C140113, // 0009 GETMET R5 R0 K19 - 0x581C0005, // 000A LDCONST R7 K5 - 0x7C140400, // 000B CALL R5 2 - 0x90022405, // 000C SETMBR R0 K18 R5 - 0x88140112, // 000D GETMBR R5 R0 K18 - 0x80040A00, // 000E RET 1 R5 - 0x1C140705, // 000F EQ R5 R3 K5 - 0x78160001, // 0010 JMPF R5 #0013 - 0x88140112, // 0011 GETMBR R5 R0 K18 - 0x80040A00, // 0012 RET 1 R5 - 0x10140403, // 0013 MOD R5 R2 R3 - 0xB81A2E00, // 0014 GETNGBL R6 K23 - 0x8C180D18, // 0015 GETMET R6 R6 K24 - 0x5C200A00, // 0016 MOVE R8 R5 - 0x58240005, // 0017 LDCONST R9 K5 - 0x04280716, // 0018 SUB R10 R3 K22 - 0x582C0005, // 0019 LDCONST R11 K5 - 0x04300916, // 001A SUB R12 R4 K22 - 0x7C180C00, // 001B CALL R6 6 - 0x281C0C04, // 001C GE R7 R6 R4 - 0x781E0001, // 001D JMPF R7 #0020 - 0x041C0916, // 001E SUB R7 R4 K22 - 0x5C180E00, // 001F MOVE R6 R7 - 0x90021406, // 0020 SETMBR R0 K10 R6 - 0x8C1C0113, // 0021 GETMET R7 R0 K19 - 0x5C240C00, // 0022 MOVE R9 R6 - 0x7C1C0400, // 0023 CALL R7 2 - 0x90022407, // 0024 SETMBR R0 K18 R7 - 0x881C0112, // 0025 GETMBR R7 R0 K18 - 0x80040E00, // 0026 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_color_for_value -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(get_color_for_value), - &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0x8C0C0108, // 0000 GETMET R3 R0 K8 - 0x7C0C0200, // 0001 CALL R3 1 - 0x1C100705, // 0002 EQ R4 R3 K5 - 0x78120001, // 0003 JMPF R4 #0006 - 0x5411FFFE, // 0004 LDINT R4 -1 - 0x80040800, // 0005 RET 1 R4 - 0x1C100716, // 0006 EQ R4 R3 K22 - 0x78120003, // 0007 JMPF R4 #000C - 0x8C100113, // 0008 GETMET R4 R0 K19 - 0x58180005, // 0009 LDCONST R6 K5 - 0x7C100400, // 000A CALL R4 2 - 0x80040800, // 000B RET 1 R4 - 0x14100305, // 000C LT R4 R1 K5 - 0x78120001, // 000D JMPF R4 #0010 - 0x58040005, // 000E LDCONST R1 K5 - 0x70020003, // 000F JMP #0014 - 0x54120063, // 0010 LDINT R4 100 - 0x24100204, // 0011 GT R4 R1 R4 - 0x78120000, // 0012 JMPF R4 #0014 - 0x54060063, // 0013 LDINT R1 100 - 0xB8122E00, // 0014 GETNGBL R4 K23 - 0x8C100918, // 0015 GETMET R4 R4 K24 - 0x5C180200, // 0016 MOVE R6 R1 - 0x581C0005, // 0017 LDCONST R7 K5 - 0x54220063, // 0018 LDINT R8 100 - 0x58240005, // 0019 LDCONST R9 K5 - 0x04280716, // 001A SUB R10 R3 K22 - 0x7C100C00, // 001B CALL R4 6 - 0x28140803, // 001C GE R5 R4 R3 - 0x78160001, // 001D JMPF R5 #0020 - 0x04140716, // 001E SUB R5 R3 K22 - 0x5C100A00, // 001F MOVE R4 R5 - 0x8C140113, // 0020 GETMET R5 R0 K19 - 0x5C1C0800, // 0021 MOVE R7 R4 - 0x7C140400, // 0022 CALL R5 2 - 0x80040A00, // 0023 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_init, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080519, // 0003 GETMET R2 R2 K25 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x8C08010C, // 0006 GETMET R2 R0 K12 - 0x7C080200, // 0007 CALL R2 1 - 0x8C0C0113, // 0008 GETMET R3 R0 K19 - 0x58140005, // 0009 LDCONST R5 K5 - 0x7C0C0400, // 000A CALL R3 2 - 0x90022403, // 000B SETMBR R0 K18 R3 - 0x90021505, // 000C SETMBR R0 K10 K5 - 0x880C010F, // 000D GETMBR R3 R0 K15 - 0x8C100108, // 000E GETMET R4 R0 K8 - 0x7C100200, // 000F CALL R4 1 - 0x980E1C04, // 0010 SETIDX R3 K14 R4 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _get_color_at_index -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__get_color_at_index, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(_get_color_at_index), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x8C08010C, // 0000 GETMET R2 R0 K12 - 0x7C080200, // 0001 CALL R2 1 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100400, // 0003 MOVE R4 R2 - 0x7C0C0200, // 0004 CALL R3 1 - 0x54120003, // 0005 LDINT R4 4 - 0x0C0C0604, // 0006 DIV R3 R3 R4 - 0x1C100705, // 0007 EQ R4 R3 K5 - 0x74120003, // 0008 JMPT R4 #000D - 0x14100305, // 0009 LT R4 R1 K5 - 0x74120001, // 000A JMPT R4 #000D - 0x28100203, // 000B GE R4 R1 R3 - 0x78120001, // 000C JMPF R4 #000F - 0x5411FFFE, // 000D LDINT R4 -1 - 0x80040800, // 000E RET 1 R4 - 0x8C10051A, // 000F GETMET R4 R2 K26 - 0x541A0003, // 0010 LDINT R6 4 - 0x08180206, // 0011 MUL R6 R1 R6 - 0x541DFFFB, // 0012 LDINT R7 -4 - 0x7C100600, // 0013 CALL R4 3 - 0x3010091B, // 0014 OR R4 R4 K27 - 0x80040800, // 0015 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: ColorCycleColorProvider -********************************************************************/ -extern const bclass be_class_ColorProvider; -be_local_class(ColorCycleColorProvider, - 2, - &be_class_ColorProvider, - be_nested_map(11, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_get_color_at_index, -1), be_const_closure(class_ColorCycleColorProvider__get_color_at_index_closure) }, - { be_const_key_weak(_get_palette_size, -1), be_const_closure(class_ColorCycleColorProvider__get_palette_size_closure) }, - { be_const_key_weak(current_color, 6), be_const_var(0) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_ColorCycleColorProvider_tostring_closure) }, - { be_const_key_weak(_get_palette_bytes, 1), be_const_closure(class_ColorCycleColorProvider__get_palette_bytes_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ColorCycleColorProvider_on_param_changed_closure) }, - { be_const_key_weak(current_index, -1), be_const_var(1) }, - { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorCycleColorProvider_get_color_for_value_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(palette, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_bytes_instance(FF0000FFFF00FF00FFFF0000) }, - { be_const_key_weak(type, -1), be_nested_str_weak(bytes) }, - })) ) } )) }, - { be_const_key_weak(palette_size, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(3) }, - { be_const_key_weak(type, -1), be_nested_str_weak(int) }, - })) ) } )) }, - { be_const_key_weak(next, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(cycle_period, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(5000) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_ColorCycleColorProvider_init_closure) }, - { be_const_key_weak(produce_value, 0), be_const_closure(class_ColorCycleColorProvider_produce_value_closure) }, - })), - be_str_weak(ColorCycleColorProvider) -); - -/******************************************************************** -** Solidified function: bounce -********************************************************************/ -be_local_closure(bounce, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_nested_str_weak(BOUNCE), - }), - be_str_weak(bounce), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'AnimationEngine' ktab size: 60, total: 159 (saved 792 bytes) -static const bvalue be_ktab_class_AnimationEngine[60] = { - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(width), - /* K2 */ be_nested_str_weak(strip), - /* K3 */ be_nested_str_weak(set_pixel_color), - /* K4 */ be_nested_str_weak(frame_buffer), - /* K5 */ be_nested_str_weak(get_pixel_color), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(show), - /* K8 */ be_nested_str_weak(animations), - /* K9 */ be_nested_str_weak(name), - /* K10 */ be_nested_str_weak(stop), +// compact class 'AnimationEngine' ktab size: 62, total: 169 (saved 856 bytes) +static const bvalue be_ktab_class_AnimationEngine[62] = { + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(SequenceManager), + /* K2 */ be_nested_str_weak(remove_sequence_manager), + /* K3 */ be_nested_str_weak(remove_animation), + /* K4 */ be_nested_str_weak(Cannot_X20remove_X20object_X20of_X20type_X20_X27_X25s_X27_X20from_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), + /* K5 */ be_nested_str_weak(type_error), + /* K6 */ be_nested_str_weak(animations), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(update), + /* K9 */ be_nested_str_weak(is_running), + /* K10 */ be_const_int(1), /* K11 */ be_nested_str_weak(remove), - /* K12 */ be_nested_str_weak(sequence_managers), - /* K13 */ be_nested_str_weak(animation), - /* K14 */ be_nested_str_weak(SequenceManager), - /* K15 */ be_nested_str_weak(_add_sequence_manager), - /* K16 */ be_nested_str_weak(_add_animation), - /* K17 */ be_nested_str_weak(introspect), - /* K18 */ be_nested_str_weak(Cannot_X20add_X20object_X20of_X20type_X20_X27_X25s_X27_X20to_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), - /* K19 */ be_nested_str_weak(type_error), - /* K20 */ be_nested_str_weak(event_manager), - /* K21 */ be_nested_str_weak(_process_queued_events), - /* K22 */ be_nested_str_weak(resume), - /* K23 */ be_nested_str_weak(update), - /* K24 */ be_nested_str_weak(is_running), - /* K25 */ be_nested_str_weak(render_needed), - /* K26 */ be_nested_str_weak(_clear_strip), - /* K27 */ be_nested_str_weak(_render_animations), - /* K28 */ be_nested_str_weak(length), - /* K29 */ be_nested_str_weak(_handle_strip_length_change), - /* K30 */ be_nested_str_weak(find), - /* K31 */ be_nested_str_weak(push), - /* K32 */ be_nested_str_weak(_sort_animations), - /* K33 */ be_nested_str_weak(start), - /* K34 */ be_nested_str_weak(time_ms), - /* K35 */ be_nested_str_weak(clear), - /* K36 */ be_nested_str_weak(temp_buffer), - /* K37 */ be_nested_str_weak(render), - /* K38 */ be_nested_str_weak(post_render), - /* K39 */ be_nested_str_weak(blend_pixels), - /* K40 */ be_nested_str_weak(_output_to_strip), - /* K41 */ be_nested_str_weak(tasmota), - /* K42 */ be_nested_str_weak(millis), - /* K43 */ be_nested_str_weak(last_update), - /* K44 */ be_nested_str_weak(fast_loop_closure), - /* K45 */ be_nested_str_weak(add_fast_loop), - /* K46 */ be_nested_str_weak(remove_sequence_manager), - /* K47 */ be_nested_str_weak(remove_animation), - /* K48 */ be_nested_str_weak(Cannot_X20remove_X20object_X20of_X20type_X20_X27_X25s_X27_X20from_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), - /* K49 */ be_nested_str_weak(check_strip_length), - /* K50 */ be_nested_str_weak(can_show), - /* K51 */ be_nested_str_weak(_process_events), - /* K52 */ be_nested_str_weak(_update_and_render), - /* K53 */ be_nested_str_weak(remove_fast_loop), - /* K54 */ be_nested_str_weak(priority), - /* K55 */ be_nested_str_weak(stop_iteration), - /* K56 */ be_nested_str_weak(AnimationEngine_X28running_X3D_X25s_X2C_X20animations_X3D_X25s_X2C_X20width_X3D_X25s_X29), - /* K57 */ be_nested_str_weak(resize), - /* K58 */ be_nested_str_weak(value_error), - /* K59 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), + /* K12 */ be_nested_str_weak(render_needed), + /* K13 */ be_nested_str_weak(_clear_strip), + /* K14 */ be_nested_str_weak(_render_animations), + /* K15 */ be_nested_str_weak(fast_loop_closure), + /* K16 */ be_nested_str_weak(tasmota), + /* K17 */ be_nested_str_weak(remove_fast_loop), + /* K18 */ be_nested_str_weak(stop), + /* K19 */ be_nested_str_weak(stop_iteration), + /* K20 */ be_nested_str_weak(find), + /* K21 */ be_nested_str_weak(push), + /* K22 */ be_nested_str_weak(_sort_animations), + /* K23 */ be_nested_str_weak(start), + /* K24 */ be_nested_str_weak(time_ms), + /* K25 */ be_nested_str_weak(AnimationEngine_X28running_X3D_X25s_X2C_X20animations_X3D_X25s_X2C_X20width_X3D_X25s_X29), + /* K26 */ be_nested_str_weak(width), + /* K27 */ be_nested_str_weak(iteration_stack), + /* K28 */ be_nested_str_weak(pop), + /* K29 */ be_nested_str_weak(strip), + /* K30 */ be_nested_str_weak(length), + /* K31 */ be_nested_str_weak(_handle_strip_length_change), + /* K32 */ be_nested_str_weak(frame_buffer), + /* K33 */ be_nested_str_weak(resize), + /* K34 */ be_nested_str_weak(temp_buffer), + /* K35 */ be_nested_str_weak(millis), + /* K36 */ be_nested_str_weak(check_strip_length), + /* K37 */ be_nested_str_weak(last_update), + /* K38 */ be_nested_str_weak(can_show), + /* K39 */ be_nested_str_weak(sequence_managers), + /* K40 */ be_nested_str_weak(_process_events), + /* K41 */ be_nested_str_weak(_update_and_render), + /* K42 */ be_nested_str_weak(clear), + /* K43 */ be_nested_str_weak(priority), + /* K44 */ be_nested_str_weak(show), + /* K45 */ be_nested_str_weak(value_error), + /* K46 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), + /* K47 */ be_nested_str_weak(name), + /* K48 */ be_nested_str_weak(render), + /* K49 */ be_nested_str_weak(post_render), + /* K50 */ be_nested_str_weak(blend_pixels), + /* K51 */ be_nested_str_weak(_output_to_strip), + /* K52 */ be_nested_str_weak(add_fast_loop), + /* K53 */ be_nested_str_weak(event_manager), + /* K54 */ be_nested_str_weak(_process_queued_events), + /* K55 */ be_nested_str_weak(resume), + /* K56 */ be_nested_str_weak(set_pixel_color), + /* K57 */ be_nested_str_weak(get_pixel_color), + /* K58 */ be_nested_str_weak(_add_sequence_manager), + /* K59 */ be_nested_str_weak(_add_animation), + /* K60 */ be_nested_str_weak(introspect), + /* K61 */ be_nested_str_weak(Cannot_X20add_X20object_X20of_X20type_X20_X27_X25s_X27_X20to_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), }; extern const bclass be_class_AnimationEngine; /******************************************************************** -** Solidified function: _output_to_strip +** Solidified function: remove ********************************************************************/ -be_local_closure(class_AnimationEngine__output_to_strip, /* name */ +be_local_closure(class_AnimationEngine_remove, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_output_to_strip), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x14080202, // 0002 LT R2 R1 R2 - 0x780A0009, // 0003 JMPF R2 #000E - 0x88080102, // 0004 GETMBR R2 R0 K2 - 0x8C080503, // 0005 GETMET R2 R2 K3 - 0x5C100200, // 0006 MOVE R4 R1 - 0x88140104, // 0007 GETMBR R5 R0 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x7C140400, // 000A CALL R5 2 - 0x7C080600, // 000B CALL R2 3 - 0x00040306, // 000C ADD R1 R1 K6 - 0x7001FFF2, // 000D JMP #0001 - 0x88080102, // 000E GETMBR R2 R0 K2 - 0x8C080507, // 000F GETMET R2 R2 K7 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: interrupt_animation -********************************************************************/ -be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ - be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -15390,138 +10710,39 @@ be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(interrupt_animation), + be_str_weak(remove), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100108, // 0002 GETMBR R4 R0 K8 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0012, // 0005 JMPF R3 #0019 - 0x880C0108, // 0006 GETMBR R3 R0 K8 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100709, // 0008 GETMBR R4 R3 K9 - 0x4C140000, // 0009 LDNIL R5 - 0x20100805, // 000A NE R4 R4 R5 - 0x7812000A, // 000B JMPF R4 #0017 - 0x88100709, // 000C GETMBR R4 R3 K9 - 0x1C100801, // 000D EQ R4 R4 R1 - 0x78120007, // 000E JMPF R4 #0017 - 0x8C10070A, // 000F GETMET R4 R3 K10 - 0x5C180600, // 0010 MOVE R6 R3 - 0x7C100400, // 0011 CALL R4 2 - 0x88100108, // 0012 GETMBR R4 R0 K8 - 0x8C10090B, // 0013 GETMET R4 R4 K11 - 0x5C180400, // 0014 MOVE R6 R2 - 0x7C100400, // 0015 CALL R4 2 - 0x80000800, // 0016 RET 0 - 0x00080506, // 0017 ADD R2 R2 K6 - 0x7001FFE7, // 0018 JMP #0001 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_sequence_manager -********************************************************************/ -be_local_closure(class_AnimationEngine_remove_sequence_manager, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(remove_sequence_manager), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x5409FFFE, // 0000 LDINT R2 -1 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x8814010C, // 0003 GETMBR R5 R0 K12 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120007, // 0006 JMPF R4 #000F - 0x8810010C, // 0007 GETMBR R4 R0 K12 - 0x94100803, // 0008 GETIDX R4 R4 R3 - 0x1C100801, // 0009 EQ R4 R4 R1 - 0x78120001, // 000A JMPF R4 #000D - 0x5C080600, // 000B MOVE R2 R3 - 0x70020001, // 000C JMP #000F - 0x000C0706, // 000D ADD R3 R3 K6 - 0x7001FFF2, // 000E JMP #0002 - 0x28100500, // 000F GE R4 R2 K0 - 0x78120005, // 0010 JMPF R4 #0017 - 0x8810010C, // 0011 GETMBR R4 R0 K12 - 0x8C10090B, // 0012 GETMET R4 R4 K11 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x50100200, // 0015 LDBOOL R4 1 0 - 0x80040800, // 0016 RET 1 R4 - 0x50100000, // 0017 LDBOOL R4 0 0 - 0x80040800, // 0018 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add -********************************************************************/ -be_local_closure(class_AnimationEngine_add, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(add), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ + ( &(const binstruction[30]) { /* code */ 0x6008000F, // 0000 GETGBL R2 G15 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8121A00, // 0002 GETNGBL R4 K13 - 0x8810090E, // 0003 GETMBR R4 R4 K14 + 0xB8120000, // 0002 GETNGBL R4 K0 + 0x88100901, // 0003 GETMBR R4 R4 K1 0x7C080400, // 0004 CALL R2 2 0x780A0004, // 0005 JMPF R2 #000B - 0x8C08010F, // 0006 GETMET R2 R0 K15 + 0x8C080102, // 0006 GETMET R2 R0 K2 0x5C100200, // 0007 MOVE R4 R1 0x7C080400, // 0008 CALL R2 2 0x80040400, // 0009 RET 1 R2 - 0x70020013, // 000A JMP #001F + 0x70020011, // 000A JMP #001D 0x6008000F, // 000B GETGBL R2 G15 0x5C0C0200, // 000C MOVE R3 R1 - 0xB8121A00, // 000D GETNGBL R4 K13 - 0x8810090D, // 000E GETMBR R4 R4 K13 + 0xB8120000, // 000D GETNGBL R4 K0 + 0x88100900, // 000E GETMBR R4 R4 K0 0x7C080400, // 000F CALL R2 2 0x780A0004, // 0010 JMPF R2 #0016 - 0x8C080110, // 0011 GETMET R2 R0 K16 + 0x8C080103, // 0011 GETMET R2 R0 K3 0x5C100200, // 0012 MOVE R4 R1 0x7C080400, // 0013 CALL R2 2 0x80040400, // 0014 RET 1 R2 - 0x70020008, // 0015 JMP #001F - 0xA40A2200, // 0016 IMPORT R2 K17 - 0x8C0C0509, // 0017 GETMET R3 R2 K9 - 0x5C140200, // 0018 MOVE R5 R1 - 0x7C0C0400, // 0019 CALL R3 2 - 0x60100018, // 001A GETGBL R4 G24 - 0x58140012, // 001B LDCONST R5 K18 - 0x5C180600, // 001C MOVE R6 R3 - 0x7C100400, // 001D CALL R4 2 - 0xB0062604, // 001E RAISE 1 K19 R4 - 0x80000000, // 001F RET 0 + 0x70020006, // 0015 JMP #001D + 0x60080018, // 0016 GETGBL R2 G24 + 0x580C0004, // 0017 LDCONST R3 K4 + 0x60100005, // 0018 GETGBL R4 G5 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C100200, // 001A CALL R4 1 + 0x7C080400, // 001B CALL R2 2 + 0xB0060A02, // 001C RAISE 1 K5 R2 + 0x80000000, // 001D RET 0 }) ) ); @@ -15529,44 +10750,11 @@ be_local_closure(class_AnimationEngine_add, /* name */ /******************************************************************** -** Solidified function: _process_events +** Solidified function: get_animations ********************************************************************/ -be_local_closure(class_AnimationEngine__process_events, /* name */ +be_local_closure(class_AnimationEngine_get_animations, /* name */ be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_process_events), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB80A1A00, // 0000 GETNGBL R2 K13 - 0x88080514, // 0001 GETMBR R2 R2 K20 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0003, // 0004 JMPF R2 #0009 - 0xB80A1A00, // 0005 GETNGBL R2 K13 - 0x88080514, // 0006 GETMBR R2 R2 K20 - 0x8C080515, // 0007 GETMET R2 R2 K21 - 0x7C080200, // 0008 CALL R2 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: size -********************************************************************/ -be_local_closure(class_AnimationEngine_size, /* name */ - be_nested_proto( - 3, /* nstack */ + 2, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -15575,39 +10763,11 @@ be_local_closure(class_AnimationEngine_size, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(size), + be_str_weak(get_animations), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080108, // 0001 GETMBR R2 R0 K8 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resume_after -********************************************************************/ -be_local_closure(class_AnimationEngine_resume_after, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(resume_after), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C080116, // 0000 GETMET R2 R0 K22 - 0x7C080200, // 0001 CALL R2 1 - 0x80000000, // 0002 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x88040106, // 0000 GETMBR R1 R0 K6 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -15631,46 +10791,46 @@ be_local_closure(class_AnimationEngine__update_and_render, /* name */ be_str_weak(_update_and_render), &be_const_str_solidified, ( &(const binstruction[41]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x580C0000, // 0001 LDCONST R3 K0 + 0x58080007, // 0000 LDCONST R2 K7 + 0x580C0007, // 0001 LDCONST R3 K7 0x6010000C, // 0002 GETGBL R4 G12 - 0x88140108, // 0003 GETMBR R5 R0 K8 + 0x88140106, // 0003 GETMBR R5 R0 K6 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120011, // 0006 JMPF R4 #0019 - 0x88100108, // 0007 GETMBR R4 R0 K8 + 0x88100106, // 0007 GETMBR R4 R0 K6 0x94100803, // 0008 GETIDX R4 R4 R3 - 0x8C140917, // 0009 GETMET R5 R4 K23 + 0x8C140908, // 0009 GETMET R5 R4 K8 0x5C1C0200, // 000A MOVE R7 R1 0x7C140400, // 000B CALL R5 2 0x78160004, // 000C JMPF R5 #0012 - 0x88180918, // 000D GETMBR R6 R4 K24 + 0x88180909, // 000D GETMBR R6 R4 K9 0x781A0002, // 000E JMPF R6 #0012 - 0x00080506, // 000F ADD R2 R2 K6 - 0x000C0706, // 0010 ADD R3 R3 K6 + 0x0008050A, // 000F ADD R2 R2 K10 + 0x000C070A, // 0010 ADD R3 R3 K10 0x70020005, // 0011 JMP #0018 - 0x88180108, // 0012 GETMBR R6 R0 K8 + 0x88180106, // 0012 GETMBR R6 R0 K6 0x8C180D0B, // 0013 GETMET R6 R6 K11 0x5C200600, // 0014 MOVE R8 R3 0x7C180400, // 0015 CALL R6 2 0x50180200, // 0016 LDBOOL R6 1 0 - 0x90023206, // 0017 SETMBR R0 K25 R6 + 0x90021806, // 0017 SETMBR R0 K12 R6 0x7001FFE8, // 0018 JMP #0002 - 0x1C100500, // 0019 EQ R4 R2 K0 + 0x1C100507, // 0019 EQ R4 R2 K7 0x78120006, // 001A JMPF R4 #0022 - 0x88100119, // 001B GETMBR R4 R0 K25 + 0x8810010C, // 001B GETMBR R4 R0 K12 0x78120003, // 001C JMPF R4 #0021 - 0x8C10011A, // 001D GETMET R4 R0 K26 + 0x8C10010D, // 001D GETMET R4 R0 K13 0x7C100200, // 001E CALL R4 1 0x50100000, // 001F LDBOOL R4 0 0 - 0x90023204, // 0020 SETMBR R0 K25 R4 + 0x90021804, // 0020 SETMBR R0 K12 R4 0x80000800, // 0021 RET 0 - 0x8C10011B, // 0022 GETMET R4 R0 K27 - 0x88180108, // 0023 GETMBR R6 R0 K8 + 0x8C10010E, // 0022 GETMET R4 R0 K14 + 0x88180106, // 0023 GETMBR R6 R0 K6 0x5C1C0200, // 0024 MOVE R7 R1 0x7C100600, // 0025 CALL R4 3 0x50100000, // 0026 LDBOOL R4 0 0 - 0x90023204, // 0027 SETMBR R0 K25 R4 + 0x90021804, // 0027 SETMBR R0 K12 R4 0x80000000, // 0028 RET 0 }) ) @@ -15679,9 +10839,45 @@ be_local_closure(class_AnimationEngine__update_and_render, /* name */ /******************************************************************** -** Solidified function: check_strip_length +** Solidified function: stop ********************************************************************/ -be_local_closure(class_AnimationEngine_check_strip_length, /* name */ +be_local_closure(class_AnimationEngine_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x78060009, // 0001 JMPF R1 #000C + 0x50040000, // 0002 LDBOOL R1 0 0 + 0x90021201, // 0003 SETMBR R0 K9 R1 + 0x8804010F, // 0004 GETMBR R1 R0 K15 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060003, // 0007 JMPF R1 #000C + 0xB8062000, // 0008 GETNGBL R1 K16 + 0x8C040311, // 0009 GETMET R1 R1 K17 + 0x880C010F, // 000A GETMBR R3 R0 K15 + 0x7C040400, // 000B CALL R1 2 + 0x80040000, // 000C RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: interrupt_current +********************************************************************/ +be_local_closure(class_AnimationEngine_interrupt_current, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -15692,22 +10888,24 @@ be_local_closure(class_AnimationEngine_check_strip_length, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(check_strip_length), + be_str_weak(interrupt_current), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040102, // 0000 GETMBR R1 R0 K2 - 0x8C04031C, // 0001 GETMET R1 R1 K28 + ( &(const binstruction[15]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080106, // 0001 GETMBR R2 R0 K6 0x7C040200, // 0002 CALL R1 1 - 0x88080101, // 0003 GETMBR R2 R0 K1 - 0x20080202, // 0004 NE R2 R1 R2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C08011D, // 0006 GETMET R2 R0 K29 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x50080200, // 0009 LDBOOL R2 1 0 - 0x80040400, // 000A RET 1 R2 - 0x50080000, // 000B LDBOOL R2 0 0 - 0x80040400, // 000C RET 1 R2 + 0xA8020006, // 0003 EXBLK 0 #000B + 0x5C080200, // 0004 MOVE R2 R1 + 0x7C080000, // 0005 CALL R2 0 + 0x880C0509, // 0006 GETMBR R3 R2 K9 + 0x780E0001, // 0007 JMPF R3 #000A + 0x8C0C0512, // 0008 GETMET R3 R2 K18 + 0x7C0C0200, // 0009 CALL R3 1 + 0x7001FFF8, // 000A JMP #0004 + 0x58040013, // 000B LDCONST R1 K19 + 0xAC040200, // 000C CATCH R1 1 0 + 0xB0080000, // 000D RAISE 2 R0 R0 + 0x80000000, // 000E RET 0 }) ) ); @@ -15731,26 +10929,26 @@ be_local_closure(class_AnimationEngine__add_animation, /* name */ be_str_weak(_add_animation), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x88080108, // 0000 GETMBR R2 R0 K8 - 0x8C08051E, // 0001 GETMET R2 R2 K30 + 0x88080106, // 0000 GETMBR R2 R0 K6 + 0x8C080514, // 0001 GETMET R2 R2 K20 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A000F, // 0006 JMPF R2 #0017 - 0x88080108, // 0007 GETMBR R2 R0 K8 - 0x8C08051F, // 0008 GETMET R2 R2 K31 + 0x88080106, // 0007 GETMBR R2 R0 K6 + 0x8C080515, // 0008 GETMET R2 R2 K21 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 - 0x8C080120, // 000B GETMET R2 R0 K32 + 0x8C080116, // 000B GETMET R2 R0 K22 0x7C080200, // 000C CALL R2 1 - 0x88080118, // 000D GETMBR R2 R0 K24 + 0x88080109, // 000D GETMBR R2 R0 K9 0x780A0002, // 000E JMPF R2 #0012 - 0x8C080321, // 000F GETMET R2 R1 K33 - 0x88100122, // 0010 GETMBR R4 R0 K34 + 0x8C080317, // 000F GETMET R2 R1 K23 + 0x88100118, // 0010 GETMBR R4 R0 K24 0x7C080400, // 0011 CALL R2 2 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90023202, // 0013 SETMBR R0 K25 R2 + 0x90021802, // 0013 SETMBR R0 K12 R2 0x50080200, // 0014 LDBOOL R2 1 0 0x80040400, // 0015 RET 1 R2 0x70020001, // 0016 JMP #0019 @@ -15764,9 +10962,149 @@ be_local_closure(class_AnimationEngine__add_animation, /* name */ /******************************************************************** -** Solidified function: remove_animation +** Solidified function: tostring ********************************************************************/ -be_local_closure(class_AnimationEngine_remove_animation, /* name */ +be_local_closure(class_AnimationEngine_tostring, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080019, // 0001 LDCONST R2 K25 + 0x880C0109, // 0002 GETMBR R3 R0 K9 + 0x6010000C, // 0003 GETGBL R4 G12 + 0x88140106, // 0004 GETMBR R5 R0 K6 + 0x7C100200, // 0005 CALL R4 1 + 0x8814011A, // 0006 GETMBR R5 R0 K26 + 0x7C040800, // 0007 CALL R1 4 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: pop_iteration_context +********************************************************************/ +be_local_closure(class_AnimationEngine_pop_iteration_context, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(pop_iteration_context), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x8808011B, // 0001 GETMBR R2 R0 K27 + 0x7C040200, // 0002 CALL R1 1 + 0x24040307, // 0003 GT R1 R1 K7 + 0x78060003, // 0004 JMPF R1 #0009 + 0x8804011B, // 0005 GETMBR R1 R0 K27 + 0x8C04031C, // 0006 GETMET R1 R1 K28 + 0x7C040200, // 0007 CALL R1 1 + 0x80040200, // 0008 RET 1 R1 + 0x4C040000, // 0009 LDNIL R1 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_strip_length +********************************************************************/ +be_local_closure(class_AnimationEngine_check_strip_length, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(check_strip_length), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x8804011D, // 0000 GETMBR R1 R0 K29 + 0x8C04031E, // 0001 GETMET R1 R1 K30 + 0x7C040200, // 0002 CALL R1 1 + 0x8808011A, // 0003 GETMBR R2 R0 K26 + 0x20080202, // 0004 NE R2 R1 R2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C08011F, // 0006 GETMET R2 R0 K31 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x50080200, // 0009 LDBOOL R2 1 0 + 0x80040400, // 000A RET 1 R2 + 0x50080000, // 000B LDBOOL R2 0 0 + 0x80040400, // 000C RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _handle_strip_length_change +********************************************************************/ +be_local_closure(class_AnimationEngine__handle_strip_length_change, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_handle_strip_length_change), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x18080307, // 0000 LE R2 R1 K7 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x90023401, // 0003 SETMBR R0 K26 R1 + 0x88080120, // 0004 GETMBR R2 R0 K32 + 0x8C080521, // 0005 GETMET R2 R2 K33 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x88080122, // 0008 GETMBR R2 R0 K34 + 0x8C080521, // 0009 GETMET R2 R2 K33 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x90021802, // 000D SETMBR R0 K12 R2 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_tick +********************************************************************/ +be_local_closure(class_AnimationEngine_on_tick, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ @@ -15777,90 +11115,63 @@ be_local_closure(class_AnimationEngine_remove_animation, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(remove_animation), + be_str_weak(on_tick), &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x5409FFFE, // 0000 LDINT R2 -1 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x88140108, // 0003 GETMBR R5 R0 K8 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120007, // 0006 JMPF R4 #000F - 0x88100108, // 0007 GETMBR R4 R0 K8 - 0x94100803, // 0008 GETIDX R4 R4 R3 - 0x1C100801, // 0009 EQ R4 R4 R1 - 0x78120001, // 000A JMPF R4 #000D - 0x5C080600, // 000B MOVE R2 R3 - 0x70020001, // 000C JMP #000F - 0x000C0706, // 000D ADD R3 R3 K6 - 0x7001FFF2, // 000E JMP #0002 - 0x28100500, // 000F GE R4 R2 K0 - 0x78120007, // 0010 JMPF R4 #0019 - 0x88100108, // 0011 GETMBR R4 R0 K8 - 0x8C10090B, // 0012 GETMET R4 R4 K11 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x50100200, // 0015 LDBOOL R4 1 0 - 0x90023204, // 0016 SETMBR R0 K25 R4 - 0x50100200, // 0017 LDBOOL R4 1 0 - 0x80040800, // 0018 RET 1 R4 - 0x50100000, // 0019 LDBOOL R4 0 0 - 0x80040800, // 001A RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _render_animations -********************************************************************/ -be_local_closure(class_AnimationEngine__render_animations, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_render_animations), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x880C0104, // 0000 GETMBR R3 R0 K4 - 0x8C0C0723, // 0001 GETMET R3 R3 K35 - 0x7C0C0200, // 0002 CALL R3 1 - 0x580C0000, // 0003 LDCONST R3 K0 - 0x6010000C, // 0004 GETGBL R4 G12 - 0x5C140200, // 0005 MOVE R5 R1 - 0x7C100200, // 0006 CALL R4 1 - 0x14100604, // 0007 LT R4 R3 R4 - 0x78120012, // 0008 JMPF R4 #001C - 0x94100203, // 0009 GETIDX R4 R1 R3 - 0x88140124, // 000A GETMBR R5 R0 K36 - 0x8C140B23, // 000B GETMET R5 R5 K35 - 0x7C140200, // 000C CALL R5 1 - 0x8C140925, // 000D GETMET R5 R4 K37 - 0x881C0124, // 000E GETMBR R7 R0 K36 - 0x5C200400, // 000F MOVE R8 R2 - 0x7C140600, // 0010 CALL R5 3 - 0x78160007, // 0011 JMPF R5 #001A - 0x8C180926, // 0012 GETMET R6 R4 K38 - 0x88200124, // 0013 GETMBR R8 R0 K36 - 0x5C240400, // 0014 MOVE R9 R2 - 0x7C180600, // 0015 CALL R6 3 - 0x88180104, // 0016 GETMBR R6 R0 K4 - 0x8C180D27, // 0017 GETMET R6 R6 K39 - 0x88200124, // 0018 GETMBR R8 R0 K36 - 0x7C180400, // 0019 CALL R6 2 - 0x000C0706, // 001A ADD R3 R3 K6 - 0x7001FFE7, // 001B JMP #0004 - 0x8C100128, // 001C GETMET R4 R0 K40 - 0x7C100200, // 001D CALL R4 1 - 0x80000000, // 001E RET 0 + ( &(const binstruction[54]) { /* code */ + 0x88080109, // 0000 GETMBR R2 R0 K9 + 0x740A0001, // 0001 JMPT R2 #0004 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x80040400, // 0003 RET 1 R2 + 0x4C080000, // 0004 LDNIL R2 + 0x1C080202, // 0005 EQ R2 R1 R2 + 0x780A0003, // 0006 JMPF R2 #000B + 0xB80A2000, // 0007 GETNGBL R2 K16 + 0x8C080523, // 0008 GETMET R2 R2 K35 + 0x7C080200, // 0009 CALL R2 1 + 0x5C040400, // 000A MOVE R1 R2 + 0x8C080124, // 000B GETMET R2 R0 K36 + 0x7C080200, // 000C CALL R2 1 + 0x90023001, // 000D SETMBR R0 K24 R1 + 0x88080125, // 000E GETMBR R2 R0 K37 + 0x04080202, // 000F SUB R2 R1 R2 + 0x540E0004, // 0010 LDINT R3 5 + 0x140C0403, // 0011 LT R3 R2 R3 + 0x780E0001, // 0012 JMPF R3 #0015 + 0x500C0200, // 0013 LDBOOL R3 1 0 + 0x80040600, // 0014 RET 1 R3 + 0x90024A01, // 0015 SETMBR R0 K37 R1 + 0x880C011D, // 0016 GETMBR R3 R0 K29 + 0x880C0726, // 0017 GETMBR R3 R3 K38 + 0x4C100000, // 0018 LDNIL R4 + 0x200C0604, // 0019 NE R3 R3 R4 + 0x780E0005, // 001A JMPF R3 #0021 + 0x880C011D, // 001B GETMBR R3 R0 K29 + 0x8C0C0726, // 001C GETMET R3 R3 K38 + 0x7C0C0200, // 001D CALL R3 1 + 0x740E0001, // 001E JMPT R3 #0021 + 0x500C0200, // 001F LDBOOL R3 1 0 + 0x80040600, // 0020 RET 1 R3 + 0x580C0007, // 0021 LDCONST R3 K7 + 0x6010000C, // 0022 GETGBL R4 G12 + 0x88140127, // 0023 GETMBR R5 R0 K39 + 0x7C100200, // 0024 CALL R4 1 + 0x14100604, // 0025 LT R4 R3 R4 + 0x78120006, // 0026 JMPF R4 #002E + 0x88100127, // 0027 GETMBR R4 R0 K39 + 0x94100803, // 0028 GETIDX R4 R4 R3 + 0x8C100908, // 0029 GETMET R4 R4 K8 + 0x5C180200, // 002A MOVE R6 R1 + 0x7C100400, // 002B CALL R4 2 + 0x000C070A, // 002C ADD R3 R3 K10 + 0x7001FFF3, // 002D JMP #0022 + 0x8C100128, // 002E GETMET R4 R0 K40 + 0x5C180200, // 002F MOVE R6 R1 + 0x7C100400, // 0030 CALL R4 2 + 0x8C100129, // 0031 GETMET R4 R0 K41 + 0x5C180200, // 0032 MOVE R6 R1 + 0x7C100400, // 0033 CALL R4 2 + 0x50100200, // 0034 LDBOOL R4 1 0 + 0x80040800, // 0035 RET 1 R4 }) ) ); @@ -15884,16 +11195,16 @@ be_local_closure(class_AnimationEngine_cleanup, /* name */ be_str_weak(cleanup), &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ - 0x8C04010A, // 0000 GETMET R1 R0 K10 + 0x8C040112, // 0000 GETMET R1 R0 K18 0x7C040200, // 0001 CALL R1 1 - 0x8C040123, // 0002 GETMET R1 R0 K35 + 0x8C04012A, // 0002 GETMET R1 R0 K42 0x7C040200, // 0003 CALL R1 1 0x4C040000, // 0004 LDNIL R1 - 0x90020801, // 0005 SETMBR R0 K4 R1 + 0x90024001, // 0005 SETMBR R0 K32 R1 0x4C040000, // 0006 LDNIL R1 - 0x90024801, // 0007 SETMBR R0 K36 R1 + 0x90024401, // 0007 SETMBR R0 K34 R1 0x4C040000, // 0008 LDNIL R1 - 0x90020401, // 0009 SETMBR R0 K2 R1 + 0x90023A01, // 0009 SETMBR R0 K29 R1 0x80000000, // 000A RET 0 }) ) @@ -15901,6 +11212,308 @@ be_local_closure(class_AnimationEngine_cleanup, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: _sort_animations +********************************************************************/ +be_local_closure(class_AnimationEngine__sort_animations, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_sort_animations), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080106, // 0001 GETMBR R2 R0 K6 + 0x7C040200, // 0002 CALL R1 1 + 0x1808030A, // 0003 LE R2 R1 K10 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80000400, // 0005 RET 0 + 0x5808000A, // 0006 LDCONST R2 K10 + 0x140C0401, // 0007 LT R3 R2 R1 + 0x780E0016, // 0008 JMPF R3 #0020 + 0x880C0106, // 0009 GETMBR R3 R0 K6 + 0x940C0602, // 000A GETIDX R3 R3 R2 + 0x5C100400, // 000B MOVE R4 R2 + 0x24140907, // 000C GT R5 R4 K7 + 0x7816000D, // 000D JMPF R5 #001C + 0x0414090A, // 000E SUB R5 R4 K10 + 0x88180106, // 000F GETMBR R6 R0 K6 + 0x94140C05, // 0010 GETIDX R5 R6 R5 + 0x88140B2B, // 0011 GETMBR R5 R5 K43 + 0x8818072B, // 0012 GETMBR R6 R3 K43 + 0x14140A06, // 0013 LT R5 R5 R6 + 0x78160006, // 0014 JMPF R5 #001C + 0x88140106, // 0015 GETMBR R5 R0 K6 + 0x0418090A, // 0016 SUB R6 R4 K10 + 0x881C0106, // 0017 GETMBR R7 R0 K6 + 0x94180E06, // 0018 GETIDX R6 R7 R6 + 0x98140806, // 0019 SETIDX R5 R4 R6 + 0x0410090A, // 001A SUB R4 R4 K10 + 0x7001FFEF, // 001B JMP #000C + 0x88140106, // 001C GETMBR R5 R0 K6 + 0x98140803, // 001D SETIDX R5 R4 R3 + 0x0008050A, // 001E ADD R2 R2 K10 + 0x7001FFE6, // 001F JMP #0007 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: interrupt_all +********************************************************************/ +be_local_closure(class_AnimationEngine_interrupt_all, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(interrupt_all), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C04012A, // 0000 GETMET R1 R0 K42 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_sequence_manager +********************************************************************/ +be_local_closure(class_AnimationEngine__add_sequence_manager, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_add_sequence_manager), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080127, // 0000 GETMBR R2 R0 K39 + 0x8C080515, // 0001 GETMET R2 R2 K21 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040000, // 0004 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _clear_strip +********************************************************************/ +be_local_closure(class_AnimationEngine__clear_strip, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_clear_strip), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x8804011D, // 0000 GETMBR R1 R0 K29 + 0x8C04032A, // 0001 GETMET R1 R1 K42 + 0x7C040200, // 0002 CALL R1 1 + 0x8804011D, // 0003 GETMBR R1 R0 K29 + 0x8C04032C, // 0004 GETMET R1 R1 K44 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_AnimationEngine_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[36]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0xB0065B2E, // 0003 RAISE 1 K45 K46 + 0x90023A01, // 0004 SETMBR R0 K29 R1 + 0x8C08031E, // 0005 GETMET R2 R1 K30 + 0x7C080200, // 0006 CALL R2 1 + 0x90023402, // 0007 SETMBR R0 K26 R2 + 0x60080012, // 0008 GETGBL R2 G18 + 0x7C080000, // 0009 CALL R2 0 + 0x90020C02, // 000A SETMBR R0 K6 R2 + 0x60080012, // 000B GETGBL R2 G18 + 0x7C080000, // 000C CALL R2 0 + 0x90024E02, // 000D SETMBR R0 K39 R2 + 0xB80A0000, // 000E GETNGBL R2 K0 + 0x8C080520, // 000F GETMET R2 R2 K32 + 0x8810011A, // 0010 GETMBR R4 R0 K26 + 0x7C080400, // 0011 CALL R2 2 + 0x90024002, // 0012 SETMBR R0 K32 R2 + 0xB80A0000, // 0013 GETNGBL R2 K0 + 0x8C080520, // 0014 GETMET R2 R2 K32 + 0x8810011A, // 0015 GETMBR R4 R0 K26 + 0x7C080400, // 0016 CALL R2 2 + 0x90024402, // 0017 SETMBR R0 K34 R2 + 0x50080000, // 0018 LDBOOL R2 0 0 + 0x90021202, // 0019 SETMBR R0 K9 R2 + 0x90024B07, // 001A SETMBR R0 K37 K7 + 0x90023107, // 001B SETMBR R0 K24 K7 + 0x4C080000, // 001C LDNIL R2 + 0x90021E02, // 001D SETMBR R0 K15 R2 + 0x50080000, // 001E LDBOOL R2 0 0 + 0x90021802, // 001F SETMBR R0 K12 R2 + 0x60080012, // 0020 GETGBL R2 G18 + 0x7C080000, // 0021 CALL R2 0 + 0x90023602, // 0022 SETMBR R0 K27 R2 + 0x80000000, // 0023 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: interrupt_animation +********************************************************************/ +be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(interrupt_animation), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x58080007, // 0000 LDCONST R2 K7 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100106, // 0002 GETMBR R4 R0 K6 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0012, // 0005 JMPF R3 #0019 + 0x880C0106, // 0006 GETMBR R3 R0 K6 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8810072F, // 0008 GETMBR R4 R3 K47 + 0x4C140000, // 0009 LDNIL R5 + 0x20100805, // 000A NE R4 R4 R5 + 0x7812000A, // 000B JMPF R4 #0017 + 0x8810072F, // 000C GETMBR R4 R3 K47 + 0x1C100801, // 000D EQ R4 R4 R1 + 0x78120007, // 000E JMPF R4 #0017 + 0x8C100712, // 000F GETMET R4 R3 K18 + 0x5C180600, // 0010 MOVE R6 R3 + 0x7C100400, // 0011 CALL R4 2 + 0x88100106, // 0012 GETMBR R4 R0 K6 + 0x8C10090B, // 0013 GETMET R4 R4 K11 + 0x5C180400, // 0014 MOVE R6 R2 + 0x7C100400, // 0015 CALL R4 2 + 0x80000800, // 0016 RET 0 + 0x0008050A, // 0017 ADD R2 R2 K10 + 0x7001FFE7, // 0018 JMP #0001 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _render_animations +********************************************************************/ +be_local_closure(class_AnimationEngine__render_animations, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_render_animations), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x880C0120, // 0000 GETMBR R3 R0 K32 + 0x8C0C072A, // 0001 GETMET R3 R3 K42 + 0x7C0C0200, // 0002 CALL R3 1 + 0x580C0007, // 0003 LDCONST R3 K7 + 0x6010000C, // 0004 GETGBL R4 G12 + 0x5C140200, // 0005 MOVE R5 R1 + 0x7C100200, // 0006 CALL R4 1 + 0x14100604, // 0007 LT R4 R3 R4 + 0x78120012, // 0008 JMPF R4 #001C + 0x94100203, // 0009 GETIDX R4 R1 R3 + 0x88140122, // 000A GETMBR R5 R0 K34 + 0x8C140B2A, // 000B GETMET R5 R5 K42 + 0x7C140200, // 000C CALL R5 1 + 0x8C140930, // 000D GETMET R5 R4 K48 + 0x881C0122, // 000E GETMBR R7 R0 K34 + 0x5C200400, // 000F MOVE R8 R2 + 0x7C140600, // 0010 CALL R5 3 + 0x78160007, // 0011 JMPF R5 #001A + 0x8C180931, // 0012 GETMET R6 R4 K49 + 0x88200122, // 0013 GETMBR R8 R0 K34 + 0x5C240400, // 0014 MOVE R9 R2 + 0x7C180600, // 0015 CALL R6 3 + 0x88180120, // 0016 GETMBR R6 R0 K32 + 0x8C180D32, // 0017 GETMET R6 R6 K50 + 0x88200122, // 0018 GETMBR R8 R0 K34 + 0x7C180400, // 0019 CALL R6 2 + 0x000C070A, // 001A ADD R3 R3 K10 + 0x7001FFE7, // 001B JMP #0004 + 0x8C100133, // 001C GETMET R4 R0 K51 + 0x7C100200, // 001D CALL R4 1 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: run ********************************************************************/ @@ -15942,51 +11555,51 @@ be_local_closure(class_AnimationEngine_run, /* name */ be_str_weak(run), &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x88040118, // 0000 GETMBR R1 R0 K24 + 0x88040109, // 0000 GETMBR R1 R0 K9 0x7406002B, // 0001 JMPT R1 #002E - 0xB8065200, // 0002 GETNGBL R1 K41 - 0x8C04032A, // 0003 GETMET R1 R1 K42 + 0xB8062000, // 0002 GETNGBL R1 K16 + 0x8C040323, // 0003 GETMET R1 R1 K35 0x7C040200, // 0004 CALL R1 1 0x50080200, // 0005 LDBOOL R2 1 0 - 0x90023002, // 0006 SETMBR R0 K24 R2 + 0x90021202, // 0006 SETMBR R0 K9 R2 0x540A0009, // 0007 LDINT R2 10 0x04080202, // 0008 SUB R2 R1 R2 - 0x90025602, // 0009 SETMBR R0 K43 R2 - 0x8808012C, // 000A GETMBR R2 R0 K44 + 0x90024A02, // 0009 SETMBR R0 K37 R2 + 0x8808010F, // 000A GETMBR R2 R0 K15 0x4C0C0000, // 000B LDNIL R3 0x1C080403, // 000C EQ R2 R2 R3 0x780A0001, // 000D JMPF R2 #0010 0x84080000, // 000E CLOSURE R2 P0 - 0x90025802, // 000F SETMBR R0 K44 R2 - 0x58080000, // 0010 LDCONST R2 K0 + 0x90021E02, // 000F SETMBR R0 K15 R2 + 0x58080007, // 0010 LDCONST R2 K7 0x600C000C, // 0011 GETGBL R3 G12 - 0x88100108, // 0012 GETMBR R4 R0 K8 + 0x88100106, // 0012 GETMBR R4 R0 K6 0x7C0C0200, // 0013 CALL R3 1 0x140C0403, // 0014 LT R3 R2 R3 0x780E0006, // 0015 JMPF R3 #001D - 0x880C0108, // 0016 GETMBR R3 R0 K8 + 0x880C0106, // 0016 GETMBR R3 R0 K6 0x940C0602, // 0017 GETIDX R3 R3 R2 - 0x8C0C0721, // 0018 GETMET R3 R3 K33 + 0x8C0C0717, // 0018 GETMET R3 R3 K23 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 - 0x00080506, // 001B ADD R2 R2 K6 + 0x0008050A, // 001B ADD R2 R2 K10 0x7001FFF3, // 001C JMP #0011 - 0x58080000, // 001D LDCONST R2 K0 + 0x58080007, // 001D LDCONST R2 K7 0x600C000C, // 001E GETGBL R3 G12 - 0x8810010C, // 001F GETMBR R4 R0 K12 + 0x88100127, // 001F GETMBR R4 R0 K39 0x7C0C0200, // 0020 CALL R3 1 0x140C0403, // 0021 LT R3 R2 R3 0x780E0006, // 0022 JMPF R3 #002A - 0x880C010C, // 0023 GETMBR R3 R0 K12 + 0x880C0127, // 0023 GETMBR R3 R0 K39 0x940C0602, // 0024 GETIDX R3 R3 R2 - 0x8C0C0721, // 0025 GETMET R3 R3 K33 + 0x8C0C0717, // 0025 GETMET R3 R3 K23 0x5C140200, // 0026 MOVE R5 R1 0x7C0C0400, // 0027 CALL R3 2 - 0x00080506, // 0028 ADD R2 R2 K6 + 0x0008050A, // 0028 ADD R2 R2 K10 0x7001FFF3, // 0029 JMP #001E - 0xB80E5200, // 002A GETNGBL R3 K41 - 0x8C0C072D, // 002B GETMET R3 R3 K45 - 0x8814012C, // 002C GETMBR R5 R0 K44 + 0xB80E2000, // 002A GETNGBL R3 K16 + 0x8C0C0734, // 002B GETMET R3 R3 K52 + 0x8814010F, // 002C GETMBR R5 R0 K15 0x7C0C0400, // 002D CALL R3 2 0xA0000000, // 002E CLOSE R0 0x80040000, // 002F RET 1 R0 @@ -15997,233 +11610,11 @@ be_local_closure(class_AnimationEngine_run, /* name */ /******************************************************************** -** Solidified function: remove +** Solidified function: update_current_iteration ********************************************************************/ -be_local_closure(class_AnimationEngine_remove, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(remove), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x6008000F, // 0000 GETGBL R2 G15 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8121A00, // 0002 GETNGBL R4 K13 - 0x8810090E, // 0003 GETMBR R4 R4 K14 - 0x7C080400, // 0004 CALL R2 2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C08012E, // 0006 GETMET R2 R0 K46 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80040400, // 0009 RET 1 R2 - 0x70020011, // 000A JMP #001D - 0x6008000F, // 000B GETGBL R2 G15 - 0x5C0C0200, // 000C MOVE R3 R1 - 0xB8121A00, // 000D GETNGBL R4 K13 - 0x8810090D, // 000E GETMBR R4 R4 K13 - 0x7C080400, // 000F CALL R2 2 - 0x780A0004, // 0010 JMPF R2 #0016 - 0x8C08012F, // 0011 GETMET R2 R0 K47 - 0x5C100200, // 0012 MOVE R4 R1 - 0x7C080400, // 0013 CALL R2 2 - 0x80040400, // 0014 RET 1 R2 - 0x70020006, // 0015 JMP #001D - 0x60080018, // 0016 GETGBL R2 G24 - 0x580C0030, // 0017 LDCONST R3 K48 - 0x60100005, // 0018 GETGBL R4 G5 - 0x5C140200, // 0019 MOVE R5 R1 - 0x7C100200, // 001A CALL R4 1 - 0x7C080400, // 001B CALL R2 2 - 0xB0062602, // 001C RAISE 1 K19 R2 - 0x80000000, // 001D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_tick -********************************************************************/ -be_local_closure(class_AnimationEngine_on_tick, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(on_tick), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0x88080118, // 0000 GETMBR R2 R0 K24 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x4C080000, // 0004 LDNIL R2 - 0x1C080202, // 0005 EQ R2 R1 R2 - 0x780A0003, // 0006 JMPF R2 #000B - 0xB80A5200, // 0007 GETNGBL R2 K41 - 0x8C08052A, // 0008 GETMET R2 R2 K42 - 0x7C080200, // 0009 CALL R2 1 - 0x5C040400, // 000A MOVE R1 R2 - 0x8C080131, // 000B GETMET R2 R0 K49 - 0x7C080200, // 000C CALL R2 1 - 0x90024401, // 000D SETMBR R0 K34 R1 - 0x8808012B, // 000E GETMBR R2 R0 K43 - 0x04080202, // 000F SUB R2 R1 R2 - 0x540E0004, // 0010 LDINT R3 5 - 0x140C0403, // 0011 LT R3 R2 R3 - 0x780E0001, // 0012 JMPF R3 #0015 - 0x500C0200, // 0013 LDBOOL R3 1 0 - 0x80040600, // 0014 RET 1 R3 - 0x90025601, // 0015 SETMBR R0 K43 R1 - 0x880C0102, // 0016 GETMBR R3 R0 K2 - 0x880C0732, // 0017 GETMBR R3 R3 K50 - 0x4C100000, // 0018 LDNIL R4 - 0x200C0604, // 0019 NE R3 R3 R4 - 0x780E0005, // 001A JMPF R3 #0021 - 0x880C0102, // 001B GETMBR R3 R0 K2 - 0x8C0C0732, // 001C GETMET R3 R3 K50 - 0x7C0C0200, // 001D CALL R3 1 - 0x740E0001, // 001E JMPT R3 #0021 - 0x500C0200, // 001F LDBOOL R3 1 0 - 0x80040600, // 0020 RET 1 R3 - 0x580C0000, // 0021 LDCONST R3 K0 - 0x6010000C, // 0022 GETGBL R4 G12 - 0x8814010C, // 0023 GETMBR R5 R0 K12 - 0x7C100200, // 0024 CALL R4 1 - 0x14100604, // 0025 LT R4 R3 R4 - 0x78120006, // 0026 JMPF R4 #002E - 0x8810010C, // 0027 GETMBR R4 R0 K12 - 0x94100803, // 0028 GETIDX R4 R4 R3 - 0x8C100917, // 0029 GETMET R4 R4 K23 - 0x5C180200, // 002A MOVE R6 R1 - 0x7C100400, // 002B CALL R4 2 - 0x000C0706, // 002C ADD R3 R3 K6 - 0x7001FFF3, // 002D JMP #0022 - 0x8C100133, // 002E GETMET R4 R0 K51 - 0x5C180200, // 002F MOVE R6 R1 - 0x7C100400, // 0030 CALL R4 2 - 0x8C100134, // 0031 GETMET R4 R0 K52 - 0x5C180200, // 0032 MOVE R6 R1 - 0x7C100400, // 0033 CALL R4 2 - 0x50100200, // 0034 LDBOOL R4 1 0 - 0x80040800, // 0035 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(class_AnimationEngine_stop, /* name */ +be_local_closure(class_AnimationEngine_update_current_iteration, /* name */ be_nested_proto( 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040118, // 0000 GETMBR R1 R0 K24 - 0x78060009, // 0001 JMPF R1 #000C - 0x50040000, // 0002 LDBOOL R1 0 0 - 0x90023001, // 0003 SETMBR R0 K24 R1 - 0x8804012C, // 0004 GETMBR R1 R0 K44 - 0x4C080000, // 0005 LDNIL R2 - 0x20040202, // 0006 NE R1 R1 R2 - 0x78060003, // 0007 JMPF R1 #000C - 0xB8065200, // 0008 GETNGBL R1 K41 - 0x8C040335, // 0009 GETMET R1 R1 K53 - 0x880C012C, // 000A GETMBR R3 R0 K44 - 0x7C040400, // 000B CALL R1 2 - 0x80040000, // 000C RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sort_animations -********************************************************************/ -be_local_closure(class_AnimationEngine__sort_animations, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_sort_animations), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080108, // 0001 GETMBR R2 R0 K8 - 0x7C040200, // 0002 CALL R1 1 - 0x18080306, // 0003 LE R2 R1 K6 - 0x780A0000, // 0004 JMPF R2 #0006 - 0x80000400, // 0005 RET 0 - 0x58080006, // 0006 LDCONST R2 K6 - 0x140C0401, // 0007 LT R3 R2 R1 - 0x780E0016, // 0008 JMPF R3 #0020 - 0x880C0108, // 0009 GETMBR R3 R0 K8 - 0x940C0602, // 000A GETIDX R3 R3 R2 - 0x5C100400, // 000B MOVE R4 R2 - 0x24140900, // 000C GT R5 R4 K0 - 0x7816000D, // 000D JMPF R5 #001C - 0x04140906, // 000E SUB R5 R4 K6 - 0x88180108, // 000F GETMBR R6 R0 K8 - 0x94140C05, // 0010 GETIDX R5 R6 R5 - 0x88140B36, // 0011 GETMBR R5 R5 K54 - 0x88180736, // 0012 GETMBR R6 R3 K54 - 0x14140A06, // 0013 LT R5 R5 R6 - 0x78160006, // 0014 JMPF R5 #001C - 0x88140108, // 0015 GETMBR R5 R0 K8 - 0x04180906, // 0016 SUB R6 R4 K6 - 0x881C0108, // 0017 GETMBR R7 R0 K8 - 0x94180E06, // 0018 GETIDX R6 R7 R6 - 0x98140806, // 0019 SETIDX R5 R4 R6 - 0x04100906, // 001A SUB R4 R4 K6 - 0x7001FFEF, // 001B JMP #000C - 0x88140108, // 001C GETMBR R5 R0 K8 - 0x98140803, // 001D SETIDX R5 R4 R3 - 0x00080506, // 001E ADD R2 R2 K6 - 0x7001FFE6, // 001F JMP #0007 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_sequence_manager -********************************************************************/ -be_local_closure(class_AnimationEngine__add_sequence_manager, /* name */ - be_nested_proto( - 5, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -16232,14 +11623,18 @@ be_local_closure(class_AnimationEngine__add_sequence_manager, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_add_sequence_manager), + be_str_weak(update_current_iteration), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8808010C, // 0000 GETMBR R2 R0 K12 - 0x8C08051F, // 0001 GETMET R2 R2 K31 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040000, // 0004 RET 1 R0 + ( &(const binstruction[ 9]) { /* code */ + 0x6008000C, // 0000 GETGBL R2 G12 + 0x880C011B, // 0001 GETMBR R3 R0 K27 + 0x7C080200, // 0002 CALL R2 1 + 0x24080507, // 0003 GT R2 R2 K7 + 0x780A0002, // 0004 JMPF R2 #0008 + 0x8808011B, // 0005 GETMBR R2 R0 K27 + 0x540DFFFE, // 0006 LDINT R3 -1 + 0x98080601, // 0007 SETIDX R2 R3 R1 + 0x80000000, // 0008 RET 0 }) ) ); @@ -16247,9 +11642,9 @@ be_local_closure(class_AnimationEngine__add_sequence_manager, /* name */ /******************************************************************** -** Solidified function: _clear_strip +** Solidified function: get_current_iteration_number ********************************************************************/ -be_local_closure(class_AnimationEngine__clear_strip, /* name */ +be_local_closure(class_AnimationEngine_get_current_iteration_number, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -16260,16 +11655,20 @@ be_local_closure(class_AnimationEngine__clear_strip, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_clear_strip), + be_str_weak(get_current_iteration_number), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040102, // 0000 GETMBR R1 R0 K2 - 0x8C040323, // 0001 GETMET R1 R1 K35 + ( &(const binstruction[11]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x8808011B, // 0001 GETMBR R2 R0 K27 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040307, // 0004 GETMET R1 R1 K7 - 0x7C040200, // 0005 CALL R1 1 - 0x80000000, // 0006 RET 0 + 0x24040307, // 0003 GT R1 R1 K7 + 0x78060003, // 0004 JMPF R1 #0009 + 0x8804011B, // 0005 GETMBR R1 R0 K27 + 0x5409FFFE, // 0006 LDINT R2 -1 + 0x94040202, // 0007 GETIDX R1 R1 R2 + 0x80040200, // 0008 RET 1 R1 + 0x4C040000, // 0009 LDNIL R1 + 0x80040200, // 000A RET 1 R1 }) ) ); @@ -16277,11 +11676,11 @@ be_local_closure(class_AnimationEngine__clear_strip, /* name */ /******************************************************************** -** Solidified function: interrupt_current +** Solidified function: is_active ********************************************************************/ -be_local_closure(class_AnimationEngine_interrupt_current, /* name */ +be_local_closure(class_AnimationEngine_is_active, /* name */ be_nested_proto( - 5, /* nstack */ + 2, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -16290,24 +11689,163 @@ be_local_closure(class_AnimationEngine_interrupt_current, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(interrupt_current), + be_str_weak(is_active), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080108, // 0001 GETMBR R2 R0 K8 + ( &(const binstruction[ 2]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_events +********************************************************************/ +be_local_closure(class_AnimationEngine__process_events, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_process_events), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x88080535, // 0001 GETMBR R2 R2 K53 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0003, // 0004 JMPF R2 #0009 + 0xB80A0000, // 0005 GETNGBL R2 K0 + 0x88080535, // 0006 GETMBR R2 R2 K53 + 0x8C080536, // 0007 GETMET R2 R2 K54 + 0x7C080200, // 0008 CALL R2 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_strip +********************************************************************/ +be_local_closure(class_AnimationEngine_get_strip, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(get_strip), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x8804011D, // 0000 GETMBR R1 R0 K29 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: size +********************************************************************/ +be_local_closure(class_AnimationEngine_size, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(size), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080106, // 0001 GETMBR R2 R0 K6 0x7C040200, // 0002 CALL R1 1 - 0xA8020006, // 0003 EXBLK 0 #000B - 0x5C080200, // 0004 MOVE R2 R1 - 0x7C080000, // 0005 CALL R2 0 - 0x880C0518, // 0006 GETMBR R3 R2 K24 - 0x780E0001, // 0007 JMPF R3 #000A - 0x8C0C050A, // 0008 GETMET R3 R2 K10 - 0x7C0C0200, // 0009 CALL R3 1 - 0x7001FFF8, // 000A JMP #0004 - 0x58040037, // 000B LDCONST R1 K55 - 0xAC040200, // 000C CATCH R1 1 0 - 0xB0080000, // 000D RAISE 2 R0 R0 - 0x80000000, // 000E RET 0 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resume_after +********************************************************************/ +be_local_closure(class_AnimationEngine_resume_after, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(resume_after), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C080137, // 0000 GETMET R2 R0 K55 + 0x7C080200, // 0001 CALL R2 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _output_to_strip +********************************************************************/ +be_local_closure(class_AnimationEngine__output_to_strip, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_output_to_strip), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x58040007, // 0000 LDCONST R1 K7 + 0x8808011A, // 0001 GETMBR R2 R0 K26 + 0x14080202, // 0002 LT R2 R1 R2 + 0x780A0009, // 0003 JMPF R2 #000E + 0x8808011D, // 0004 GETMBR R2 R0 K29 + 0x8C080538, // 0005 GETMET R2 R2 K56 + 0x5C100200, // 0006 MOVE R4 R1 + 0x88140120, // 0007 GETMBR R5 R0 K32 + 0x8C140B39, // 0008 GETMET R5 R5 K57 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x7C140400, // 000A CALL R5 2 + 0x7C080600, // 000B CALL R2 3 + 0x0004030A, // 000C ADD R1 R1 K10 + 0x7001FFF2, // 000D JMP #0001 + 0x8808011D, // 000E GETMBR R2 R0 K29 + 0x8C08052C, // 000F GETMET R2 R2 K44 + 0x7C080200, // 0010 CALL R2 1 + 0x80000000, // 0011 RET 0 }) ) ); @@ -16331,9 +11869,9 @@ be_local_closure(class_AnimationEngine_resume, /* name */ be_str_weak(resume), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88040118, // 0000 GETMBR R1 R0 K24 + 0x88040109, // 0000 GETMBR R1 R0 K9 0x74060001, // 0001 JMPT R1 #0004 - 0x8C040121, // 0002 GETMET R1 R0 K33 + 0x8C040117, // 0002 GETMET R1 R0 K23 0x7C040200, // 0003 CALL R1 1 0x80000000, // 0004 RET 0 }) @@ -16342,6 +11880,54 @@ be_local_closure(class_AnimationEngine_resume, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: remove_sequence_manager +********************************************************************/ +be_local_closure(class_AnimationEngine_remove_sequence_manager, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(remove_sequence_manager), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x5409FFFE, // 0000 LDINT R2 -1 + 0x580C0007, // 0001 LDCONST R3 K7 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x88140127, // 0003 GETMBR R5 R0 K39 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120007, // 0006 JMPF R4 #000F + 0x88100127, // 0007 GETMBR R4 R0 K39 + 0x94100803, // 0008 GETIDX R4 R4 R3 + 0x1C100801, // 0009 EQ R4 R4 R1 + 0x78120001, // 000A JMPF R4 #000D + 0x5C080600, // 000B MOVE R2 R3 + 0x70020001, // 000C JMP #000F + 0x000C070A, // 000D ADD R3 R3 K10 + 0x7001FFF2, // 000E JMP #0002 + 0x28100507, // 000F GE R4 R2 K7 + 0x78120005, // 0010 JMPF R4 #0017 + 0x88100127, // 0011 GETMBR R4 R0 K39 + 0x8C10090B, // 0012 GETMET R4 R4 K11 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x50100200, // 0015 LDBOOL R4 1 0 + 0x80040800, // 0016 RET 1 R4 + 0x50100000, // 0017 LDBOOL R4 0 0 + 0x80040800, // 0018 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: clear ********************************************************************/ @@ -16361,24 +11947,24 @@ be_local_closure(class_AnimationEngine_clear, /* name */ ( &(const binstruction[21]) { /* code */ 0x60040012, // 0000 GETGBL R1 G18 0x7C040000, // 0001 CALL R1 0 - 0x90021001, // 0002 SETMBR R0 K8 R1 - 0x58040000, // 0003 LDCONST R1 K0 + 0x90020C01, // 0002 SETMBR R0 K6 R1 + 0x58040007, // 0003 LDCONST R1 K7 0x6008000C, // 0004 GETGBL R2 G12 - 0x880C010C, // 0005 GETMBR R3 R0 K12 + 0x880C0127, // 0005 GETMBR R3 R0 K39 0x7C080200, // 0006 CALL R2 1 0x14080202, // 0007 LT R2 R1 R2 0x780A0005, // 0008 JMPF R2 #000F - 0x8808010C, // 0009 GETMBR R2 R0 K12 + 0x88080127, // 0009 GETMBR R2 R0 K39 0x94080401, // 000A GETIDX R2 R2 R1 - 0x8C08050A, // 000B GETMET R2 R2 K10 + 0x8C080512, // 000B GETMET R2 R2 K18 0x7C080200, // 000C CALL R2 1 - 0x00040306, // 000D ADD R1 R1 K6 + 0x0004030A, // 000D ADD R1 R1 K10 0x7001FFF4, // 000E JMP #0004 0x60080012, // 000F GETGBL R2 G18 0x7C080000, // 0010 CALL R2 0 - 0x90021802, // 0011 SETMBR R0 K12 R2 + 0x90024E02, // 0011 SETMBR R0 K39 R2 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90023202, // 0013 SETMBR R0 K25 R2 + 0x90021802, // 0013 SETMBR R0 K12 R2 0x80040000, // 0014 RET 1 R0 }) ) @@ -16387,12 +11973,12 @@ be_local_closure(class_AnimationEngine_clear, /* name */ /******************************************************************** -** Solidified function: interrupt_all +** Solidified function: remove_animation ********************************************************************/ -be_local_closure(class_AnimationEngine_interrupt_all, /* name */ +be_local_closure(class_AnimationEngine_remove_animation, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -16400,12 +11986,36 @@ be_local_closure(class_AnimationEngine_interrupt_all, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(interrupt_all), + be_str_weak(remove_animation), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040123, // 0000 GETMET R1 R0 K35 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 + ( &(const binstruction[27]) { /* code */ + 0x5409FFFE, // 0000 LDINT R2 -1 + 0x580C0007, // 0001 LDCONST R3 K7 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x88140106, // 0003 GETMBR R5 R0 K6 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120007, // 0006 JMPF R4 #000F + 0x88100106, // 0007 GETMBR R4 R0 K6 + 0x94100803, // 0008 GETIDX R4 R4 R3 + 0x1C100801, // 0009 EQ R4 R4 R1 + 0x78120001, // 000A JMPF R4 #000D + 0x5C080600, // 000B MOVE R2 R3 + 0x70020001, // 000C JMP #000F + 0x000C070A, // 000D ADD R3 R3 K10 + 0x7001FFF2, // 000E JMP #0002 + 0x28100507, // 000F GE R4 R2 K7 + 0x78120007, // 0010 JMPF R4 #0019 + 0x88100106, // 0011 GETMBR R4 R0 K6 + 0x8C10090B, // 0012 GETMET R4 R4 K11 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x50100200, // 0015 LDBOOL R4 1 0 + 0x90021804, // 0016 SETMBR R0 K12 R4 + 0x50100200, // 0017 LDBOOL R4 1 0 + 0x80040800, // 0018 RET 1 R4 + 0x50100000, // 0019 LDBOOL R4 0 0 + 0x80040800, // 001A RET 1 R4 }) ) ); @@ -16413,12 +12023,12 @@ be_local_closure(class_AnimationEngine_interrupt_all, /* name */ /******************************************************************** -** Solidified function: get_strip +** Solidified function: add ********************************************************************/ -be_local_closure(class_AnimationEngine_get_strip, /* name */ +be_local_closure(class_AnimationEngine_add, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -16426,11 +12036,41 @@ be_local_closure(class_AnimationEngine_get_strip, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(get_strip), + be_str_weak(add), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040102, // 0000 GETMBR R1 R0 K2 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[32]) { /* code */ + 0x6008000F, // 0000 GETGBL R2 G15 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0xB8120000, // 0002 GETNGBL R4 K0 + 0x88100901, // 0003 GETMBR R4 R4 K1 + 0x7C080400, // 0004 CALL R2 2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C08013A, // 0006 GETMET R2 R0 K58 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80040400, // 0009 RET 1 R2 + 0x70020013, // 000A JMP #001F + 0x6008000F, // 000B GETGBL R2 G15 + 0x5C0C0200, // 000C MOVE R3 R1 + 0xB8120000, // 000D GETNGBL R4 K0 + 0x88100900, // 000E GETMBR R4 R4 K0 + 0x7C080400, // 000F CALL R2 2 + 0x780A0004, // 0010 JMPF R2 #0016 + 0x8C08013B, // 0011 GETMET R2 R0 K59 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x70020008, // 0015 JMP #001F + 0xA40A7800, // 0016 IMPORT R2 K60 + 0x8C0C052F, // 0017 GETMET R3 R2 K47 + 0x5C140200, // 0018 MOVE R5 R1 + 0x7C0C0400, // 0019 CALL R3 2 + 0x60100018, // 001A GETGBL R4 G24 + 0x5814003D, // 001B LDCONST R5 K61 + 0x5C180600, // 001C MOVE R6 R3 + 0x7C100400, // 001D CALL R4 2 + 0xB0060A04, // 001E RAISE 1 K5 R4 + 0x80000000, // 001F RET 0 }) ) ); @@ -16438,41 +12078,9 @@ be_local_closure(class_AnimationEngine_get_strip, /* name */ /******************************************************************** -** Solidified function: tostring +** Solidified function: push_iteration_context ********************************************************************/ -be_local_closure(class_AnimationEngine_tostring, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080038, // 0001 LDCONST R2 K56 - 0x880C0118, // 0002 GETMBR R3 R0 K24 - 0x6010000C, // 0003 GETGBL R4 G12 - 0x88140108, // 0004 GETMBR R5 R0 K8 - 0x7C100200, // 0005 CALL R4 1 - 0x88140101, // 0006 GETMBR R5 R0 K1 - 0x7C040800, // 0007 CALL R1 4 - 0x80040200, // 0008 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _handle_strip_length_change -********************************************************************/ -be_local_closure(class_AnimationEngine__handle_strip_length_change, /* name */ +be_local_closure(class_AnimationEngine_push_iteration_context, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -16483,80 +12091,14 @@ be_local_closure(class_AnimationEngine__handle_strip_length_change, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_handle_strip_length_change), + be_str_weak(push_iteration_context), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x18080300, // 0000 LE R2 R1 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x90020201, // 0003 SETMBR R0 K1 R1 - 0x88080104, // 0004 GETMBR R2 R0 K4 - 0x8C080539, // 0005 GETMET R2 R2 K57 - 0x5C100200, // 0006 MOVE R4 R1 - 0x7C080400, // 0007 CALL R2 2 - 0x88080124, // 0008 GETMBR R2 R0 K36 - 0x8C080539, // 0009 GETMET R2 R2 K57 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x90023202, // 000D SETMBR R0 K25 R2 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_AnimationEngine_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0xB006753B, // 0003 RAISE 1 K58 K59 - 0x90020401, // 0004 SETMBR R0 K2 R1 - 0x8C08031C, // 0005 GETMET R2 R1 K28 - 0x7C080200, // 0006 CALL R2 1 - 0x90020202, // 0007 SETMBR R0 K1 R2 - 0x60080012, // 0008 GETGBL R2 G18 - 0x7C080000, // 0009 CALL R2 0 - 0x90021002, // 000A SETMBR R0 K8 R2 - 0x60080012, // 000B GETGBL R2 G18 - 0x7C080000, // 000C CALL R2 0 - 0x90021802, // 000D SETMBR R0 K12 R2 - 0xB80A1A00, // 000E GETNGBL R2 K13 - 0x8C080504, // 000F GETMET R2 R2 K4 - 0x88100101, // 0010 GETMBR R4 R0 K1 - 0x7C080400, // 0011 CALL R2 2 - 0x90020802, // 0012 SETMBR R0 K4 R2 - 0xB80A1A00, // 0013 GETNGBL R2 K13 - 0x8C080504, // 0014 GETMET R2 R2 K4 - 0x88100101, // 0015 GETMBR R4 R0 K1 - 0x7C080400, // 0016 CALL R2 2 - 0x90024802, // 0017 SETMBR R0 K36 R2 - 0x50080000, // 0018 LDBOOL R2 0 0 - 0x90023002, // 0019 SETMBR R0 K24 R2 - 0x90025700, // 001A SETMBR R0 K43 K0 - 0x90024500, // 001B SETMBR R0 K34 K0 - 0x4C080000, // 001C LDNIL R2 - 0x90025802, // 001D SETMBR R0 K44 R2 - 0x50080000, // 001E LDBOOL R2 0 0 - 0x90023202, // 001F SETMBR R0 K25 R2 - 0x80000000, // 0020 RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x8808011B, // 0000 GETMBR R2 R0 K27 + 0x8C080515, // 0001 GETMET R2 R2 K21 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 }) ) ); @@ -16580,9 +12122,9 @@ be_local_closure(class_AnimationEngine_get_strip_length, /* name */ be_str_weak(get_strip_length), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C040131, // 0000 GETMET R1 R0 K49 + 0x8C040124, // 0000 GETMET R1 R0 K36 0x7C040200, // 0001 CALL R1 1 - 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x8804011A, // 0002 GETMBR R1 R0 K26 0x80040200, // 0003 RET 1 R1 }) ) @@ -16590,601 +12132,94 @@ be_local_closure(class_AnimationEngine_get_strip_length, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: is_active -********************************************************************/ -be_local_closure(class_AnimationEngine_is_active, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(is_active), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040118, // 0000 GETMBR R1 R0 K24 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_animations -********************************************************************/ -be_local_closure(class_AnimationEngine_get_animations, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(get_animations), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: AnimationEngine ********************************************************************/ be_local_class(AnimationEngine, - 11, + 12, NULL, - be_nested_map(42, + be_nested_map(47, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_output_to_strip, 34), be_const_closure(class_AnimationEngine__output_to_strip_closure) }, - { be_const_key_weak(interrupt_animation, -1), be_const_closure(class_AnimationEngine_interrupt_animation_closure) }, - { be_const_key_weak(check_strip_length, -1), be_const_closure(class_AnimationEngine_check_strip_length_closure) }, - { be_const_key_weak(remove_sequence_manager, 32), be_const_closure(class_AnimationEngine_remove_sequence_manager_closure) }, - { be_const_key_weak(add, 9), be_const_closure(class_AnimationEngine_add_closure) }, - { be_const_key_weak(_process_events, -1), be_const_closure(class_AnimationEngine__process_events_closure) }, - { be_const_key_weak(size, -1), be_const_closure(class_AnimationEngine_size_closure) }, - { be_const_key_weak(resume_after, 2), be_const_closure(class_AnimationEngine_resume_after_closure) }, - { be_const_key_weak(_add_animation, -1), be_const_closure(class_AnimationEngine__add_animation_closure) }, - { be_const_key_weak(remove_animation, -1), be_const_closure(class_AnimationEngine_remove_animation_closure) }, - { be_const_key_weak(_update_and_render, 22), be_const_closure(class_AnimationEngine__update_and_render_closure) }, - { be_const_key_weak(is_active, -1), be_const_closure(class_AnimationEngine_is_active_closure) }, - { be_const_key_weak(_render_animations, -1), be_const_closure(class_AnimationEngine__render_animations_closure) }, - { be_const_key_weak(cleanup, -1), be_const_closure(class_AnimationEngine_cleanup_closure) }, - { be_const_key_weak(run, 24), be_const_closure(class_AnimationEngine_run_closure) }, - { be_const_key_weak(remove, -1), be_const_closure(class_AnimationEngine_remove_closure) }, - { be_const_key_weak(on_tick, -1), be_const_closure(class_AnimationEngine_on_tick_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(class_AnimationEngine_stop_closure) }, + { be_const_key_weak(remove, 1), be_const_closure(class_AnimationEngine_remove_closure) }, + { be_const_key_weak(_update_and_render, -1), be_const_closure(class_AnimationEngine__update_and_render_closure) }, { be_const_key_weak(is_running, -1), be_const_var(6) }, - { be_const_key_weak(fast_loop_closure, -1), be_const_var(9) }, - { be_const_key_weak(get_strip_length, 30), be_const_closure(class_AnimationEngine_get_strip_length_closure) }, + { be_const_key_weak(stop, 19), be_const_closure(class_AnimationEngine_stop_closure) }, + { be_const_key_weak(sequence_managers, 22), be_const_var(3) }, + { be_const_key_weak(interrupt_current, 17), be_const_closure(class_AnimationEngine_interrupt_current_closure) }, { be_const_key_weak(time_ms, -1), be_const_var(8) }, - { be_const_key_weak(interrupt_current, 8), be_const_closure(class_AnimationEngine_interrupt_current_closure) }, - { be_const_key_weak(sequence_managers, -1), be_const_var(3) }, - { be_const_key_weak(resume, -1), be_const_closure(class_AnimationEngine_resume_closure) }, - { be_const_key_weak(_add_sequence_manager, -1), be_const_closure(class_AnimationEngine__add_sequence_manager_closure) }, - { be_const_key_weak(clear, -1), be_const_closure(class_AnimationEngine_clear_closure) }, - { be_const_key_weak(interrupt_all, -1), be_const_closure(class_AnimationEngine_interrupt_all_closure) }, - { be_const_key_weak(_sort_animations, 27), be_const_closure(class_AnimationEngine__sort_animations_closure) }, - { be_const_key_weak(width, -1), be_const_var(1) }, - { be_const_key_weak(last_update, 23), be_const_var(7) }, + { be_const_key_weak(_add_animation, -1), be_const_closure(class_AnimationEngine__add_animation_closure) }, { be_const_key_weak(tostring, -1), be_const_closure(class_AnimationEngine_tostring_closure) }, - { be_const_key_weak(strip, 25), be_const_var(0) }, - { be_const_key_weak(init, 21), be_const_closure(class_AnimationEngine_init_closure) }, + { be_const_key_weak(frame_buffer, -1), be_const_var(4) }, + { be_const_key_weak(push_iteration_context, -1), be_const_closure(class_AnimationEngine_push_iteration_context_closure) }, { be_const_key_weak(animations, -1), be_const_var(2) }, - { be_const_key_weak(frame_buffer, 20), be_const_var(4) }, - { be_const_key_weak(get_strip, 19), be_const_closure(class_AnimationEngine_get_strip_closure) }, - { be_const_key_weak(_handle_strip_length_change, 18), be_const_closure(class_AnimationEngine__handle_strip_length_change_closure) }, - { be_const_key_weak(_clear_strip, 11), be_const_closure(class_AnimationEngine__clear_strip_closure) }, - { be_const_key_weak(render_needed, -1), be_const_var(10) }, + { be_const_key_weak(_handle_strip_length_change, -1), be_const_closure(class_AnimationEngine__handle_strip_length_change_closure) }, + { be_const_key_weak(strip, -1), be_const_var(0) }, + { be_const_key_weak(add, -1), be_const_closure(class_AnimationEngine_add_closure) }, { be_const_key_weak(temp_buffer, -1), be_const_var(5) }, - { be_const_key_weak(get_animations, -1), be_const_closure(class_AnimationEngine_get_animations_closure) }, + { be_const_key_weak(cleanup, 27), be_const_closure(class_AnimationEngine_cleanup_closure) }, + { be_const_key_weak(pop_iteration_context, -1), be_const_closure(class_AnimationEngine_pop_iteration_context_closure) }, + { be_const_key_weak(_sort_animations, 42), be_const_closure(class_AnimationEngine__sort_animations_closure) }, + { be_const_key_weak(_clear_strip, -1), be_const_closure(class_AnimationEngine__clear_strip_closure) }, + { be_const_key_weak(fast_loop_closure, 35), be_const_var(9) }, + { be_const_key_weak(init, 24), be_const_closure(class_AnimationEngine_init_closure) }, + { be_const_key_weak(_render_animations, 44), be_const_closure(class_AnimationEngine__render_animations_closure) }, + { be_const_key_weak(remove_sequence_manager, -1), be_const_closure(class_AnimationEngine_remove_sequence_manager_closure) }, + { be_const_key_weak(run, -1), be_const_closure(class_AnimationEngine_run_closure) }, + { be_const_key_weak(update_current_iteration, -1), be_const_closure(class_AnimationEngine_update_current_iteration_closure) }, + { be_const_key_weak(get_current_iteration_number, -1), be_const_closure(class_AnimationEngine_get_current_iteration_number_closure) }, + { be_const_key_weak(render_needed, -1), be_const_var(10) }, + { be_const_key_weak(iteration_stack, -1), be_const_var(11) }, + { be_const_key_weak(is_active, 30), be_const_closure(class_AnimationEngine_is_active_closure) }, + { be_const_key_weak(_process_events, -1), be_const_closure(class_AnimationEngine__process_events_closure) }, + { be_const_key_weak(get_strip, -1), be_const_closure(class_AnimationEngine_get_strip_closure) }, + { be_const_key_weak(size, 9), be_const_closure(class_AnimationEngine_size_closure) }, + { be_const_key_weak(resume_after, -1), be_const_closure(class_AnimationEngine_resume_after_closure) }, + { be_const_key_weak(_output_to_strip, -1), be_const_closure(class_AnimationEngine__output_to_strip_closure) }, + { be_const_key_weak(last_update, -1), be_const_var(7) }, + { be_const_key_weak(resume, -1), be_const_closure(class_AnimationEngine_resume_closure) }, + { be_const_key_weak(get_animations, 23), be_const_closure(class_AnimationEngine_get_animations_closure) }, + { be_const_key_weak(clear, -1), be_const_closure(class_AnimationEngine_clear_closure) }, + { be_const_key_weak(interrupt_animation, 20), be_const_closure(class_AnimationEngine_interrupt_animation_closure) }, + { be_const_key_weak(width, 14), be_const_var(1) }, + { be_const_key_weak(remove_animation, -1), be_const_closure(class_AnimationEngine_remove_animation_closure) }, + { be_const_key_weak(interrupt_all, -1), be_const_closure(class_AnimationEngine_interrupt_all_closure) }, + { be_const_key_weak(on_tick, 10), be_const_closure(class_AnimationEngine_on_tick_closure) }, + { be_const_key_weak(check_strip_length, -1), be_const_closure(class_AnimationEngine_check_strip_length_closure) }, + { be_const_key_weak(_add_sequence_manager, 2), be_const_closure(class_AnimationEngine__add_sequence_manager_closure) }, + { be_const_key_weak(get_strip_length, -1), be_const_closure(class_AnimationEngine_get_strip_length_closure) }, })), be_str_weak(AnimationEngine) ); -// compact class 'TwinkleAnimation' ktab size: 39, total: 67 (saved 224 bytes) -static const bvalue be_ktab_class_TwinkleAnimation[39] = { - /* K0 */ be_nested_str_weak(on_param_changed), - /* K1 */ be_nested_str_weak(twinkle_speed), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(set_param), - /* K4 */ be_nested_str_weak(fade_speed), - /* K5 */ be_nested_str_weak(density), - /* K6 */ be_nested_str_weak(min_brightness), - /* K7 */ be_nested_str_weak(max_brightness), - /* K8 */ be_nested_str_weak(color), - /* K9 */ be_nested_str_weak(engine), - /* K10 */ be_nested_str_weak(get_strip_length), - /* K11 */ be_nested_str_weak(twinkle_states), - /* K12 */ be_nested_str_weak(_initialize_arrays), - /* K13 */ be_const_int(0), - /* K14 */ be_nested_str_weak(current_colors), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(scale_uint), - /* K17 */ be_const_int(16777215), - /* K18 */ be_nested_str_weak(_random_range), - /* K19 */ be_nested_str_weak(get_param), - /* K20 */ be_nested_str_weak(animation), - /* K21 */ be_nested_str_weak(is_value_provider), - /* K22 */ be_nested_str_weak(0x_X2508x), - /* K23 */ be_nested_str_weak(TwinkleAnimation_X28color_X3D_X25s_X2C_X20density_X3D_X25s_X2C_X20twinkle_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K24 */ be_nested_str_weak(priority), - /* K25 */ be_nested_str_weak(is_running), - /* K26 */ be_nested_str_weak(init), - /* K27 */ be_nested_str_weak(last_update), - /* K28 */ be_nested_str_weak(random_seed), - /* K29 */ be_nested_str_weak(time_ms), - /* K30 */ be_nested_str_weak(_fix_time_ms), - /* K31 */ be_nested_str_weak(width), - /* K32 */ be_nested_str_weak(set_pixel_color), - /* K33 */ be_nested_str_weak(update), - /* K34 */ be_nested_str_weak(_update_twinkle_simulation), - /* K35 */ be_nested_str_weak(resize), - /* K36 */ be_const_int(1103515245), - /* K37 */ be_const_int(2147483647), - /* K38 */ be_nested_str_weak(_random), -}; - - -extern const bclass be_class_TwinkleAnimation; /******************************************************************** -** Solidified function: on_param_changed +** Solidified function: smooth ********************************************************************/ -be_local_closure(class_TwinkleAnimation_on_param_changed, /* name */ +be_local_closure(smooth, /* name */ be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0301, // 0007 EQ R3 R1 K1 - 0x780E0010, // 0008 JMPF R3 #001A - 0x540E0031, // 0009 LDINT R3 50 - 0x280C0403, // 000A GE R3 R2 R3 - 0x780E000D, // 000B JMPF R3 #001A - 0x540E03E7, // 000C LDINT R3 1000 - 0x0C0C0602, // 000D DIV R3 R3 R2 - 0x14100702, // 000E LT R4 R3 K2 - 0x78120001, // 000F JMPF R4 #0012 - 0x580C0002, // 0010 LDCONST R3 K2 - 0x70020003, // 0011 JMP #0016 - 0x54120013, // 0012 LDINT R4 20 - 0x24100604, // 0013 GT R4 R3 R4 - 0x78120000, // 0014 JMPF R4 #0016 - 0x540E0013, // 0015 LDINT R3 20 - 0x8C100103, // 0016 GETMET R4 R0 K3 - 0x58180001, // 0017 LDCONST R6 K1 - 0x5C1C0600, // 0018 MOVE R7 R3 - 0x7C100600, // 0019 CALL R4 3 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_twinkle_simulation -********************************************************************/ -be_local_closure(class_TwinkleAnimation__update_twinkle_simulation, /* name */ - be_nested_proto( - 18, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(_update_twinkle_simulation), - &be_const_str_solidified, - ( &(const binstruction[94]) { /* code */ - 0x88080104, // 0000 GETMBR R2 R0 K4 - 0x880C0105, // 0001 GETMBR R3 R0 K5 - 0x88100106, // 0002 GETMBR R4 R0 K6 - 0x88140107, // 0003 GETMBR R5 R0 K7 - 0x88180108, // 0004 GETMBR R6 R0 K8 - 0x881C0109, // 0005 GETMBR R7 R0 K9 - 0x8C1C0F0A, // 0006 GETMET R7 R7 K10 - 0x7C1C0200, // 0007 CALL R7 1 - 0x6020000C, // 0008 GETGBL R8 G12 - 0x8824010B, // 0009 GETMBR R9 R0 K11 - 0x7C200200, // 000A CALL R8 1 - 0x20201007, // 000B NE R8 R8 R7 - 0x78220001, // 000C JMPF R8 #000F - 0x8C20010C, // 000D GETMET R8 R0 K12 - 0x7C200200, // 000E CALL R8 1 - 0x5820000D, // 000F LDCONST R8 K13 - 0x14241007, // 0010 LT R9 R8 R7 - 0x7826001F, // 0011 JMPF R9 #0032 - 0x8824010E, // 0012 GETMBR R9 R0 K14 - 0x94241208, // 0013 GETIDX R9 R9 R8 - 0x542A0017, // 0014 LDINT R10 24 - 0x3C28120A, // 0015 SHR R10 R9 R10 - 0x542E00FE, // 0016 LDINT R11 255 - 0x2C28140B, // 0017 AND R10 R10 R11 - 0x242C150D, // 0018 GT R11 R10 K13 - 0x782E0015, // 0019 JMPF R11 #0030 - 0xB82E1E00, // 001A GETNGBL R11 K15 - 0x8C2C1710, // 001B GETMET R11 R11 K16 - 0x5C340400, // 001C MOVE R13 R2 - 0x5838000D, // 001D LDCONST R14 K13 - 0x543E00FE, // 001E LDINT R15 255 - 0x58400002, // 001F LDCONST R16 K2 - 0x54460013, // 0020 LDINT R17 20 - 0x7C2C0C00, // 0021 CALL R11 6 - 0x1830140B, // 0022 LE R12 R10 R11 - 0x78320004, // 0023 JMPF R12 #0029 - 0x8830010B, // 0024 GETMBR R12 R0 K11 - 0x9830110D, // 0025 SETIDX R12 R8 K13 - 0x8830010E, // 0026 GETMBR R12 R0 K14 - 0x9830110D, // 0027 SETIDX R12 R8 K13 - 0x70020006, // 0028 JMP #0030 - 0x0430140B, // 0029 SUB R12 R10 R11 - 0x2C341311, // 002A AND R13 R9 K17 - 0x8838010E, // 002B GETMBR R14 R0 K14 - 0x543E0017, // 002C LDINT R15 24 - 0x383C180F, // 002D SHL R15 R12 R15 - 0x303C1E0D, // 002E OR R15 R15 R13 - 0x9838100F, // 002F SETIDX R14 R8 R15 - 0x00201102, // 0030 ADD R8 R8 K2 - 0x7001FFDD, // 0031 JMP #0010 - 0x5824000D, // 0032 LDCONST R9 K13 - 0x14281207, // 0033 LT R10 R9 R7 - 0x782A0027, // 0034 JMPF R10 #005D - 0x8828010B, // 0035 GETMBR R10 R0 K11 - 0x94281409, // 0036 GETIDX R10 R10 R9 - 0x1C28150D, // 0037 EQ R10 R10 K13 - 0x782A0021, // 0038 JMPF R10 #005B - 0x8C280112, // 0039 GETMET R10 R0 K18 - 0x543200FE, // 003A LDINT R12 255 - 0x7C280400, // 003B CALL R10 2 - 0x14281403, // 003C LT R10 R10 R3 - 0x782A001C, // 003D JMPF R10 #005B - 0x8C280112, // 003E GETMET R10 R0 K18 - 0x04300A04, // 003F SUB R12 R5 R4 - 0x00301902, // 0040 ADD R12 R12 K2 - 0x7C280400, // 0041 CALL R10 2 - 0x0028080A, // 0042 ADD R10 R4 R10 - 0x5C2C0C00, // 0043 MOVE R11 R6 - 0x5432000F, // 0044 LDINT R12 16 - 0x3C30160C, // 0045 SHR R12 R11 R12 - 0x543600FE, // 0046 LDINT R13 255 - 0x2C30180D, // 0047 AND R12 R12 R13 - 0x54360007, // 0048 LDINT R13 8 - 0x3C34160D, // 0049 SHR R13 R11 R13 - 0x543A00FE, // 004A LDINT R14 255 - 0x2C341A0E, // 004B AND R13 R13 R14 - 0x543A00FE, // 004C LDINT R14 255 - 0x2C38160E, // 004D AND R14 R11 R14 - 0x883C010B, // 004E GETMBR R15 R0 K11 - 0x983C1302, // 004F SETIDX R15 R9 K2 - 0x883C010E, // 0050 GETMBR R15 R0 K14 - 0x54420017, // 0051 LDINT R16 24 - 0x38401410, // 0052 SHL R16 R10 R16 - 0x5446000F, // 0053 LDINT R17 16 - 0x38441811, // 0054 SHL R17 R12 R17 - 0x30402011, // 0055 OR R16 R16 R17 - 0x54460007, // 0056 LDINT R17 8 - 0x38441A11, // 0057 SHL R17 R13 R17 - 0x30402011, // 0058 OR R16 R16 R17 - 0x3040200E, // 0059 OR R16 R16 R14 - 0x983C1210, // 005A SETIDX R15 R9 R16 - 0x00241302, // 005B ADD R9 R9 K2 - 0x7001FFD5, // 005C JMP #0033 - 0x80000000, // 005D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_TwinkleAnimation_tostring, /* name */ - be_nested_proto( - 10, /* nstack */ + 4, /* nstack */ 1, /* argc */ - 10, /* varg */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x8C080113, // 0001 GETMET R2 R0 K19 - 0x58100008, // 0002 LDCONST R4 K8 - 0x7C080400, // 0003 CALL R2 2 - 0xB80E2800, // 0004 GETNGBL R3 K20 - 0x8C0C0715, // 0005 GETMET R3 R3 K21 - 0x5C140400, // 0006 MOVE R5 R2 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0004, // 0008 JMPF R3 #000E - 0x600C0008, // 0009 GETGBL R3 G8 - 0x5C100400, // 000A MOVE R4 R2 - 0x7C0C0200, // 000B CALL R3 1 - 0x5C040600, // 000C MOVE R1 R3 - 0x70020004, // 000D JMP #0013 - 0x600C0018, // 000E GETGBL R3 G24 - 0x58100016, // 000F LDCONST R4 K22 - 0x88140108, // 0010 GETMBR R5 R0 K8 - 0x7C0C0400, // 0011 CALL R3 2 - 0x5C040600, // 0012 MOVE R1 R3 - 0x600C0018, // 0013 GETGBL R3 G24 - 0x58100017, // 0014 LDCONST R4 K23 - 0x5C140200, // 0015 MOVE R5 R1 - 0x88180105, // 0016 GETMBR R6 R0 K5 - 0x881C0101, // 0017 GETMBR R7 R0 K1 - 0x88200118, // 0018 GETMBR R8 R0 K24 - 0x88240119, // 0019 GETMBR R9 R0 K25 - 0x7C0C0C00, // 001A CALL R3 6 - 0x80040600, // 001B RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_TwinkleAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08051A, // 0003 GETMET R2 R2 K26 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x90021602, // 0008 SETMBR R0 K11 R2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90021C02, // 000B SETMBR R0 K14 R2 - 0x9002370D, // 000C SETMBR R0 K27 K13 - 0x88080109, // 000D GETMBR R2 R0 K9 - 0x8808051D, // 000E GETMBR R2 R2 K29 - 0x540EFFFF, // 000F LDINT R3 65536 - 0x10080403, // 0010 MOD R2 R2 R3 - 0x90023802, // 0011 SETMBR R0 K28 R2 - 0x8C08010C, // 0012 GETMET R2 R0 K12 - 0x7C080200, // 0013 CALL R2 1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_TwinkleAnimation_render, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x880C0119, // 0000 GETMBR R3 R0 K25 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x8C0C011E, // 0007 GETMET R3 R0 K30 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x5C080600, // 000A MOVE R2 R3 - 0x880C0109, // 000B GETMBR R3 R0 K9 - 0x8C0C070A, // 000C GETMET R3 R3 K10 - 0x7C0C0200, // 000D CALL R3 1 - 0x6010000C, // 000E GETGBL R4 G12 - 0x8814010B, // 000F GETMBR R5 R0 K11 - 0x7C100200, // 0010 CALL R4 1 - 0x20100803, // 0011 NE R4 R4 R3 - 0x78120001, // 0012 JMPF R4 #0015 - 0x8C10010C, // 0013 GETMET R4 R0 K12 - 0x7C100200, // 0014 CALL R4 1 - 0x50100000, // 0015 LDBOOL R4 0 0 - 0x5814000D, // 0016 LDCONST R5 K13 - 0x14180A03, // 0017 LT R6 R5 R3 - 0x781A0011, // 0018 JMPF R6 #002B - 0x8818031F, // 0019 GETMBR R6 R1 K31 - 0x14180A06, // 001A LT R6 R5 R6 - 0x781A000C, // 001B JMPF R6 #0029 - 0x8818010E, // 001C GETMBR R6 R0 K14 - 0x94180C05, // 001D GETIDX R6 R6 R5 - 0x541E0017, // 001E LDINT R7 24 - 0x3C1C0C07, // 001F SHR R7 R6 R7 - 0x542200FE, // 0020 LDINT R8 255 - 0x2C1C0E08, // 0021 AND R7 R7 R8 - 0x241C0F0D, // 0022 GT R7 R7 K13 - 0x781E0004, // 0023 JMPF R7 #0029 - 0x8C1C0320, // 0024 GETMET R7 R1 K32 - 0x5C240A00, // 0025 MOVE R9 R5 - 0x5C280C00, // 0026 MOVE R10 R6 - 0x7C1C0600, // 0027 CALL R7 3 - 0x50100200, // 0028 LDBOOL R4 1 0 - 0x00140B02, // 0029 ADD R5 R5 K2 - 0x7001FFEB, // 002A JMP #0017 - 0x80040800, // 002B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_TwinkleAnimation_update, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080521, // 0003 GETMET R2 R2 K33 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x8C08011E, // 0009 GETMET R2 R0 K30 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x5C040400, // 000C MOVE R1 R2 - 0x88080101, // 000D GETMBR R2 R0 K1 - 0x540E03E7, // 000E LDINT R3 1000 - 0x0C0C0602, // 000F DIV R3 R3 R2 - 0x8810011B, // 0010 GETMBR R4 R0 K27 - 0x04100204, // 0011 SUB R4 R1 R4 - 0x28100803, // 0012 GE R4 R4 R3 - 0x78120003, // 0013 JMPF R4 #0018 - 0x90023601, // 0014 SETMBR R0 K27 R1 - 0x8C100122, // 0015 GETMET R4 R0 K34 - 0x5C180200, // 0016 MOVE R6 R1 - 0x7C100400, // 0017 CALL R4 2 - 0x50100200, // 0018 LDBOOL R4 1 0 - 0x80040800, // 0019 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_arrays -********************************************************************/ -be_local_closure(class_TwinkleAnimation__initialize_arrays, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(_initialize_arrays), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C04030A, // 0001 GETMET R1 R1 K10 - 0x7C040200, // 0002 CALL R1 1 - 0x8808010B, // 0003 GETMBR R2 R0 K11 - 0x8C080523, // 0004 GETMET R2 R2 K35 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x8808010E, // 0007 GETMBR R2 R0 K14 - 0x8C080523, // 0008 GETMET R2 R2 K35 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x5808000D, // 000B LDCONST R2 K13 - 0x140C0401, // 000C LT R3 R2 R1 - 0x780E0005, // 000D JMPF R3 #0014 - 0x880C010B, // 000E GETMBR R3 R0 K11 - 0x980C050D, // 000F SETIDX R3 R2 K13 - 0x880C010E, // 0010 GETMBR R3 R0 K14 - 0x980C050D, // 0011 SETIDX R3 R2 K13 - 0x00080502, // 0012 ADD R2 R2 K2 - 0x7001FFF7, // 0013 JMP #000C - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random -********************************************************************/ -be_local_closure(class_TwinkleAnimation__random, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(_random), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_nested_str_weak(COSINE), + }), + be_str_weak(smooth), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8804011C, // 0000 GETMBR R1 R0 K28 - 0x08040324, // 0001 MUL R1 R1 K36 - 0x540A3038, // 0002 LDINT R2 12345 - 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040325, // 0004 AND R1 R1 K37 - 0x90023801, // 0005 SETMBR R0 K28 R1 - 0x8804011C, // 0006 GETMBR R1 R0 K28 + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 0x80040200, // 0007 RET 1 R1 }) ) @@ -17192,106 +12227,6 @@ be_local_closure(class_TwinkleAnimation__random, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: _random_range -********************************************************************/ -be_local_closure(class_TwinkleAnimation__random_range, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_TwinkleAnimation, /* shared constants */ - be_str_weak(_random_range), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x1808030D, // 0000 LE R2 R1 K13 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80061A00, // 0002 RET 1 K13 - 0x8C080126, // 0003 GETMET R2 R0 K38 - 0x7C080200, // 0004 CALL R2 1 - 0x10080401, // 0005 MOD R2 R2 R1 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: TwinkleAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(TwinkleAnimation, - 4, - &be_class_Animation, - be_nested_map(14, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_random_range, -1), be_const_closure(class_TwinkleAnimation__random_range_closure) }, - { be_const_key_weak(twinkle_states, -1), be_const_var(0) }, - { be_const_key_weak(init, -1), be_const_closure(class_TwinkleAnimation_init_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_TwinkleAnimation_tostring_closure) }, - { be_const_key_weak(random_seed, -1), be_const_var(3) }, - { be_const_key_weak(PARAMS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(fade_speed, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(180) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(twinkle_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(6) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(5000) }, - })) ) } )) }, - { be_const_key_weak(density, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(max_brightness, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(min_brightness, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(32) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(_random, 9), be_const_closure(class_TwinkleAnimation__random_closure) }, - { be_const_key_weak(last_update, -1), be_const_var(2) }, - { be_const_key_weak(update, -1), be_const_closure(class_TwinkleAnimation_update_closure) }, - { be_const_key_weak(_initialize_arrays, 10), be_const_closure(class_TwinkleAnimation__initialize_arrays_closure) }, - { be_const_key_weak(render, 2), be_const_closure(class_TwinkleAnimation_render_closure) }, - { be_const_key_weak(current_colors, -1), be_const_var(1) }, - { be_const_key_weak(_update_twinkle_simulation, 1), be_const_closure(class_TwinkleAnimation__update_twinkle_simulation_closure) }, - { be_const_key_weak(on_param_changed, 0), be_const_closure(class_TwinkleAnimation_on_param_changed_closure) }, - })), - be_str_weak(TwinkleAnimation) -); - /******************************************************************** ** Solidified function: cosine_osc ********************************************************************/ @@ -18098,9 +13033,9 @@ be_local_class(WaveAnimation, ); /******************************************************************** -** Solidified function: get_user_function +** Solidified function: elastic ********************************************************************/ -be_local_closure(get_user_function, /* name */ +be_local_closure(elastic, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -18110,86 +13045,23 @@ be_local_closure(get_user_function, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(_user_functions), - /* K2 */ be_nested_str_weak(find), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_nested_str_weak(ELASTIC), }), - be_str_weak(get_user_function), + be_str_weak(elastic), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C040302, // 0002 GETMET R1 R1 K2 - 0x5C0C0000, // 0003 MOVE R3 R0 - 0x7C040400, // 0004 CALL R1 2 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: noise_rainbow -********************************************************************/ -be_local_closure(noise_rainbow, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(noise_animation), - /* K2 */ be_nested_str_weak(rich_palette), - /* K3 */ be_nested_str_weak(palette), - /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K5 */ be_nested_str_weak(cycle_period), - /* K6 */ be_nested_str_weak(transition_type), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(brightness), - /* K9 */ be_nested_str_weak(range_min), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(range_max), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_nested_str_weak(scale), - /* K14 */ be_nested_str_weak(speed), - /* K15 */ be_nested_str_weak(octaves), - }), - be_str_weak(noise_rainbow), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ + ( &(const binstruction[ 8]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0xB80E0000, // 0008 GETNGBL R3 K0 - 0x880C0704, // 0009 GETMBR R3 R3 K4 - 0x900A0603, // 000A SETMBR R2 K3 R3 - 0x540E1387, // 000B LDINT R3 5000 - 0x900A0A03, // 000C SETMBR R2 K5 R3 - 0x900A0D07, // 000D SETMBR R2 K6 K7 - 0x540E00FE, // 000E LDINT R3 255 - 0x900A1003, // 000F SETMBR R2 K8 R3 - 0x900A130A, // 0010 SETMBR R2 K9 K10 - 0x540E00FE, // 0011 LDINT R3 255 - 0x900A1603, // 0012 SETMBR R2 K11 R3 - 0x90061802, // 0013 SETMBR R1 K12 R2 - 0x540E0031, // 0014 LDINT R3 50 - 0x90061A03, // 0015 SETMBR R1 K13 R3 - 0x540E001D, // 0016 LDINT R3 30 - 0x90061C03, // 0017 SETMBR R1 K14 R3 - 0x90061F07, // 0018 SETMBR R1 K15 K7 - 0x80040200, // 0019 RET 1 R1 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 }) ) ); @@ -19144,6 +14016,2049 @@ be_local_closure(animation_version_string, /* name */ ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: animation_resolve +********************************************************************/ +be_local_closure(animation_resolve, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(is_value_provider), + /* K2 */ be_nested_str_weak(produce_value), + /* K3 */ be_nested_str_weak(parameterized_object), + /* K4 */ be_nested_str_weak(value_error), + /* K5 */ be_nested_str_weak(Parameter_X20name_X20cannot_X20be_X20nil_X20when_X20resolving_X20object_X20parameter), + /* K6 */ be_nested_str_weak(get_param_value), + }), + be_str_weak(animation_resolve), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140000, // 0002 MOVE R5 R0 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0005, // 0004 JMPF R3 #000B + 0x8C0C0102, // 0005 GETMET R3 R0 K2 + 0x5C140200, // 0006 MOVE R5 R1 + 0x5C180400, // 0007 MOVE R6 R2 + 0x7C0C0600, // 0008 CALL R3 3 + 0x80040600, // 0009 RET 1 R3 + 0x70020012, // 000A JMP #001E + 0x4C0C0000, // 000B LDNIL R3 + 0x200C0003, // 000C NE R3 R0 R3 + 0x780E000E, // 000D JMPF R3 #001D + 0x600C000F, // 000E GETGBL R3 G15 + 0x5C100000, // 000F MOVE R4 R0 + 0xB8160000, // 0010 GETNGBL R5 K0 + 0x88140B03, // 0011 GETMBR R5 R5 K3 + 0x7C0C0400, // 0012 CALL R3 2 + 0x780E0008, // 0013 JMPF R3 #001D + 0x4C0C0000, // 0014 LDNIL R3 + 0x1C0C0203, // 0015 EQ R3 R1 R3 + 0x780E0000, // 0016 JMPF R3 #0018 + 0xB0060905, // 0017 RAISE 1 K4 K5 + 0x8C0C0106, // 0018 GETMET R3 R0 K6 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C0C0400, // 001A CALL R3 2 + 0x80040600, // 001B RET 1 R3 + 0x70020000, // 001C JMP #001E + 0x80040000, // 001D RET 1 R0 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: noise_single_color +********************************************************************/ +be_local_closure(noise_single_color, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(noise_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(scale), + /* K4 */ be_nested_str_weak(speed), + /* K5 */ be_nested_str_weak(octaves), + /* K6 */ be_const_int(1), + }), + be_str_weak(noise_single_color), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x5409FFFE, // 0004 LDINT R2 -1 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A0031, // 0006 LDINT R2 50 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x540A001D, // 0008 LDINT R2 30 + 0x90060802, // 0009 SETMBR R1 K4 R2 + 0x90060B06, // 000A SETMBR R1 K5 K6 + 0x80040200, // 000B RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +extern const bclass be_class_PaletteMeterAnimation; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_PaletteMeterAnimation_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_nested_str_weak(palette_meter), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020302, // 0006 SETMBR R0 K1 K2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_value_buffer +********************************************************************/ +be_local_closure(class_PaletteMeterAnimation__update_value_buffer, /* name */ + be_nested_proto( + 12, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(value_func), + /* K1 */ be_nested_str_weak(engine), + /* K2 */ be_nested_str_weak(get_strip_length), + /* K3 */ be_nested_str_weak(value_buffer), + /* K4 */ be_nested_str_weak(resize), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(scale_uint), + /* K7 */ be_const_int(0), + /* K8 */ be_const_int(1), + }), + be_str_weak(_update_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C0C0403, // 0002 EQ R3 R2 R3 + 0x780E0000, // 0003 JMPF R3 #0005 + 0x80000600, // 0004 RET 0 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x8C0C0702, // 0006 GETMET R3 R3 K2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x6010000C, // 0008 GETGBL R4 G12 + 0x88140103, // 0009 GETMBR R5 R0 K3 + 0x7C100200, // 000A CALL R4 1 + 0x20100803, // 000B NE R4 R4 R3 + 0x78120003, // 000C JMPF R4 #0011 + 0x88100103, // 000D GETMBR R4 R0 K3 + 0x8C100904, // 000E GETMET R4 R4 K4 + 0x5C180600, // 000F MOVE R6 R3 + 0x7C100400, // 0010 CALL R4 2 + 0x5C100400, // 0011 MOVE R4 R2 + 0x5C140200, // 0012 MOVE R5 R1 + 0x5C180000, // 0013 MOVE R6 R0 + 0x7C100400, // 0014 CALL R4 2 + 0xB8160A00, // 0015 GETNGBL R5 K5 + 0x8C140B06, // 0016 GETMET R5 R5 K6 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x58200007, // 0018 LDCONST R8 K7 + 0x54260063, // 0019 LDINT R9 100 + 0x58280007, // 001A LDCONST R10 K7 + 0x5C2C0600, // 001B MOVE R11 R3 + 0x7C140C00, // 001C CALL R5 6 + 0x58180007, // 001D LDCONST R6 K7 + 0x141C0C03, // 001E LT R7 R6 R3 + 0x781E0008, // 001F JMPF R7 #0029 + 0x881C0103, // 0020 GETMBR R7 R0 K3 + 0x14200C05, // 0021 LT R8 R6 R5 + 0x78220001, // 0022 JMPF R8 #0025 + 0x542200FE, // 0023 LDINT R8 255 + 0x70020000, // 0024 JMP #0026 + 0x58200007, // 0025 LDCONST R8 K7 + 0x981C0C08, // 0026 SETIDX R7 R6 R8 + 0x00180D08, // 0027 ADD R6 R6 K8 + 0x7001FFF4, // 0028 JMP #001E + 0x80000000, // 0029 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: PaletteMeterAnimation +********************************************************************/ +extern const bclass be_class_PalettePatternAnimation; +be_local_class(PaletteMeterAnimation, + 0, + &be_class_PalettePatternAnimation, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(PARAMS, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(value_func, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(function) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, -1), be_const_closure(class_PaletteMeterAnimation_init_closure) }, + { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteMeterAnimation__update_value_buffer_closure) }, + })), + be_str_weak(PaletteMeterAnimation) +); + +/******************************************************************** +** Solidified function: get_registered_events +********************************************************************/ +be_local_closure(get_registered_events, /* name */ + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(event_manager), + /* K2 */ be_nested_str_weak(get_registered_events), + }), + be_str_weak(get_registered_events), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0xB8020000, // 0000 GETNGBL R0 K0 + 0x88000101, // 0001 GETMBR R0 R0 K1 + 0x8C000102, // 0002 GETMET R0 R0 K2 + 0x7C000200, // 0003 CALL R0 1 + 0x80040000, // 0004 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: ramp +********************************************************************/ +be_local_closure(ramp, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_nested_str_weak(SAWTOOTH), + }), + be_str_weak(ramp), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: wave_custom +********************************************************************/ +be_local_closure(wave_custom, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(wave_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(wave_type), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(frequency), + /* K6 */ be_nested_str_weak(wave_speed), + }), + be_str_weak(wave_custom), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x5409FEFF, // 0004 LDINT R2 -256 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x90060704, // 0006 SETMBR R1 K3 K4 + 0x540A0027, // 0007 LDINT R2 40 + 0x90060A02, // 0008 SETMBR R1 K5 R2 + 0x540A001D, // 0009 LDINT R2 30 + 0x90060C02, // 000A SETMBR R1 K6 R2 + 0x80040200, // 000B RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: pulsating_animation +********************************************************************/ +be_local_closure(pulsating_animation, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(breathe_animation), + /* K2 */ be_nested_str_weak(curve_factor), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(period), + }), + be_str_weak(pulsating_animation), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x90060503, // 0004 SETMBR R1 K2 K3 + 0x540A03E7, // 0005 LDINT R2 1000 + 0x90060802, // 0006 SETMBR R1 K4 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: solid +********************************************************************/ +be_local_closure(solid, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_nested_str_weak(solid), + }), + be_str_weak(solid), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040300, // 0001 GETMET R1 R1 K0 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x90060302, // 0004 SETMBR R1 K1 K2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'PalettePatternAnimation' ktab size: 22, total: 42 (saved 160 bytes) +static const bvalue be_ktab_class_PalettePatternAnimation[22] = { + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(pattern_func), + /* K2 */ be_nested_str_weak(color_source), + /* K3 */ be_nested_str_weak(_initialize_value_buffer), + /* K4 */ be_nested_str_weak(is_running), + /* K5 */ be_nested_str_weak(_fix_time_ms), + /* K6 */ be_nested_str_weak(get_param), + /* K7 */ be_nested_str_weak(get_color_for_value), + /* K8 */ be_nested_str_weak(start_time), + /* K9 */ be_nested_str_weak(engine), + /* K10 */ be_nested_str_weak(get_strip_length), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(width), + /* K13 */ be_nested_str_weak(value_buffer), + /* K14 */ be_nested_str_weak(set_pixel_color), + /* K15 */ be_const_int(1), + /* K16 */ be_nested_str_weak(resize), + /* K17 */ be_nested_str_weak(init), + /* K18 */ be_nested_str_weak(PalettePatternAnimation_X28strip_length_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K19 */ be_nested_str_weak(priority), + /* K20 */ be_nested_str_weak(update), + /* K21 */ be_nested_str_weak(_update_value_buffer), +}; + + +extern const bclass be_class_PalettePatternAnimation; + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_on_param_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_PalettePatternAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x740E0001, // 0008 JMPT R3 #000B + 0x1C0C0302, // 0009 EQ R3 R1 K2 + 0x780E0001, // 000A JMPF R3 #000D + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_render, /* name */ + be_nested_proto( + 13, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_PalettePatternAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x8C0C0105, // 0007 GETMET R3 R0 K5 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x8C0C0106, // 000B GETMET R3 R0 K6 + 0x58140002, // 000C LDCONST R5 K2 + 0x7C0C0400, // 000D CALL R3 2 + 0x4C100000, // 000E LDNIL R4 + 0x1C100604, // 000F EQ R4 R3 R4 + 0x78120001, // 0010 JMPF R4 #0013 + 0x50100000, // 0011 LDBOOL R4 0 0 + 0x80040800, // 0012 RET 1 R4 + 0x88100707, // 0013 GETMBR R4 R3 K7 + 0x4C140000, // 0014 LDNIL R5 + 0x1C100805, // 0015 EQ R4 R4 R5 + 0x78120001, // 0016 JMPF R4 #0019 + 0x50100000, // 0017 LDBOOL R4 0 0 + 0x80040800, // 0018 RET 1 R4 + 0x88100108, // 0019 GETMBR R4 R0 K8 + 0x04100404, // 001A SUB R4 R2 R4 + 0x88140109, // 001B GETMBR R5 R0 K9 + 0x8C140B0A, // 001C GETMET R5 R5 K10 + 0x7C140200, // 001D CALL R5 1 + 0x5818000B, // 001E LDCONST R6 K11 + 0x141C0C05, // 001F LT R7 R6 R5 + 0x781E000E, // 0020 JMPF R7 #0030 + 0x881C030C, // 0021 GETMBR R7 R1 K12 + 0x141C0C07, // 0022 LT R7 R6 R7 + 0x781E000B, // 0023 JMPF R7 #0030 + 0x881C010D, // 0024 GETMBR R7 R0 K13 + 0x941C0E06, // 0025 GETIDX R7 R7 R6 + 0x8C200707, // 0026 GETMET R8 R3 K7 + 0x5C280E00, // 0027 MOVE R10 R7 + 0x5C2C0800, // 0028 MOVE R11 R4 + 0x7C200600, // 0029 CALL R8 3 + 0x8C24030E, // 002A GETMET R9 R1 K14 + 0x5C2C0C00, // 002B MOVE R11 R6 + 0x5C301000, // 002C MOVE R12 R8 + 0x7C240600, // 002D CALL R9 3 + 0x00180D0F, // 002E ADD R6 R6 K15 + 0x7001FFEE, // 002F JMP #001F + 0x501C0200, // 0030 LDBOOL R7 1 0 + 0x80040E00, // 0031 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_value_buffer +********************************************************************/ +be_local_closure(class_PalettePatternAnimation__update_value_buffer, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_PalettePatternAnimation, /* shared constants */ + be_str_weak(_update_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C0C0403, // 0002 EQ R3 R2 R3 + 0x780E0000, // 0003 JMPF R3 #0005 + 0x80000600, // 0004 RET 0 + 0x880C0109, // 0005 GETMBR R3 R0 K9 + 0x8C0C070A, // 0006 GETMET R3 R3 K10 + 0x7C0C0200, // 0007 CALL R3 1 + 0x6010000C, // 0008 GETGBL R4 G12 + 0x8814010D, // 0009 GETMBR R5 R0 K13 + 0x7C100200, // 000A CALL R4 1 + 0x20100803, // 000B NE R4 R4 R3 + 0x78120003, // 000C JMPF R4 #0011 + 0x8810010D, // 000D GETMBR R4 R0 K13 + 0x8C100910, // 000E GETMET R4 R4 K16 + 0x5C180600, // 000F MOVE R6 R3 + 0x7C100400, // 0010 CALL R4 2 + 0x5810000B, // 0011 LDCONST R4 K11 + 0x14140803, // 0012 LT R5 R4 R3 + 0x78160012, // 0013 JMPF R5 #0027 + 0x5C140400, // 0014 MOVE R5 R2 + 0x5C180800, // 0015 MOVE R6 R4 + 0x5C1C0200, // 0016 MOVE R7 R1 + 0x5C200000, // 0017 MOVE R8 R0 + 0x7C140600, // 0018 CALL R5 3 + 0x60180009, // 0019 GETGBL R6 G9 + 0x5C1C0A00, // 001A MOVE R7 R5 + 0x7C180200, // 001B CALL R6 1 + 0x141C0D0B, // 001C LT R7 R6 K11 + 0x781E0000, // 001D JMPF R7 #001F + 0x5818000B, // 001E LDCONST R6 K11 + 0x541E00FE, // 001F LDINT R7 255 + 0x241C0C07, // 0020 GT R7 R6 R7 + 0x781E0000, // 0021 JMPF R7 #0023 + 0x541A00FE, // 0022 LDINT R6 255 + 0x881C010D, // 0023 GETMBR R7 R0 K13 + 0x981C0806, // 0024 SETIDX R7 R4 R6 + 0x0010090F, // 0025 ADD R4 R4 K15 + 0x7001FFEA, // 0026 JMP #0012 + 0x80000000, // 0027 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_value_buffer +********************************************************************/ +be_local_closure(class_PalettePatternAnimation__initialize_value_buffer, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_PalettePatternAnimation, /* shared constants */ + be_str_weak(_initialize_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0x8808010D, // 0003 GETMBR R2 R0 K13 + 0x8C080510, // 0004 GETMET R2 R2 K16 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x5808000B, // 0007 LDCONST R2 K11 + 0x140C0401, // 0008 LT R3 R2 R1 + 0x780E0003, // 0009 JMPF R3 #000E + 0x880C010D, // 000A GETMBR R3 R0 K13 + 0x980C050B, // 000B SETIDX R3 R2 K11 + 0x0008050F, // 000C ADD R2 R2 K15 + 0x7001FFF9, // 000D JMP #0008 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_PalettePatternAnimation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080511, // 0003 GETMET R2 R2 K17 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080015, // 0006 GETGBL R2 G21 + 0x7C080000, // 0007 CALL R2 0 + 0x90021A02, // 0008 SETMBR R0 K13 R2 + 0x8C080103, // 0009 GETMET R2 R0 K3 + 0x7C080200, // 000A CALL R2 1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_tostring, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_PalettePatternAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0012, // 0004 LDCONST R3 K18 + 0x5C100200, // 0005 MOVE R4 R1 + 0x88140113, // 0006 GETMBR R5 R0 K19 + 0x88180104, // 0007 GETMBR R6 R0 K4 + 0x7C080800, // 0008 CALL R2 4 + 0x80040400, // 0009 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_update, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_PalettePatternAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080514, // 0003 GETMET R2 R2 K20 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x8C080105, // 0009 GETMET R2 R0 K5 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x5C040400, // 000C MOVE R1 R2 + 0x88080108, // 000D GETMBR R2 R0 K8 + 0x04080202, // 000E SUB R2 R1 R2 + 0x8C0C0115, // 000F GETMET R3 R0 K21 + 0x5C140400, // 0010 MOVE R5 R2 + 0x7C0C0400, // 0011 CALL R3 2 + 0x500C0200, // 0012 LDBOOL R3 1 0 + 0x80040600, // 0013 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: PalettePatternAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(PalettePatternAnimation, + 1, + &be_class_Animation, + be_nested_map(9, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(update, 1), be_const_closure(class_PalettePatternAnimation_update_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_PalettePatternAnimation_tostring_closure) }, + { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PalettePatternAnimation__update_value_buffer_closure) }, + { be_const_key_weak(_initialize_value_buffer, -1), be_const_closure(class_PalettePatternAnimation__initialize_value_buffer_closure) }, + { be_const_key_weak(on_param_changed, 8), be_const_closure(class_PalettePatternAnimation_on_param_changed_closure) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(color_source, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, + })) ) } )) }, + { be_const_key_weak(pattern_func, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(function) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, 5), be_const_closure(class_PalettePatternAnimation_init_closure) }, + { be_const_key_weak(render, 0), be_const_closure(class_PalettePatternAnimation_render_closure) }, + { be_const_key_weak(value_buffer, -1), be_const_var(0) }, + })), + be_str_weak(PalettePatternAnimation) +); +// compact class 'StripLengthProvider' ktab size: 5, total: 7 (saved 16 bytes) +static const bvalue be_ktab_class_StripLengthProvider[5] = { + /* K0 */ be_nested_str_weak(engine), + /* K1 */ be_nested_str_weak(width), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(StripLengthProvider_X28length_X3D_X25s_X29), + /* K4 */ be_nested_str_weak(unknown), +}; + + +extern const bclass be_class_StripLengthProvider; + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_StripLengthProvider_produce_value, /* name */ + be_nested_proto( + 4, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_StripLengthProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x880C0701, // 0003 GETMBR R3 R3 K1 + 0x70020000, // 0004 JMP #0006 + 0x580C0002, // 0005 LDCONST R3 K2 + 0x80040600, // 0006 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_StripLengthProvider_tostring, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_StripLengthProvider, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080003, // 0001 LDCONST R2 K3 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x880C0100, // 0004 GETMBR R3 R0 K0 + 0x880C0701, // 0005 GETMBR R3 R3 K1 + 0x70020000, // 0006 JMP #0008 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C040400, // 0008 CALL R1 2 + 0x80040200, // 0009 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: StripLengthProvider +********************************************************************/ +extern const bclass be_class_ValueProvider; +be_local_class(StripLengthProvider, + 0, + &be_class_ValueProvider, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(tostring, -1), be_const_closure(class_StripLengthProvider_tostring_closure) }, + { be_const_key_weak(produce_value, 0), be_const_closure(class_StripLengthProvider_produce_value_closure) }, + })), + be_str_weak(StripLengthProvider) +); + +extern const bclass be_class_PaletteWaveAnimation; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_PaletteWaveAnimation_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_nested_str_weak(palette_wave), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020302, // 0006 SETMBR R0 K1 K2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_value_buffer +********************************************************************/ +be_local_closure(class_PaletteWaveAnimation__update_value_buffer, /* name */ + be_nested_proto( + 18, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(wave_period), + /* K1 */ be_nested_str_weak(wave_length), + /* K2 */ be_nested_str_weak(engine), + /* K3 */ be_nested_str_weak(get_strip_length), + /* K4 */ be_nested_str_weak(value_buffer), + /* K5 */ be_nested_str_weak(resize), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(scale_uint), + /* K8 */ be_const_int(0), + /* K9 */ be_const_real_hex(0x447A0000), + /* K10 */ be_nested_str_weak(sine_int), + /* K11 */ be_nested_str_weak(scale_int), + /* K12 */ be_const_int(1), + }), + be_str_weak(_update_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x8C100903, // 0003 GETMET R4 R4 K3 + 0x7C100200, // 0004 CALL R4 1 + 0x6014000C, // 0005 GETGBL R5 G12 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x7C140200, // 0007 CALL R5 1 + 0x20140A04, // 0008 NE R5 R5 R4 + 0x78160003, // 0009 JMPF R5 #000E + 0x88140104, // 000A GETMBR R5 R0 K4 + 0x8C140B05, // 000B GETMET R5 R5 K5 + 0x5C1C0800, // 000C MOVE R7 R4 + 0x7C140400, // 000D CALL R5 2 + 0xB8160C00, // 000E GETNGBL R5 K6 + 0x8C140B07, // 000F GETMET R5 R5 K7 + 0x101C0202, // 0010 MOD R7 R1 R2 + 0x58200008, // 0011 LDCONST R8 K8 + 0x5C240400, // 0012 MOVE R9 R2 + 0x58280008, // 0013 LDCONST R10 K8 + 0x542E03E7, // 0014 LDINT R11 1000 + 0x7C140C00, // 0015 CALL R5 6 + 0x0C140B09, // 0016 DIV R5 R5 K9 + 0x60180009, // 0017 GETGBL R6 G9 + 0x081C0A03, // 0018 MUL R7 R5 R3 + 0x7C180200, // 0019 CALL R6 1 + 0x581C0008, // 001A LDCONST R7 K8 + 0x14200E04, // 001B LT R8 R7 R4 + 0x78220019, // 001C JMPF R8 #0037 + 0x00200E06, // 001D ADD R8 R7 R6 + 0x10201003, // 001E MOD R8 R8 R3 + 0xB8260C00, // 001F GETNGBL R9 K6 + 0x8C241307, // 0020 GETMET R9 R9 K7 + 0x5C2C1000, // 0021 MOVE R11 R8 + 0x58300008, // 0022 LDCONST R12 K8 + 0x5C340600, // 0023 MOVE R13 R3 + 0x58380008, // 0024 LDCONST R14 K8 + 0x543E7FFE, // 0025 LDINT R15 32767 + 0x7C240C00, // 0026 CALL R9 6 + 0xB82A0C00, // 0027 GETNGBL R10 K6 + 0x8C28150A, // 0028 GETMET R10 R10 K10 + 0x5C301200, // 0029 MOVE R12 R9 + 0x7C280400, // 002A CALL R10 2 + 0xB82E0C00, // 002B GETNGBL R11 K6 + 0x8C2C170B, // 002C GETMET R11 R11 K11 + 0x5C341400, // 002D MOVE R13 R10 + 0x5439EFFF, // 002E LDINT R14 -4096 + 0x543E0FFF, // 002F LDINT R15 4096 + 0x58400008, // 0030 LDCONST R16 K8 + 0x544600FE, // 0031 LDINT R17 255 + 0x7C2C0C00, // 0032 CALL R11 6 + 0x88300104, // 0033 GETMBR R12 R0 K4 + 0x98300E0B, // 0034 SETIDX R12 R7 R11 + 0x001C0F0C, // 0035 ADD R7 R7 K12 + 0x7001FFE3, // 0036 JMP #001B + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: PaletteWaveAnimation +********************************************************************/ +extern const bclass be_class_PalettePatternAnimation; +be_local_class(PaletteWaveAnimation, + 0, + &be_class_PalettePatternAnimation, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(PARAMS, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(wave_period, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(5000) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(wave_length, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(10) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, -1), be_const_closure(class_PaletteWaveAnimation_init_closure) }, + { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteWaveAnimation__update_value_buffer_closure) }, + })), + be_str_weak(PaletteWaveAnimation) +); + +/******************************************************************** +** Solidified function: create_closure_value +********************************************************************/ +be_local_closure(create_closure_value, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(closure_value), + /* K2 */ be_nested_str_weak(closure), + }), + be_str_weak(create_closure_value), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C080400, // 0003 CALL R2 2 + 0x900A0401, // 0004 SETMBR R2 K2 R1 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + +// compact class 'CrenelPositionAnimation' ktab size: 20, total: 26 (saved 48 bytes) +static const bvalue be_ktab_class_CrenelPositionAnimation[20] = { + /* K0 */ be_nested_str_weak(is_running), + /* K1 */ be_nested_str_weak(_fix_time_ms), + /* K2 */ be_nested_str_weak(width), + /* K3 */ be_nested_str_weak(back_color), + /* K4 */ be_nested_str_weak(pos), + /* K5 */ be_nested_str_weak(pulse_size), + /* K6 */ be_nested_str_weak(low_size), + /* K7 */ be_nested_str_weak(nb_pulse), + /* K8 */ be_nested_str_weak(color), + /* K9 */ be_const_int(-16777216), + /* K10 */ be_nested_str_weak(fill_pixels), + /* K11 */ be_const_int(0), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(set_pixel_color), + /* K14 */ be_nested_str_weak(get_param), + /* K15 */ be_nested_str_weak(animation), + /* K16 */ be_nested_str_weak(is_value_provider), + /* K17 */ be_nested_str_weak(0x_X2508x), + /* K18 */ be_nested_str_weak(CrenelPositionAnimation_X28color_X3D_X25s_X2C_X20pos_X3D_X25s_X2C_X20pulse_size_X3D_X25s_X2C_X20low_size_X3D_X25s_X2C_X20nb_pulse_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K19 */ be_nested_str_weak(priority), +}; + + +extern const bclass be_class_CrenelPositionAnimation; + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_CrenelPositionAnimation_render, /* name */ + be_nested_proto( + 16, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_CrenelPositionAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[75]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x8C0C0101, // 0007 GETMET R3 R0 K1 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0302, // 000B GETMBR R3 R1 K2 + 0x88100103, // 000C GETMBR R4 R0 K3 + 0x88140104, // 000D GETMBR R5 R0 K4 + 0x88180105, // 000E GETMBR R6 R0 K5 + 0x881C0106, // 000F GETMBR R7 R0 K6 + 0x88200107, // 0010 GETMBR R8 R0 K7 + 0x88240108, // 0011 GETMBR R9 R0 K8 + 0x60280009, // 0012 GETGBL R10 G9 + 0x002C0C07, // 0013 ADD R11 R6 R7 + 0x7C280200, // 0014 CALL R10 1 + 0x202C0909, // 0015 NE R11 R4 K9 + 0x782E0002, // 0016 JMPF R11 #001A + 0x8C2C030A, // 0017 GETMET R11 R1 K10 + 0x5C340800, // 0018 MOVE R13 R4 + 0x7C2C0400, // 0019 CALL R11 2 + 0x182C150B, // 001A LE R11 R10 K11 + 0x782E0000, // 001B JMPF R11 #001D + 0x5828000C, // 001C LDCONST R10 K12 + 0x1C2C110B, // 001D EQ R11 R8 K11 + 0x782E0001, // 001E JMPF R11 #0021 + 0x502C0200, // 001F LDBOOL R11 1 0 + 0x80041600, // 0020 RET 1 R11 + 0x142C110B, // 0021 LT R11 R8 K11 + 0x782E0006, // 0022 JMPF R11 #002A + 0x002C0A06, // 0023 ADD R11 R5 R6 + 0x042C170C, // 0024 SUB R11 R11 K12 + 0x102C160A, // 0025 MOD R11 R11 R10 + 0x042C1606, // 0026 SUB R11 R11 R6 + 0x002C170C, // 0027 ADD R11 R11 K12 + 0x5C141600, // 0028 MOVE R5 R11 + 0x70020007, // 0029 JMP #0032 + 0x442C1400, // 002A NEG R11 R10 + 0x142C0A0B, // 002B LT R11 R5 R11 + 0x782E0004, // 002C JMPF R11 #0032 + 0x202C110B, // 002D NE R11 R8 K11 + 0x782E0002, // 002E JMPF R11 #0032 + 0x00140A0A, // 002F ADD R5 R5 R10 + 0x0420110C, // 0030 SUB R8 R8 K12 + 0x7001FFF7, // 0031 JMP #002A + 0x142C0A03, // 0032 LT R11 R5 R3 + 0x782E0014, // 0033 JMPF R11 #0049 + 0x202C110B, // 0034 NE R11 R8 K11 + 0x782E0012, // 0035 JMPF R11 #0049 + 0x582C000B, // 0036 LDCONST R11 K11 + 0x14300B0B, // 0037 LT R12 R5 K11 + 0x78320001, // 0038 JMPF R12 #003B + 0x44300A00, // 0039 NEG R12 R5 + 0x5C2C1800, // 003A MOVE R11 R12 + 0x14301606, // 003B LT R12 R11 R6 + 0x78320008, // 003C JMPF R12 #0046 + 0x00300A0B, // 003D ADD R12 R5 R11 + 0x14301803, // 003E LT R12 R12 R3 + 0x78320005, // 003F JMPF R12 #0046 + 0x8C30030D, // 0040 GETMET R12 R1 K13 + 0x00380A0B, // 0041 ADD R14 R5 R11 + 0x5C3C1200, // 0042 MOVE R15 R9 + 0x7C300600, // 0043 CALL R12 3 + 0x002C170C, // 0044 ADD R11 R11 K12 + 0x7001FFF4, // 0045 JMP #003B + 0x00140A0A, // 0046 ADD R5 R5 R10 + 0x0420110C, // 0047 SUB R8 R8 K12 + 0x7001FFE8, // 0048 JMP #0032 + 0x502C0200, // 0049 LDBOOL R11 1 0 + 0x80041600, // 004A RET 1 R11 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_CrenelPositionAnimation_tostring, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_CrenelPositionAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x8C08010E, // 0001 GETMET R2 R0 K14 + 0x58100008, // 0002 LDCONST R4 K8 + 0x7C080400, // 0003 CALL R2 2 + 0xB80E1E00, // 0004 GETNGBL R3 K15 + 0x8C0C0710, // 0005 GETMET R3 R3 K16 + 0x5C140400, // 0006 MOVE R5 R2 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0004, // 0008 JMPF R3 #000E + 0x600C0008, // 0009 GETGBL R3 G8 + 0x5C100400, // 000A MOVE R4 R2 + 0x7C0C0200, // 000B CALL R3 1 + 0x5C040600, // 000C MOVE R1 R3 + 0x70020004, // 000D JMP #0013 + 0x600C0018, // 000E GETGBL R3 G24 + 0x58100011, // 000F LDCONST R4 K17 + 0x88140108, // 0010 GETMBR R5 R0 K8 + 0x7C0C0400, // 0011 CALL R3 2 + 0x5C040600, // 0012 MOVE R1 R3 + 0x600C0018, // 0013 GETGBL R3 G24 + 0x58100012, // 0014 LDCONST R4 K18 + 0x5C140200, // 0015 MOVE R5 R1 + 0x88180104, // 0016 GETMBR R6 R0 K4 + 0x881C0105, // 0017 GETMBR R7 R0 K5 + 0x88200106, // 0018 GETMBR R8 R0 K6 + 0x88240107, // 0019 GETMBR R9 R0 K7 + 0x88280113, // 001A GETMBR R10 R0 K19 + 0x882C0100, // 001B GETMBR R11 R0 K0 + 0x7C0C1000, // 001C CALL R3 8 + 0x80040600, // 001D RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: CrenelPositionAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(CrenelPositionAnimation, + 0, + &be_class_Animation, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(nb_pulse, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(low_size, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(3) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(pos, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(pulse_size, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(1) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(back_color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(-16777216) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(render, 2), be_const_closure(class_CrenelPositionAnimation_render_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_CrenelPositionAnimation_tostring_closure) }, + })), + be_str_weak(CrenelPositionAnimation) +); +// compact class 'TwinkleAnimation' ktab size: 43, total: 74 (saved 248 bytes) +static const bvalue be_ktab_class_TwinkleAnimation[43] = { + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(twinkle_speed), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(set_param), + /* K4 */ be_nested_str_weak(fade_speed), + /* K5 */ be_nested_str_weak(density), + /* K6 */ be_nested_str_weak(min_brightness), + /* K7 */ be_nested_str_weak(max_brightness), + /* K8 */ be_nested_str_weak(color), + /* K9 */ be_nested_str_weak(engine), + /* K10 */ be_nested_str_weak(get_strip_length), + /* K11 */ be_nested_str_weak(twinkle_states), + /* K12 */ be_nested_str_weak(current_colors), + /* K13 */ be_nested_str_weak(size), + /* K14 */ be_nested_str_weak(_initialize_arrays), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(get), + /* K17 */ be_nested_str_weak(tasmota), + /* K18 */ be_nested_str_weak(scale_uint), + /* K19 */ be_nested_str_weak(set), + /* K20 */ be_const_int(16777215), + /* K21 */ be_nested_str_weak(_random_range), + /* K22 */ be_nested_str_weak(get_param), + /* K23 */ be_nested_str_weak(animation), + /* K24 */ be_nested_str_weak(is_value_provider), + /* K25 */ be_nested_str_weak(0x_X2508x), + /* K26 */ be_nested_str_weak(TwinkleAnimation_X28color_X3D_X25s_X2C_X20density_X3D_X25s_X2C_X20twinkle_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K27 */ be_nested_str_weak(priority), + /* K28 */ be_nested_str_weak(is_running), + /* K29 */ be_nested_str_weak(init), + /* K30 */ be_nested_str_weak(last_update), + /* K31 */ be_nested_str_weak(random_seed), + /* K32 */ be_nested_str_weak(time_ms), + /* K33 */ be_nested_str_weak(_fix_time_ms), + /* K34 */ be_nested_str_weak(width), + /* K35 */ be_nested_str_weak(set_pixel_color), + /* K36 */ be_nested_str_weak(update), + /* K37 */ be_nested_str_weak(_update_twinkle_simulation), + /* K38 */ be_nested_str_weak(resize), + /* K39 */ be_nested_str_weak(clear), + /* K40 */ be_const_int(1103515245), + /* K41 */ be_const_int(2147483647), + /* K42 */ be_nested_str_weak(_random), +}; + + +extern const bclass be_class_TwinkleAnimation; + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_TwinkleAnimation_on_param_changed, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x780E0010, // 0008 JMPF R3 #001A + 0x540E0031, // 0009 LDINT R3 50 + 0x280C0403, // 000A GE R3 R2 R3 + 0x780E000D, // 000B JMPF R3 #001A + 0x540E03E7, // 000C LDINT R3 1000 + 0x0C0C0602, // 000D DIV R3 R3 R2 + 0x14100702, // 000E LT R4 R3 K2 + 0x78120001, // 000F JMPF R4 #0012 + 0x580C0002, // 0010 LDCONST R3 K2 + 0x70020003, // 0011 JMP #0016 + 0x54120013, // 0012 LDINT R4 20 + 0x24100604, // 0013 GT R4 R3 R4 + 0x78120000, // 0014 JMPF R4 #0016 + 0x540E0013, // 0015 LDINT R3 20 + 0x8C100103, // 0016 GETMET R4 R0 K3 + 0x58180001, // 0017 LDCONST R6 K1 + 0x5C1C0600, // 0018 MOVE R7 R3 + 0x7C100600, // 0019 CALL R4 3 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_twinkle_simulation +********************************************************************/ +be_local_closure(class_TwinkleAnimation__update_twinkle_simulation, /* name */ + be_nested_proto( + 20, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(_update_twinkle_simulation), + &be_const_str_solidified, + ( &(const binstruction[118]) { /* code */ + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x880C0105, // 0001 GETMBR R3 R0 K5 + 0x88100106, // 0002 GETMBR R4 R0 K6 + 0x88140107, // 0003 GETMBR R5 R0 K7 + 0x88180108, // 0004 GETMBR R6 R0 K8 + 0x881C0109, // 0005 GETMBR R7 R0 K9 + 0x8C1C0F0A, // 0006 GETMET R7 R7 K10 + 0x7C1C0200, // 0007 CALL R7 1 + 0x6020000C, // 0008 GETGBL R8 G12 + 0x8824010B, // 0009 GETMBR R9 R0 K11 + 0x7C200200, // 000A CALL R8 1 + 0x20201007, // 000B NE R8 R8 R7 + 0x74220006, // 000C JMPT R8 #0014 + 0x8820010C, // 000D GETMBR R8 R0 K12 + 0x8C20110D, // 000E GETMET R8 R8 K13 + 0x7C200200, // 000F CALL R8 1 + 0x54260003, // 0010 LDINT R9 4 + 0x08240E09, // 0011 MUL R9 R7 R9 + 0x20201009, // 0012 NE R8 R8 R9 + 0x78220001, // 0013 JMPF R8 #0016 + 0x8C20010E, // 0014 GETMET R8 R0 K14 + 0x7C200200, // 0015 CALL R8 1 + 0x5820000F, // 0016 LDCONST R8 K15 + 0x14241007, // 0017 LT R9 R8 R7 + 0x7826002C, // 0018 JMPF R9 #0046 + 0x8824010C, // 0019 GETMBR R9 R0 K12 + 0x8C241310, // 001A GETMET R9 R9 K16 + 0x542E0003, // 001B LDINT R11 4 + 0x082C100B, // 001C MUL R11 R8 R11 + 0x5431FFFB, // 001D LDINT R12 -4 + 0x7C240600, // 001E CALL R9 3 + 0x542A0017, // 001F LDINT R10 24 + 0x3C28120A, // 0020 SHR R10 R9 R10 + 0x542E00FE, // 0021 LDINT R11 255 + 0x2C28140B, // 0022 AND R10 R10 R11 + 0x242C150F, // 0023 GT R11 R10 K15 + 0x782E001E, // 0024 JMPF R11 #0044 + 0xB82E2200, // 0025 GETNGBL R11 K17 + 0x8C2C1712, // 0026 GETMET R11 R11 K18 + 0x5C340400, // 0027 MOVE R13 R2 + 0x5838000F, // 0028 LDCONST R14 K15 + 0x543E00FE, // 0029 LDINT R15 255 + 0x58400002, // 002A LDCONST R16 K2 + 0x54460013, // 002B LDINT R17 20 + 0x7C2C0C00, // 002C CALL R11 6 + 0x1830140B, // 002D LE R12 R10 R11 + 0x78320009, // 002E JMPF R12 #0039 + 0x8830010B, // 002F GETMBR R12 R0 K11 + 0x9830110F, // 0030 SETIDX R12 R8 K15 + 0x8830010C, // 0031 GETMBR R12 R0 K12 + 0x8C301913, // 0032 GETMET R12 R12 K19 + 0x543A0003, // 0033 LDINT R14 4 + 0x0838100E, // 0034 MUL R14 R8 R14 + 0x583C000F, // 0035 LDCONST R15 K15 + 0x5441FFFB, // 0036 LDINT R16 -4 + 0x7C300800, // 0037 CALL R12 4 + 0x7002000A, // 0038 JMP #0044 + 0x0430140B, // 0039 SUB R12 R10 R11 + 0x2C341314, // 003A AND R13 R9 K20 + 0x8838010C, // 003B GETMBR R14 R0 K12 + 0x8C381D13, // 003C GETMET R14 R14 K19 + 0x54420003, // 003D LDINT R16 4 + 0x08401010, // 003E MUL R16 R8 R16 + 0x54460017, // 003F LDINT R17 24 + 0x38441811, // 0040 SHL R17 R12 R17 + 0x3044220D, // 0041 OR R17 R17 R13 + 0x5449FFFB, // 0042 LDINT R18 -4 + 0x7C380800, // 0043 CALL R14 4 + 0x00201102, // 0044 ADD R8 R8 K2 + 0x7001FFD0, // 0045 JMP #0017 + 0x5824000F, // 0046 LDCONST R9 K15 + 0x14281207, // 0047 LT R10 R9 R7 + 0x782A002B, // 0048 JMPF R10 #0075 + 0x8828010B, // 0049 GETMBR R10 R0 K11 + 0x94281409, // 004A GETIDX R10 R10 R9 + 0x1C28150F, // 004B EQ R10 R10 K15 + 0x782A0025, // 004C JMPF R10 #0073 + 0x8C280115, // 004D GETMET R10 R0 K21 + 0x543200FE, // 004E LDINT R12 255 + 0x7C280400, // 004F CALL R10 2 + 0x14281403, // 0050 LT R10 R10 R3 + 0x782A0020, // 0051 JMPF R10 #0073 + 0x8C280115, // 0052 GETMET R10 R0 K21 + 0x04300A04, // 0053 SUB R12 R5 R4 + 0x00301902, // 0054 ADD R12 R12 K2 + 0x7C280400, // 0055 CALL R10 2 + 0x0028080A, // 0056 ADD R10 R4 R10 + 0x5C2C0C00, // 0057 MOVE R11 R6 + 0x5432000F, // 0058 LDINT R12 16 + 0x3C30160C, // 0059 SHR R12 R11 R12 + 0x543600FE, // 005A LDINT R13 255 + 0x2C30180D, // 005B AND R12 R12 R13 + 0x54360007, // 005C LDINT R13 8 + 0x3C34160D, // 005D SHR R13 R11 R13 + 0x543A00FE, // 005E LDINT R14 255 + 0x2C341A0E, // 005F AND R13 R13 R14 + 0x543A00FE, // 0060 LDINT R14 255 + 0x2C38160E, // 0061 AND R14 R11 R14 + 0x883C010B, // 0062 GETMBR R15 R0 K11 + 0x983C1302, // 0063 SETIDX R15 R9 K2 + 0x883C010C, // 0064 GETMBR R15 R0 K12 + 0x8C3C1F13, // 0065 GETMET R15 R15 K19 + 0x54460003, // 0066 LDINT R17 4 + 0x08441211, // 0067 MUL R17 R9 R17 + 0x544A0017, // 0068 LDINT R18 24 + 0x38481412, // 0069 SHL R18 R10 R18 + 0x544E000F, // 006A LDINT R19 16 + 0x384C1813, // 006B SHL R19 R12 R19 + 0x30482413, // 006C OR R18 R18 R19 + 0x544E0007, // 006D LDINT R19 8 + 0x384C1A13, // 006E SHL R19 R13 R19 + 0x30482413, // 006F OR R18 R18 R19 + 0x3048240E, // 0070 OR R18 R18 R14 + 0x544DFFFB, // 0071 LDINT R19 -4 + 0x7C3C0800, // 0072 CALL R15 4 + 0x00241302, // 0073 ADD R9 R9 K2 + 0x7001FFD1, // 0074 JMP #0047 + 0x80000000, // 0075 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_TwinkleAnimation_tostring, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x8C080116, // 0001 GETMET R2 R0 K22 + 0x58100008, // 0002 LDCONST R4 K8 + 0x7C080400, // 0003 CALL R2 2 + 0xB80E2E00, // 0004 GETNGBL R3 K23 + 0x8C0C0718, // 0005 GETMET R3 R3 K24 + 0x5C140400, // 0006 MOVE R5 R2 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0004, // 0008 JMPF R3 #000E + 0x600C0008, // 0009 GETGBL R3 G8 + 0x5C100400, // 000A MOVE R4 R2 + 0x7C0C0200, // 000B CALL R3 1 + 0x5C040600, // 000C MOVE R1 R3 + 0x70020004, // 000D JMP #0013 + 0x600C0018, // 000E GETGBL R3 G24 + 0x58100019, // 000F LDCONST R4 K25 + 0x88140108, // 0010 GETMBR R5 R0 K8 + 0x7C0C0400, // 0011 CALL R3 2 + 0x5C040600, // 0012 MOVE R1 R3 + 0x600C0018, // 0013 GETGBL R3 G24 + 0x5810001A, // 0014 LDCONST R4 K26 + 0x5C140200, // 0015 MOVE R5 R1 + 0x88180105, // 0016 GETMBR R6 R0 K5 + 0x881C0101, // 0017 GETMBR R7 R0 K1 + 0x8820011B, // 0018 GETMBR R8 R0 K27 + 0x8824011C, // 0019 GETMBR R9 R0 K28 + 0x7C0C0C00, // 001A CALL R3 6 + 0x80040600, // 001B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_TwinkleAnimation_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08051D, // 0003 GETMET R2 R2 K29 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080012, // 0006 GETGBL R2 G18 + 0x7C080000, // 0007 CALL R2 0 + 0x90021602, // 0008 SETMBR R0 K11 R2 + 0x60080015, // 0009 GETGBL R2 G21 + 0x7C080000, // 000A CALL R2 0 + 0x90021802, // 000B SETMBR R0 K12 R2 + 0x90023D0F, // 000C SETMBR R0 K30 K15 + 0x88080109, // 000D GETMBR R2 R0 K9 + 0x88080520, // 000E GETMBR R2 R2 K32 + 0x540EFFFF, // 000F LDINT R3 65536 + 0x10080403, // 0010 MOD R2 R2 R3 + 0x90023E02, // 0011 SETMBR R0 K31 R2 + 0x8C08010E, // 0012 GETMET R2 R0 K14 + 0x7C080200, // 0013 CALL R2 1 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_TwinkleAnimation_render, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[55]) { /* code */ + 0x880C011C, // 0000 GETMBR R3 R0 K28 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x8C0C0121, // 0007 GETMET R3 R0 K33 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0109, // 000B GETMBR R3 R0 K9 + 0x8C0C070A, // 000C GETMET R3 R3 K10 + 0x7C0C0200, // 000D CALL R3 1 + 0x6010000C, // 000E GETGBL R4 G12 + 0x8814010B, // 000F GETMBR R5 R0 K11 + 0x7C100200, // 0010 CALL R4 1 + 0x20100803, // 0011 NE R4 R4 R3 + 0x74120006, // 0012 JMPT R4 #001A + 0x8810010C, // 0013 GETMBR R4 R0 K12 + 0x8C10090D, // 0014 GETMET R4 R4 K13 + 0x7C100200, // 0015 CALL R4 1 + 0x54160003, // 0016 LDINT R5 4 + 0x08140605, // 0017 MUL R5 R3 R5 + 0x20100805, // 0018 NE R4 R4 R5 + 0x78120001, // 0019 JMPF R4 #001C + 0x8C10010E, // 001A GETMET R4 R0 K14 + 0x7C100200, // 001B CALL R4 1 + 0x50100000, // 001C LDBOOL R4 0 0 + 0x5814000F, // 001D LDCONST R5 K15 + 0x14180A03, // 001E LT R6 R5 R3 + 0x781A0015, // 001F JMPF R6 #0036 + 0x88180322, // 0020 GETMBR R6 R1 K34 + 0x14180A06, // 0021 LT R6 R5 R6 + 0x781A0010, // 0022 JMPF R6 #0034 + 0x8818010C, // 0023 GETMBR R6 R0 K12 + 0x8C180D10, // 0024 GETMET R6 R6 K16 + 0x54220003, // 0025 LDINT R8 4 + 0x08200A08, // 0026 MUL R8 R5 R8 + 0x5425FFFB, // 0027 LDINT R9 -4 + 0x7C180600, // 0028 CALL R6 3 + 0x541E0017, // 0029 LDINT R7 24 + 0x3C1C0C07, // 002A SHR R7 R6 R7 + 0x542200FE, // 002B LDINT R8 255 + 0x2C1C0E08, // 002C AND R7 R7 R8 + 0x241C0F0F, // 002D GT R7 R7 K15 + 0x781E0004, // 002E JMPF R7 #0034 + 0x8C1C0323, // 002F GETMET R7 R1 K35 + 0x5C240A00, // 0030 MOVE R9 R5 + 0x5C280C00, // 0031 MOVE R10 R6 + 0x7C1C0600, // 0032 CALL R7 3 + 0x50100200, // 0033 LDBOOL R4 1 0 + 0x00140B02, // 0034 ADD R5 R5 K2 + 0x7001FFE7, // 0035 JMP #001E + 0x80040800, // 0036 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_TwinkleAnimation_update, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080524, // 0003 GETMET R2 R2 K36 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x8C080121, // 0009 GETMET R2 R0 K33 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x5C040400, // 000C MOVE R1 R2 + 0x88080101, // 000D GETMBR R2 R0 K1 + 0x540E03E7, // 000E LDINT R3 1000 + 0x0C0C0602, // 000F DIV R3 R3 R2 + 0x8810011E, // 0010 GETMBR R4 R0 K30 + 0x04100204, // 0011 SUB R4 R1 R4 + 0x28100803, // 0012 GE R4 R4 R3 + 0x78120003, // 0013 JMPF R4 #0018 + 0x90023C01, // 0014 SETMBR R0 K30 R1 + 0x8C100125, // 0015 GETMET R4 R0 K37 + 0x5C180200, // 0016 MOVE R6 R1 + 0x7C100400, // 0017 CALL R4 2 + 0x50100200, // 0018 LDBOOL R4 1 0 + 0x80040800, // 0019 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_arrays +********************************************************************/ +be_local_closure(class_TwinkleAnimation__initialize_arrays, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(_initialize_arrays), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0x8808010B, // 0003 GETMBR R2 R0 K11 + 0x8C080526, // 0004 GETMET R2 R2 K38 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x8808010C, // 0007 GETMBR R2 R0 K12 + 0x8C080527, // 0008 GETMET R2 R2 K39 + 0x7C080200, // 0009 CALL R2 1 + 0x8808010C, // 000A GETMBR R2 R0 K12 + 0x8C080526, // 000B GETMET R2 R2 K38 + 0x54120003, // 000C LDINT R4 4 + 0x08100204, // 000D MUL R4 R1 R4 + 0x7C080400, // 000E CALL R2 2 + 0x5808000F, // 000F LDCONST R2 K15 + 0x140C0401, // 0010 LT R3 R2 R1 + 0x780E000A, // 0011 JMPF R3 #001D + 0x880C010B, // 0012 GETMBR R3 R0 K11 + 0x980C050F, // 0013 SETIDX R3 R2 K15 + 0x880C010C, // 0014 GETMBR R3 R0 K12 + 0x8C0C0713, // 0015 GETMET R3 R3 K19 + 0x54160003, // 0016 LDINT R5 4 + 0x08140405, // 0017 MUL R5 R2 R5 + 0x5818000F, // 0018 LDCONST R6 K15 + 0x541DFFFB, // 0019 LDINT R7 -4 + 0x7C0C0800, // 001A CALL R3 4 + 0x00080502, // 001B ADD R2 R2 K2 + 0x7001FFF2, // 001C JMP #0010 + 0x80000000, // 001D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _random +********************************************************************/ +be_local_closure(class_TwinkleAnimation__random, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(_random), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x8804011F, // 0000 GETMBR R1 R0 K31 + 0x08040328, // 0001 MUL R1 R1 K40 + 0x540A3038, // 0002 LDINT R2 12345 + 0x00040202, // 0003 ADD R1 R1 R2 + 0x2C040329, // 0004 AND R1 R1 K41 + 0x90023E01, // 0005 SETMBR R0 K31 R1 + 0x8804011F, // 0006 GETMBR R1 R0 K31 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _random_range +********************************************************************/ +be_local_closure(class_TwinkleAnimation__random_range, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(_random_range), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x1808030F, // 0000 LE R2 R1 K15 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80061E00, // 0002 RET 1 K15 + 0x8C08012A, // 0003 GETMET R2 R0 K42 + 0x7C080200, // 0004 CALL R2 1 + 0x10080401, // 0005 MOD R2 R2 R1 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: TwinkleAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(TwinkleAnimation, + 4, + &be_class_Animation, + be_nested_map(14, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(_random_range, -1), be_const_closure(class_TwinkleAnimation__random_range_closure) }, + { be_const_key_weak(twinkle_states, -1), be_const_var(0) }, + { be_const_key_weak(init, -1), be_const_closure(class_TwinkleAnimation_init_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_TwinkleAnimation_tostring_closure) }, + { be_const_key_weak(random_seed, -1), be_const_var(3) }, + { be_const_key_weak(PARAMS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(fade_speed, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(180) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(twinkle_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(6) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(5000) }, + })) ) } )) }, + { be_const_key_weak(density, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(128) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(max_brightness, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(255) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(min_brightness, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(32) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(_random, 9), be_const_closure(class_TwinkleAnimation__random_closure) }, + { be_const_key_weak(last_update, -1), be_const_var(2) }, + { be_const_key_weak(update, -1), be_const_closure(class_TwinkleAnimation_update_closure) }, + { be_const_key_weak(_initialize_arrays, 10), be_const_closure(class_TwinkleAnimation__initialize_arrays_closure) }, + { be_const_key_weak(render, 2), be_const_closure(class_TwinkleAnimation_render_closure) }, + { be_const_key_weak(current_colors, -1), be_const_var(1) }, + { be_const_key_weak(_update_twinkle_simulation, 1), be_const_closure(class_TwinkleAnimation__update_twinkle_simulation_closure) }, + { be_const_key_weak(on_param_changed, 0), be_const_closure(class_TwinkleAnimation_on_param_changed_closure) }, + })), + be_str_weak(TwinkleAnimation) +); + +/******************************************************************** +** Solidified function: animation_init +********************************************************************/ +be_local_closure(animation_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(introspect), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(_ntv), + /* K4 */ be_nested_str_weak(undefined), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0x8C0C0502, // 0002 GETMET R3 R2 K2 + 0x88140303, // 0003 GETMBR R5 R1 K3 + 0x5C180000, // 0004 MOVE R6 R0 + 0x7C0C0600, // 0005 CALL R3 3 + 0x780E0003, // 0006 JMPF R3 #000B + 0x880C0303, // 0007 GETMBR R3 R1 K3 + 0x880C0600, // 0008 GETMBR R3 R3 R0 + 0x80040600, // 0009 RET 1 R3 + 0x70020003, // 000A JMP #000F + 0x600C000B, // 000B GETGBL R3 G11 + 0x58100004, // 000C LDCONST R4 K4 + 0x7C0C0200, // 000D CALL R3 1 + 0x80040600, // 000E RET 1 R3 + 0x80000000, // 000F RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(_ntv), + /* K2 */ be_nested_str_weak(event_manager), + /* K3 */ be_nested_str_weak(EventManager), + /* K4 */ be_nested_str_weak(member), + /* K5 */ be_nested_str_weak(_user_functions), + }), + be_str_weak(animation_init), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x6004000B, // 0000 GETGBL R1 G11 + 0x58080000, // 0001 LDCONST R2 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x90060200, // 0003 SETMBR R1 K1 R0 + 0x8C080103, // 0004 GETMET R2 R0 K3 + 0x7C080200, // 0005 CALL R2 1 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x84080000, // 0007 CLOSURE R2 P0 + 0x90060802, // 0008 SETMBR R1 K4 R2 + 0x60080013, // 0009 GETGBL R2 G19 + 0x7C080000, // 000A CALL R2 0 + 0x90060A02, // 000B SETMBR R1 K5 R2 + 0x80040200, // 000C RET 1 R1 + }) + ) +); +/*******************************************************************/ + // compact class 'ParameterizedObject' ktab size: 49, total: 99 (saved 400 bytes) static const bvalue be_ktab_class_ParameterizedObject[49] = { /* K0 */ be_nested_str_weak(introspect), @@ -20178,1662 +17093,6 @@ be_local_class(ParameterizedObject, })), be_str_weak(ParameterizedObject) ); - -/******************************************************************** -** Solidified function: animation_resolve -********************************************************************/ -be_local_closure(animation_resolve, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(is_value_provider), - /* K2 */ be_nested_str_weak(produce_value), - /* K3 */ be_nested_str_weak(parameterized_object), - /* K4 */ be_nested_str_weak(value_error), - /* K5 */ be_nested_str_weak(Parameter_X20name_X20cannot_X20be_X20nil_X20when_X20resolving_X20object_X20parameter), - /* K6 */ be_nested_str_weak(get_param_value), - }), - be_str_weak(animation_resolve), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140000, // 0002 MOVE R5 R0 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0005, // 0004 JMPF R3 #000B - 0x8C0C0102, // 0005 GETMET R3 R0 K2 - 0x5C140200, // 0006 MOVE R5 R1 - 0x5C180400, // 0007 MOVE R6 R2 - 0x7C0C0600, // 0008 CALL R3 3 - 0x80040600, // 0009 RET 1 R3 - 0x70020012, // 000A JMP #001E - 0x4C0C0000, // 000B LDNIL R3 - 0x200C0003, // 000C NE R3 R0 R3 - 0x780E000E, // 000D JMPF R3 #001D - 0x600C000F, // 000E GETGBL R3 G15 - 0x5C100000, // 000F MOVE R4 R0 - 0xB8160000, // 0010 GETNGBL R5 K0 - 0x88140B03, // 0011 GETMBR R5 R5 K3 - 0x7C0C0400, // 0012 CALL R3 2 - 0x780E0008, // 0013 JMPF R3 #001D - 0x4C0C0000, // 0014 LDNIL R3 - 0x1C0C0203, // 0015 EQ R3 R1 R3 - 0x780E0000, // 0016 JMPF R3 #0018 - 0xB0060905, // 0017 RAISE 1 K4 K5 - 0x8C0C0106, // 0018 GETMET R3 R0 K6 - 0x5C140200, // 0019 MOVE R5 R1 - 0x7C0C0400, // 001A CALL R3 2 - 0x80040600, // 001B RET 1 R3 - 0x70020000, // 001C JMP #001E - 0x80040000, // 001D RET 1 R0 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: elastic -********************************************************************/ -be_local_closure(elastic, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_nested_str_weak(ELASTIC), - }), - be_str_weak(elastic), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: noise_single_color -********************************************************************/ -be_local_closure(noise_single_color, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(noise_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(scale), - /* K4 */ be_nested_str_weak(speed), - /* K5 */ be_nested_str_weak(octaves), - /* K6 */ be_const_int(1), - }), - be_str_weak(noise_single_color), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A0031, // 0006 LDINT R2 50 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x540A001D, // 0008 LDINT R2 30 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x90060B06, // 000A SETMBR R1 K5 K6 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -extern const bclass be_class_PaletteMeterAnimation; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_PaletteMeterAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(palette_meter), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020302, // 0006 SETMBR R0 K1 K2 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_value_buffer -********************************************************************/ -be_local_closure(class_PaletteMeterAnimation__update_value_buffer, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(value_func), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(get_strip_length), - /* K3 */ be_nested_str_weak(value_buffer), - /* K4 */ be_nested_str_weak(resize), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(scale_uint), - /* K7 */ be_const_int(0), - /* K8 */ be_const_int(1), - }), - be_str_weak(_update_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C0C0403, // 0002 EQ R3 R2 R3 - 0x780E0000, // 0003 JMPF R3 #0005 - 0x80000600, // 0004 RET 0 - 0x880C0101, // 0005 GETMBR R3 R0 K1 - 0x8C0C0702, // 0006 GETMET R3 R3 K2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x6010000C, // 0008 GETGBL R4 G12 - 0x88140103, // 0009 GETMBR R5 R0 K3 - 0x7C100200, // 000A CALL R4 1 - 0x20100803, // 000B NE R4 R4 R3 - 0x78120003, // 000C JMPF R4 #0011 - 0x88100103, // 000D GETMBR R4 R0 K3 - 0x8C100904, // 000E GETMET R4 R4 K4 - 0x5C180600, // 000F MOVE R6 R3 - 0x7C100400, // 0010 CALL R4 2 - 0x5C100400, // 0011 MOVE R4 R2 - 0x5C140200, // 0012 MOVE R5 R1 - 0x5C180000, // 0013 MOVE R6 R0 - 0x7C100400, // 0014 CALL R4 2 - 0xB8160A00, // 0015 GETNGBL R5 K5 - 0x8C140B06, // 0016 GETMET R5 R5 K6 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x58200007, // 0018 LDCONST R8 K7 - 0x54260063, // 0019 LDINT R9 100 - 0x58280007, // 001A LDCONST R10 K7 - 0x5C2C0600, // 001B MOVE R11 R3 - 0x7C140C00, // 001C CALL R5 6 - 0x58180007, // 001D LDCONST R6 K7 - 0x141C0C03, // 001E LT R7 R6 R3 - 0x781E0008, // 001F JMPF R7 #0029 - 0x881C0103, // 0020 GETMBR R7 R0 K3 - 0x14200C05, // 0021 LT R8 R6 R5 - 0x78220001, // 0022 JMPF R8 #0025 - 0x542200FE, // 0023 LDINT R8 255 - 0x70020000, // 0024 JMP #0026 - 0x58200007, // 0025 LDCONST R8 K7 - 0x981C0C08, // 0026 SETIDX R7 R6 R8 - 0x00180D08, // 0027 ADD R6 R6 K8 - 0x7001FFF4, // 0028 JMP #001E - 0x80000000, // 0029 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: PaletteMeterAnimation -********************************************************************/ -extern const bclass be_class_PalettePatternAnimation; -be_local_class(PaletteMeterAnimation, - 0, - &be_class_PalettePatternAnimation, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(PARAMS, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(value_func, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(function) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_PaletteMeterAnimation_init_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteMeterAnimation__update_value_buffer_closure) }, - })), - be_str_weak(PaletteMeterAnimation) -); - -/******************************************************************** -** Solidified function: ramp -********************************************************************/ -be_local_closure(ramp, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_nested_str_weak(SAWTOOTH), - }), - be_str_weak(ramp), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: wave_custom -********************************************************************/ -be_local_closure(wave_custom, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(wave_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(wave_type), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(frequency), - /* K6 */ be_nested_str_weak(wave_speed), - }), - be_str_weak(wave_custom), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FEFF, // 0004 LDINT R2 -256 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A0027, // 0007 LDINT R2 40 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x540A001D, // 0009 LDINT R2 30 - 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'PlasmaAnimation' ktab size: 48, total: 95 (saved 376 bytes) -static const bvalue be_ktab_class_PlasmaAnimation[48] = { - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(color), - /* K2 */ be_nested_str_weak(animation), - /* K3 */ be_nested_str_weak(rich_palette), - /* K4 */ be_nested_str_weak(engine), - /* K5 */ be_nested_str_weak(palette), - /* K6 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K7 */ be_nested_str_weak(cycle_period), - /* K8 */ be_nested_str_weak(transition_type), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(brightness), - /* K11 */ be_nested_str_weak(range_min), - /* K12 */ be_const_int(0), - /* K13 */ be_nested_str_weak(range_max), - /* K14 */ be_nested_str_weak(time_phase), - /* K15 */ be_nested_str_weak(is_value_provider), - /* K16 */ be_nested_str_weak(0x_X2508x), - /* K17 */ be_nested_str_weak(PlasmaAnimation_X28color_X3D_X25s_X2C_X20freq_x_X3D_X25s_X2C_X20freq_y_X3D_X25s_X2C_X20time_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K18 */ be_nested_str_weak(freq_x), - /* K19 */ be_nested_str_weak(freq_y), - /* K20 */ be_nested_str_weak(time_speed), - /* K21 */ be_nested_str_weak(priority), - /* K22 */ be_nested_str_weak(is_running), - /* K23 */ be_nested_str_weak(init), - /* K24 */ be_nested_str_weak(current_colors), - /* K25 */ be_nested_str_weak(_initialize_colors), - /* K26 */ be_nested_str_weak(update), - /* K27 */ be_nested_str_weak(start_time), - /* K28 */ be_nested_str_weak(tasmota), - /* K29 */ be_nested_str_weak(scale_uint), - /* K30 */ be_nested_str_weak(_calculate_plasma), - /* K31 */ be_nested_str_weak(get_strip_length), - /* K32 */ be_nested_str_weak(resize), - /* K33 */ be_const_int(-16777216), - /* K34 */ be_nested_str_weak(on_param_changed), - /* K35 */ be_nested_str_weak(set_param), - /* K36 */ be_nested_str_weak(phase_x), - /* K37 */ be_nested_str_weak(phase_y), - /* K38 */ be_nested_str_weak(blend_mode), - /* K39 */ be_nested_str_weak(_sine), - /* K40 */ be_const_int(2), - /* K41 */ be_nested_str_weak(is_color_provider), - /* K42 */ be_nested_str_weak(get_color_for_value), - /* K43 */ be_nested_str_weak(resolve_value), - /* K44 */ be_nested_str_weak(_fix_time_ms), - /* K45 */ be_nested_str_weak(width), - /* K46 */ be_nested_str_weak(set_pixel_color), - /* K47 */ be_nested_str_weak(sine_int), -}; - - -extern const bclass be_class_PlasmaAnimation; - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_PlasmaAnimation_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x4C0C0000, // 0007 LDNIL R3 - 0x1C080403, // 0008 EQ R2 R2 R3 - 0x780A000F, // 0009 JMPF R2 #001A - 0xB80A0400, // 000A GETNGBL R2 K2 - 0x8C080503, // 000B GETMET R2 R2 K3 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x7C080400, // 000D CALL R2 2 - 0xB80E0400, // 000E GETNGBL R3 K2 - 0x880C0706, // 000F GETMBR R3 R3 K6 - 0x900A0A03, // 0010 SETMBR R2 K5 R3 - 0x540E1387, // 0011 LDINT R3 5000 - 0x900A0E03, // 0012 SETMBR R2 K7 R3 - 0x900A1109, // 0013 SETMBR R2 K8 K9 - 0x540E00FE, // 0014 LDINT R3 255 - 0x900A1403, // 0015 SETMBR R2 K10 R3 - 0x900A170C, // 0016 SETMBR R2 K11 K12 - 0x540E00FE, // 0017 LDINT R3 255 - 0x900A1A03, // 0018 SETMBR R2 K13 R3 - 0x90020202, // 0019 SETMBR R0 K1 R2 - 0x90021D0C, // 001A SETMBR R0 K14 K12 - 0x80040000, // 001B RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_PlasmaAnimation_tostring, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x8C0C070F, // 0003 GETMET R3 R3 K15 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x780E0004, // 0006 JMPF R3 #000C - 0x600C0008, // 0007 GETGBL R3 G8 - 0x5C100400, // 0008 MOVE R4 R2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x5C040600, // 000A MOVE R1 R3 - 0x70020004, // 000B JMP #0011 - 0x600C0018, // 000C GETGBL R3 G24 - 0x58100010, // 000D LDCONST R4 K16 - 0x5C140400, // 000E MOVE R5 R2 - 0x7C0C0400, // 000F CALL R3 2 - 0x5C040600, // 0010 MOVE R1 R3 - 0x600C0018, // 0011 GETGBL R3 G24 - 0x58100011, // 0012 LDCONST R4 K17 - 0x5C140200, // 0013 MOVE R5 R1 - 0x88180112, // 0014 GETMBR R6 R0 K18 - 0x881C0113, // 0015 GETMBR R7 R0 K19 - 0x88200114, // 0016 GETMBR R8 R0 K20 - 0x88240115, // 0017 GETMBR R9 R0 K21 - 0x88280116, // 0018 GETMBR R10 R0 K22 - 0x7C0C0E00, // 0019 CALL R3 7 - 0x80040600, // 001A RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_PlasmaAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080517, // 0003 GETMET R2 R2 K23 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90021D0C, // 0006 SETMBR R0 K14 K12 - 0x60080012, // 0007 GETGBL R2 G18 - 0x7C080000, // 0008 CALL R2 0 - 0x90023002, // 0009 SETMBR R0 K24 R2 - 0x8C080119, // 000A GETMET R2 R0 K25 - 0x7C080200, // 000B CALL R2 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_PlasmaAnimation_update, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08051A, // 0003 GETMET R2 R2 K26 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080114, // 0009 GETMBR R2 R0 K20 - 0x240C050C, // 000A GT R3 R2 K12 - 0x780E0011, // 000B JMPF R3 #001E - 0x880C011B, // 000C GETMBR R3 R0 K27 - 0x040C0203, // 000D SUB R3 R1 R3 - 0xB8123800, // 000E GETNGBL R4 K28 - 0x8C10091D, // 000F GETMET R4 R4 K29 - 0x5C180400, // 0010 MOVE R6 R2 - 0x581C000C, // 0011 LDCONST R7 K12 - 0x542200FE, // 0012 LDINT R8 255 - 0x5824000C, // 0013 LDCONST R9 K12 - 0x542A0007, // 0014 LDINT R10 8 - 0x7C100C00, // 0015 CALL R4 6 - 0x2414090C, // 0016 GT R5 R4 K12 - 0x78160005, // 0017 JMPF R5 #001E - 0x08140604, // 0018 MUL R5 R3 R4 - 0x541A03E7, // 0019 LDINT R6 1000 - 0x0C140A06, // 001A DIV R5 R5 R6 - 0x541A00FF, // 001B LDINT R6 256 - 0x10140A06, // 001C MOD R5 R5 R6 - 0x90021C05, // 001D SETMBR R0 K14 R5 - 0x8C0C011E, // 001E GETMET R3 R0 K30 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x500C0200, // 0021 LDBOOL R3 1 0 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_colors -********************************************************************/ -be_local_closure(class_PlasmaAnimation__initialize_colors, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(_initialize_colors), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C04031F, // 0001 GETMET R1 R1 K31 - 0x7C040200, // 0002 CALL R1 1 - 0x88080118, // 0003 GETMBR R2 R0 K24 - 0x8C080520, // 0004 GETMET R2 R2 K32 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x5808000C, // 0007 LDCONST R2 K12 - 0x140C0401, // 0008 LT R3 R2 R1 - 0x780E0003, // 0009 JMPF R3 #000E - 0x880C0118, // 000A GETMBR R3 R0 K24 - 0x980C0521, // 000B SETIDX R3 R2 K33 - 0x00080509, // 000C ADD R2 R2 K9 - 0x7001FFF9, // 000D JMP #0008 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_PlasmaAnimation_on_param_changed, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0722, // 0003 GETMET R3 R3 K34 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0301, // 0007 EQ R3 R1 K1 - 0x780E0015, // 0008 JMPF R3 #001F - 0x4C0C0000, // 0009 LDNIL R3 - 0x1C0C0403, // 000A EQ R3 R2 R3 - 0x780E0012, // 000B JMPF R3 #001F - 0xB80E0400, // 000C GETNGBL R3 K2 - 0x8C0C0703, // 000D GETMET R3 R3 K3 - 0x88140104, // 000E GETMBR R5 R0 K4 - 0x7C0C0400, // 000F CALL R3 2 - 0xB8120400, // 0010 GETNGBL R4 K2 - 0x88100906, // 0011 GETMBR R4 R4 K6 - 0x900E0A04, // 0012 SETMBR R3 K5 R4 - 0x54121387, // 0013 LDINT R4 5000 - 0x900E0E04, // 0014 SETMBR R3 K7 R4 - 0x900E1109, // 0015 SETMBR R3 K8 K9 - 0x541200FE, // 0016 LDINT R4 255 - 0x900E1404, // 0017 SETMBR R3 K10 R4 - 0x900E170C, // 0018 SETMBR R3 K11 K12 - 0x541200FE, // 0019 LDINT R4 255 - 0x900E1A04, // 001A SETMBR R3 K13 R4 - 0x8C100123, // 001B GETMET R4 R0 K35 - 0x58180001, // 001C LDCONST R6 K1 - 0x5C1C0600, // 001D MOVE R7 R3 - 0x7C100600, // 001E CALL R4 3 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_plasma -********************************************************************/ -be_local_closure(class_PlasmaAnimation__calculate_plasma, /* name */ - be_nested_proto( - 21, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(_calculate_plasma), - &be_const_str_solidified, - ( &(const binstruction[103]) { /* code */ - 0x88080104, // 0000 GETMBR R2 R0 K4 - 0x8C08051F, // 0001 GETMET R2 R2 K31 - 0x7C080200, // 0002 CALL R2 1 - 0x600C000C, // 0003 GETGBL R3 G12 - 0x88100118, // 0004 GETMBR R4 R0 K24 - 0x7C0C0200, // 0005 CALL R3 1 - 0x200C0602, // 0006 NE R3 R3 R2 - 0x780E0001, // 0007 JMPF R3 #000A - 0x8C0C0119, // 0008 GETMET R3 R0 K25 - 0x7C0C0200, // 0009 CALL R3 1 - 0x880C0112, // 000A GETMBR R3 R0 K18 - 0x88100113, // 000B GETMBR R4 R0 K19 - 0x88140124, // 000C GETMBR R5 R0 K36 - 0x88180125, // 000D GETMBR R6 R0 K37 - 0x881C0126, // 000E GETMBR R7 R0 K38 - 0x88200101, // 000F GETMBR R8 R0 K1 - 0x5824000C, // 0010 LDCONST R9 K12 - 0x14281202, // 0011 LT R10 R9 R2 - 0x782A0052, // 0012 JMPF R10 #0066 - 0xB82A3800, // 0013 GETNGBL R10 K28 - 0x8C28151D, // 0014 GETMET R10 R10 K29 - 0x5C301200, // 0015 MOVE R12 R9 - 0x5834000C, // 0016 LDCONST R13 K12 - 0x04380509, // 0017 SUB R14 R2 K9 - 0x583C000C, // 0018 LDCONST R15 K12 - 0x544200FE, // 0019 LDINT R16 255 - 0x7C280C00, // 001A CALL R10 6 - 0x8C2C0127, // 001B GETMET R11 R0 K39 - 0x08341403, // 001C MUL R13 R10 R3 - 0x543A001F, // 001D LDINT R14 32 - 0x0C341A0E, // 001E DIV R13 R13 R14 - 0x00341A05, // 001F ADD R13 R13 R5 - 0x8838010E, // 0020 GETMBR R14 R0 K14 - 0x00341A0E, // 0021 ADD R13 R13 R14 - 0x7C2C0400, // 0022 CALL R11 2 - 0x8C300127, // 0023 GETMET R12 R0 K39 - 0x08381404, // 0024 MUL R14 R10 R4 - 0x543E001F, // 0025 LDINT R15 32 - 0x0C381C0F, // 0026 DIV R14 R14 R15 - 0x00381C06, // 0027 ADD R14 R14 R6 - 0x883C010E, // 0028 GETMBR R15 R0 K14 - 0x083C1F28, // 0029 MUL R15 R15 K40 - 0x00381C0F, // 002A ADD R14 R14 R15 - 0x7C300400, // 002B CALL R12 2 - 0x5834000C, // 002C LDCONST R13 K12 - 0x1C380F0C, // 002D EQ R14 R7 K12 - 0x783A0003, // 002E JMPF R14 #0033 - 0x0038160C, // 002F ADD R14 R11 R12 - 0x0C381D28, // 0030 DIV R14 R14 K40 - 0x5C341C00, // 0031 MOVE R13 R14 - 0x7002000E, // 0032 JMP #0042 - 0x1C380F09, // 0033 EQ R14 R7 K9 - 0x783A0009, // 0034 JMPF R14 #003F - 0xB83A3800, // 0035 GETNGBL R14 K28 - 0x8C381D1D, // 0036 GETMET R14 R14 K29 - 0x5C401600, // 0037 MOVE R16 R11 - 0x5844000C, // 0038 LDCONST R17 K12 - 0x544A00FE, // 0039 LDINT R18 255 - 0x584C000C, // 003A LDCONST R19 K12 - 0x5C501800, // 003B MOVE R20 R12 - 0x7C380C00, // 003C CALL R14 6 - 0x5C341C00, // 003D MOVE R13 R14 - 0x70020002, // 003E JMP #0042 - 0x0038160C, // 003F ADD R14 R11 R12 - 0x0C381D28, // 0040 DIV R14 R14 K40 - 0x5C341C00, // 0041 MOVE R13 R14 - 0x543A00FE, // 0042 LDINT R14 255 - 0x24381A0E, // 0043 GT R14 R13 R14 - 0x783A0001, // 0044 JMPF R14 #0047 - 0x543600FE, // 0045 LDINT R13 255 - 0x70020002, // 0046 JMP #004A - 0x14381B0C, // 0047 LT R14 R13 K12 - 0x783A0000, // 0048 JMPF R14 #004A - 0x5834000C, // 0049 LDCONST R13 K12 - 0x58380021, // 004A LDCONST R14 K33 - 0xB83E0400, // 004B GETNGBL R15 K2 - 0x8C3C1F29, // 004C GETMET R15 R15 K41 - 0x5C441000, // 004D MOVE R17 R8 - 0x7C3C0400, // 004E CALL R15 2 - 0x783E0009, // 004F JMPF R15 #005A - 0x883C112A, // 0050 GETMBR R15 R8 K42 - 0x4C400000, // 0051 LDNIL R16 - 0x203C1E10, // 0052 NE R15 R15 R16 - 0x783E0005, // 0053 JMPF R15 #005A - 0x8C3C112A, // 0054 GETMET R15 R8 K42 - 0x5C441A00, // 0055 MOVE R17 R13 - 0x5848000C, // 0056 LDCONST R18 K12 - 0x7C3C0600, // 0057 CALL R15 3 - 0x5C381E00, // 0058 MOVE R14 R15 - 0x70020007, // 0059 JMP #0062 - 0x8C3C012B, // 005A GETMET R15 R0 K43 - 0x5C441000, // 005B MOVE R17 R8 - 0x58480001, // 005C LDCONST R18 K1 - 0x544E0009, // 005D LDINT R19 10 - 0x084C1A13, // 005E MUL R19 R13 R19 - 0x004C0213, // 005F ADD R19 R1 R19 - 0x7C3C0800, // 0060 CALL R15 4 - 0x5C381E00, // 0061 MOVE R14 R15 - 0x883C0118, // 0062 GETMBR R15 R0 K24 - 0x983C120E, // 0063 SETIDX R15 R9 R14 - 0x00241309, // 0064 ADD R9 R9 K9 - 0x7001FFAA, // 0065 JMP #0011 - 0x80000000, // 0066 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_PlasmaAnimation_render, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x880C0116, // 0000 GETMBR R3 R0 K22 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x8C0C012C, // 0007 GETMET R3 R0 K44 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x5C080600, // 000A MOVE R2 R3 - 0x880C0104, // 000B GETMBR R3 R0 K4 - 0x8C0C071F, // 000C GETMET R3 R3 K31 - 0x7C0C0200, // 000D CALL R3 1 - 0x5810000C, // 000E LDCONST R4 K12 - 0x14140803, // 000F LT R5 R4 R3 - 0x78160009, // 0010 JMPF R5 #001B - 0x8814032D, // 0011 GETMBR R5 R1 K45 - 0x14140805, // 0012 LT R5 R4 R5 - 0x78160004, // 0013 JMPF R5 #0019 - 0x8C14032E, // 0014 GETMET R5 R1 K46 - 0x5C1C0800, // 0015 MOVE R7 R4 - 0x88200118, // 0016 GETMBR R8 R0 K24 - 0x94201004, // 0017 GETIDX R8 R8 R4 - 0x7C140600, // 0018 CALL R5 3 - 0x00100909, // 0019 ADD R4 R4 K9 - 0x7001FFF3, // 001A JMP #000F - 0x50140200, // 001B LDBOOL R5 1 0 - 0x80040A00, // 001C RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sine -********************************************************************/ -be_local_closure(class_PlasmaAnimation__sine, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ - be_str_weak(_sine), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0xB80A3800, // 0000 GETNGBL R2 K28 - 0x8C08051D, // 0001 GETMET R2 R2 K29 - 0x5C100200, // 0002 MOVE R4 R1 - 0x5814000C, // 0003 LDCONST R5 K12 - 0x541A00FE, // 0004 LDINT R6 255 - 0x581C000C, // 0005 LDCONST R7 K12 - 0x54227FFE, // 0006 LDINT R8 32767 - 0x7C080C00, // 0007 CALL R2 6 - 0xB80E3800, // 0008 GETNGBL R3 K28 - 0x8C0C072F, // 0009 GETMET R3 R3 K47 - 0x5C140400, // 000A MOVE R5 R2 - 0x7C0C0400, // 000B CALL R3 2 - 0xB8123800, // 000C GETNGBL R4 K28 - 0x8C10091D, // 000D GETMET R4 R4 K29 - 0x5C180600, // 000E MOVE R6 R3 - 0x541DEFFF, // 000F LDINT R7 -4096 - 0x54220FFF, // 0010 LDINT R8 4096 - 0x5824000C, // 0011 LDCONST R9 K12 - 0x542A00FE, // 0012 LDINT R10 255 - 0x7C100C00, // 0013 CALL R4 6 - 0x80040800, // 0014 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: PlasmaAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(PlasmaAnimation, - 2, - &be_class_Animation, - be_nested_map(12, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_sine, -1), be_const_closure(class_PlasmaAnimation__sine_closure) }, - { be_const_key_weak(tostring, 2), be_const_closure(class_PlasmaAnimation_tostring_closure) }, - { be_const_key_weak(render, 5), be_const_closure(class_PlasmaAnimation_render_closure) }, - { be_const_key_weak(init, 9), be_const_closure(class_PlasmaAnimation_init_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_PlasmaAnimation_update_closure) }, - { be_const_key_weak(_calculate_plasma, 7), be_const_closure(class_PlasmaAnimation__calculate_plasma_closure) }, - { be_const_key_weak(_initialize_colors, -1), be_const_closure(class_PlasmaAnimation__initialize_colors_closure) }, - { be_const_key_weak(on_param_changed, 6), be_const_closure(class_PlasmaAnimation_on_param_changed_closure) }, - { be_const_key_weak(time_phase, -1), be_const_var(1) }, - { be_const_key_weak(current_colors, 10), be_const_var(0) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(7, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(phase_y, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(64) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(freq_x, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(32) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(blend_mode, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(time_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(50) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(color, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_nil() }, - })) ) } )) }, - { be_const_key_weak(phase_x, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(freq_y, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(23) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(start, 0), be_const_closure(class_PlasmaAnimation_start_closure) }, - })), - be_str_weak(PlasmaAnimation) -); -// compact class 'StripLengthProvider' ktab size: 5, total: 7 (saved 16 bytes) -static const bvalue be_ktab_class_StripLengthProvider[5] = { - /* K0 */ be_nested_str_weak(engine), - /* K1 */ be_nested_str_weak(width), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(StripLengthProvider_X28length_X3D_X25s_X29), - /* K4 */ be_nested_str_weak(unknown), -}; - - -extern const bclass be_class_StripLengthProvider; - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_StripLengthProvider_produce_value, /* name */ - be_nested_proto( - 4, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_StripLengthProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x880C0100, // 0002 GETMBR R3 R0 K0 - 0x880C0701, // 0003 GETMBR R3 R3 K1 - 0x70020000, // 0004 JMP #0006 - 0x580C0002, // 0005 LDCONST R3 K2 - 0x80040600, // 0006 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_StripLengthProvider_tostring, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_StripLengthProvider, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080003, // 0001 LDCONST R2 K3 - 0x880C0100, // 0002 GETMBR R3 R0 K0 - 0x780E0002, // 0003 JMPF R3 #0007 - 0x880C0100, // 0004 GETMBR R3 R0 K0 - 0x880C0701, // 0005 GETMBR R3 R3 K1 - 0x70020000, // 0006 JMP #0008 - 0x580C0004, // 0007 LDCONST R3 K4 - 0x7C040400, // 0008 CALL R1 2 - 0x80040200, // 0009 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: StripLengthProvider -********************************************************************/ -extern const bclass be_class_ValueProvider; -be_local_class(StripLengthProvider, - 0, - &be_class_ValueProvider, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tostring, -1), be_const_closure(class_StripLengthProvider_tostring_closure) }, - { be_const_key_weak(produce_value, 0), be_const_closure(class_StripLengthProvider_produce_value_closure) }, - })), - be_str_weak(StripLengthProvider) -); - -/******************************************************************** -** Solidified function: shift_scroll_left -********************************************************************/ -be_local_closure(shift_scroll_left, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(shift_animation), - /* K2 */ be_nested_str_weak(direction), - /* K3 */ be_nested_str_weak(shift_speed), - /* K4 */ be_nested_str_weak(wrap_around), - }), - be_str_weak(shift_scroll_left), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A007F, // 0006 LDINT R2 128 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x50080200, // 0008 LDBOOL R2 1 0 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sparkle_rainbow -********************************************************************/ -be_local_closure(sparkle_rainbow, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(rich_palette), - /* K2 */ be_nested_str_weak(palette), - /* K3 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K4 */ be_nested_str_weak(cycle_period), - /* K5 */ be_nested_str_weak(transition_type), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(sparkle_animation), - /* K8 */ be_nested_str_weak(color), - /* K9 */ be_nested_str_weak(name), - /* K10 */ be_nested_str_weak(sparkle_rainbow), - }), - be_str_weak(sparkle_rainbow), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x540A1387, // 0007 LDINT R2 5000 - 0x90060802, // 0008 SETMBR R1 K4 R2 - 0x90060B06, // 0009 SETMBR R1 K5 K6 - 0xB80A0000, // 000A GETNGBL R2 K0 - 0x8C080507, // 000B GETMET R2 R2 K7 - 0x5C100000, // 000C MOVE R4 R0 - 0x7C080400, // 000D CALL R2 2 - 0x900A1001, // 000E SETMBR R2 K8 R1 - 0x900A130A, // 000F SETMBR R2 K9 K10 - 0x80040400, // 0010 RET 1 R2 - }) - ) -); -/*******************************************************************/ - -// compact class 'CrenelPositionAnimation' ktab size: 20, total: 26 (saved 48 bytes) -static const bvalue be_ktab_class_CrenelPositionAnimation[20] = { - /* K0 */ be_nested_str_weak(is_running), - /* K1 */ be_nested_str_weak(_fix_time_ms), - /* K2 */ be_nested_str_weak(width), - /* K3 */ be_nested_str_weak(back_color), - /* K4 */ be_nested_str_weak(pos), - /* K5 */ be_nested_str_weak(pulse_size), - /* K6 */ be_nested_str_weak(low_size), - /* K7 */ be_nested_str_weak(nb_pulse), - /* K8 */ be_nested_str_weak(color), - /* K9 */ be_const_int(-16777216), - /* K10 */ be_nested_str_weak(fill_pixels), - /* K11 */ be_const_int(0), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(set_pixel_color), - /* K14 */ be_nested_str_weak(get_param), - /* K15 */ be_nested_str_weak(animation), - /* K16 */ be_nested_str_weak(is_value_provider), - /* K17 */ be_nested_str_weak(0x_X2508x), - /* K18 */ be_nested_str_weak(CrenelPositionAnimation_X28color_X3D_X25s_X2C_X20pos_X3D_X25s_X2C_X20pulse_size_X3D_X25s_X2C_X20low_size_X3D_X25s_X2C_X20nb_pulse_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K19 */ be_nested_str_weak(priority), -}; - - -extern const bclass be_class_CrenelPositionAnimation; - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_CrenelPositionAnimation_render, /* name */ - be_nested_proto( - 16, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_CrenelPositionAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[75]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x8C0C0101, // 0007 GETMET R3 R0 K1 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x5C080600, // 000A MOVE R2 R3 - 0x880C0302, // 000B GETMBR R3 R1 K2 - 0x88100103, // 000C GETMBR R4 R0 K3 - 0x88140104, // 000D GETMBR R5 R0 K4 - 0x88180105, // 000E GETMBR R6 R0 K5 - 0x881C0106, // 000F GETMBR R7 R0 K6 - 0x88200107, // 0010 GETMBR R8 R0 K7 - 0x88240108, // 0011 GETMBR R9 R0 K8 - 0x60280009, // 0012 GETGBL R10 G9 - 0x002C0C07, // 0013 ADD R11 R6 R7 - 0x7C280200, // 0014 CALL R10 1 - 0x202C0909, // 0015 NE R11 R4 K9 - 0x782E0002, // 0016 JMPF R11 #001A - 0x8C2C030A, // 0017 GETMET R11 R1 K10 - 0x5C340800, // 0018 MOVE R13 R4 - 0x7C2C0400, // 0019 CALL R11 2 - 0x182C150B, // 001A LE R11 R10 K11 - 0x782E0000, // 001B JMPF R11 #001D - 0x5828000C, // 001C LDCONST R10 K12 - 0x1C2C110B, // 001D EQ R11 R8 K11 - 0x782E0001, // 001E JMPF R11 #0021 - 0x502C0200, // 001F LDBOOL R11 1 0 - 0x80041600, // 0020 RET 1 R11 - 0x142C110B, // 0021 LT R11 R8 K11 - 0x782E0006, // 0022 JMPF R11 #002A - 0x002C0A06, // 0023 ADD R11 R5 R6 - 0x042C170C, // 0024 SUB R11 R11 K12 - 0x102C160A, // 0025 MOD R11 R11 R10 - 0x042C1606, // 0026 SUB R11 R11 R6 - 0x002C170C, // 0027 ADD R11 R11 K12 - 0x5C141600, // 0028 MOVE R5 R11 - 0x70020007, // 0029 JMP #0032 - 0x442C1400, // 002A NEG R11 R10 - 0x142C0A0B, // 002B LT R11 R5 R11 - 0x782E0004, // 002C JMPF R11 #0032 - 0x202C110B, // 002D NE R11 R8 K11 - 0x782E0002, // 002E JMPF R11 #0032 - 0x00140A0A, // 002F ADD R5 R5 R10 - 0x0420110C, // 0030 SUB R8 R8 K12 - 0x7001FFF7, // 0031 JMP #002A - 0x142C0A03, // 0032 LT R11 R5 R3 - 0x782E0014, // 0033 JMPF R11 #0049 - 0x202C110B, // 0034 NE R11 R8 K11 - 0x782E0012, // 0035 JMPF R11 #0049 - 0x582C000B, // 0036 LDCONST R11 K11 - 0x14300B0B, // 0037 LT R12 R5 K11 - 0x78320001, // 0038 JMPF R12 #003B - 0x44300A00, // 0039 NEG R12 R5 - 0x5C2C1800, // 003A MOVE R11 R12 - 0x14301606, // 003B LT R12 R11 R6 - 0x78320008, // 003C JMPF R12 #0046 - 0x00300A0B, // 003D ADD R12 R5 R11 - 0x14301803, // 003E LT R12 R12 R3 - 0x78320005, // 003F JMPF R12 #0046 - 0x8C30030D, // 0040 GETMET R12 R1 K13 - 0x00380A0B, // 0041 ADD R14 R5 R11 - 0x5C3C1200, // 0042 MOVE R15 R9 - 0x7C300600, // 0043 CALL R12 3 - 0x002C170C, // 0044 ADD R11 R11 K12 - 0x7001FFF4, // 0045 JMP #003B - 0x00140A0A, // 0046 ADD R5 R5 R10 - 0x0420110C, // 0047 SUB R8 R8 K12 - 0x7001FFE8, // 0048 JMP #0032 - 0x502C0200, // 0049 LDBOOL R11 1 0 - 0x80041600, // 004A RET 1 R11 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_CrenelPositionAnimation_tostring, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_CrenelPositionAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x8C08010E, // 0001 GETMET R2 R0 K14 - 0x58100008, // 0002 LDCONST R4 K8 - 0x7C080400, // 0003 CALL R2 2 - 0xB80E1E00, // 0004 GETNGBL R3 K15 - 0x8C0C0710, // 0005 GETMET R3 R3 K16 - 0x5C140400, // 0006 MOVE R5 R2 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0004, // 0008 JMPF R3 #000E - 0x600C0008, // 0009 GETGBL R3 G8 - 0x5C100400, // 000A MOVE R4 R2 - 0x7C0C0200, // 000B CALL R3 1 - 0x5C040600, // 000C MOVE R1 R3 - 0x70020004, // 000D JMP #0013 - 0x600C0018, // 000E GETGBL R3 G24 - 0x58100011, // 000F LDCONST R4 K17 - 0x88140108, // 0010 GETMBR R5 R0 K8 - 0x7C0C0400, // 0011 CALL R3 2 - 0x5C040600, // 0012 MOVE R1 R3 - 0x600C0018, // 0013 GETGBL R3 G24 - 0x58100012, // 0014 LDCONST R4 K18 - 0x5C140200, // 0015 MOVE R5 R1 - 0x88180104, // 0016 GETMBR R6 R0 K4 - 0x881C0105, // 0017 GETMBR R7 R0 K5 - 0x88200106, // 0018 GETMBR R8 R0 K6 - 0x88240107, // 0019 GETMBR R9 R0 K7 - 0x88280113, // 001A GETMBR R10 R0 K19 - 0x882C0100, // 001B GETMBR R11 R0 K0 - 0x7C0C1000, // 001C CALL R3 8 - 0x80040600, // 001D RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: CrenelPositionAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(CrenelPositionAnimation, - 0, - &be_class_Animation, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(nb_pulse, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(pulse_size, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(1) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(pos, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(back_color, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(-16777216) }, - })) ) } )) }, - { be_const_key_weak(low_size, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(3) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(render, 2), be_const_closure(class_CrenelPositionAnimation_render_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_CrenelPositionAnimation_tostring_closure) }, - })), - be_str_weak(CrenelPositionAnimation) -); - -/******************************************************************** -** Solidified function: plasma_rainbow -********************************************************************/ -be_local_closure(plasma_rainbow, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(plasma_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(time_speed), - /* K4 */ be_nested_str_weak(name), - /* K5 */ be_nested_str_weak(plasma_rainbow), - }), - be_str_weak(plasma_rainbow), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x4C080000, // 0004 LDNIL R2 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A0031, // 0006 LDINT R2 50 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x90060905, // 0008 SETMBR R1 K4 K5 - 0x80040200, // 0009 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: animation_init -********************************************************************/ -be_local_closure(animation_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(_ntv), - /* K4 */ be_nested_str_weak(undefined), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0502, // 0002 GETMET R3 R2 K2 - 0x88140303, // 0003 GETMBR R5 R1 K3 - 0x5C180000, // 0004 MOVE R6 R0 - 0x7C0C0600, // 0005 CALL R3 3 - 0x780E0003, // 0006 JMPF R3 #000B - 0x880C0303, // 0007 GETMBR R3 R1 K3 - 0x880C0600, // 0008 GETMBR R3 R3 R0 - 0x80040600, // 0009 RET 1 R3 - 0x70020003, // 000A JMP #000F - 0x600C000B, // 000B GETGBL R3 G11 - 0x58100004, // 000C LDCONST R4 K4 - 0x7C0C0200, // 000D CALL R3 1 - 0x80040600, // 000E RET 1 R3 - 0x80000000, // 000F RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(_ntv), - /* K2 */ be_nested_str_weak(event_manager), - /* K3 */ be_nested_str_weak(EventManager), - /* K4 */ be_nested_str_weak(member), - /* K5 */ be_nested_str_weak(_user_functions), - }), - be_str_weak(animation_init), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x6004000B, // 0000 GETGBL R1 G11 - 0x58080000, // 0001 LDCONST R2 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x90060200, // 0003 SETMBR R1 K1 R0 - 0x8C080103, // 0004 GETMET R2 R0 K3 - 0x7C080200, // 0005 CALL R2 1 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x84080000, // 0007 CLOSURE R2 P0 - 0x90060802, // 0008 SETMBR R1 K4 R2 - 0x60080013, // 0009 GETGBL R2 G19 - 0x7C080000, // 000A CALL R2 0 - 0x90060A02, // 000B SETMBR R1 K5 R2 - 0x80040200, // 000C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: solid -********************************************************************/ -be_local_closure(solid, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(solid), - }), - be_str_weak(solid), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040300, // 0001 GETMET R1 R1 K0 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060302, // 0004 SETMBR R1 K1 K2 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: list_user_functions -********************************************************************/ -be_local_closure(list_user_functions, /* name */ - be_nested_proto( - 6, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(user_functions), - /* K2 */ be_nested_str_weak(keys), - /* K3 */ be_nested_str_weak(push), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(list_user_functions), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x60000012, // 0000 GETGBL R0 G18 - 0x7C000000, // 0001 CALL R0 0 - 0x60040010, // 0002 GETGBL R1 G16 - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x88080501, // 0004 GETMBR R2 R2 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x7C040200, // 0007 CALL R1 1 - 0xA8020005, // 0008 EXBLK 0 #000F - 0x5C080200, // 0009 MOVE R2 R1 - 0x7C080000, // 000A CALL R2 0 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x5C140400, // 000C MOVE R5 R2 - 0x7C0C0400, // 000D CALL R3 2 - 0x7001FFF9, // 000E JMP #0009 - 0x58040004, // 000F LDCONST R1 K4 - 0xAC040200, // 0010 CATCH R1 1 0 - 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x80040000, // 0012 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: twinkle_gentle -********************************************************************/ -be_local_closure(twinkle_gentle, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(twinkle_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(density), - /* K4 */ be_nested_str_weak(twinkle_speed), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(fade_speed), - /* K7 */ be_nested_str_weak(min_brightness), - /* K8 */ be_nested_str_weak(max_brightness), - }), - be_str_weak(twinkle_gentle), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409D6FF, // 0004 LDINT R2 -10496 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A003F, // 0006 LDINT R2 64 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x90060905, // 0008 SETMBR R1 K4 K5 - 0x540A0077, // 0009 LDINT R2 120 - 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x540A000F, // 000B LDINT R2 16 - 0x90060E02, // 000C SETMBR R1 K7 R2 - 0x540A00B3, // 000D LDINT R2 180 - 0x90061002, // 000E SETMBR R1 K8 R2 - 0x80040200, // 000F RET 1 R1 - }) - ) -); -/*******************************************************************/ - // compact class 'GradientAnimation' ktab size: 45, total: 84 (saved 312 bytes) static const bvalue be_ktab_class_GradientAnimation[45] = { /* K0 */ be_nested_str_weak(update), @@ -22545,44 +17804,476 @@ be_local_class(GradientAnimation, })), be_str_weak(GradientAnimation) ); +// compact class 'IterationNumberProvider' ktab size: 4, total: 6 (saved 16 bytes) +static const bvalue be_ktab_class_IterationNumberProvider[4] = { + /* K0 */ be_nested_str_weak(engine), + /* K1 */ be_nested_str_weak(get_current_iteration_number), + /* K2 */ be_nested_str_weak(IterationNumberProvider_X28current_X3A_X20_X25s_X29), + /* K3 */ be_nested_str_weak(IterationNumberProvider_X28not_in_sequence_X29), +}; + + +extern const bclass be_class_IterationNumberProvider; /******************************************************************** -** Solidified function: pulsating_animation +** Solidified function: produce_value ********************************************************************/ -be_local_closure(pulsating_animation, /* name */ +be_local_closure(class_IterationNumberProvider_produce_value, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ + 5, /* nstack */ + 3, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(breathe_animation), - /* K2 */ be_nested_str_weak(curve_factor), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(period), - }), - be_str_weak(pulsating_animation), + &be_ktab_class_IterationNumberProvider, /* shared constants */ + be_str_weak(produce_value), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A03E7, // 0005 LDINT R2 1000 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 + ( &(const binstruction[ 4]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x80040600, // 0003 RET 1 R3 }) ) ); /*******************************************************************/ +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_IterationNumberProvider_tostring, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_IterationNumberProvider, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x4C080000, // 0003 LDNIL R2 + 0x20080202, // 0004 NE R2 R1 R2 + 0x780A0005, // 0005 JMPF R2 #000C + 0x60080018, // 0006 GETGBL R2 G24 + 0x580C0002, // 0007 LDCONST R3 K2 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x80040400, // 000A RET 1 R2 + 0x70020000, // 000B JMP #000D + 0x80060600, // 000C RET 1 K3 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: IterationNumberProvider +********************************************************************/ +extern const bclass be_class_ValueProvider; +be_local_class(IterationNumberProvider, + 0, + &be_class_ValueProvider, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(produce_value, 2), be_const_closure(class_IterationNumberProvider_produce_value_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_IterationNumberProvider_tostring_closure) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(0, + ( (struct bmapnode*) &(const bmapnode[]) { + })) ) } )) }, + })), + be_str_weak(IterationNumberProvider) +); + +extern const bclass be_class_ColorProvider; + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_ColorProvider_produce_value, /* name */ + be_nested_proto( + 4, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x540DFFFE, // 0000 LDINT R3 -1 + 0x80040600, // 0001 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_color_for_value +********************************************************************/ +be_local_closure(class_ColorProvider_get_color_for_value, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(produce_value), + /* K1 */ be_nested_str_weak(color), + }), + be_str_weak(get_color_for_value), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x58140001, // 0001 LDCONST R5 K1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x80040600, // 0004 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ColorProvider +********************************************************************/ +extern const bclass be_class_ValueProvider; +be_local_class(ColorProvider, + 0, + &be_class_ValueProvider, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorProvider_get_color_for_value_closure) }, + { be_const_key_weak(produce_value, 0), be_const_closure(class_ColorProvider_produce_value_closure) }, + })), + be_str_weak(ColorProvider) +); +// compact class 'BreatheColorProvider' ktab size: 18, total: 29 (saved 88 bytes) +static const bvalue be_ktab_class_BreatheColorProvider[18] = { + /* K0 */ be_nested_str_weak(BreatheColorProvider_X28base_color_X3D0x_X2508x_X2C_X20min_brightness_X3D_X25s_X2C_X20max_brightness_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20curve_factor_X3D_X25s_X29), + /* K1 */ be_nested_str_weak(base_color), + /* K2 */ be_nested_str_weak(min_brightness), + /* K3 */ be_nested_str_weak(max_brightness), + /* K4 */ be_nested_str_weak(duration), + /* K5 */ be_nested_str_weak(curve_factor), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(form), + /* K8 */ be_nested_str_weak(animation), + /* K9 */ be_nested_str_weak(COSINE), + /* K10 */ be_nested_str_weak(on_param_changed), + /* K11 */ be_nested_str_weak(produce_value), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(scale_uint), + /* K14 */ be_const_int(0), + /* K15 */ be_nested_str_weak(init), + /* K16 */ be_nested_str_weak(min_value), + /* K17 */ be_nested_str_weak(max_value), +}; + + +extern const bclass be_class_BreatheColorProvider; + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_BreatheColorProvider_tostring, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_BreatheColorProvider, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080000, // 0001 LDCONST R2 K0 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x88180104, // 0005 GETMBR R6 R0 K4 + 0x881C0105, // 0006 GETMBR R7 R0 K5 + 0x7C040C00, // 0007 CALL R1 6 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_BreatheColorProvider_on_param_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_BreatheColorProvider, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x1C0C0305, // 0000 EQ R3 R1 K5 + 0x780E0008, // 0001 JMPF R3 #000B + 0x1C0C0506, // 0002 EQ R3 R2 K6 + 0x780E0003, // 0003 JMPF R3 #0008 + 0xB80E1000, // 0004 GETNGBL R3 K8 + 0x880C0709, // 0005 GETMBR R3 R3 K9 + 0x90020E03, // 0006 SETMBR R0 K7 R3 + 0x70020002, // 0007 JMP #000B + 0xB80E1000, // 0008 GETNGBL R3 K8 + 0x880C0709, // 0009 GETMBR R3 R3 K9 + 0x90020E03, // 000A SETMBR R0 K7 R3 + 0x600C0003, // 000B GETGBL R3 G3 + 0x5C100000, // 000C MOVE R4 R0 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C070A, // 000E GETMET R3 R3 K10 + 0x5C140200, // 000F MOVE R5 R1 + 0x5C180400, // 0010 MOVE R6 R2 + 0x7C0C0600, // 0011 CALL R3 3 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_BreatheColorProvider_produce_value, /* name */ + be_nested_proto( + 19, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_BreatheColorProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[97]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C070B, // 0003 GETMET R3 R3 K11 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x88100105, // 0007 GETMBR R4 R0 K5 + 0x5C140600, // 0008 MOVE R5 R3 + 0x24180906, // 0009 GT R6 R4 K6 + 0x781A0019, // 000A JMPF R6 #0025 + 0xB81A1800, // 000B GETNGBL R6 K12 + 0x8C180D0D, // 000C GETMET R6 R6 K13 + 0x5C200600, // 000D MOVE R8 R3 + 0x5824000E, // 000E LDCONST R9 K14 + 0x542A00FE, // 000F LDINT R10 255 + 0x582C000E, // 0010 LDCONST R11 K14 + 0x54321FFF, // 0011 LDINT R12 8192 + 0x7C180C00, // 0012 CALL R6 6 + 0x5C1C0800, // 0013 MOVE R7 R4 + 0x24200F06, // 0014 GT R8 R7 K6 + 0x78220005, // 0015 JMPF R8 #001C + 0x08200C06, // 0016 MUL R8 R6 R6 + 0x54261FFF, // 0017 LDINT R9 8192 + 0x0C201009, // 0018 DIV R8 R8 R9 + 0x5C181000, // 0019 MOVE R6 R8 + 0x041C0F06, // 001A SUB R7 R7 K6 + 0x7001FFF7, // 001B JMP #0014 + 0xB8221800, // 001C GETNGBL R8 K12 + 0x8C20110D, // 001D GETMET R8 R8 K13 + 0x5C280C00, // 001E MOVE R10 R6 + 0x582C000E, // 001F LDCONST R11 K14 + 0x54321FFF, // 0020 LDINT R12 8192 + 0x5834000E, // 0021 LDCONST R13 K14 + 0x543A00FE, // 0022 LDINT R14 255 + 0x7C200C00, // 0023 CALL R8 6 + 0x5C141000, // 0024 MOVE R5 R8 + 0xB81A1800, // 0025 GETNGBL R6 K12 + 0x8C180D0D, // 0026 GETMET R6 R6 K13 + 0x5C200A00, // 0027 MOVE R8 R5 + 0x5824000E, // 0028 LDCONST R9 K14 + 0x542A00FE, // 0029 LDINT R10 255 + 0x882C0102, // 002A GETMBR R11 R0 K2 + 0x88300103, // 002B GETMBR R12 R0 K3 + 0x7C180C00, // 002C CALL R6 6 + 0x881C0101, // 002D GETMBR R7 R0 K1 + 0x54220017, // 002E LDINT R8 24 + 0x3C200E08, // 002F SHR R8 R7 R8 + 0x542600FE, // 0030 LDINT R9 255 + 0x2C201009, // 0031 AND R8 R8 R9 + 0x5426000F, // 0032 LDINT R9 16 + 0x3C240E09, // 0033 SHR R9 R7 R9 + 0x542A00FE, // 0034 LDINT R10 255 + 0x2C24120A, // 0035 AND R9 R9 R10 + 0x542A0007, // 0036 LDINT R10 8 + 0x3C280E0A, // 0037 SHR R10 R7 R10 + 0x542E00FE, // 0038 LDINT R11 255 + 0x2C28140B, // 0039 AND R10 R10 R11 + 0x542E00FE, // 003A LDINT R11 255 + 0x2C2C0E0B, // 003B AND R11 R7 R11 + 0xB8321800, // 003C GETNGBL R12 K12 + 0x8C30190D, // 003D GETMET R12 R12 K13 + 0x5C381200, // 003E MOVE R14 R9 + 0x583C000E, // 003F LDCONST R15 K14 + 0x544200FE, // 0040 LDINT R16 255 + 0x5844000E, // 0041 LDCONST R17 K14 + 0x5C480C00, // 0042 MOVE R18 R6 + 0x7C300C00, // 0043 CALL R12 6 + 0x5C241800, // 0044 MOVE R9 R12 + 0xB8321800, // 0045 GETNGBL R12 K12 + 0x8C30190D, // 0046 GETMET R12 R12 K13 + 0x5C381400, // 0047 MOVE R14 R10 + 0x583C000E, // 0048 LDCONST R15 K14 + 0x544200FE, // 0049 LDINT R16 255 + 0x5844000E, // 004A LDCONST R17 K14 + 0x5C480C00, // 004B MOVE R18 R6 + 0x7C300C00, // 004C CALL R12 6 + 0x5C281800, // 004D MOVE R10 R12 + 0xB8321800, // 004E GETNGBL R12 K12 + 0x8C30190D, // 004F GETMET R12 R12 K13 + 0x5C381600, // 0050 MOVE R14 R11 + 0x583C000E, // 0051 LDCONST R15 K14 + 0x544200FE, // 0052 LDINT R16 255 + 0x5844000E, // 0053 LDCONST R17 K14 + 0x5C480C00, // 0054 MOVE R18 R6 + 0x7C300C00, // 0055 CALL R12 6 + 0x5C2C1800, // 0056 MOVE R11 R12 + 0x54320017, // 0057 LDINT R12 24 + 0x3830100C, // 0058 SHL R12 R8 R12 + 0x5436000F, // 0059 LDINT R13 16 + 0x3834120D, // 005A SHL R13 R9 R13 + 0x3030180D, // 005B OR R12 R12 R13 + 0x54360007, // 005C LDINT R13 8 + 0x3834140D, // 005D SHL R13 R10 R13 + 0x3030180D, // 005E OR R12 R12 R13 + 0x3030180B, // 005F OR R12 R12 R11 + 0x80041800, // 0060 RET 1 R12 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_BreatheColorProvider_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_BreatheColorProvider, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08050F, // 0003 GETMET R2 R2 K15 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0xB80A1000, // 0006 GETNGBL R2 K8 + 0x88080509, // 0007 GETMBR R2 R2 K9 + 0x90020E02, // 0008 SETMBR R0 K7 R2 + 0x9002210E, // 0009 SETMBR R0 K16 K14 + 0x540A00FE, // 000A LDINT R2 255 + 0x90022202, // 000B SETMBR R0 K17 R2 + 0x540A0BB7, // 000C LDINT R2 3000 + 0x90020802, // 000D SETMBR R0 K4 R2 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: BreatheColorProvider +********************************************************************/ +extern const bclass be_class_OscillatorValueProvider; +be_local_class(BreatheColorProvider, + 0, + &be_class_OscillatorValueProvider, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(tostring, 1), be_const_closure(class_BreatheColorProvider_tostring_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_BreatheColorProvider_init_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_BreatheColorProvider_on_param_changed_closure) }, + { be_const_key_weak(PARAMS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(base_color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(max_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(255) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(curve_factor, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(2) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(5) }, + })) ) } )) }, + { be_const_key_weak(min_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(produce_value, -1), be_const_closure(class_BreatheColorProvider_produce_value_closure) }, + })), + be_str_weak(BreatheColorProvider) +); + /******************************************************************** ** Solidified function: pulsating_color_provider ********************************************************************/ @@ -22619,6 +18310,76 @@ be_local_closure(pulsating_color_provider, /* name */ ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: noise_fractal +********************************************************************/ +be_local_closure(noise_fractal, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(noise_animation), + /* K2 */ be_nested_str_weak(rich_palette), + /* K3 */ be_nested_str_weak(palette), + /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), + /* K5 */ be_nested_str_weak(cycle_period), + /* K6 */ be_nested_str_weak(transition_type), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(brightness), + /* K9 */ be_nested_str_weak(range_min), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(range_max), + /* K12 */ be_nested_str_weak(color), + /* K13 */ be_nested_str_weak(scale), + /* K14 */ be_nested_str_weak(speed), + /* K15 */ be_nested_str_weak(octaves), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(persistence), + }), + be_str_weak(noise_fractal), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x5C100000, // 0006 MOVE R4 R0 + 0x7C080400, // 0007 CALL R2 2 + 0xB80E0000, // 0008 GETNGBL R3 K0 + 0x880C0704, // 0009 GETMBR R3 R3 K4 + 0x900A0603, // 000A SETMBR R2 K3 R3 + 0x540E1387, // 000B LDINT R3 5000 + 0x900A0A03, // 000C SETMBR R2 K5 R3 + 0x900A0D07, // 000D SETMBR R2 K6 K7 + 0x540E00FE, // 000E LDINT R3 255 + 0x900A1003, // 000F SETMBR R2 K8 R3 + 0x900A130A, // 0010 SETMBR R2 K9 K10 + 0x540E00FE, // 0011 LDINT R3 255 + 0x900A1603, // 0012 SETMBR R2 K11 R3 + 0x90061802, // 0013 SETMBR R1 K12 R2 + 0x540E001D, // 0014 LDINT R3 30 + 0x90061A03, // 0015 SETMBR R1 K13 R3 + 0x540E0013, // 0016 LDINT R3 20 + 0x90061C03, // 0017 SETMBR R1 K14 R3 + 0x90061F10, // 0018 SETMBR R1 K15 K16 + 0x540E007F, // 0019 LDINT R3 128 + 0x90062203, // 001A SETMBR R1 K17 R3 + 0x80040200, // 001B RET 1 R1 + }) + ) +); +/*******************************************************************/ + // compact class 'ClosureValueProvider' ktab size: 7, total: 9 (saved 16 bytes) static const bvalue be_ktab_class_ClosureValueProvider[7] = { /* K0 */ be_nested_str_weak(ClosureValueProvider_X28_X25s_X29), @@ -22761,79 +18522,6 @@ be_local_class(ClosureValueProvider, be_str_weak(ClosureValueProvider) ); -extern const bclass be_class_ColorProvider; - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_ColorProvider_produce_value, /* name */ - be_nested_proto( - 4, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x540DFFFE, // 0000 LDINT R3 -1 - 0x80040600, // 0001 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_color_for_value -********************************************************************/ -be_local_closure(class_ColorProvider_get_color_for_value, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(produce_value), - /* K1 */ be_nested_str_weak(color), - }), - be_str_weak(get_color_for_value), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x58140001, // 0001 LDCONST R5 K1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x80040600, // 0004 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: ColorProvider -********************************************************************/ -extern const bclass be_class_ValueProvider; -be_local_class(ColorProvider, - 0, - &be_class_ValueProvider, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorProvider_get_color_for_value_closure) }, - { be_const_key_weak(produce_value, 0), be_const_closure(class_ColorProvider_produce_value_closure) }, - })), - be_str_weak(ColorProvider) -); - extern const bclass be_class_ValueProvider; /******************************************************************** @@ -22957,130 +18645,108 @@ be_local_closure(ease_in, /* name */ ********************************************************************/ be_local_module(animation, "animation", - be_nested_map(122, + be_nested_map(100, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ease_in, 53), be_const_closure(ease_in_closure) }, - { be_const_key_weak(VERSION, -1), be_const_int(65536) }, - { be_const_key_weak(comet_animation, 51), be_const_class(be_class_CometAnimation) }, - { be_const_key_weak(PALETTE_RAINBOW, 7), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, - { be_const_key_weak(rich_palette_animation, 83), be_const_class(be_class_RichPaletteAnimation) }, - { be_const_key_weak(value_provider, 71), be_const_class(be_class_ValueProvider) }, - { be_const_key_weak(SINE, 14), be_const_int(5) }, - { be_const_key_weak(register_user_function, 30), be_const_closure(register_user_function_closure) }, - { be_const_key_weak(breathe_color, -1), be_const_class(be_class_BreatheColorProvider) }, - { be_const_key_weak(color_provider, -1), be_const_class(be_class_ColorProvider) }, - { be_const_key_weak(closure_value, -1), be_const_class(be_class_ClosureValueProvider) }, - { be_const_key_weak(linear, -1), be_const_closure(linear_closure) }, - { be_const_key_weak(cosine_osc, -1), be_const_closure(cosine_osc_closure) }, - { be_const_key_weak(scale_grow, -1), be_const_closure(scale_grow_closure) }, - { be_const_key_weak(PALETTE_FOREST, -1), be_const_bytes_instance(0000640040228B228032CD32C09AFF9AFF90EE90) }, - { be_const_key_weak(gradient_animation, 95), be_const_class(be_class_GradientAnimation) }, - { be_const_key_weak(PALETTE_RGB, 54), be_const_bytes_instance(00FF00008000FF00FF0000FF) }, - { be_const_key_weak(triangle, 96), be_const_closure(triangle_closure) }, - { be_const_key_weak(get_user_function, -1), be_const_closure(get_user_function_closure) }, - { be_const_key_weak(wave_single_sine, -1), be_const_closure(wave_single_sine_closure) }, - { be_const_key_weak(plasma_fast, 9), be_const_closure(plasma_fast_closure) }, - { be_const_key_weak(list_user_functions, -1), be_const_closure(list_user_functions_closure) }, - { be_const_key_weak(solid, 109), be_const_closure(solid_closure) }, - { be_const_key_weak(breathe_animation, 114), be_const_class(be_class_BreatheAnimation) }, - { be_const_key_weak(plasma_rainbow, -1), be_const_closure(plasma_rainbow_closure) }, - { be_const_key_weak(sparkle_white, 106), be_const_closure(sparkle_white_closure) }, - { be_const_key_weak(ease_out, -1), be_const_closure(ease_out_closure) }, - { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, - { be_const_key_weak(ELASTIC, -1), be_const_int(8) }, - { be_const_key_weak(create_closure_value, -1), be_const_closure(create_closure_value_closure) }, - { be_const_key_weak(wave_animation, 112), be_const_class(be_class_WaveAnimation) }, - { be_const_key_weak(clear_all_event_handlers, -1), be_const_closure(clear_all_event_handlers_closure) }, - { be_const_key_weak(shift_scroll_left, 40), be_const_closure(shift_scroll_left_closure) }, - { be_const_key_weak(bounce_constrained, -1), be_const_closure(bounce_constrained_closure) }, - { be_const_key_weak(plasma_animation, -1), be_const_class(be_class_PlasmaAnimation) }, - { be_const_key_weak(SAWTOOTH, -1), be_const_int(1) }, - { be_const_key_weak(noise_animation, -1), be_const_class(be_class_NoiseAnimation) }, - { be_const_key_weak(jitter_position, 31), be_const_closure(jitter_position_closure) }, - { be_const_key_weak(scale_static, 12), be_const_closure(scale_static_closure) }, - { be_const_key_weak(unregister_event_handler, -1), be_const_closure(unregister_event_handler_closure) }, - { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, - { be_const_key_weak(static_value, -1), be_const_class(be_class_StaticValueProvider) }, - { be_const_key_weak(PALETTE_SUNSET_TICKS, 15), be_const_bytes_instance(28FF450028FF8C0028FFD70028FF69B4288000802819197000000080) }, - { be_const_key_weak(wave_custom, 76), be_const_closure(wave_custom_closure) }, - { be_const_key_weak(gradient_rainbow_linear, 43), be_const_closure(gradient_rainbow_linear_closure) }, - { be_const_key_weak(ramp, -1), be_const_closure(ramp_closure) }, - { be_const_key_weak(TRIANGLE, -1), be_const_int(2) }, - { be_const_key_weak(scale_animation, -1), be_const_class(be_class_ScaleAnimation) }, - { be_const_key_weak(noise_single_color, 52), be_const_closure(noise_single_color_closure) }, - { be_const_key_weak(oscillator_value, 32), be_const_class(be_class_OscillatorValueProvider) }, - { be_const_key_weak(twinkle_animation, -1), be_const_class(be_class_TwinkleAnimation) }, - { be_const_key_weak(elastic, -1), be_const_closure(elastic_closure) }, - { be_const_key_weak(EASE_OUT, -1), be_const_int(7) }, - { be_const_key_weak(resolve, 57), be_const_closure(animation_resolve_closure) }, - { be_const_key_weak(parameterized_object, 11), be_const_class(be_class_ParameterizedObject) }, - { be_const_key_weak(jitter_color, -1), be_const_closure(jitter_color_closure) }, - { be_const_key_weak(animation_engine, -1), be_const_class(be_class_AnimationEngine) }, - { be_const_key_weak(noise_fractal, -1), be_const_closure(noise_fractal_closure) }, - { be_const_key_weak(twinkle_intense, 103), be_const_closure(twinkle_intense_closure) }, - { be_const_key_weak(beacon_animation, -1), be_const_class(be_class_BeaconAnimation) }, - { be_const_key_weak(is_user_function, -1), be_const_closure(is_user_function_closure) }, - { be_const_key_weak(is_color_provider, 67), be_const_closure(is_color_provider_closure) }, - { be_const_key_weak(twinkle_classic, 85), be_const_closure(twinkle_classic_closure) }, - { be_const_key_weak(wave_rainbow_sine, -1), be_const_closure(wave_rainbow_sine_closure) }, - { be_const_key_weak(bounce_basic, 24), be_const_closure(bounce_basic_closure) }, - { be_const_key_weak(BOUNCE, -1), be_const_int(9) }, - { be_const_key_weak(get_registered_events, -1), be_const_closure(get_registered_events_closure) }, - { be_const_key_weak(animation, -1), be_const_class(be_class_Animation) }, - { be_const_key_weak(SQUARE, 22), be_const_int(3) }, - { be_const_key_weak(color_cycle, -1), be_const_class(be_class_ColorCycleColorProvider) }, - { be_const_key_weak(rich_palette_rainbow, -1), be_const_closure(rich_palette_rainbow_closure) }, - { be_const_key_weak(event_handler, -1), be_const_class(be_class_EventHandler) }, - { be_const_key_weak(fire_animation, 104), be_const_class(be_class_FireAnimation) }, - { be_const_key_weak(pulsating_animation, -1), be_const_closure(pulsating_animation_closure) }, - { be_const_key_weak(palette_pattern_animation, 35), be_const_class(be_class_PalettePatternAnimation) }, - { be_const_key_weak(crenel_position_animation, -1), be_const_class(be_class_CrenelPositionAnimation) }, - { be_const_key_weak(get_event_handlers, -1), be_const_closure(get_event_handlers_closure) }, - { be_const_key_weak(PALETTE_FIRE, 19), be_const_bytes_instance(000000004080000080FF0000C0FF8000FFFFFF00) }, - { be_const_key_weak(sawtooth, 34), be_const_closure(sawtooth_closure) }, - { be_const_key_weak(frame_buffer, -1), be_const_class(be_class_FrameBuffer) }, - { be_const_key_weak(noise_rainbow, -1), be_const_closure(noise_rainbow_closure) }, - { be_const_key_weak(square, -1), be_const_closure(square_closure) }, - { be_const_key_weak(shift_scroll_right, 89), be_const_closure(shift_scroll_right_closure) }, - { be_const_key_weak(palette_gradient_animation, -1), be_const_class(be_class_PaletteGradientAnimation) }, - { be_const_key_weak(gradient_two_color_linear, -1), be_const_closure(gradient_two_color_linear_closure) }, - { be_const_key_weak(create_engine, 105), be_const_closure(create_engine_closure) }, - { be_const_key_weak(init_strip, 59), be_const_closure(animation_init_strip_closure) }, - { be_const_key_weak(smooth, -1), be_const_closure(smooth_closure) }, - { be_const_key_weak(sparkle_rainbow, -1), be_const_closure(sparkle_rainbow_closure) }, - { be_const_key_weak(twinkle_rainbow, 81), be_const_closure(twinkle_rainbow_closure) }, - { be_const_key_weak(scale_oscillate, -1), be_const_closure(scale_oscillate_closure) }, - { be_const_key_weak(bounce, -1), be_const_closure(bounce_closure) }, - { be_const_key_weak(sparkle_animation, 107), be_const_class(be_class_SparkleAnimation) }, - { be_const_key_weak(jitter_all, 45), be_const_closure(jitter_all_closure) }, - { be_const_key_weak(_math, 5), be_const_class(be_class_AnimationMath) }, - { be_const_key_weak(register_event_handler, -1), be_const_closure(register_event_handler_closure) }, - { be_const_key_weak(is_value_provider, -1), be_const_closure(is_value_provider_closure) }, - { be_const_key_weak(version_string, -1), be_const_closure(animation_version_string_closure) }, - { be_const_key_weak(pulsating_color, -1), be_const_closure(pulsating_color_provider_closure) }, - { be_const_key_weak(set_event_active, -1), be_const_closure(set_event_active_closure) }, - { be_const_key_weak(COSINE, -1), be_const_int(4) }, - { be_const_key_weak(sine_osc, -1), be_const_closure(sine_osc_closure) }, - { be_const_key_weak(LINEAR, 101), be_const_int(1) }, - { be_const_key_weak(shift_fast_scroll, -1), be_const_closure(shift_fast_scroll_closure) }, - { be_const_key_weak(gradient_rainbow_radial, -1), be_const_closure(gradient_rainbow_radial_closure) }, - { be_const_key_weak(shift_animation, 116), be_const_class(be_class_ShiftAnimation) }, - { be_const_key_weak(static_color, -1), be_const_class(be_class_StaticColorProvider) }, - { be_const_key_weak(bounce_animation, 33), be_const_class(be_class_BounceAnimation) }, - { be_const_key_weak(composite_color, -1), be_const_class(be_class_CompositeColorProvider) }, - { be_const_key_weak(bounce_gravity, 47), be_const_closure(bounce_gravity_closure) }, - { be_const_key_weak(strip_length, 10), be_const_class(be_class_StripLengthProvider) }, - { be_const_key_weak(palette_wave_animation, 0), be_const_class(be_class_PaletteWaveAnimation) }, - { be_const_key_weak(SequenceManager, -1), be_const_class(be_class_SequenceManager) }, - { be_const_key_weak(jitter_brightness, -1), be_const_closure(jitter_brightness_closure) }, + { be_const_key_weak(ease_in, -1), be_const_closure(ease_in_closure) }, { be_const_key_weak(PALETTE_OCEAN, -1), be_const_bytes_instance(00000080400000FF8000FFFFC000FF80FF008000) }, - { be_const_key_weak(palette_meter_animation, 21), be_const_class(be_class_PaletteMeterAnimation) }, - { be_const_key_weak(jitter_animation, -1), be_const_class(be_class_JitterAnimation) }, - { be_const_key_weak(twinkle_gentle, -1), be_const_closure(twinkle_gentle_closure) }, + { be_const_key_weak(noise_single_color, 61), be_const_closure(noise_single_color_closure) }, + { be_const_key_weak(register_user_function, -1), be_const_closure(register_user_function_closure) }, + { be_const_key_weak(register_event_handler, 31), be_const_closure(register_event_handler_closure) }, + { be_const_key_weak(animation, -1), be_const_class(be_class_Animation) }, + { be_const_key_weak(comet_animation, 19), be_const_class(be_class_CometAnimation) }, + { be_const_key_weak(clear_all_event_handlers, 18), be_const_closure(clear_all_event_handlers_closure) }, + { be_const_key_weak(BOUNCE, -1), be_const_int(9) }, + { be_const_key_weak(closure_value, -1), be_const_class(be_class_ClosureValueProvider) }, + { be_const_key_weak(gradient_rainbow_radial, 90), be_const_closure(gradient_rainbow_radial_closure) }, + { be_const_key_weak(list_user_functions, -1), be_const_closure(list_user_functions_closure) }, + { be_const_key_weak(get_user_function, 45), be_const_closure(get_user_function_closure) }, + { be_const_key_weak(wave_animation, -1), be_const_class(be_class_WaveAnimation) }, + { be_const_key_weak(COSINE, -1), be_const_int(4) }, + { be_const_key_weak(set_event_active, 69), be_const_closure(set_event_active_closure) }, + { be_const_key_weak(noise_rainbow, 23), be_const_closure(noise_rainbow_closure) }, + { be_const_key_weak(crenel_position_animation, -1), be_const_class(be_class_CrenelPositionAnimation) }, + { be_const_key_weak(noise_fractal, 3), be_const_closure(noise_fractal_closure) }, + { be_const_key_weak(pulsating_color, 39), be_const_closure(pulsating_color_provider_closure) }, + { be_const_key_weak(SINE, 77), be_const_int(5) }, + { be_const_key_weak(trigger_event, -1), be_const_closure(trigger_event_closure) }, + { be_const_key_weak(PALETTE_SUNSET_TICKS, 37), be_const_bytes_instance(28FF450028FF8C0028FFD70028FF69B4288000802819197000000080) }, + { be_const_key_weak(PALETTE_FOREST, 42), be_const_bytes_instance(0000640040228B228032CD32C09AFF9AFF90EE90) }, + { be_const_key_weak(gradient_animation, -1), be_const_class(be_class_GradientAnimation) }, + { be_const_key_weak(frame_buffer, -1), be_const_class(be_class_FrameBuffer) }, + { be_const_key_weak(SQUARE, -1), be_const_int(3) }, + { be_const_key_weak(static_color, -1), be_const_class(be_class_StaticColorProvider) }, + { be_const_key_weak(composite_color, 86), be_const_class(be_class_CompositeColorProvider) }, + { be_const_key_weak(color_provider, 21), be_const_class(be_class_ColorProvider) }, + { be_const_key_weak(iteration_number, -1), be_const_class(be_class_IterationNumberProvider) }, + { be_const_key_weak(parameterized_object, 64), be_const_class(be_class_ParameterizedObject) }, + { be_const_key_weak(ELASTIC, 29), be_const_int(8) }, + { be_const_key_weak(TRIANGLE, 38), be_const_int(2) }, + { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, + { be_const_key_weak(breathe_animation, 0), be_const_class(be_class_BreatheAnimation) }, + { be_const_key_weak(PALETTE_RGB, -1), be_const_bytes_instance(00FF00008000FF00FF0000FF) }, + { be_const_key_weak(twinkle_animation, 75), be_const_class(be_class_TwinkleAnimation) }, + { be_const_key_weak(create_closure_value, -1), be_const_closure(create_closure_value_closure) }, + { be_const_key_weak(strip_length, -1), be_const_class(be_class_StripLengthProvider) }, + { be_const_key_weak(gradient_two_color_linear, -1), be_const_closure(gradient_two_color_linear_closure) }, + { be_const_key_weak(palette_wave_animation, -1), be_const_class(be_class_PaletteWaveAnimation) }, + { be_const_key_weak(event_handler, -1), be_const_class(be_class_EventHandler) }, + { be_const_key_weak(smooth, -1), be_const_closure(smooth_closure) }, + { be_const_key_weak(sawtooth, 89), be_const_closure(sawtooth_closure) }, + { be_const_key_weak(solid, 87), be_const_closure(solid_closure) }, + { be_const_key_weak(rich_palette_rainbow, -1), be_const_closure(rich_palette_rainbow_closure) }, + { be_const_key_weak(rich_palette, 97), be_const_class(be_class_RichPaletteColorProvider) }, + { be_const_key_weak(beacon_animation, -1), be_const_class(be_class_BeaconAnimation) }, + { be_const_key_weak(get_event_handlers, -1), be_const_closure(get_event_handlers_closure) }, + { be_const_key_weak(cosine_osc, -1), be_const_closure(cosine_osc_closure) }, + { be_const_key_weak(SequenceManager, 67), be_const_class(be_class_SequenceManager) }, + { be_const_key_weak(twinkle_classic, -1), be_const_closure(twinkle_classic_closure) }, + { be_const_key_weak(bounce, 91), be_const_closure(bounce_closure) }, + { be_const_key_weak(rich_palette_animation, -1), be_const_class(be_class_RichPaletteAnimation) }, + { be_const_key_weak(wave_single_sine, 34), be_const_closure(wave_single_sine_closure) }, + { be_const_key_weak(SAWTOOTH, -1), be_const_int(1) }, + { be_const_key_weak(color_cycle, 85), be_const_class(be_class_ColorCycleColorProvider) }, { be_const_key_weak(EventManager, -1), be_const_class(be_class_EventManager) }, - { be_const_key_weak(twinkle_solid, 46), be_const_closure(twinkle_solid_closure) }, - { be_const_key_weak(trigger_event, 48), be_const_closure(trigger_event_closure) }, - { be_const_key_weak(rich_palette, -1), be_const_class(be_class_RichPaletteColorProvider) }, + { be_const_key_weak(wave_rainbow_sine, -1), be_const_closure(wave_rainbow_sine_closure) }, + { be_const_key_weak(ease_out, -1), be_const_closure(ease_out_closure) }, + { be_const_key_weak(wave_custom, -1), be_const_closure(wave_custom_closure) }, + { be_const_key_weak(twinkle_intense, 94), be_const_closure(twinkle_intense_closure) }, + { be_const_key_weak(ramp, 70), be_const_closure(ramp_closure) }, + { be_const_key_weak(get_registered_events, -1), be_const_closure(get_registered_events_closure) }, + { be_const_key_weak(triangle, 71), be_const_closure(triangle_closure) }, + { be_const_key_weak(VERSION, -1), be_const_int(65536) }, + { be_const_key_weak(is_color_provider, 66), be_const_closure(is_color_provider_closure) }, + { be_const_key_weak(noise_animation, -1), be_const_class(be_class_NoiseAnimation) }, + { be_const_key_weak(twinkle_solid, -1), be_const_closure(twinkle_solid_closure) }, + { be_const_key_weak(PALETTE_RAINBOW, -1), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, + { be_const_key_weak(version_string, -1), be_const_closure(animation_version_string_closure) }, + { be_const_key_weak(LINEAR, 49), be_const_int(1) }, + { be_const_key_weak(PALETTE_FIRE, 63), be_const_bytes_instance(000000004080000080FF0000C0FF8000FFFFFF00) }, + { be_const_key_weak(value_provider, -1), be_const_class(be_class_ValueProvider) }, + { be_const_key_weak(is_user_function, -1), be_const_closure(is_user_function_closure) }, + { be_const_key_weak(palette_pattern_animation, -1), be_const_class(be_class_PalettePatternAnimation) }, + { be_const_key_weak(elastic, -1), be_const_closure(elastic_closure) }, + { be_const_key_weak(twinkle_rainbow, -1), be_const_closure(twinkle_rainbow_closure) }, + { be_const_key_weak(pulsating_animation, -1), be_const_closure(pulsating_animation_closure) }, + { be_const_key_weak(EASE_OUT, -1), be_const_int(7) }, + { be_const_key_weak(static_value, 8), be_const_class(be_class_StaticValueProvider) }, + { be_const_key_weak(sine_osc, -1), be_const_closure(sine_osc_closure) }, + { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, + { be_const_key_weak(_math, -1), be_const_class(be_class_AnimationMath) }, + { be_const_key_weak(twinkle_gentle, -1), be_const_closure(twinkle_gentle_closure) }, + { be_const_key_weak(palette_gradient_animation, 82), be_const_class(be_class_PaletteGradientAnimation) }, + { be_const_key_weak(create_engine, -1), be_const_closure(create_engine_closure) }, + { be_const_key_weak(linear, -1), be_const_closure(linear_closure) }, + { be_const_key_weak(gradient_rainbow_linear, -1), be_const_closure(gradient_rainbow_linear_closure) }, + { be_const_key_weak(square, -1), be_const_closure(square_closure) }, + { be_const_key_weak(is_value_provider, -1), be_const_closure(is_value_provider_closure) }, + { be_const_key_weak(animation_engine, 9), be_const_class(be_class_AnimationEngine) }, + { be_const_key_weak(oscillator_value, -1), be_const_class(be_class_OscillatorValueProvider) }, + { be_const_key_weak(init_strip, -1), be_const_closure(animation_init_strip_closure) }, + { be_const_key_weak(palette_meter_animation, -1), be_const_class(be_class_PaletteMeterAnimation) }, + { be_const_key_weak(fire_animation, 30), be_const_class(be_class_FireAnimation) }, + { be_const_key_weak(unregister_event_handler, -1), be_const_closure(unregister_event_handler_closure) }, + { be_const_key_weak(breathe_color, -1), be_const_class(be_class_BreatheColorProvider) }, + { be_const_key_weak(resolve, -1), be_const_closure(animation_resolve_closure) }, })) ); BE_EXPORT_VARIABLE be_define_const_native_module(animation); diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h index 2d6b8ac33..4d8d2712d 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h @@ -3,6 +3,519 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" +extern const bclass be_class_ExpressionResult; +// compact class 'ExpressionResult' ktab size: 13, total: 38 (saved 200 bytes) +static const bvalue be_ktab_class_ExpressionResult[13] = { + /* K0 */ be_nested_str_weak(instance_for_validation), + /* K1 */ be_nested_str_weak(instance_X3D_X25s), + /* K2 */ be_nested_str_weak(instance_X3Dnil), + /* K3 */ be_nested_str_weak(ExpressionResult_X28expr_X3D_X27_X25s_X27_X2C_X20funcs_X3D_X25s_X2C_X20vars_X3D_X25s_X2C_X20props_X3D_X25s_X2C_X20comp_X3D_X25s_X2C_X20type_X3D_X25s_X2C_X20_X25s_X29), + /* K4 */ be_nested_str_weak(expr), + /* K5 */ be_nested_str_weak(has_functions), + /* K6 */ be_nested_str_weak(has_variables), + /* K7 */ be_nested_str_weak(has_properties), + /* K8 */ be_nested_str_weak(has_computation), + /* K9 */ be_nested_str_weak(return_type), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(variable), + /* K12 */ be_const_class(be_class_ExpressionResult), +}; + + +extern const bclass be_class_ExpressionResult; + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_ExpressionResult_tostring, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060006, // 0003 JMPF R1 #000B + 0x60040018, // 0004 GETGBL R1 G24 + 0x58080001, // 0005 LDCONST R2 K1 + 0x600C0005, // 0006 GETGBL R3 G5 + 0x88100100, // 0007 GETMBR R4 R0 K0 + 0x7C0C0200, // 0008 CALL R3 1 + 0x7C040400, // 0009 CALL R1 2 + 0x70020000, // 000A JMP #000C + 0x58040002, // 000B LDCONST R1 K2 + 0x60080018, // 000C GETGBL R2 G24 + 0x580C0003, // 000D LDCONST R3 K3 + 0x88100104, // 000E GETMBR R4 R0 K4 + 0x88140105, // 000F GETMBR R5 R0 K5 + 0x88180106, // 0010 GETMBR R6 R0 K6 + 0x881C0107, // 0011 GETMBR R7 R0 K7 + 0x88200108, // 0012 GETMBR R8 R0 K8 + 0x88240109, // 0013 GETMBR R9 R0 K9 + 0x5C280200, // 0014 MOVE R10 R1 + 0x7C081000, // 0015 CALL R2 8 + 0x80040400, // 0016 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_ExpressionResult_init, /* name */ + be_nested_proto( + 10, /* nstack */ + 8, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x4C200000, // 0000 LDNIL R8 + 0x20200208, // 0001 NE R8 R1 R8 + 0x78220001, // 0002 JMPF R8 #0005 + 0x5C200200, // 0003 MOVE R8 R1 + 0x70020000, // 0004 JMP #0006 + 0x5820000A, // 0005 LDCONST R8 K10 + 0x90020808, // 0006 SETMBR R0 K4 R8 + 0x60200017, // 0007 GETGBL R8 G23 + 0x5C240400, // 0008 MOVE R9 R2 + 0x7C200200, // 0009 CALL R8 1 + 0x90020A08, // 000A SETMBR R0 K5 R8 + 0x60200017, // 000B GETGBL R8 G23 + 0x5C240600, // 000C MOVE R9 R3 + 0x7C200200, // 000D CALL R8 1 + 0x90020C08, // 000E SETMBR R0 K6 R8 + 0x60200017, // 000F GETGBL R8 G23 + 0x5C240800, // 0010 MOVE R9 R4 + 0x7C200200, // 0011 CALL R8 1 + 0x90020E08, // 0012 SETMBR R0 K7 R8 + 0x60200017, // 0013 GETGBL R8 G23 + 0x5C240A00, // 0014 MOVE R9 R5 + 0x7C200200, // 0015 CALL R8 1 + 0x90021008, // 0016 SETMBR R0 K8 R8 + 0x4C200000, // 0017 LDNIL R8 + 0x20200C08, // 0018 NE R8 R6 R8 + 0x78220001, // 0019 JMPF R8 #001C + 0x5C200C00, // 001A MOVE R8 R6 + 0x70020000, // 001B JMP #001D + 0x5820000B, // 001C LDCONST R8 K11 + 0x90021208, // 001D SETMBR R0 K9 R8 + 0x90020007, // 001E SETMBR R0 K0 R7 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: needs_function +********************************************************************/ +be_local_closure(class_ExpressionResult_needs_function, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(needs_function), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88040105, // 0000 GETMBR R1 R0 K5 + 0x74060004, // 0001 JMPT R1 #0007 + 0x88040106, // 0002 GETMBR R1 R0 K6 + 0x74060002, // 0003 JMPT R1 #0007 + 0x88040107, // 0004 GETMBR R1 R0 K7 + 0x74060000, // 0005 JMPT R1 #0007 + 0x50040001, // 0006 LDBOOL R1 0 1 + 0x50040200, // 0007 LDBOOL R1 1 0 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: constructor_call +********************************************************************/ +be_local_closure(class_ExpressionResult_constructor_call, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(constructor_call), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x580C000C, // 0000 LDCONST R3 K12 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x50180200, // 0003 LDBOOL R6 1 0 + 0x501C0000, // 0004 LDBOOL R7 0 0 + 0x50200000, // 0005 LDBOOL R8 0 0 + 0x50240000, // 0006 LDBOOL R9 0 0 + 0x5C280200, // 0007 MOVE R10 R1 + 0x5C2C0400, // 0008 MOVE R11 R2 + 0x7C100E00, // 0009 CALL R4 7 + 0x80040800, // 000A RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: variable_ref +********************************************************************/ +be_local_closure(class_ExpressionResult_variable_ref, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(variable_ref), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x580C000C, // 0000 LDCONST R3 K12 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x501C0200, // 0004 LDBOOL R7 1 0 + 0x50200000, // 0005 LDBOOL R8 0 0 + 0x50240000, // 0006 LDBOOL R9 0 0 + 0x5C280200, // 0007 MOVE R10 R1 + 0x5C2C0400, // 0008 MOVE R11 R2 + 0x7C100E00, // 0009 CALL R4 7 + 0x80040800, // 000A RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: combine +********************************************************************/ +be_local_closure(class_ExpressionResult_combine, /* name */ + be_nested_proto( + 17, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(combine), + &be_const_str_solidified, + ( &(const binstruction[104]) { /* code */ + 0x580C000C, // 0000 LDCONST R3 K12 + 0x50100000, // 0001 LDBOOL R4 0 0 + 0x50140000, // 0002 LDBOOL R5 0 0 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x501C0200, // 0004 LDBOOL R7 1 0 + 0x5820000B, // 0005 LDCONST R8 K11 + 0x4C240000, // 0006 LDNIL R9 + 0x20240209, // 0007 NE R9 R1 R9 + 0x78260017, // 0008 JMPF R9 #0021 + 0x74120002, // 0009 JMPT R4 #000D + 0x88240305, // 000A GETMBR R9 R1 K5 + 0x74260000, // 000B JMPT R9 #000D + 0x50240001, // 000C LDBOOL R9 0 1 + 0x50240200, // 000D LDBOOL R9 1 0 + 0x5C101200, // 000E MOVE R4 R9 + 0x74160002, // 000F JMPT R5 #0013 + 0x88240306, // 0010 GETMBR R9 R1 K6 + 0x74260000, // 0011 JMPT R9 #0013 + 0x50240001, // 0012 LDBOOL R9 0 1 + 0x50240200, // 0013 LDBOOL R9 1 0 + 0x5C141200, // 0014 MOVE R5 R9 + 0x741A0002, // 0015 JMPT R6 #0019 + 0x88240307, // 0016 GETMBR R9 R1 K7 + 0x74260000, // 0017 JMPT R9 #0019 + 0x50240001, // 0018 LDBOOL R9 0 1 + 0x50240200, // 0019 LDBOOL R9 1 0 + 0x5C181200, // 001A MOVE R6 R9 + 0x741E0002, // 001B JMPT R7 #001F + 0x88240308, // 001C GETMBR R9 R1 K8 + 0x74260000, // 001D JMPT R9 #001F + 0x50240001, // 001E LDBOOL R9 0 1 + 0x50240200, // 001F LDBOOL R9 1 0 + 0x5C1C1200, // 0020 MOVE R7 R9 + 0x4C240000, // 0021 LDNIL R9 + 0x20240409, // 0022 NE R9 R2 R9 + 0x78260017, // 0023 JMPF R9 #003C + 0x74120002, // 0024 JMPT R4 #0028 + 0x88240505, // 0025 GETMBR R9 R2 K5 + 0x74260000, // 0026 JMPT R9 #0028 + 0x50240001, // 0027 LDBOOL R9 0 1 + 0x50240200, // 0028 LDBOOL R9 1 0 + 0x5C101200, // 0029 MOVE R4 R9 + 0x74160002, // 002A JMPT R5 #002E + 0x88240506, // 002B GETMBR R9 R2 K6 + 0x74260000, // 002C JMPT R9 #002E + 0x50240001, // 002D LDBOOL R9 0 1 + 0x50240200, // 002E LDBOOL R9 1 0 + 0x5C141200, // 002F MOVE R5 R9 + 0x741A0002, // 0030 JMPT R6 #0034 + 0x88240507, // 0031 GETMBR R9 R2 K7 + 0x74260000, // 0032 JMPT R9 #0034 + 0x50240001, // 0033 LDBOOL R9 0 1 + 0x50240200, // 0034 LDBOOL R9 1 0 + 0x5C181200, // 0035 MOVE R6 R9 + 0x741E0002, // 0036 JMPT R7 #003A + 0x88240508, // 0037 GETMBR R9 R2 K8 + 0x74260000, // 0038 JMPT R9 #003A + 0x50240001, // 0039 LDBOOL R9 0 1 + 0x50240200, // 003A LDBOOL R9 1 0 + 0x5C1C1200, // 003B MOVE R7 R9 + 0x4C240000, // 003C LDNIL R9 + 0x20240209, // 003D NE R9 R1 R9 + 0x7826000D, // 003E JMPF R9 #004D + 0x4C240000, // 003F LDNIL R9 + 0x20240409, // 0040 NE R9 R2 R9 + 0x7826000A, // 0041 JMPF R9 #004D + 0x88240309, // 0042 GETMBR R9 R1 K9 + 0x88280509, // 0043 GETMBR R10 R2 K9 + 0x1C24120A, // 0044 EQ R9 R9 R10 + 0x78260004, // 0045 JMPF R9 #004B + 0x88240309, // 0046 GETMBR R9 R1 K9 + 0x2024130B, // 0047 NE R9 R9 K11 + 0x78260001, // 0048 JMPF R9 #004B + 0x88200309, // 0049 GETMBR R8 R1 K9 + 0x70020000, // 004A JMP #004C + 0x5820000B, // 004B LDCONST R8 K11 + 0x70020010, // 004C JMP #005E + 0x4C240000, // 004D LDNIL R9 + 0x20240209, // 004E NE R9 R1 R9 + 0x78260005, // 004F JMPF R9 #0056 + 0x781E0001, // 0050 JMPF R7 #0053 + 0x5824000B, // 0051 LDCONST R9 K11 + 0x70020000, // 0052 JMP #0054 + 0x88240309, // 0053 GETMBR R9 R1 K9 + 0x5C201200, // 0054 MOVE R8 R9 + 0x70020007, // 0055 JMP #005E + 0x4C240000, // 0056 LDNIL R9 + 0x20240409, // 0057 NE R9 R2 R9 + 0x78260004, // 0058 JMPF R9 #005E + 0x781E0001, // 0059 JMPF R7 #005C + 0x5824000B, // 005A LDCONST R9 K11 + 0x70020000, // 005B JMP #005D + 0x88240509, // 005C GETMBR R9 R2 K9 + 0x5C201200, // 005D MOVE R8 R9 + 0x5C240600, // 005E MOVE R9 R3 + 0x5C280000, // 005F MOVE R10 R0 + 0x5C2C0800, // 0060 MOVE R11 R4 + 0x5C300A00, // 0061 MOVE R12 R5 + 0x5C340C00, // 0062 MOVE R13 R6 + 0x5C380E00, // 0063 MOVE R14 R7 + 0x5C3C1000, // 0064 MOVE R15 R8 + 0x4C400000, // 0065 LDNIL R16 + 0x7C240E00, // 0066 CALL R9 7 + 0x80041200, // 0067 RET 1 R9 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: property_access +********************************************************************/ +be_local_closure(class_ExpressionResult_property_access, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(property_access), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x580C000C, // 0000 LDCONST R3 K12 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x501C0000, // 0004 LDBOOL R7 0 0 + 0x50200200, // 0005 LDBOOL R8 1 0 + 0x50240000, // 0006 LDBOOL R9 0 0 + 0x5C280200, // 0007 MOVE R10 R1 + 0x5C2C0400, // 0008 MOVE R11 R2 + 0x7C100E00, // 0009 CALL R4 7 + 0x80040800, // 000A RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: function_call +********************************************************************/ +be_local_closure(class_ExpressionResult_function_call, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(function_call), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x580C000C, // 0000 LDCONST R3 K12 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x50180200, // 0003 LDBOOL R6 1 0 + 0x501C0000, // 0004 LDBOOL R7 0 0 + 0x50200000, // 0005 LDBOOL R8 0 0 + 0x50240200, // 0006 LDBOOL R9 1 0 + 0x5C280200, // 0007 MOVE R10 R1 + 0x5C2C0400, // 0008 MOVE R11 R2 + 0x7C100E00, // 0009 CALL R4 7 + 0x80040800, // 000A RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: needs_closure +********************************************************************/ +be_local_closure(class_ExpressionResult_needs_closure, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(needs_closure), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x78060005, // 0001 JMPF R1 #0008 + 0x88040105, // 0002 GETMBR R1 R0 K5 + 0x74060004, // 0003 JMPT R1 #0009 + 0x88040106, // 0004 GETMBR R1 R0 K6 + 0x74060002, // 0005 JMPT R1 #0009 + 0x88040107, // 0006 GETMBR R1 R0 K7 + 0x74060000, // 0007 JMPT R1 #0009 + 0x50040001, // 0008 LDBOOL R1 0 1 + 0x50040200, // 0009 LDBOOL R1 1 0 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: literal +********************************************************************/ +be_local_closure(class_ExpressionResult_literal, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(literal), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x580C000C, // 0000 LDCONST R3 K12 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x501C0000, // 0004 LDBOOL R7 0 0 + 0x50200000, // 0005 LDBOOL R8 0 0 + 0x50240000, // 0006 LDBOOL R9 0 0 + 0x5C280200, // 0007 MOVE R10 R1 + 0x5C2C0400, // 0008 MOVE R11 R2 + 0x7C100E00, // 0009 CALL R4 7 + 0x80040800, // 000A RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ExpressionResult +********************************************************************/ +be_local_class(ExpressionResult, + 7, + NULL, + be_nested_map(17, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(return_type, -1), be_const_var(5) }, + { be_const_key_weak(literal, 4), be_const_static_closure(class_ExpressionResult_literal_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_ExpressionResult_tostring_closure) }, + { be_const_key_weak(expr, -1), be_const_var(0) }, + { be_const_key_weak(needs_closure, 9), be_const_closure(class_ExpressionResult_needs_closure_closure) }, + { be_const_key_weak(needs_function, -1), be_const_closure(class_ExpressionResult_needs_function_closure) }, + { be_const_key_weak(has_properties, 10), be_const_var(3) }, + { be_const_key_weak(constructor_call, -1), be_const_static_closure(class_ExpressionResult_constructor_call_closure) }, + { be_const_key_weak(has_computation, 16), be_const_var(4) }, + { be_const_key_weak(variable_ref, -1), be_const_static_closure(class_ExpressionResult_variable_ref_closure) }, + { be_const_key_weak(combine, -1), be_const_static_closure(class_ExpressionResult_combine_closure) }, + { be_const_key_weak(property_access, -1), be_const_static_closure(class_ExpressionResult_property_access_closure) }, + { be_const_key_weak(instance_for_validation, 11), be_const_var(6) }, + { be_const_key_weak(function_call, -1), be_const_static_closure(class_ExpressionResult_function_call_closure) }, + { be_const_key_weak(has_variables, -1), be_const_var(2) }, + { be_const_key_weak(init, 1), be_const_closure(class_ExpressionResult_init_closure) }, + { be_const_key_weak(has_functions, -1), be_const_var(1) }, + })), + be_str_weak(ExpressionResult) +); // compact class 'DSLRuntime' ktab size: 26, total: 45 (saved 152 bytes) static const bvalue be_ktab_class_DSLRuntime[26] = { /* K0 */ be_const_int(0), @@ -533,12 +1046,12 @@ be_local_closure(create_runtime, /* name */ /******************************************************************** -** Solidified function: is_keyword +** Solidified function: create_dsl_runtime ********************************************************************/ -be_local_closure(is_keyword, /* name */ +be_local_closure(create_dsl_runtime, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 2, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -546,33 +1059,24 @@ be_local_closure(is_keyword, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(Token), - /* K2 */ be_nested_str_weak(keywords), - /* K3 */ be_nested_str_weak(stop_iteration), + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(create_engine), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(DSLRuntime), }), - be_str_weak(is_keyword), + be_str_weak(create_dsl_runtime), &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0xB80A0000, // 0001 GETNGBL R2 K0 - 0x88080501, // 0002 GETMBR R2 R2 K1 - 0x88080502, // 0003 GETMBR R2 R2 K2 - 0x7C040200, // 0004 CALL R1 1 - 0xA8020007, // 0005 EXBLK 0 #000E - 0x5C080200, // 0006 MOVE R2 R1 - 0x7C080000, // 0007 CALL R2 0 - 0x1C0C0002, // 0008 EQ R3 R0 R2 - 0x780E0002, // 0009 JMPF R3 #000D - 0x500C0200, // 000A LDBOOL R3 1 0 - 0xA8040001, // 000B EXBLK 1 1 - 0x80040600, // 000C RET 1 R3 - 0x7001FFF7, // 000D JMP #0006 - 0x58040003, // 000E LDCONST R1 K3 - 0xAC040200, // 000F CATCH R1 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x50040000, // 0011 LDBOOL R1 0 0 - 0x80040200, // 0012 RET 1 R1 + ( &(const binstruction[10]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C080400, // 0003 CALL R2 2 + 0xB80E0400, // 0004 GETNGBL R3 K2 + 0x8C0C0703, // 0005 GETMET R3 R3 K3 + 0x5C140400, // 0006 MOVE R5 R2 + 0x5C180200, // 0007 MOVE R6 R1 + 0x7C0C0600, // 0008 CALL R3 3 + 0x80040600, // 0009 RET 1 R3 }) ) ); @@ -580,9 +1084,9 @@ be_local_closure(is_keyword, /* name */ /******************************************************************** -** Solidified function: compile_dsl_source +** Solidified function: execute ********************************************************************/ -be_local_closure(compile_dsl_source, /* name */ +be_local_closure(execute, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -594,53 +1098,21 @@ be_local_closure(compile_dsl_source, /* name */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(compile_dsl), + /* K1 */ be_nested_str_weak(compile), }), - be_str_weak(compile_dsl_source), + be_str_weak(execute), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ + ( &(const binstruction[10]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_newline_token -********************************************************************/ -be_local_closure(create_newline_token, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(Token), - /* K2 */ be_nested_str_weak(_X0A), - /* K3 */ be_const_int(1), - }), - be_str_weak(create_newline_token), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x54120022, // 0002 LDINT R4 35 - 0x58140002, // 0003 LDCONST R5 K2 - 0x5C180000, // 0004 MOVE R6 R0 - 0x5C1C0200, // 0005 MOVE R7 R1 - 0x58200003, // 0006 LDCONST R8 K3 - 0x7C080C00, // 0007 CALL R2 6 - 0x80040400, // 0008 RET 1 R2 + 0x6008000D, // 0004 GETGBL R2 G13 + 0x5C0C0200, // 0005 MOVE R3 R1 + 0x7C080200, // 0006 CALL R2 1 + 0x5C0C0400, // 0007 MOVE R3 R2 + 0x7C0C0000, // 0008 CALL R3 0 + 0x80040600, // 0009 RET 1 R3 }) ) ); @@ -734,6 +1206,13134 @@ be_local_closure(compile_dsl, /* name */ ); /*******************************************************************/ +extern const bclass be_class_SymbolEntry; +// compact class 'SymbolEntry' ktab size: 61, total: 146 (saved 680 bytes) +static const bvalue be_ktab_class_SymbolEntry[61] = { + /* K0 */ be_const_class(be_class_SymbolEntry), + /* K1 */ be_nested_str_weak(TYPE_VARIABLE), + /* K2 */ be_nested_str_weak(is_dangerous), + /* K3 */ be_nested_str_weak(param_types), + /* K4 */ be_nested_str_weak(type), + /* K5 */ be_nested_str_weak(TYPE_COLOR), + /* K6 */ be_nested_str_weak(TYPE_CONSTANT), + /* K7 */ be_nested_str_weak(TYPE_VALUE_PROVIDER), + /* K8 */ be_nested_str_weak(TYPE_MATH_FUNCTION), + /* K9 */ be_nested_str_weak(takes_args), + /* K10 */ be_nested_str_weak(arg_type), + /* K11 */ be_nested_str_weak(positional), + /* K12 */ be_nested_str_weak(TYPE_TEMPLATE), + /* K13 */ be_nested_str_weak(TYPE_COLOR_CONSTRUCTOR), + /* K14 */ be_nested_str_weak(TYPE_ANIMATION_CONSTRUCTOR), + /* K15 */ be_nested_str_weak(TYPE_PALETTE), + /* K16 */ be_nested_str_weak(TYPE_SEQUENCE), + /* K17 */ be_nested_str_weak(is_builtin), + /* K18 */ be_nested_str_weak(animation_X2E_math_X2E_X25s), + /* K19 */ be_nested_str_weak(name), + /* K20 */ be_nested_str_weak(animation_X2E_X25s), + /* K21 */ be_nested_str_weak(_X25s_), + /* K22 */ be_nested_str_weak(TYPE_ANIMATION), + /* K23 */ be_nested_str_weak(TYPE_PALETTE_CONSTANT), + /* K24 */ be_nested_str_weak(palette_constant), + /* K25 */ be_nested_str_weak(palette), + /* K26 */ be_nested_str_weak(constant), + /* K27 */ be_nested_str_weak(math_function), + /* K28 */ be_nested_str_weak(TYPE_USER_FUNCTION), + /* K29 */ be_nested_str_weak(user_function), + /* K30 */ be_nested_str_weak(TYPE_VALUE_PROVIDER_CONSTRUCTOR), + /* K31 */ be_nested_str_weak(value_provider_constructor), + /* K32 */ be_nested_str_weak(value_provider), + /* K33 */ be_nested_str_weak(animation_constructor), + /* K34 */ be_nested_str_weak(animation), + /* K35 */ be_nested_str_weak(color_constructor), + /* K36 */ be_nested_str_weak(color), + /* K37 */ be_nested_str_weak(variable), + /* K38 */ be_nested_str_weak(sequence), + /* K39 */ be_nested_str_weak(template), + /* K40 */ be_nested_str_weak(unknown_X28_X25s_X29), + /* K41 */ be_nested_str_weak(named), + /* K42 */ be_nested_str_weak(instance), + /* K43 */ be_nested_str_weak(none), + /* K44 */ be_nested_str_weak(_detect_arg_characteristics), + /* K45 */ be_nested_str_weak(_detect_danger_level), + /* K46 */ be_nested_str_weak(string), + /* K47 */ be_nested_str_weak(nil), + /* K48 */ be_nested_str_weak(_X3C_X25s_X3E), + /* K49 */ be_nested_str_weak(_X3C_X25s_X3A_X25s_X3E), + /* K50 */ be_nested_str_weak(), + /* K51 */ be_const_int(0), + /* K52 */ be_nested_str_weak(keys), + /* K53 */ be_nested_str_weak(_X2C), + /* K54 */ be_nested_str_weak(_X25s_X3A_X25s), + /* K55 */ be_nested_str_weak(stop_iteration), + /* K56 */ be_nested_str_weak(_X20params_X3D_X5B_X25s_X5D), + /* K57 */ be_nested_str_weak(SymbolEntry_X28name_X3D_X27_X25s_X27_X2C_X20type_X3D_X27_X25s_X27_X2C_X20instance_X3D_X25s_X2C_X20), + /* K58 */ be_nested_str_weak(type_to_string), + /* K59 */ be_nested_str_weak(takes_args_X3D_X25s_X2C_X20arg_type_X3D_X27_X25s_X27_X2C_X20), + /* K60 */ be_nested_str_weak(is_builtin_X3D_X25s_X2C_X20is_dangerous_X3D_X25s_X25s_X29), +}; + + +extern const bclass be_class_SymbolEntry; + +/******************************************************************** +** Solidified function: create_variable +********************************************************************/ +be_local_closure(class_SymbolEntry_create_variable, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_variable), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x5C0C0400, // 0001 MOVE R3 R2 + 0x5C100000, // 0002 MOVE R4 R0 + 0x88140501, // 0003 GETMBR R5 R2 K1 + 0x4C180000, // 0004 LDNIL R6 + 0x5C1C0200, // 0005 MOVE R7 R1 + 0x7C0C0800, // 0006 CALL R3 4 + 0x80040600, // 0007 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_dangerous_call +********************************************************************/ +be_local_closure(class_SymbolEntry_is_dangerous_call, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_dangerous_call), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_param_types +********************************************************************/ +be_local_closure(class_SymbolEntry_set_param_types, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(set_param_types), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x5C080200, // 0003 MOVE R2 R1 + 0x70020001, // 0004 JMP #0007 + 0x60080013, // 0005 GETGBL R2 G19 + 0x7C080000, // 0006 CALL R2 0 + 0x90020602, // 0007 SETMBR R0 K3 R2 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_color_instance +********************************************************************/ +be_local_closure(class_SymbolEntry_is_color_instance, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_color_instance), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88080105, // 0001 GETMBR R2 R0 K5 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_constant +********************************************************************/ +be_local_closure(class_SymbolEntry_create_constant, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_constant), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x88180706, // 0003 GETMBR R6 R3 K6 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_value_provider_instance +********************************************************************/ +be_local_closure(class_SymbolEntry_create_value_provider_instance, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_value_provider_instance), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x88180707, // 0003 GETMBR R6 R3 K7 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_param_types +********************************************************************/ +be_local_closure(class_SymbolEntry_get_param_types, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(get_param_types), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040103, // 0000 GETMBR R1 R0 K3 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_math_function +********************************************************************/ +be_local_closure(class_SymbolEntry_is_math_function, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_math_function), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_color_instance +********************************************************************/ +be_local_closure(class_SymbolEntry_create_color_instance, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_color_instance), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x88180705, // 0003 GETMBR R6 R3 K5 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: takes_positional_args +********************************************************************/ +be_local_closure(class_SymbolEntry_takes_positional_args, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(takes_positional_args), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x78060002, // 0001 JMPF R1 #0005 + 0x8804010A, // 0002 GETMBR R1 R0 K10 + 0x1C04030B, // 0003 EQ R1 R1 K11 + 0x74060000, // 0004 JMPT R1 #0006 + 0x50040001, // 0005 LDBOOL R1 0 1 + 0x50040200, // 0006 LDBOOL R1 1 0 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_template +********************************************************************/ +be_local_closure(class_SymbolEntry_create_template, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_template), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x5C0C0400, // 0001 MOVE R3 R2 + 0x5C100000, // 0002 MOVE R4 R0 + 0x8814050C, // 0003 GETMBR R5 R2 K12 + 0x4C180000, // 0004 LDNIL R6 + 0x5C1C0200, // 0005 MOVE R7 R1 + 0x7C0C0800, // 0006 CALL R3 4 + 0x80040600, // 0007 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_color_constructor +********************************************************************/ +be_local_closure(class_SymbolEntry_is_color_constructor, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_color_constructor), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8808010D, // 0001 GETMBR R2 R0 K13 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_animation_constructor +********************************************************************/ +be_local_closure(class_SymbolEntry_is_animation_constructor, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_animation_constructor), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8808010E, // 0001 GETMBR R2 R0 K14 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_palette_instance +********************************************************************/ +be_local_closure(class_SymbolEntry_create_palette_instance, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_palette_instance), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x8818070F, // 0003 GETMBR R6 R3 K15 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_sequence +********************************************************************/ +be_local_closure(class_SymbolEntry_create_sequence, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_sequence), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x5C0C0400, // 0001 MOVE R3 R2 + 0x5C100000, // 0002 MOVE R4 R0 + 0x88140510, // 0003 GETMBR R5 R2 K16 + 0x4C180000, // 0004 LDNIL R6 + 0x5C1C0200, // 0005 MOVE R7 R1 + 0x7C0C0800, // 0006 CALL R3 4 + 0x80040600, // 0007 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_reference +********************************************************************/ +be_local_closure(class_SymbolEntry_get_reference, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(get_reference), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x7806000F, // 0001 JMPF R1 #0012 + 0x88040104, // 0002 GETMBR R1 R0 K4 + 0x88080108, // 0003 GETMBR R2 R0 K8 + 0x1C040202, // 0004 EQ R1 R1 R2 + 0x78060005, // 0005 JMPF R1 #000C + 0x60040018, // 0006 GETGBL R1 G24 + 0x58080012, // 0007 LDCONST R2 K18 + 0x880C0113, // 0008 GETMBR R3 R0 K19 + 0x7C040400, // 0009 CALL R1 2 + 0x80040200, // 000A RET 1 R1 + 0x70020004, // 000B JMP #0011 + 0x60040018, // 000C GETGBL R1 G24 + 0x58080014, // 000D LDCONST R2 K20 + 0x880C0113, // 000E GETMBR R3 R0 K19 + 0x7C040400, // 000F CALL R1 2 + 0x80040200, // 0010 RET 1 R1 + 0x70020004, // 0011 JMP #0017 + 0x60040018, // 0012 GETGBL R1 G24 + 0x58080015, // 0013 LDCONST R2 K21 + 0x880C0113, // 0014 GETMBR R3 R0 K19 + 0x7C040400, // 0015 CALL R1 2 + 0x80040200, // 0016 RET 1 R1 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_math_function +********************************************************************/ +be_local_closure(class_SymbolEntry_create_math_function, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_math_function), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x5C0C0400, // 0001 MOVE R3 R2 + 0x5C100000, // 0002 MOVE R4 R0 + 0x88140508, // 0003 GETMBR R5 R2 K8 + 0x4C180000, // 0004 LDNIL R6 + 0x5C1C0200, // 0005 MOVE R7 R1 + 0x7C0C0800, // 0006 CALL R3 4 + 0x80040600, // 0007 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_animation_instance +********************************************************************/ +be_local_closure(class_SymbolEntry_is_animation_instance, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_animation_instance), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88080116, // 0001 GETMBR R2 R0 K22 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: type_to_string +********************************************************************/ +be_local_closure(class_SymbolEntry_type_to_string, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(type_to_string), + &be_const_str_solidified, + ( &(const binstruction[90]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88080117, // 0001 GETMBR R2 R0 K23 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060001, // 0003 JMPF R1 #0006 + 0x80063000, // 0004 RET 1 K24 + 0x70020052, // 0005 JMP #0059 + 0x88040104, // 0006 GETMBR R1 R0 K4 + 0x8808010F, // 0007 GETMBR R2 R0 K15 + 0x1C040202, // 0008 EQ R1 R1 R2 + 0x78060001, // 0009 JMPF R1 #000C + 0x80063200, // 000A RET 1 K25 + 0x7002004C, // 000B JMP #0059 + 0x88040104, // 000C GETMBR R1 R0 K4 + 0x88080106, // 000D GETMBR R2 R0 K6 + 0x1C040202, // 000E EQ R1 R1 R2 + 0x78060001, // 000F JMPF R1 #0012 + 0x80063400, // 0010 RET 1 K26 + 0x70020046, // 0011 JMP #0059 + 0x88040104, // 0012 GETMBR R1 R0 K4 + 0x88080108, // 0013 GETMBR R2 R0 K8 + 0x1C040202, // 0014 EQ R1 R1 R2 + 0x78060001, // 0015 JMPF R1 #0018 + 0x80063600, // 0016 RET 1 K27 + 0x70020040, // 0017 JMP #0059 + 0x88040104, // 0018 GETMBR R1 R0 K4 + 0x8808011C, // 0019 GETMBR R2 R0 K28 + 0x1C040202, // 001A EQ R1 R1 R2 + 0x78060001, // 001B JMPF R1 #001E + 0x80063A00, // 001C RET 1 K29 + 0x7002003A, // 001D JMP #0059 + 0x88040104, // 001E GETMBR R1 R0 K4 + 0x8808011E, // 001F GETMBR R2 R0 K30 + 0x1C040202, // 0020 EQ R1 R1 R2 + 0x78060001, // 0021 JMPF R1 #0024 + 0x80063E00, // 0022 RET 1 K31 + 0x70020034, // 0023 JMP #0059 + 0x88040104, // 0024 GETMBR R1 R0 K4 + 0x88080107, // 0025 GETMBR R2 R0 K7 + 0x1C040202, // 0026 EQ R1 R1 R2 + 0x78060001, // 0027 JMPF R1 #002A + 0x80064000, // 0028 RET 1 K32 + 0x7002002E, // 0029 JMP #0059 + 0x88040104, // 002A GETMBR R1 R0 K4 + 0x8808010E, // 002B GETMBR R2 R0 K14 + 0x1C040202, // 002C EQ R1 R1 R2 + 0x78060001, // 002D JMPF R1 #0030 + 0x80064200, // 002E RET 1 K33 + 0x70020028, // 002F JMP #0059 + 0x88040104, // 0030 GETMBR R1 R0 K4 + 0x88080116, // 0031 GETMBR R2 R0 K22 + 0x1C040202, // 0032 EQ R1 R1 R2 + 0x78060001, // 0033 JMPF R1 #0036 + 0x80064400, // 0034 RET 1 K34 + 0x70020022, // 0035 JMP #0059 + 0x88040104, // 0036 GETMBR R1 R0 K4 + 0x8808010D, // 0037 GETMBR R2 R0 K13 + 0x1C040202, // 0038 EQ R1 R1 R2 + 0x78060001, // 0039 JMPF R1 #003C + 0x80064600, // 003A RET 1 K35 + 0x7002001C, // 003B JMP #0059 + 0x88040104, // 003C GETMBR R1 R0 K4 + 0x88080105, // 003D GETMBR R2 R0 K5 + 0x1C040202, // 003E EQ R1 R1 R2 + 0x78060001, // 003F JMPF R1 #0042 + 0x80064800, // 0040 RET 1 K36 + 0x70020016, // 0041 JMP #0059 + 0x88040104, // 0042 GETMBR R1 R0 K4 + 0x88080101, // 0043 GETMBR R2 R0 K1 + 0x1C040202, // 0044 EQ R1 R1 R2 + 0x78060001, // 0045 JMPF R1 #0048 + 0x80064A00, // 0046 RET 1 K37 + 0x70020010, // 0047 JMP #0059 + 0x88040104, // 0048 GETMBR R1 R0 K4 + 0x88080110, // 0049 GETMBR R2 R0 K16 + 0x1C040202, // 004A EQ R1 R1 R2 + 0x78060001, // 004B JMPF R1 #004E + 0x80064C00, // 004C RET 1 K38 + 0x7002000A, // 004D JMP #0059 + 0x88040104, // 004E GETMBR R1 R0 K4 + 0x8808010C, // 004F GETMBR R2 R0 K12 + 0x1C040202, // 0050 EQ R1 R1 R2 + 0x78060001, // 0051 JMPF R1 #0054 + 0x80064E00, // 0052 RET 1 K39 + 0x70020004, // 0053 JMP #0059 + 0x60040018, // 0054 GETGBL R1 G24 + 0x58080028, // 0055 LDCONST R2 K40 + 0x880C0104, // 0056 GETMBR R3 R0 K4 + 0x7C040400, // 0057 CALL R1 2 + 0x80040200, // 0058 RET 1 R1 + 0x80000000, // 0059 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_value_provider_instance +********************************************************************/ +be_local_closure(class_SymbolEntry_is_value_provider_instance, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_value_provider_instance), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88080107, // 0001 GETMBR R2 R0 K7 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_color_constructor +********************************************************************/ +be_local_closure(class_SymbolEntry_create_color_constructor, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_color_constructor), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x8818070D, // 0003 GETMBR R6 R3 K13 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_animation_constructor +********************************************************************/ +be_local_closure(class_SymbolEntry_create_animation_constructor, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_animation_constructor), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x8818070E, // 0003 GETMBR R6 R3 K14 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_animation_instance +********************************************************************/ +be_local_closure(class_SymbolEntry_create_animation_instance, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_animation_instance), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x88180716, // 0003 GETMBR R6 R3 K22 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: takes_named_args +********************************************************************/ +be_local_closure(class_SymbolEntry_takes_named_args, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(takes_named_args), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x78060002, // 0001 JMPF R1 #0005 + 0x8804010A, // 0002 GETMBR R1 R0 K10 + 0x1C040329, // 0003 EQ R1 R1 K41 + 0x74060000, // 0004 JMPT R1 #0006 + 0x50040001, // 0005 LDBOOL R1 0 1 + 0x50040200, // 0006 LDBOOL R1 1 0 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_bytes_instance +********************************************************************/ +be_local_closure(class_SymbolEntry_is_bytes_instance, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_bytes_instance), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88080117, // 0001 GETMBR R2 R0 K23 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x74060003, // 0003 JMPT R1 #0008 + 0x88040104, // 0004 GETMBR R1 R0 K4 + 0x8808010F, // 0005 GETMBR R2 R0 K15 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x78060008, // 0007 JMPF R1 #0011 + 0x8804012A, // 0008 GETMBR R1 R0 K42 + 0x4C080000, // 0009 LDNIL R2 + 0x20040202, // 000A NE R1 R1 R2 + 0x78060004, // 000B JMPF R1 #0011 + 0x6004000F, // 000C GETGBL R1 G15 + 0x8808012A, // 000D GETMBR R2 R0 K42 + 0x600C0015, // 000E GETGBL R3 G21 + 0x7C040400, // 000F CALL R1 2 + 0x74060000, // 0010 JMPT R1 #0012 + 0x50040001, // 0011 LDBOOL R1 0 1 + 0x50040200, // 0012 LDBOOL R1 1 0 + 0x80040200, // 0013 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _detect_danger_level +********************************************************************/ +be_local_closure(class_SymbolEntry__detect_danger_level, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(_detect_danger_level), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8808011E, // 0001 GETMBR R2 R0 K30 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060002, // 0003 JMPF R1 #0007 + 0x50040200, // 0004 LDBOOL R1 1 0 + 0x90020401, // 0005 SETMBR R0 K2 R1 + 0x7002000F, // 0006 JMP #0017 + 0x88040104, // 0007 GETMBR R1 R0 K4 + 0x8808010E, // 0008 GETMBR R2 R0 K14 + 0x1C040202, // 0009 EQ R1 R1 R2 + 0x78060002, // 000A JMPF R1 #000E + 0x50040200, // 000B LDBOOL R1 1 0 + 0x90020401, // 000C SETMBR R0 K2 R1 + 0x70020008, // 000D JMP #0017 + 0x88040104, // 000E GETMBR R1 R0 K4 + 0x8808010D, // 000F GETMBR R2 R0 K13 + 0x1C040202, // 0010 EQ R1 R1 R2 + 0x78060002, // 0011 JMPF R1 #0015 + 0x50040200, // 0012 LDBOOL R1 1 0 + 0x90020401, // 0013 SETMBR R0 K2 R1 + 0x70020001, // 0014 JMP #0017 + 0x50040000, // 0015 LDBOOL R1 0 0 + 0x90020401, // 0016 SETMBR R0 K2 R1 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_palette_constant +********************************************************************/ +be_local_closure(class_SymbolEntry_create_palette_constant, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_palette_constant), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x88180717, // 0003 GETMBR R6 R3 K23 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_SymbolEntry_init, /* name */ + be_nested_proto( + 7, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x90022601, // 0000 SETMBR R0 K19 R1 + 0x90020802, // 0001 SETMBR R0 K4 R2 + 0x90025403, // 0002 SETMBR R0 K42 R3 + 0x4C140000, // 0003 LDNIL R5 + 0x20140805, // 0004 NE R5 R4 R5 + 0x78160001, // 0005 JMPF R5 #0008 + 0x5C140800, // 0006 MOVE R5 R4 + 0x70020000, // 0007 JMP #0009 + 0x50140000, // 0008 LDBOOL R5 0 0 + 0x90022205, // 0009 SETMBR R0 K17 R5 + 0x50140000, // 000A LDBOOL R5 0 0 + 0x90021205, // 000B SETMBR R0 K9 R5 + 0x9002152B, // 000C SETMBR R0 K10 K43 + 0x50140000, // 000D LDBOOL R5 0 0 + 0x90020405, // 000E SETMBR R0 K2 R5 + 0x60140013, // 000F GETGBL R5 G19 + 0x7C140000, // 0010 CALL R5 0 + 0x90020605, // 0011 SETMBR R0 K3 R5 + 0x8C14012C, // 0012 GETMET R5 R0 K44 + 0x7C140200, // 0013 CALL R5 1 + 0x8C14012D, // 0014 GETMET R5 R0 K45 + 0x7C140200, // 0015 CALL R5 1 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_value_provider_constructor +********************************************************************/ +be_local_closure(class_SymbolEntry_is_value_provider_constructor, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_value_provider_constructor), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8808011E, // 0001 GETMBR R2 R0 K30 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_user_function +********************************************************************/ +be_local_closure(class_SymbolEntry_create_user_function, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_user_function), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x5C0C0400, // 0001 MOVE R3 R2 + 0x5C100000, // 0002 MOVE R4 R0 + 0x8814051C, // 0003 GETMBR R5 R2 K28 + 0x4C180000, // 0004 LDNIL R6 + 0x5C1C0200, // 0005 MOVE R7 R1 + 0x7C0C0800, // 0006 CALL R3 4 + 0x80040600, // 0007 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_SymbolEntry_tostring, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[84]) { /* code */ + 0xA4065C00, // 0000 IMPORT R1 K46 + 0x5808002F, // 0001 LDCONST R2 K47 + 0x880C012A, // 0002 GETMBR R3 R0 K42 + 0x4C100000, // 0003 LDNIL R4 + 0x200C0604, // 0004 NE R3 R3 R4 + 0x780E0014, // 0005 JMPF R3 #001B + 0x600C0004, // 0006 GETGBL R3 G4 + 0x8810012A, // 0007 GETMBR R4 R0 K42 + 0x7C0C0200, // 0008 CALL R3 1 + 0x1C10072A, // 0009 EQ R4 R3 K42 + 0x78120007, // 000A JMPF R4 #0013 + 0x60100018, // 000B GETGBL R4 G24 + 0x58140030, // 000C LDCONST R5 K48 + 0x60180005, // 000D GETGBL R6 G5 + 0x881C012A, // 000E GETMBR R7 R0 K42 + 0x7C180200, // 000F CALL R6 1 + 0x7C100400, // 0010 CALL R4 2 + 0x5C080800, // 0011 MOVE R2 R4 + 0x70020007, // 0012 JMP #001B + 0x60100018, // 0013 GETGBL R4 G24 + 0x58140031, // 0014 LDCONST R5 K49 + 0x5C180600, // 0015 MOVE R6 R3 + 0x601C0008, // 0016 GETGBL R7 G8 + 0x8820012A, // 0017 GETMBR R8 R0 K42 + 0x7C1C0200, // 0018 CALL R7 1 + 0x7C100600, // 0019 CALL R4 3 + 0x5C080800, // 001A MOVE R2 R4 + 0x580C0032, // 001B LDCONST R3 K50 + 0x6010000C, // 001C GETGBL R4 G12 + 0x88140103, // 001D GETMBR R5 R0 K3 + 0x7C100200, // 001E CALL R4 1 + 0x24100933, // 001F GT R4 R4 K51 + 0x7812001D, // 0020 JMPF R4 #003F + 0x58100032, // 0021 LDCONST R4 K50 + 0x50140200, // 0022 LDBOOL R5 1 0 + 0x60180010, // 0023 GETGBL R6 G16 + 0x881C0103, // 0024 GETMBR R7 R0 K3 + 0x8C1C0F34, // 0025 GETMET R7 R7 K52 + 0x7C1C0200, // 0026 CALL R7 1 + 0x7C180200, // 0027 CALL R6 1 + 0xA802000D, // 0028 EXBLK 0 #0037 + 0x5C1C0C00, // 0029 MOVE R7 R6 + 0x7C1C0000, // 002A CALL R7 0 + 0x5C200A00, // 002B MOVE R8 R5 + 0x74220000, // 002C JMPT R8 #002E + 0x00100935, // 002D ADD R4 R4 K53 + 0x60200018, // 002E GETGBL R8 G24 + 0x58240036, // 002F LDCONST R9 K54 + 0x5C280E00, // 0030 MOVE R10 R7 + 0x882C0103, // 0031 GETMBR R11 R0 K3 + 0x942C1607, // 0032 GETIDX R11 R11 R7 + 0x7C200600, // 0033 CALL R8 3 + 0x00100808, // 0034 ADD R4 R4 R8 + 0x50140000, // 0035 LDBOOL R5 0 0 + 0x7001FFF1, // 0036 JMP #0029 + 0x58180037, // 0037 LDCONST R6 K55 + 0xAC180200, // 0038 CATCH R6 1 0 + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x60180018, // 003A GETGBL R6 G24 + 0x581C0038, // 003B LDCONST R7 K56 + 0x5C200800, // 003C MOVE R8 R4 + 0x7C180400, // 003D CALL R6 2 + 0x5C0C0C00, // 003E MOVE R3 R6 + 0x60100018, // 003F GETGBL R4 G24 + 0x58140039, // 0040 LDCONST R5 K57 + 0x88180113, // 0041 GETMBR R6 R0 K19 + 0x8C1C013A, // 0042 GETMET R7 R0 K58 + 0x7C1C0200, // 0043 CALL R7 1 + 0x5C200400, // 0044 MOVE R8 R2 + 0x7C100800, // 0045 CALL R4 4 + 0x60140018, // 0046 GETGBL R5 G24 + 0x5818003B, // 0047 LDCONST R6 K59 + 0x881C0109, // 0048 GETMBR R7 R0 K9 + 0x8820010A, // 0049 GETMBR R8 R0 K10 + 0x7C140600, // 004A CALL R5 3 + 0x00100805, // 004B ADD R4 R4 R5 + 0x60140018, // 004C GETGBL R5 G24 + 0x5818003C, // 004D LDCONST R6 K60 + 0x881C0111, // 004E GETMBR R7 R0 K17 + 0x88200102, // 004F GETMBR R8 R0 K2 + 0x5C240600, // 0050 MOVE R9 R3 + 0x7C140800, // 0051 CALL R5 4 + 0x00100805, // 0052 ADD R4 R4 R5 + 0x80040800, // 0053 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_value_provider_constructor +********************************************************************/ +be_local_closure(class_SymbolEntry_create_value_provider_constructor, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(create_value_provider_constructor), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x8818071E, // 0003 GETMBR R6 R3 K30 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x5C200400, // 0005 MOVE R8 R2 + 0x7C100800, // 0006 CALL R4 4 + 0x80040800, // 0007 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_user_function +********************************************************************/ +be_local_closure(class_SymbolEntry_is_user_function, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(is_user_function), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8808011C, // 0001 GETMBR R2 R0 K28 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _detect_arg_characteristics +********************************************************************/ +be_local_closure(class_SymbolEntry__detect_arg_characteristics, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolEntry, /* shared constants */ + be_str_weak(_detect_arg_characteristics), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x88080117, // 0001 GETMBR R2 R0 K23 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x74060007, // 0003 JMPT R1 #000C + 0x88040104, // 0004 GETMBR R1 R0 K4 + 0x8808010F, // 0005 GETMBR R2 R0 K15 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x74060003, // 0007 JMPT R1 #000C + 0x88040104, // 0008 GETMBR R1 R0 K4 + 0x88080106, // 0009 GETMBR R2 R0 K6 + 0x1C040202, // 000A EQ R1 R1 R2 + 0x78060003, // 000B JMPF R1 #0010 + 0x50040000, // 000C LDBOOL R1 0 0 + 0x90021201, // 000D SETMBR R0 K9 R1 + 0x9002152B, // 000E SETMBR R0 K10 K43 + 0x70020022, // 000F JMP #0033 + 0x88040104, // 0010 GETMBR R1 R0 K4 + 0x88080108, // 0011 GETMBR R2 R0 K8 + 0x1C040202, // 0012 EQ R1 R1 R2 + 0x78060003, // 0013 JMPF R1 #0018 + 0x50040200, // 0014 LDBOOL R1 1 0 + 0x90021201, // 0015 SETMBR R0 K9 R1 + 0x9002150B, // 0016 SETMBR R0 K10 K11 + 0x7002001A, // 0017 JMP #0033 + 0x88040104, // 0018 GETMBR R1 R0 K4 + 0x8808011C, // 0019 GETMBR R2 R0 K28 + 0x1C040202, // 001A EQ R1 R1 R2 + 0x78060003, // 001B JMPF R1 #0020 + 0x50040200, // 001C LDBOOL R1 1 0 + 0x90021201, // 001D SETMBR R0 K9 R1 + 0x9002150B, // 001E SETMBR R0 K10 K11 + 0x70020012, // 001F JMP #0033 + 0x88040104, // 0020 GETMBR R1 R0 K4 + 0x8808011E, // 0021 GETMBR R2 R0 K30 + 0x1C040202, // 0022 EQ R1 R1 R2 + 0x74060007, // 0023 JMPT R1 #002C + 0x88040104, // 0024 GETMBR R1 R0 K4 + 0x8808010E, // 0025 GETMBR R2 R0 K14 + 0x1C040202, // 0026 EQ R1 R1 R2 + 0x74060003, // 0027 JMPT R1 #002C + 0x88040104, // 0028 GETMBR R1 R0 K4 + 0x8808010D, // 0029 GETMBR R2 R0 K13 + 0x1C040202, // 002A EQ R1 R1 R2 + 0x78060003, // 002B JMPF R1 #0030 + 0x50040200, // 002C LDBOOL R1 1 0 + 0x90021201, // 002D SETMBR R0 K9 R1 + 0x90021529, // 002E SETMBR R0 K10 K41 + 0x70020002, // 002F JMP #0033 + 0x50040000, // 0030 LDBOOL R1 0 0 + 0x90021201, // 0031 SETMBR R0 K9 R1 + 0x9002152B, // 0032 SETMBR R0 K10 K43 + 0x80000000, // 0033 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: SymbolEntry +********************************************************************/ +be_local_class(SymbolEntry, + 8, + NULL, + be_nested_map(56, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(TYPE_TEMPLATE, 53), be_const_int(14) }, + { be_const_key_weak(TYPE_COLOR, -1), be_const_int(11) }, + { be_const_key_weak(create_variable, 52), be_const_static_closure(class_SymbolEntry_create_variable_closure) }, + { be_const_key_weak(is_dangerous_call, -1), be_const_closure(class_SymbolEntry_is_dangerous_call_closure) }, + { be_const_key_weak(_detect_arg_characteristics, -1), be_const_closure(class_SymbolEntry__detect_arg_characteristics_closure) }, + { be_const_key_weak(is_color_instance, -1), be_const_closure(class_SymbolEntry_is_color_instance_closure) }, + { be_const_key_weak(TYPE_CONSTANT, -1), be_const_int(3) }, + { be_const_key_weak(TYPE_SEQUENCE, -1), be_const_int(13) }, + { be_const_key_weak(TYPE_USER_FUNCTION, -1), be_const_int(5) }, + { be_const_key_weak(create_value_provider_instance, -1), be_const_static_closure(class_SymbolEntry_create_value_provider_instance_closure) }, + { be_const_key_weak(takes_args, 22), be_const_var(3) }, + { be_const_key_weak(get_param_types, -1), be_const_closure(class_SymbolEntry_get_param_types_closure) }, + { be_const_key_weak(is_user_function, 15), be_const_closure(class_SymbolEntry_is_user_function_closure) }, + { be_const_key_weak(create_color_instance, 49), be_const_static_closure(class_SymbolEntry_create_color_instance_closure) }, + { be_const_key_weak(takes_positional_args, -1), be_const_closure(class_SymbolEntry_takes_positional_args_closure) }, + { be_const_key_weak(create_value_provider_constructor, 25), be_const_static_closure(class_SymbolEntry_create_value_provider_constructor_closure) }, + { be_const_key_weak(TYPE_VARIABLE, 32), be_const_int(12) }, + { be_const_key_weak(TYPE_VALUE_PROVIDER_CONSTRUCTOR, 24), be_const_int(6) }, + { be_const_key_weak(is_color_constructor, -1), be_const_closure(class_SymbolEntry_is_color_constructor_closure) }, + { be_const_key_weak(is_animation_constructor, 31), be_const_closure(class_SymbolEntry_is_animation_constructor_closure) }, + { be_const_key_weak(TYPE_ANIMATION, -1), be_const_int(9) }, + { be_const_key_weak(create_palette_instance, 44), be_const_static_closure(class_SymbolEntry_create_palette_instance_closure) }, + { be_const_key_weak(tostring, 28), be_const_closure(class_SymbolEntry_tostring_closure) }, + { be_const_key_weak(create_sequence, -1), be_const_static_closure(class_SymbolEntry_create_sequence_closure) }, + { be_const_key_weak(create_user_function, 42), be_const_static_closure(class_SymbolEntry_create_user_function_closure) }, + { be_const_key_weak(is_value_provider_constructor, -1), be_const_closure(class_SymbolEntry_is_value_provider_constructor_closure) }, + { be_const_key_weak(instance, -1), be_const_var(2) }, + { be_const_key_weak(TYPE_ANIMATION_CONSTRUCTOR, -1), be_const_int(8) }, + { be_const_key_weak(type, 51), be_const_var(1) }, + { be_const_key_weak(TYPE_MATH_FUNCTION, 48), be_const_int(4) }, + { be_const_key_weak(is_animation_instance, 17), be_const_closure(class_SymbolEntry_is_animation_instance_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_SymbolEntry_init_closure) }, + { be_const_key_weak(create_palette_constant, -1), be_const_static_closure(class_SymbolEntry_create_palette_constant_closure) }, + { be_const_key_weak(is_builtin, 43), be_const_var(5) }, + { be_const_key_weak(create_color_constructor, -1), be_const_static_closure(class_SymbolEntry_create_color_constructor_closure) }, + { be_const_key_weak(create_animation_constructor, -1), be_const_static_closure(class_SymbolEntry_create_animation_constructor_closure) }, + { be_const_key_weak(param_types, -1), be_const_var(7) }, + { be_const_key_weak(_detect_danger_level, -1), be_const_closure(class_SymbolEntry__detect_danger_level_closure) }, + { be_const_key_weak(create_animation_instance, -1), be_const_static_closure(class_SymbolEntry_create_animation_instance_closure) }, + { be_const_key_weak(takes_named_args, -1), be_const_closure(class_SymbolEntry_takes_named_args_closure) }, + { be_const_key_weak(arg_type, 37), be_const_var(4) }, + { be_const_key_weak(is_bytes_instance, -1), be_const_closure(class_SymbolEntry_is_bytes_instance_closure) }, + { be_const_key_weak(name, -1), be_const_var(0) }, + { be_const_key_weak(is_value_provider_instance, 47), be_const_closure(class_SymbolEntry_is_value_provider_instance_closure) }, + { be_const_key_weak(type_to_string, -1), be_const_closure(class_SymbolEntry_type_to_string_closure) }, + { be_const_key_weak(is_math_function, 10), be_const_closure(class_SymbolEntry_is_math_function_closure) }, + { be_const_key_weak(is_dangerous, 12), be_const_var(6) }, + { be_const_key_weak(TYPE_PALETTE, -1), be_const_int(2) }, + { be_const_key_weak(create_math_function, -1), be_const_static_closure(class_SymbolEntry_create_math_function_closure) }, + { be_const_key_weak(TYPE_VALUE_PROVIDER, -1), be_const_int(7) }, + { be_const_key_weak(TYPE_COLOR_CONSTRUCTOR, 16), be_const_int(10) }, + { be_const_key_weak(get_reference, -1), be_const_closure(class_SymbolEntry_get_reference_closure) }, + { be_const_key_weak(TYPE_PALETTE_CONSTANT, -1), be_const_int(1) }, + { be_const_key_weak(create_template, -1), be_const_static_closure(class_SymbolEntry_create_template_closure) }, + { be_const_key_weak(create_constant, 8), be_const_static_closure(class_SymbolEntry_create_constant_closure) }, + { be_const_key_weak(set_param_types, 4), be_const_closure(class_SymbolEntry_set_param_types_closure) }, + })), + be_str_weak(SymbolEntry) +); + +/******************************************************************** +** Solidified function: compile_dsl_source +********************************************************************/ +be_local_closure(compile_dsl_source, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(compile_dsl), + }), + be_str_weak(compile_dsl_source), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// ktab too big for class 'SimpleDSLTranspiler' - skipping + +extern const bclass be_class_SimpleDSLTranspiler; + +/******************************************************************** +** Solidified function: _process_named_arguments_generic +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(CONTEXT_GENERIC), + }), + be_str_weak(_process_named_arguments_generic), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x881C0101, // 0003 GETMBR R7 R0 K1 + 0x7C0C0800, // 0004 CALL R3 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_unified +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_unified, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x60140018, // 0002 GETGBL R5 G24 + 0x58180001, // 0003 LDCONST R6 K1 + 0x681C0001, // 0004 GETUPV R7 U1 + 0x5C200000, // 0005 MOVE R8 R0 + 0x5C240200, // 0006 MOVE R9 R1 + 0x5C280400, // 0007 MOVE R10 R2 + 0x7C140A00, // 0008 CALL R5 5 + 0x7C0C0400, // 0009 CALL R3 2 + 0x80000000, // 000A RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(_process_parameters_core), + /* K2 */ be_nested_str_weak(expect_right_paren), + }), + be_str_weak(_process_named_arguments_unified), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x84100000, // 0002 CLOSURE R4 P0 + 0x8C140101, // 0003 GETMET R5 R0 K1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x5C200600, // 0005 MOVE R8 R3 + 0x5C240800, // 0006 MOVE R9 R4 + 0x7C140800, // 0007 CALL R5 4 + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0xA0000000, // 000A CLOSE R0 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _create_instance_for_validation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__create_instance_for_validation, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(instance), + }), + be_str_weak(_create_instance_for_validation), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0001, // 0006 JMPF R3 #0009 + 0x880C0502, // 0007 GETMBR R3 R2 K2 + 0x70020000, // 0008 JMP #000A + 0x4C0C0000, // 0009 LDNIL R3 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_run +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(_validate_object_reference), + /* K3 */ be_nested_str_weak(run), + /* K4 */ be_nested_str_weak(collect_inline_comment), + /* K5 */ be_nested_str_weak(run_statements), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(comment), + }), + be_str_weak(process_run), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x8C080104, // 0008 GETMET R2 R0 K4 + 0x7C080200, // 0009 CALL R2 1 + 0x880C0105, // 000A GETMBR R3 R0 K5 + 0x8C0C0706, // 000B GETMET R3 R3 K6 + 0x60140013, // 000C GETGBL R5 G19 + 0x7C140000, // 000D CALL R5 0 + 0x98160E01, // 000E SETIDX R5 K7 R1 + 0x98161002, // 000F SETIDX R5 K8 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _create_symbol_by_return_type +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__create_symbol_by_return_type, /* name */ + be_nested_proto( + 8, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(symbol_table), + /* K2 */ be_nested_str_weak(create_animation), + /* K3 */ be_nested_str_weak(color), + /* K4 */ be_nested_str_weak(create_color), + /* K5 */ be_nested_str_weak(value_provider), + /* K6 */ be_nested_str_weak(create_value_provider), + /* K7 */ be_nested_str_weak(palette), + /* K8 */ be_nested_str_weak(create_palette), + /* K9 */ be_nested_str_weak(sequence), + /* K10 */ be_nested_str_weak(create_sequence), + /* K11 */ be_nested_str_weak(template), + /* K12 */ be_nested_str_weak(create_template), + /* K13 */ be_nested_str_weak(create_variable), + }), + be_str_weak(_create_symbol_by_return_type), + &be_const_str_solidified, + ( &(const binstruction[59]) { /* code */ + 0x1C100500, // 0000 EQ R4 R2 K0 + 0x78120006, // 0001 JMPF R4 #0009 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x8C100902, // 0003 GETMET R4 R4 K2 + 0x5C180200, // 0004 MOVE R6 R1 + 0x5C1C0600, // 0005 MOVE R7 R3 + 0x7C100600, // 0006 CALL R4 3 + 0x80040800, // 0007 RET 1 R4 + 0x70020030, // 0008 JMP #003A + 0x1C100503, // 0009 EQ R4 R2 K3 + 0x78120006, // 000A JMPF R4 #0012 + 0x88100101, // 000B GETMBR R4 R0 K1 + 0x8C100904, // 000C GETMET R4 R4 K4 + 0x5C180200, // 000D MOVE R6 R1 + 0x5C1C0600, // 000E MOVE R7 R3 + 0x7C100600, // 000F CALL R4 3 + 0x80040800, // 0010 RET 1 R4 + 0x70020027, // 0011 JMP #003A + 0x1C100505, // 0012 EQ R4 R2 K5 + 0x78120006, // 0013 JMPF R4 #001B + 0x88100101, // 0014 GETMBR R4 R0 K1 + 0x8C100906, // 0015 GETMET R4 R4 K6 + 0x5C180200, // 0016 MOVE R6 R1 + 0x5C1C0600, // 0017 MOVE R7 R3 + 0x7C100600, // 0018 CALL R4 3 + 0x80040800, // 0019 RET 1 R4 + 0x7002001E, // 001A JMP #003A + 0x1C100507, // 001B EQ R4 R2 K7 + 0x78120006, // 001C JMPF R4 #0024 + 0x88100101, // 001D GETMBR R4 R0 K1 + 0x8C100908, // 001E GETMET R4 R4 K8 + 0x5C180200, // 001F MOVE R6 R1 + 0x5C1C0600, // 0020 MOVE R7 R3 + 0x7C100600, // 0021 CALL R4 3 + 0x80040800, // 0022 RET 1 R4 + 0x70020015, // 0023 JMP #003A + 0x1C100509, // 0024 EQ R4 R2 K9 + 0x78120005, // 0025 JMPF R4 #002C + 0x88100101, // 0026 GETMBR R4 R0 K1 + 0x8C10090A, // 0027 GETMET R4 R4 K10 + 0x5C180200, // 0028 MOVE R6 R1 + 0x7C100400, // 0029 CALL R4 2 + 0x80040800, // 002A RET 1 R4 + 0x7002000D, // 002B JMP #003A + 0x1C10050B, // 002C EQ R4 R2 K11 + 0x78120006, // 002D JMPF R4 #0035 + 0x88100101, // 002E GETMBR R4 R0 K1 + 0x8C10090C, // 002F GETMET R4 R4 K12 + 0x5C180200, // 0030 MOVE R6 R1 + 0x4C1C0000, // 0031 LDNIL R7 + 0x7C100600, // 0032 CALL R4 3 + 0x80040800, // 0033 RET 1 R4 + 0x70020004, // 0034 JMP #003A + 0x88100101, // 0035 GETMBR R4 R0 K1 + 0x8C10090D, // 0036 GETMET R4 R4 K13 + 0x5C180200, // 0037 MOVE R6 R1 + 0x7C100400, // 0038 CALL R4 2 + 0x80040800, // 0039 RET 1 R4 + 0x80000000, // 003A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_left_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X28_X27), + }), + be_str_weak(expect_left_paren), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: validate_user_name +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ + be_nested_proto( + 14, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(is_builtin), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(_symbol_entry), + /* K6 */ be_nested_str_weak(TYPE_COLOR), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Cannot_X20redefine_X20predefined_X20color_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + /* K9 */ be_nested_str_weak(Cannot_X20redefine_X20built_X2Din_X20symbol_X20_X27_X25s_X27_X20_X28type_X3A_X20_X25s_X29_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + /* K10 */ be_nested_str_weak(Symbol_X20_X27_X25s_X27_X20is_X20already_X20defined_X20as_X20_X25s_X2E_X20Cannot_X20redefine_X20as_X20_X25s_X2E), + /* K11 */ be_nested_str_weak(Token), + /* K12 */ be_nested_str_weak(statement_keywords), + /* K13 */ be_nested_str_weak(Cannot_X20use_X20DSL_X20keyword_X20_X27_X25s_X27_X20as_X20_X25s_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + /* K14 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(validate_user_name), + &be_const_str_solidified, + ( &(const binstruction[79]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120000, // 0006 JMPF R4 #0008 + 0x7002002A, // 0007 JMP #0033 + 0x88100702, // 0008 GETMBR R4 R3 K2 + 0x78120010, // 0009 JMPF R4 #001B + 0x88100703, // 000A GETMBR R4 R3 K3 + 0xB8160800, // 000B GETNGBL R5 K4 + 0x88140B05, // 000C GETMBR R5 R5 K5 + 0x88140B06, // 000D GETMBR R5 R5 K6 + 0x1C100805, // 000E EQ R4 R4 R5 + 0x7812000A, // 000F JMPF R4 #001B + 0x8C100107, // 0010 GETMET R4 R0 K7 + 0x60180018, // 0011 GETGBL R6 G24 + 0x581C0008, // 0012 LDCONST R7 K8 + 0x5C200200, // 0013 MOVE R8 R1 + 0x5C240200, // 0014 MOVE R9 R1 + 0x5C280200, // 0015 MOVE R10 R1 + 0x7C180800, // 0016 CALL R6 4 + 0x7C100400, // 0017 CALL R4 2 + 0x50100000, // 0018 LDBOOL R4 0 0 + 0x80040800, // 0019 RET 1 R4 + 0x70020017, // 001A JMP #0033 + 0x88100702, // 001B GETMBR R4 R3 K2 + 0x7812000B, // 001C JMPF R4 #0029 + 0x8C100107, // 001D GETMET R4 R0 K7 + 0x60180018, // 001E GETGBL R6 G24 + 0x581C0009, // 001F LDCONST R7 K9 + 0x5C200200, // 0020 MOVE R8 R1 + 0x88240703, // 0021 GETMBR R9 R3 K3 + 0x5C280200, // 0022 MOVE R10 R1 + 0x5C2C0200, // 0023 MOVE R11 R1 + 0x7C180A00, // 0024 CALL R6 5 + 0x7C100400, // 0025 CALL R4 2 + 0x50100000, // 0026 LDBOOL R4 0 0 + 0x80040800, // 0027 RET 1 R4 + 0x70020009, // 0028 JMP #0033 + 0x8C100107, // 0029 GETMET R4 R0 K7 + 0x60180018, // 002A GETGBL R6 G24 + 0x581C000A, // 002B LDCONST R7 K10 + 0x5C200200, // 002C MOVE R8 R1 + 0x88240703, // 002D GETMBR R9 R3 K3 + 0x5C280400, // 002E MOVE R10 R2 + 0x7C180800, // 002F CALL R6 4 + 0x7C100400, // 0030 CALL R4 2 + 0x50100000, // 0031 LDBOOL R4 0 0 + 0x80040800, // 0032 RET 1 R4 + 0x60100010, // 0033 GETGBL R4 G16 + 0xB8160800, // 0034 GETNGBL R5 K4 + 0x88140B0B, // 0035 GETMBR R5 R5 K11 + 0x88140B0C, // 0036 GETMBR R5 R5 K12 + 0x7C100200, // 0037 CALL R4 1 + 0xA8020010, // 0038 EXBLK 0 #004A + 0x5C140800, // 0039 MOVE R5 R4 + 0x7C140000, // 003A CALL R5 0 + 0x1C180205, // 003B EQ R6 R1 R5 + 0x781A000B, // 003C JMPF R6 #0049 + 0x8C180107, // 003D GETMET R6 R0 K7 + 0x60200018, // 003E GETGBL R8 G24 + 0x5824000D, // 003F LDCONST R9 K13 + 0x5C280200, // 0040 MOVE R10 R1 + 0x5C2C0400, // 0041 MOVE R11 R2 + 0x5C300200, // 0042 MOVE R12 R1 + 0x5C340200, // 0043 MOVE R13 R1 + 0x7C200A00, // 0044 CALL R8 5 + 0x7C180400, // 0045 CALL R6 2 + 0x50180000, // 0046 LDBOOL R6 0 0 + 0xA8040001, // 0047 EXBLK 1 1 + 0x80040C00, // 0048 RET 1 R6 + 0x7001FFEE, // 0049 JMP #0039 + 0x5810000E, // 004A LDCONST R4 K14 + 0xAC100200, // 004B CATCH R4 1 0 + 0xB0080000, // 004C RAISE 2 R0 R0 + 0x50100200, // 004D LDBOOL R4 1 0 + 0x80040800, // 004E RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_value_provider_reference +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_reference, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(symbol_exists), + /* K2 */ be_nested_str_weak(error), + /* K3 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X2E_X20Make_X20sure_X20the_X20value_X20provider_X20or_X20animation_X20is_X20defined_X20before_X20use_X2E), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(animation_dsl), + /* K7 */ be_nested_str_weak(_symbol_entry), + /* K8 */ be_nested_str_weak(TYPE_VALUE_PROVIDER), + /* K9 */ be_nested_str_weak(TYPE_ANIMATION), + /* K10 */ be_nested_str_weak(_X27_X25s_X27_X20in_X20_X25s_X20statement_X20is_X20not_X20a_X20value_X20provider_X20or_X20animation_X20instance_X2E_X20Only_X20value_X20provider_X20instances_X20_X28like_X20oscillators_X29_X20and_X20animation_X20instances_X20can_X20be_X20restarted_X2E), + /* K11 */ be_nested_str_weak(Could_X20not_X20validate_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X3A_X20_X25s), + }), + be_str_weak(_validate_value_provider_reference), + &be_const_str_solidified, + ( &(const binstruction[69]) { /* code */ + 0xA8020034, // 0000 EXBLK 0 #0036 + 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x8C0C0701, // 0002 GETMET R3 R3 K1 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x740E0009, // 0005 JMPT R3 #0010 + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180003, // 0008 LDCONST R6 K3 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x7C140600, // 000B CALL R5 3 + 0x7C0C0400, // 000C CALL R3 2 + 0x500C0000, // 000D LDBOOL R3 0 0 + 0xA8040001, // 000E EXBLK 1 1 + 0x80040600, // 000F RET 1 R3 + 0x880C0100, // 0010 GETMBR R3 R0 K0 + 0x8C0C0704, // 0011 GETMET R3 R3 K4 + 0x5C140200, // 0012 MOVE R5 R1 + 0x7C0C0400, // 0013 CALL R3 2 + 0x4C100000, // 0014 LDNIL R4 + 0x20100604, // 0015 NE R4 R3 R4 + 0x78120019, // 0016 JMPF R4 #0031 + 0x88100705, // 0017 GETMBR R4 R3 K5 + 0xB8160C00, // 0018 GETNGBL R5 K6 + 0x88140B07, // 0019 GETMBR R5 R5 K7 + 0x88140B08, // 001A GETMBR R5 R5 K8 + 0x1C100805, // 001B EQ R4 R4 R5 + 0x74120005, // 001C JMPT R4 #0023 + 0x88100705, // 001D GETMBR R4 R3 K5 + 0xB8160C00, // 001E GETNGBL R5 K6 + 0x88140B07, // 001F GETMBR R5 R5 K7 + 0x88140B09, // 0020 GETMBR R5 R5 K9 + 0x1C100805, // 0021 EQ R4 R4 R5 + 0x78120003, // 0022 JMPF R4 #0027 + 0x50100200, // 0023 LDBOOL R4 1 0 + 0xA8040001, // 0024 EXBLK 1 1 + 0x80040800, // 0025 RET 1 R4 + 0x70020009, // 0026 JMP #0031 + 0x8C100102, // 0027 GETMET R4 R0 K2 + 0x60180018, // 0028 GETGBL R6 G24 + 0x581C000A, // 0029 LDCONST R7 K10 + 0x5C200200, // 002A MOVE R8 R1 + 0x5C240400, // 002B MOVE R9 R2 + 0x7C180600, // 002C CALL R6 3 + 0x7C100400, // 002D CALL R4 2 + 0x50100000, // 002E LDBOOL R4 0 0 + 0xA8040001, // 002F EXBLK 1 1 + 0x80040800, // 0030 RET 1 R4 + 0x50100200, // 0031 LDBOOL R4 1 0 + 0xA8040001, // 0032 EXBLK 1 1 + 0x80040800, // 0033 RET 1 R4 + 0xA8040001, // 0034 EXBLK 1 1 + 0x7002000D, // 0035 JMP #0044 + 0xAC0C0002, // 0036 CATCH R3 0 2 + 0x7002000A, // 0037 JMP #0043 + 0x8C140102, // 0038 GETMET R5 R0 K2 + 0x601C0018, // 0039 GETGBL R7 G24 + 0x5820000B, // 003A LDCONST R8 K11 + 0x5C240200, // 003B MOVE R9 R1 + 0x5C280400, // 003C MOVE R10 R2 + 0x5C2C0800, // 003D MOVE R11 R4 + 0x7C1C0800, // 003E CALL R7 4 + 0x7C140400, // 003F CALL R5 2 + 0x50140000, // 0040 LDBOOL R5 0 0 + 0x80040A00, // 0041 RET 1 R5 + 0x70020000, // 0042 JMP #0044 + 0xB0080000, // 0043 RAISE 2 R0 R0 + 0x80000000, // 0044 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_animation_factory_creates_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(_symbol_entry), + /* K5 */ be_nested_str_weak(TYPE_ANIMATION_CONSTRUCTOR), + }), + be_str_weak(_validate_animation_factory_creates_animation), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0005, // 0006 JMPF R3 #000D + 0x880C0502, // 0007 GETMBR R3 R2 K2 + 0xB8120600, // 0008 GETNGBL R4 K3 + 0x88100904, // 0009 GETMBR R4 R4 K4 + 0x88100905, // 000A GETMBR R4 R4 K5 + 0x1C0C0604, // 000B EQ R3 R3 R4 + 0x740E0000, // 000C JMPT R3 #000E + 0x500C0001, // 000D LDBOOL R3 0 1 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _determine_function_return_type +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__determine_function_return_type, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(type), + /* K1 */ be_nested_str_weak(animation_dsl), + /* K2 */ be_nested_str_weak(_symbol_entry), + /* K3 */ be_nested_str_weak(TYPE_ANIMATION_CONSTRUCTOR), + /* K4 */ be_nested_str_weak(TYPE_ANIMATION), + /* K5 */ be_nested_str_weak(animation), + /* K6 */ be_nested_str_weak(TYPE_COLOR_CONSTRUCTOR), + /* K7 */ be_nested_str_weak(TYPE_COLOR), + /* K8 */ be_nested_str_weak(color), + /* K9 */ be_nested_str_weak(TYPE_VALUE_PROVIDER_CONSTRUCTOR), + /* K10 */ be_nested_str_weak(TYPE_VALUE_PROVIDER), + /* K11 */ be_nested_str_weak(value_provider), + /* K12 */ be_nested_str_weak(TYPE_PALETTE_CONSTANT), + /* K13 */ be_nested_str_weak(TYPE_PALETTE), + /* K14 */ be_nested_str_weak(palette), + /* K15 */ be_nested_str_weak(TYPE_MATH_FUNCTION), + /* K16 */ be_nested_str_weak(variable), + /* K17 */ be_nested_str_weak(TYPE_USER_FUNCTION), + /* K18 */ be_nested_str_weak(TYPE_TEMPLATE), + }), + be_str_weak(_determine_function_return_type), + &be_const_str_solidified, + ( &(const binstruction[81]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A004C, // 0002 JMPF R2 #0050 + 0x88080300, // 0003 GETMBR R2 R1 K0 + 0xB80E0200, // 0004 GETNGBL R3 K1 + 0x880C0702, // 0005 GETMBR R3 R3 K2 + 0x880C0703, // 0006 GETMBR R3 R3 K3 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x740A0005, // 0008 JMPT R2 #000F + 0x88080300, // 0009 GETMBR R2 R1 K0 + 0xB80E0200, // 000A GETNGBL R3 K1 + 0x880C0702, // 000B GETMBR R3 R3 K2 + 0x880C0704, // 000C GETMBR R3 R3 K4 + 0x1C080403, // 000D EQ R2 R2 R3 + 0x780A0001, // 000E JMPF R2 #0011 + 0x80060A00, // 000F RET 1 K5 + 0x7002003E, // 0010 JMP #0050 + 0x88080300, // 0011 GETMBR R2 R1 K0 + 0xB80E0200, // 0012 GETNGBL R3 K1 + 0x880C0702, // 0013 GETMBR R3 R3 K2 + 0x880C0706, // 0014 GETMBR R3 R3 K6 + 0x1C080403, // 0015 EQ R2 R2 R3 + 0x740A0005, // 0016 JMPT R2 #001D + 0x88080300, // 0017 GETMBR R2 R1 K0 + 0xB80E0200, // 0018 GETNGBL R3 K1 + 0x880C0702, // 0019 GETMBR R3 R3 K2 + 0x880C0707, // 001A GETMBR R3 R3 K7 + 0x1C080403, // 001B EQ R2 R2 R3 + 0x780A0001, // 001C JMPF R2 #001F + 0x80061000, // 001D RET 1 K8 + 0x70020030, // 001E JMP #0050 + 0x88080300, // 001F GETMBR R2 R1 K0 + 0xB80E0200, // 0020 GETNGBL R3 K1 + 0x880C0702, // 0021 GETMBR R3 R3 K2 + 0x880C0709, // 0022 GETMBR R3 R3 K9 + 0x1C080403, // 0023 EQ R2 R2 R3 + 0x740A0005, // 0024 JMPT R2 #002B + 0x88080300, // 0025 GETMBR R2 R1 K0 + 0xB80E0200, // 0026 GETNGBL R3 K1 + 0x880C0702, // 0027 GETMBR R3 R3 K2 + 0x880C070A, // 0028 GETMBR R3 R3 K10 + 0x1C080403, // 0029 EQ R2 R2 R3 + 0x780A0001, // 002A JMPF R2 #002D + 0x80061600, // 002B RET 1 K11 + 0x70020022, // 002C JMP #0050 + 0x88080300, // 002D GETMBR R2 R1 K0 + 0xB80E0200, // 002E GETNGBL R3 K1 + 0x880C0702, // 002F GETMBR R3 R3 K2 + 0x880C070C, // 0030 GETMBR R3 R3 K12 + 0x1C080403, // 0031 EQ R2 R2 R3 + 0x740A0005, // 0032 JMPT R2 #0039 + 0x88080300, // 0033 GETMBR R2 R1 K0 + 0xB80E0200, // 0034 GETNGBL R3 K1 + 0x880C0702, // 0035 GETMBR R3 R3 K2 + 0x880C070D, // 0036 GETMBR R3 R3 K13 + 0x1C080403, // 0037 EQ R2 R2 R3 + 0x780A0001, // 0038 JMPF R2 #003B + 0x80061C00, // 0039 RET 1 K14 + 0x70020014, // 003A JMP #0050 + 0x88080300, // 003B GETMBR R2 R1 K0 + 0xB80E0200, // 003C GETNGBL R3 K1 + 0x880C0702, // 003D GETMBR R3 R3 K2 + 0x880C070F, // 003E GETMBR R3 R3 K15 + 0x1C080403, // 003F EQ R2 R2 R3 + 0x780A0001, // 0040 JMPF R2 #0043 + 0x80062000, // 0041 RET 1 K16 + 0x7002000C, // 0042 JMP #0050 + 0x88080300, // 0043 GETMBR R2 R1 K0 + 0xB80E0200, // 0044 GETNGBL R3 K1 + 0x880C0702, // 0045 GETMBR R3 R3 K2 + 0x880C0711, // 0046 GETMBR R3 R3 K17 + 0x1C080403, // 0047 EQ R2 R2 R3 + 0x740A0005, // 0048 JMPT R2 #004F + 0x88080300, // 0049 GETMBR R2 R1 K0 + 0xB80E0200, // 004A GETNGBL R3 K1 + 0x880C0702, // 004B GETMBR R3 R3 K2 + 0x880C0712, // 004C GETMBR R3 R3 K18 + 0x1C080403, // 004D EQ R2 R2 R3 + 0x780A0000, // 004E JMPF R2 #0050 + 0x80062000, // 004F RET 1 K16 + 0x80062000, // 0050 RET 1 K16 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_set +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(variable), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(process_value), + /* K7 */ be_nested_str_weak(CONTEXT_VARIABLE), + /* K8 */ be_nested_str_weak(collect_inline_comment), + /* K9 */ be_nested_str_weak(_create_symbol_by_return_type), + /* K10 */ be_nested_str_weak(return_type), + /* K11 */ be_nested_str_weak(instance_for_validation), + /* K12 */ be_nested_str_weak(get_reference), + /* K13 */ be_nested_str_weak(_X25s_), + /* K14 */ be_nested_str_weak(add), + /* K15 */ be_nested_str_weak(var_X20_X25s_X20_X3D_X20_X25s_X25s), + /* K16 */ be_nested_str_weak(expr), + }), + be_str_weak(process_set), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x88100107, // 000F GETMBR R4 R0 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x8C0C0108, // 0011 GETMET R3 R0 K8 + 0x7C0C0200, // 0012 CALL R3 1 + 0x8C100109, // 0013 GETMET R4 R0 K9 + 0x5C180200, // 0014 MOVE R6 R1 + 0x881C050A, // 0015 GETMBR R7 R2 K10 + 0x8820050B, // 0016 GETMBR R8 R2 K11 + 0x7C100800, // 0017 CALL R4 4 + 0x4C140000, // 0018 LDNIL R5 + 0x20140805, // 0019 NE R5 R4 R5 + 0x78160002, // 001A JMPF R5 #001E + 0x8C14090C, // 001B GETMET R5 R4 K12 + 0x7C140200, // 001C CALL R5 1 + 0x70020003, // 001D JMP #0022 + 0x60140018, // 001E GETGBL R5 G24 + 0x5818000D, // 001F LDCONST R6 K13 + 0x5C1C0200, // 0020 MOVE R7 R1 + 0x7C140400, // 0021 CALL R5 2 + 0x8C18010E, // 0022 GETMET R6 R0 K14 + 0x60200018, // 0023 GETGBL R8 G24 + 0x5824000F, // 0024 LDCONST R9 K15 + 0x5C280A00, // 0025 MOVE R10 R5 + 0x882C0510, // 0026 GETMBR R11 R2 K16 + 0x5C300600, // 0027 MOVE R12 R3 + 0x7C200800, // 0028 CALL R8 4 + 0x7C180400, // 0029 CALL R6 2 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_assignment_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_identifier), + /* K1 */ be_nested_str_weak(expect_dot), + /* K2 */ be_nested_str_weak(expect_assign), + /* K3 */ be_nested_str_weak(process_value), + /* K4 */ be_nested_str_weak(CONTEXT_PROPERTY), + /* K5 */ be_nested_str_weak(collect_inline_comment), + /* K6 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2E_X25s_X20_X3D_X20_X25s_X20end), + /* K7 */ be_nested_str_weak(expr), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), + /* K10 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_sequence_assignment_fluent), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x8C080100, // 0004 GETMET R2 R0 K0 + 0x7C080200, // 0005 CALL R2 1 + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0103, // 0008 GETMET R3 R0 K3 + 0x88140104, // 0009 GETMBR R5 R0 K4 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C100105, // 000B GETMET R4 R0 K5 + 0x7C100200, // 000C CALL R4 1 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180006, // 000E LDCONST R6 K6 + 0x5C1C0200, // 000F MOVE R7 R1 + 0x5C200400, // 0010 MOVE R8 R2 + 0x88240707, // 0011 GETMBR R9 R3 K7 + 0x7C140800, // 0012 CALL R5 4 + 0x8C180108, // 0013 GETMET R6 R0 K8 + 0x60200018, // 0014 GETGBL R8 G24 + 0x58240009, // 0015 LDCONST R9 K9 + 0x8C28010A, // 0016 GETMET R10 R0 K10 + 0x7C280200, // 0017 CALL R10 1 + 0x5C2C0A00, // 0018 MOVE R11 R5 + 0x5C300800, // 0019 MOVE R12 R4 + 0x7C200800, // 001A CALL R8 4 + 0x7C180400, // 001B CALL R6 2 + 0x80000000, // 001C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_percentage_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(PERCENTAGE), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(NUMBER), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20percentage_X20value), + }), + be_str_weak(process_percentage_value), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0015, // 0004 JMPF R2 #001B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A000F, // 000A JMPF R2 #001B + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x7C0C0200, // 000D CALL R3 1 + 0x600C000A, // 000E GETGBL R3 G10 + 0x5411FFFD, // 000F LDINT R4 -2 + 0x40120E04, // 0010 CONNECT R4 K7 R4 + 0x94100404, // 0011 GETIDX R4 R2 R4 + 0x7C0C0200, // 0012 CALL R3 1 + 0x60100009, // 0013 GETGBL R4 G9 + 0x541600FE, // 0014 LDINT R5 255 + 0x08140605, // 0015 MUL R5 R3 R5 + 0x541A0063, // 0016 LDINT R6 100 + 0x0C140A06, // 0017 DIV R5 R5 R6 + 0x7C100200, // 0018 CALL R4 1 + 0x80040800, // 0019 RET 1 R4 + 0x70020017, // 001A JMP #0033 + 0x4C080000, // 001B LDNIL R2 + 0x20080202, // 001C NE R2 R1 R2 + 0x780A000F, // 001D JMPF R2 #002E + 0x88080301, // 001E GETMBR R2 R1 K1 + 0xB80E0400, // 001F GETNGBL R3 K2 + 0x880C0703, // 0020 GETMBR R3 R3 K3 + 0x880C0708, // 0021 GETMBR R3 R3 K8 + 0x1C080403, // 0022 EQ R2 R2 R3 + 0x780A0009, // 0023 JMPF R2 #002E + 0x88080305, // 0024 GETMBR R2 R1 K5 + 0x8C0C0106, // 0025 GETMET R3 R0 K6 + 0x7C0C0200, // 0026 CALL R3 1 + 0x600C0009, // 0027 GETGBL R3 G9 + 0x6010000A, // 0028 GETGBL R4 G10 + 0x5C140400, // 0029 MOVE R5 R2 + 0x7C100200, // 002A CALL R4 1 + 0x7C0C0200, // 002B CALL R3 1 + 0x80040600, // 002C RET 1 R3 + 0x70020004, // 002D JMP #0033 + 0x8C080109, // 002E GETMET R2 R0 K9 + 0x5810000A, // 002F LDCONST R4 K10 + 0x7C080400, // 0030 CALL R2 2 + 0x540A00FE, // 0031 LDINT R2 255 + 0x80040400, // 0032 RET 1 R2 + 0x80000000, // 0033 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_template_function +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_template_function, /* name */ + be_nested_proto( + 17, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[24]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(engine), + /* K2 */ be_nested_str_weak(_X2C_X20_X25s_), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(add), + /* K5 */ be_nested_str_weak(_X23_X20Template_X20function_X3A_X20_X25s), + /* K6 */ be_nested_str_weak(def_X20_X25s_template_X28_X25s_X29), + /* K7 */ be_nested_str_weak(animation_dsl), + /* K8 */ be_nested_str_weak(SimpleDSLTranspiler), + /* K9 */ be_nested_str_weak(symbol_table), + /* K10 */ be_nested_str_weak(_symbol_table), + /* K11 */ be_nested_str_weak(strip_initialized), + /* K12 */ be_nested_str_weak(create_variable), + /* K13 */ be_nested_str_weak(transpile_template_body), + /* K14 */ be_nested_str_weak(split), + /* K15 */ be_nested_str_weak(_X0A), + /* K16 */ be_const_int(0), + /* K17 */ be_nested_str_weak(_X20_X20_X25s), + /* K18 */ be_nested_str_weak(errors), + /* K19 */ be_nested_str_weak(error), + /* K20 */ be_nested_str_weak(Template_X20_X27_X25s_X27_X20body_X20error_X3A_X20_X25s), + /* K21 */ be_nested_str_weak(end), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(animation_X2Eregister_user_function_X28_X27_X25s_X27_X2C_X20_X25s_template_X29), + }), + be_str_weak(generate_template_function), + &be_const_str_solidified, + ( &(const binstruction[119]) { /* code */ + 0xA4160000, // 0000 IMPORT R5 K0 + 0x58180001, // 0001 LDCONST R6 K1 + 0x601C0010, // 0002 GETGBL R7 G16 + 0x5C200400, // 0003 MOVE R8 R2 + 0x7C1C0200, // 0004 CALL R7 1 + 0xA8020007, // 0005 EXBLK 0 #000E + 0x5C200E00, // 0006 MOVE R8 R7 + 0x7C200000, // 0007 CALL R8 0 + 0x60240018, // 0008 GETGBL R9 G24 + 0x58280002, // 0009 LDCONST R10 K2 + 0x5C2C1000, // 000A MOVE R11 R8 + 0x7C240400, // 000B CALL R9 2 + 0x00180C09, // 000C ADD R6 R6 R9 + 0x7001FFF7, // 000D JMP #0006 + 0x581C0003, // 000E LDCONST R7 K3 + 0xAC1C0200, // 000F CATCH R7 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x8C1C0104, // 0011 GETMET R7 R0 K4 + 0x60240018, // 0012 GETGBL R9 G24 + 0x58280005, // 0013 LDCONST R10 K5 + 0x5C2C0200, // 0014 MOVE R11 R1 + 0x7C240400, // 0015 CALL R9 2 + 0x7C1C0400, // 0016 CALL R7 2 + 0x8C1C0104, // 0017 GETMET R7 R0 K4 + 0x60240018, // 0018 GETGBL R9 G24 + 0x58280006, // 0019 LDCONST R10 K6 + 0x5C2C0200, // 001A MOVE R11 R1 + 0x5C300C00, // 001B MOVE R12 R6 + 0x7C240600, // 001C CALL R9 3 + 0x7C1C0400, // 001D CALL R7 2 + 0xB81E0E00, // 001E GETNGBL R7 K7 + 0x8C1C0F08, // 001F GETMET R7 R7 K8 + 0x5C240800, // 0020 MOVE R9 R4 + 0x7C1C0400, // 0021 CALL R7 2 + 0xB8220E00, // 0022 GETNGBL R8 K7 + 0x8C20110A, // 0023 GETMET R8 R8 K10 + 0x7C200200, // 0024 CALL R8 1 + 0x901E1208, // 0025 SETMBR R7 K9 R8 + 0x50200200, // 0026 LDBOOL R8 1 0 + 0x901E1608, // 0027 SETMBR R7 K11 R8 + 0x60200010, // 0028 GETGBL R8 G16 + 0x5C240400, // 0029 MOVE R9 R2 + 0x7C200200, // 002A CALL R8 1 + 0xA8020006, // 002B EXBLK 0 #0033 + 0x5C241000, // 002C MOVE R9 R8 + 0x7C240000, // 002D CALL R9 0 + 0x88280F09, // 002E GETMBR R10 R7 K9 + 0x8C28150C, // 002F GETMET R10 R10 K12 + 0x5C301200, // 0030 MOVE R12 R9 + 0x7C280400, // 0031 CALL R10 2 + 0x7001FFF8, // 0032 JMP #002C + 0x58200003, // 0033 LDCONST R8 K3 + 0xAC200200, // 0034 CATCH R8 1 0 + 0xB0080000, // 0035 RAISE 2 R0 R0 + 0x8C200F0D, // 0036 GETMET R8 R7 K13 + 0x7C200200, // 0037 CALL R8 1 + 0x4C240000, // 0038 LDNIL R9 + 0x20241009, // 0039 NE R9 R8 R9 + 0x78260019, // 003A JMPF R9 #0055 + 0x8C240B0E, // 003B GETMET R9 R5 K14 + 0x5C2C1000, // 003C MOVE R11 R8 + 0x5830000F, // 003D LDCONST R12 K15 + 0x7C240600, // 003E CALL R9 3 + 0x60280010, // 003F GETGBL R10 G16 + 0x5C2C1200, // 0040 MOVE R11 R9 + 0x7C280200, // 0041 CALL R10 1 + 0xA802000D, // 0042 EXBLK 0 #0051 + 0x5C2C1400, // 0043 MOVE R11 R10 + 0x7C2C0000, // 0044 CALL R11 0 + 0x6030000C, // 0045 GETGBL R12 G12 + 0x5C341600, // 0046 MOVE R13 R11 + 0x7C300200, // 0047 CALL R12 1 + 0x24301910, // 0048 GT R12 R12 K16 + 0x78320005, // 0049 JMPF R12 #0050 + 0x8C300104, // 004A GETMET R12 R0 K4 + 0x60380018, // 004B GETGBL R14 G24 + 0x583C0011, // 004C LDCONST R15 K17 + 0x5C401600, // 004D MOVE R16 R11 + 0x7C380400, // 004E CALL R14 2 + 0x7C300400, // 004F CALL R12 2 + 0x7001FFF1, // 0050 JMP #0043 + 0x58280003, // 0051 LDCONST R10 K3 + 0xAC280200, // 0052 CATCH R10 1 0 + 0xB0080000, // 0053 RAISE 2 R0 R0 + 0x70020010, // 0054 JMP #0066 + 0x60240010, // 0055 GETGBL R9 G16 + 0x88280F12, // 0056 GETMBR R10 R7 K18 + 0x7C240200, // 0057 CALL R9 1 + 0xA8020009, // 0058 EXBLK 0 #0063 + 0x5C281200, // 0059 MOVE R10 R9 + 0x7C280000, // 005A CALL R10 0 + 0x8C2C0113, // 005B GETMET R11 R0 K19 + 0x60340018, // 005C GETGBL R13 G24 + 0x58380014, // 005D LDCONST R14 K20 + 0x5C3C0200, // 005E MOVE R15 R1 + 0x5C401400, // 005F MOVE R16 R10 + 0x7C340600, // 0060 CALL R13 3 + 0x7C2C0400, // 0061 CALL R11 2 + 0x7001FFF5, // 0062 JMP #0059 + 0x58240003, // 0063 LDCONST R9 K3 + 0xAC240200, // 0064 CATCH R9 1 0 + 0xB0080000, // 0065 RAISE 2 R0 R0 + 0x8C240104, // 0066 GETMET R9 R0 K4 + 0x582C0015, // 0067 LDCONST R11 K21 + 0x7C240400, // 0068 CALL R9 2 + 0x8C240104, // 0069 GETMET R9 R0 K4 + 0x582C0016, // 006A LDCONST R11 K22 + 0x7C240400, // 006B CALL R9 2 + 0x8C240104, // 006C GETMET R9 R0 K4 + 0x602C0018, // 006D GETGBL R11 G24 + 0x58300017, // 006E LDCONST R12 K23 + 0x5C340200, // 006F MOVE R13 R1 + 0x5C380200, // 0070 MOVE R14 R1 + 0x7C2C0600, // 0071 CALL R11 3 + 0x7C240400, // 0072 CALL R9 2 + 0x8C240104, // 0073 GETMET R9 R0 K4 + 0x582C0016, // 0074 LDCONST R11 K22 + 0x7C240400, // 0075 CALL R9 2 + 0x80000000, // 0076 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_property_assignment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_property_assignment, /* name */ + be_nested_proto( + 14, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[38]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_identifier), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(LEFT_PAREN), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(process_function_arguments), + /* K8 */ be_nested_str_weak(collect_inline_comment), + /* K9 */ be_nested_str_weak(process_log_call), + /* K10 */ be_nested_str_weak(standalone), + /* K11 */ be_nested_str_weak(add), + /* K12 */ be_nested_str_weak(symbol_table), + /* K13 */ be_nested_str_weak(get), + /* K14 */ be_nested_str_weak(_symbol_entry), + /* K15 */ be_nested_str_weak(TYPE_TEMPLATE), + /* K16 */ be_nested_str_weak(), + /* K17 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K18 */ be_nested_str_weak(engine), + /* K19 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), + /* K20 */ be_nested_str_weak(has_template_calls), + /* K21 */ be_nested_str_weak(error), + /* K22 */ be_nested_str_weak(Standalone_X20function_X20calls_X20are_X20only_X20supported_X20for_X20templates_X2E_X20_X27_X25s_X27_X20is_X20not_X20a_X20template_X2E), + /* K23 */ be_nested_str_weak(skip_statement), + /* K24 */ be_nested_str_weak(DOT), + /* K25 */ be_nested_str_weak(next), + /* K26 */ be_nested_str_weak(contains), + /* K27 */ be_nested_str_weak(instance), + /* K28 */ be_nested_str_weak(_validate_single_parameter), + /* K29 */ be_nested_str_weak(TYPE_SEQUENCE), + /* K30 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20assignments_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), + /* K31 */ be_nested_str_weak(expect_assign), + /* K32 */ be_nested_str_weak(process_value), + /* K33 */ be_nested_str_weak(CONTEXT_PROPERTY), + /* K34 */ be_nested_str_weak(get_reference), + /* K35 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + /* K36 */ be_nested_str_weak(expr), + /* K37 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), + }), + be_str_weak(process_property_assignment), + &be_const_str_solidified, + ( &(const binstruction[164]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x4C0C0000, // 0004 LDNIL R3 + 0x20080403, // 0005 NE R2 R2 R3 + 0x780A0045, // 0006 JMPF R2 #004D + 0x8C080101, // 0007 GETMET R2 R0 K1 + 0x7C080200, // 0008 CALL R2 1 + 0x88080502, // 0009 GETMBR R2 R2 K2 + 0xB80E0600, // 000A GETNGBL R3 K3 + 0x880C0704, // 000B GETMBR R3 R3 K4 + 0x880C0705, // 000C GETMBR R3 R3 K5 + 0x1C080403, // 000D EQ R2 R2 R3 + 0x780A003D, // 000E JMPF R2 #004D + 0x1C080306, // 000F EQ R2 R1 K6 + 0x780A000D, // 0010 JMPF R2 #001F + 0x8C080107, // 0011 GETMET R2 R0 K7 + 0x50100000, // 0012 LDBOOL R4 0 0 + 0x7C080400, // 0013 CALL R2 2 + 0x8C0C0108, // 0014 GETMET R3 R0 K8 + 0x7C0C0200, // 0015 CALL R3 1 + 0x8C100109, // 0016 GETMET R4 R0 K9 + 0x5C180400, // 0017 MOVE R6 R2 + 0x581C000A, // 0018 LDCONST R7 K10 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C100800, // 001A CALL R4 4 + 0x8C14010B, // 001B GETMET R5 R0 K11 + 0x5C1C0800, // 001C MOVE R7 R4 + 0x7C140400, // 001D CALL R5 2 + 0x80000A00, // 001E RET 0 + 0x8808010C, // 001F GETMBR R2 R0 K12 + 0x8C08050D, // 0020 GETMET R2 R2 K13 + 0x5C100200, // 0021 MOVE R4 R1 + 0x7C080400, // 0022 CALL R2 2 + 0x4C0C0000, // 0023 LDNIL R3 + 0x200C0403, // 0024 NE R3 R2 R3 + 0x780E001D, // 0025 JMPF R3 #0044 + 0x880C0502, // 0026 GETMBR R3 R2 K2 + 0xB8120600, // 0027 GETNGBL R4 K3 + 0x8810090E, // 0028 GETMBR R4 R4 K14 + 0x8810090F, // 0029 GETMBR R4 R4 K15 + 0x1C0C0604, // 002A EQ R3 R3 R4 + 0x780E0017, // 002B JMPF R3 #0044 + 0x8C0C0107, // 002C GETMET R3 R0 K7 + 0x50140000, // 002D LDBOOL R5 0 0 + 0x7C0C0400, // 002E CALL R3 2 + 0x20100710, // 002F NE R4 R3 K16 + 0x78120004, // 0030 JMPF R4 #0036 + 0x60100018, // 0031 GETGBL R4 G24 + 0x58140011, // 0032 LDCONST R5 K17 + 0x5C180600, // 0033 MOVE R6 R3 + 0x7C100400, // 0034 CALL R4 2 + 0x70020000, // 0035 JMP #0037 + 0x58100012, // 0036 LDCONST R4 K18 + 0x8C140108, // 0037 GETMET R5 R0 K8 + 0x7C140200, // 0038 CALL R5 1 + 0x8C18010B, // 0039 GETMET R6 R0 K11 + 0x60200018, // 003A GETGBL R8 G24 + 0x58240013, // 003B LDCONST R9 K19 + 0x5C280200, // 003C MOVE R10 R1 + 0x5C2C0800, // 003D MOVE R11 R4 + 0x5C300A00, // 003E MOVE R12 R5 + 0x7C200800, // 003F CALL R8 4 + 0x7C180400, // 0040 CALL R6 2 + 0x50180200, // 0041 LDBOOL R6 1 0 + 0x90022806, // 0042 SETMBR R0 K20 R6 + 0x70020007, // 0043 JMP #004C + 0x8C0C0115, // 0044 GETMET R3 R0 K21 + 0x60140018, // 0045 GETGBL R5 G24 + 0x58180016, // 0046 LDCONST R6 K22 + 0x5C1C0200, // 0047 MOVE R7 R1 + 0x7C140400, // 0048 CALL R5 2 + 0x7C0C0400, // 0049 CALL R3 2 + 0x8C0C0117, // 004A GETMET R3 R0 K23 + 0x7C0C0200, // 004B CALL R3 1 + 0x80000600, // 004C RET 0 + 0x8C080101, // 004D GETMET R2 R0 K1 + 0x7C080200, // 004E CALL R2 1 + 0x4C0C0000, // 004F LDNIL R3 + 0x20080403, // 0050 NE R2 R2 R3 + 0x780A0048, // 0051 JMPF R2 #009B + 0x8C080101, // 0052 GETMET R2 R0 K1 + 0x7C080200, // 0053 CALL R2 1 + 0x88080502, // 0054 GETMBR R2 R2 K2 + 0xB80E0600, // 0055 GETNGBL R3 K3 + 0x880C0704, // 0056 GETMBR R3 R3 K4 + 0x880C0718, // 0057 GETMBR R3 R3 K24 + 0x1C080403, // 0058 EQ R2 R2 R3 + 0x780A0040, // 0059 JMPF R2 #009B + 0x8C080119, // 005A GETMET R2 R0 K25 + 0x7C080200, // 005B CALL R2 1 + 0x8C080100, // 005C GETMET R2 R0 K0 + 0x7C080200, // 005D CALL R2 1 + 0x880C010C, // 005E GETMBR R3 R0 K12 + 0x8C0C071A, // 005F GETMET R3 R3 K26 + 0x5C140200, // 0060 MOVE R5 R1 + 0x7C0C0400, // 0061 CALL R3 2 + 0x780E0022, // 0062 JMPF R3 #0086 + 0x880C010C, // 0063 GETMBR R3 R0 K12 + 0x8C0C070D, // 0064 GETMET R3 R3 K13 + 0x5C140200, // 0065 MOVE R5 R1 + 0x7C0C0400, // 0066 CALL R3 2 + 0x4C100000, // 0067 LDNIL R4 + 0x20100604, // 0068 NE R4 R3 R4 + 0x7812000C, // 0069 JMPF R4 #0077 + 0x8810071B, // 006A GETMBR R4 R3 K27 + 0x4C140000, // 006B LDNIL R5 + 0x20100805, // 006C NE R4 R4 R5 + 0x78120008, // 006D JMPF R4 #0077 + 0x60100005, // 006E GETGBL R4 G5 + 0x8814071B, // 006F GETMBR R5 R3 K27 + 0x7C100200, // 0070 CALL R4 1 + 0x8C14011C, // 0071 GETMET R5 R0 K28 + 0x5C1C0800, // 0072 MOVE R7 R4 + 0x5C200400, // 0073 MOVE R8 R2 + 0x8824071B, // 0074 GETMBR R9 R3 K27 + 0x7C140800, // 0075 CALL R5 4 + 0x7002000E, // 0076 JMP #0086 + 0x4C100000, // 0077 LDNIL R4 + 0x20100604, // 0078 NE R4 R3 R4 + 0x7812000B, // 0079 JMPF R4 #0086 + 0x88100702, // 007A GETMBR R4 R3 K2 + 0xB8160600, // 007B GETNGBL R5 K3 + 0x88140B0E, // 007C GETMBR R5 R5 K14 + 0x88140B1D, // 007D GETMBR R5 R5 K29 + 0x1C100805, // 007E EQ R4 R4 R5 + 0x78120005, // 007F JMPF R4 #0086 + 0x8C100115, // 0080 GETMET R4 R0 K21 + 0x60180018, // 0081 GETGBL R6 G24 + 0x581C001E, // 0082 LDCONST R7 K30 + 0x5C200200, // 0083 MOVE R8 R1 + 0x7C180400, // 0084 CALL R6 2 + 0x7C100400, // 0085 CALL R4 2 + 0x8C0C011F, // 0086 GETMET R3 R0 K31 + 0x7C0C0200, // 0087 CALL R3 1 + 0x8C0C0120, // 0088 GETMET R3 R0 K32 + 0x88140121, // 0089 GETMBR R5 R0 K33 + 0x7C0C0400, // 008A CALL R3 2 + 0x8C100108, // 008B GETMET R4 R0 K8 + 0x7C100200, // 008C CALL R4 1 + 0x8814010C, // 008D GETMBR R5 R0 K12 + 0x8C140B22, // 008E GETMET R5 R5 K34 + 0x5C1C0200, // 008F MOVE R7 R1 + 0x7C140400, // 0090 CALL R5 2 + 0x8C18010B, // 0091 GETMET R6 R0 K11 + 0x60200018, // 0092 GETGBL R8 G24 + 0x58240023, // 0093 LDCONST R9 K35 + 0x5C280A00, // 0094 MOVE R10 R5 + 0x5C2C0400, // 0095 MOVE R11 R2 + 0x88300724, // 0096 GETMBR R12 R3 K36 + 0x5C340800, // 0097 MOVE R13 R4 + 0x7C200A00, // 0098 CALL R8 5 + 0x7C180400, // 0099 CALL R6 2 + 0x70020007, // 009A JMP #00A3 + 0x8C080115, // 009B GETMET R2 R0 K21 + 0x60100018, // 009C GETGBL R4 G24 + 0x58140025, // 009D LDCONST R5 K37 + 0x5C180200, // 009E MOVE R6 R1 + 0x7C100400, // 009F CALL R4 2 + 0x7C080400, // 00A0 CALL R2 2 + 0x8C080117, // 00A1 GETMET R2 R0 K23 + 0x7C080200, // 00A2 CALL R2 1 + 0x80000000, // 00A3 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transform_expression_for_closure +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transform_expression_for_closure, /* name */ + be_nested_proto( + 16, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(_X2B_X2B_X2B_X20transform_expression_for_closure_X20_X27_X25s_X27), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(animation_X2E), + /* K5 */ be_nested_str_weak(is_identifier_char), + /* K6 */ be_nested_str_weak(_), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(_X28engine_X29), + /* K9 */ be_nested_str_weak(animation_X2Eresolve_X28), + /* K10 */ be_nested_str_weak(animation_X2Eresolve_X28_X25s_X29), + /* K11 */ be_nested_str_weak(), + /* K12 */ be_const_int(2147483647), + /* K13 */ be_nested_str_weak(_X3D_X3D_X3D_X20transform_expression_for_closure_X20_X27_X25s_X27), + }), + be_str_weak(transform_expression_for_closure), + &be_const_str_solidified, + ( &(const binstruction[181]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0001, // 0001 GETGBL R3 G1 + 0x60100018, // 0002 GETGBL R4 G24 + 0x58140001, // 0003 LDCONST R5 K1 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0x5C0C0200, // 0007 MOVE R3 R1 + 0x58100002, // 0008 LDCONST R4 K2 + 0x58140002, // 0009 LDCONST R5 K2 + 0x50180200, // 000A LDBOOL R6 1 0 + 0x781A002D, // 000B JMPF R6 #003A + 0x8C180503, // 000C GETMET R6 R2 K3 + 0x5C200600, // 000D MOVE R8 R3 + 0x58240004, // 000E LDCONST R9 K4 + 0x5C280A00, // 000F MOVE R10 R5 + 0x7C180800, // 0010 CALL R6 4 + 0x141C0D02, // 0011 LT R7 R6 K2 + 0x781E0000, // 0012 JMPF R7 #0014 + 0x70020025, // 0013 JMP #003A + 0x541E0009, // 0014 LDINT R7 10 + 0x001C0C07, // 0015 ADD R7 R6 R7 + 0x5C200E00, // 0016 MOVE R8 R7 + 0x6024000C, // 0017 GETGBL R9 G12 + 0x5C280600, // 0018 MOVE R10 R3 + 0x7C240200, // 0019 CALL R9 1 + 0x14241009, // 001A LT R9 R8 R9 + 0x78260008, // 001B JMPF R9 #0025 + 0x8C240105, // 001C GETMET R9 R0 K5 + 0x942C0608, // 001D GETIDX R11 R3 R8 + 0x7C240400, // 001E CALL R9 2 + 0x74260002, // 001F JMPT R9 #0023 + 0x94240608, // 0020 GETIDX R9 R3 R8 + 0x1C241306, // 0021 EQ R9 R9 K6 + 0x78260001, // 0022 JMPF R9 #0025 + 0x00201107, // 0023 ADD R8 R8 K7 + 0x7001FFF1, // 0024 JMP #0017 + 0x24241007, // 0025 GT R9 R8 R7 + 0x7826000F, // 0026 JMPF R9 #0037 + 0x54260007, // 0027 LDINT R9 8 + 0x00241009, // 0028 ADD R9 R8 R9 + 0x6028000C, // 0029 GETGBL R10 G12 + 0x5C2C0600, // 002A MOVE R11 R3 + 0x7C280200, // 002B CALL R10 1 + 0x1424120A, // 002C LT R9 R9 R10 + 0x78260008, // 002D JMPF R9 #0037 + 0x54260006, // 002E LDINT R9 7 + 0x00241009, // 002F ADD R9 R8 R9 + 0x40241009, // 0030 CONNECT R9 R8 R9 + 0x94240609, // 0031 GETIDX R9 R3 R9 + 0x1C241308, // 0032 EQ R9 R9 K8 + 0x78260002, // 0033 JMPF R9 #0037 + 0x04241107, // 0034 SUB R9 R8 K7 + 0x40240E09, // 0035 CONNECT R9 R7 R9 + 0x94240609, // 0036 GETIDX R9 R3 R9 + 0x00240D07, // 0037 ADD R9 R6 K7 + 0x5C141200, // 0038 MOVE R5 R9 + 0x7001FFCF, // 0039 JMP #000A + 0x58100002, // 003A LDCONST R4 K2 + 0x6018000C, // 003B GETGBL R6 G12 + 0x5C1C0600, // 003C MOVE R7 R3 + 0x7C180200, // 003D CALL R6 1 + 0x14180806, // 003E LT R6 R4 R6 + 0x781A006D, // 003F JMPF R6 #00AE + 0x8C180503, // 0040 GETMET R6 R2 K3 + 0x5C200600, // 0041 MOVE R8 R3 + 0x58240006, // 0042 LDCONST R9 K6 + 0x5C280800, // 0043 MOVE R10 R4 + 0x7C180800, // 0044 CALL R6 4 + 0x141C0D02, // 0045 LT R7 R6 K2 + 0x781E0000, // 0046 JMPF R7 #0048 + 0x70020065, // 0047 JMP #00AE + 0x5C1C0C00, // 0048 MOVE R7 R6 + 0x24200F02, // 0049 GT R8 R7 K2 + 0x78220006, // 004A JMPF R8 #0052 + 0x8C200105, // 004B GETMET R8 R0 K5 + 0x04280F07, // 004C SUB R10 R7 K7 + 0x9428060A, // 004D GETIDX R10 R3 R10 + 0x7C200400, // 004E CALL R8 2 + 0x78220001, // 004F JMPF R8 #0052 + 0x041C0F07, // 0050 SUB R7 R7 K7 + 0x7001FFF6, // 0051 JMP #0049 + 0x50200200, // 0052 LDBOOL R8 1 0 + 0x54260011, // 0053 LDINT R9 18 + 0x28240E09, // 0054 GE R9 R7 R9 + 0x78260010, // 0055 JMPF R9 #0067 + 0x54260011, // 0056 LDINT R9 18 + 0x28240E09, // 0057 GE R9 R7 R9 + 0x78260002, // 0058 JMPF R9 #005C + 0x54260011, // 0059 LDINT R9 18 + 0x04240E09, // 005A SUB R9 R7 R9 + 0x70020000, // 005B JMP #005D + 0x58240002, // 005C LDCONST R9 K2 + 0x04280F07, // 005D SUB R10 R7 K7 + 0x4028120A, // 005E CONNECT R10 R9 R10 + 0x9428060A, // 005F GETIDX R10 R3 R10 + 0x8C2C0503, // 0060 GETMET R11 R2 K3 + 0x5C341400, // 0061 MOVE R13 R10 + 0x58380009, // 0062 LDCONST R14 K9 + 0x7C2C0600, // 0063 CALL R11 3 + 0x282C1702, // 0064 GE R11 R11 K2 + 0x782E0000, // 0065 JMPF R11 #0067 + 0x50200000, // 0066 LDBOOL R8 0 0 + 0x78220013, // 0067 JMPF R8 #007C + 0x54260009, // 0068 LDINT R9 10 + 0x28240E09, // 0069 GE R9 R7 R9 + 0x78260010, // 006A JMPF R9 #007C + 0x54260009, // 006B LDINT R9 10 + 0x28240E09, // 006C GE R9 R7 R9 + 0x78260002, // 006D JMPF R9 #0071 + 0x54260009, // 006E LDINT R9 10 + 0x04240E09, // 006F SUB R9 R7 R9 + 0x70020000, // 0070 JMP #0072 + 0x58240002, // 0071 LDCONST R9 K2 + 0x04280F07, // 0072 SUB R10 R7 K7 + 0x4028120A, // 0073 CONNECT R10 R9 R10 + 0x9428060A, // 0074 GETIDX R10 R3 R10 + 0x8C2C0503, // 0075 GETMET R11 R2 K3 + 0x5C341400, // 0076 MOVE R13 R10 + 0x58380004, // 0077 LDCONST R14 K4 + 0x7C2C0600, // 0078 CALL R11 3 + 0x282C1702, // 0079 GE R11 R11 K2 + 0x782E0000, // 007A JMPF R11 #007C + 0x50200000, // 007B LDBOOL R8 0 0 + 0x7822002D, // 007C JMPF R8 #00AB + 0x14240E06, // 007D LT R9 R7 R6 + 0x7826002B, // 007E JMPF R9 #00AB + 0x40240E06, // 007F CONNECT R9 R7 R6 + 0x94240609, // 0080 GETIDX R9 R3 R9 + 0x00280D07, // 0081 ADD R10 R6 K7 + 0x602C000C, // 0082 GETGBL R11 G12 + 0x5C300600, // 0083 MOVE R12 R3 + 0x7C2C0200, // 0084 CALL R11 1 + 0x282C140B, // 0085 GE R11 R10 R11 + 0x742E0003, // 0086 JMPT R11 #008B + 0x8C2C0105, // 0087 GETMET R11 R0 K5 + 0x9434060A, // 0088 GETIDX R13 R3 R10 + 0x7C2C0400, // 0089 CALL R11 2 + 0x742E001C, // 008A JMPT R11 #00A8 + 0x602C0018, // 008B GETGBL R11 G24 + 0x5830000A, // 008C LDCONST R12 K10 + 0x5C341200, // 008D MOVE R13 R9 + 0x7C2C0400, // 008E CALL R11 2 + 0x24300F02, // 008F GT R12 R7 K2 + 0x78320003, // 0090 JMPF R12 #0095 + 0x04300F07, // 0091 SUB R12 R7 K7 + 0x4032040C, // 0092 CONNECT R12 K2 R12 + 0x9430060C, // 0093 GETIDX R12 R3 R12 + 0x70020000, // 0094 JMP #0096 + 0x5830000B, // 0095 LDCONST R12 K11 + 0x6034000C, // 0096 GETGBL R13 G12 + 0x5C380600, // 0097 MOVE R14 R3 + 0x7C340200, // 0098 CALL R13 1 + 0x1434140D, // 0099 LT R13 R10 R13 + 0x78360002, // 009A JMPF R13 #009E + 0x4034150C, // 009B CONNECT R13 R10 K12 + 0x9434060D, // 009C GETIDX R13 R3 R13 + 0x70020000, // 009D JMP #009F + 0x5834000B, // 009E LDCONST R13 K11 + 0x0038180B, // 009F ADD R14 R12 R11 + 0x00381C0D, // 00A0 ADD R14 R14 R13 + 0x5C0C1C00, // 00A1 MOVE R3 R14 + 0x6038000C, // 00A2 GETGBL R14 G12 + 0x5C3C1600, // 00A3 MOVE R15 R11 + 0x7C380200, // 00A4 CALL R14 1 + 0x00380E0E, // 00A5 ADD R14 R7 R14 + 0x5C101C00, // 00A6 MOVE R4 R14 + 0x70020001, // 00A7 JMP #00AA + 0x002C0D07, // 00A8 ADD R11 R6 K7 + 0x5C101600, // 00A9 MOVE R4 R11 + 0x70020001, // 00AA JMP #00AD + 0x00240D07, // 00AB ADD R9 R6 K7 + 0x5C101200, // 00AC MOVE R4 R9 + 0x7001FF8C, // 00AD JMP #003B + 0x60180001, // 00AE GETGBL R6 G1 + 0x601C0018, // 00AF GETGBL R7 G24 + 0x5820000D, // 00B0 LDCONST R8 K13 + 0x5C240600, // 00B1 MOVE R9 R3 + 0x7C1C0400, // 00B2 CALL R7 2 + 0x7C180200, // 00B3 CALL R6 1 + 0x80040600, // 00B4 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_PAREN), + }), + be_str_weak(check_right_paren), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0005, // 0004 JMPF R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0000, // 000A JMPT R2 #000C + 0x50080001, // 000B LDBOOL R2 0 1 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x80040400, // 000D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_keyword +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(KEYWORD), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20_X27_X25s_X27), + }), + be_str_weak(expect_keyword), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x200C0403, // 0003 NE R3 R2 R3 + 0x780E000B, // 0004 JMPF R3 #0011 + 0x880C0501, // 0005 GETMBR R3 R2 K1 + 0xB8120400, // 0006 GETNGBL R4 K2 + 0x88100903, // 0007 GETMBR R4 R4 K3 + 0x88100904, // 0008 GETMBR R4 R4 K4 + 0x1C0C0604, // 0009 EQ R3 R3 R4 + 0x780E0005, // 000A JMPF R3 #0011 + 0x880C0505, // 000B GETMBR R3 R2 K5 + 0x1C0C0601, // 000C EQ R3 R3 R1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0106, // 000E GETMET R3 R0 K6 + 0x7C0C0200, // 000F CALL R3 1 + 0x70020005, // 0010 JMP #0017 + 0x8C0C0107, // 0011 GETMET R3 R0 K7 + 0x60140018, // 0012 GETGBL R5 G24 + 0x58180008, // 0013 LDCONST R6 K8 + 0x5C1C0200, // 0014 MOVE R7 R1 + 0x7C140400, // 0015 CALL R5 2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_assignment_generic +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic, /* name */ + be_nested_proto( + 17, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_identifier), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(DOT), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(symbol_table), + /* K8 */ be_nested_str_weak(contains), + /* K9 */ be_nested_str_weak(get), + /* K10 */ be_nested_str_weak(instance), + /* K11 */ be_nested_str_weak(_validate_single_parameter), + /* K12 */ be_nested_str_weak(_symbol_entry), + /* K13 */ be_nested_str_weak(TYPE_SEQUENCE), + /* K14 */ be_nested_str_weak(error), + /* K15 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20assignments_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), + /* K16 */ be_nested_str_weak(expect_assign), + /* K17 */ be_nested_str_weak(process_value), + /* K18 */ be_nested_str_weak(CONTEXT_PROPERTY), + /* K19 */ be_nested_str_weak(collect_inline_comment), + /* K20 */ be_nested_str_weak(get_reference), + /* K21 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s_X2E_X25s_X20_X3D_X20_X25s_X20end), + /* K22 */ be_nested_str_weak(expr), + /* K23 */ be_nested_str_weak(add), + /* K24 */ be_nested_str_weak(_X25s_X25s_X2Epush_X28animation_X2Ecreate_assign_step_X28_X25s_X29_X29_X25s), + /* K25 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), + /* K26 */ be_nested_str_weak(skip_statement), + }), + be_str_weak(process_sequence_assignment_generic), + &be_const_str_solidified, + ( &(const binstruction[96]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x8C100101, // 0002 GETMET R4 R0 K1 + 0x7C100200, // 0003 CALL R4 1 + 0x4C140000, // 0004 LDNIL R5 + 0x20100805, // 0005 NE R4 R4 R5 + 0x7812004F, // 0006 JMPF R4 #0057 + 0x8C100101, // 0007 GETMET R4 R0 K1 + 0x7C100200, // 0008 CALL R4 1 + 0x88100902, // 0009 GETMBR R4 R4 K2 + 0xB8160600, // 000A GETNGBL R5 K3 + 0x88140B04, // 000B GETMBR R5 R5 K4 + 0x88140B05, // 000C GETMBR R5 R5 K5 + 0x1C100805, // 000D EQ R4 R4 R5 + 0x78120047, // 000E JMPF R4 #0057 + 0x8C100106, // 000F GETMET R4 R0 K6 + 0x7C100200, // 0010 CALL R4 1 + 0x8C100100, // 0011 GETMET R4 R0 K0 + 0x7C100200, // 0012 CALL R4 1 + 0x88140107, // 0013 GETMBR R5 R0 K7 + 0x8C140B08, // 0014 GETMET R5 R5 K8 + 0x5C1C0600, // 0015 MOVE R7 R3 + 0x7C140400, // 0016 CALL R5 2 + 0x78160023, // 0017 JMPF R5 #003C + 0x88140107, // 0018 GETMBR R5 R0 K7 + 0x8C140B09, // 0019 GETMET R5 R5 K9 + 0x5C1C0600, // 001A MOVE R7 R3 + 0x7C140400, // 001B CALL R5 2 + 0x4C180000, // 001C LDNIL R6 + 0x20180A06, // 001D NE R6 R5 R6 + 0x781A000C, // 001E JMPF R6 #002C + 0x88180B0A, // 001F GETMBR R6 R5 K10 + 0x4C1C0000, // 0020 LDNIL R7 + 0x20180C07, // 0021 NE R6 R6 R7 + 0x781A0008, // 0022 JMPF R6 #002C + 0x60180005, // 0023 GETGBL R6 G5 + 0x881C0B0A, // 0024 GETMBR R7 R5 K10 + 0x7C180200, // 0025 CALL R6 1 + 0x8C1C010B, // 0026 GETMET R7 R0 K11 + 0x5C240C00, // 0027 MOVE R9 R6 + 0x5C280800, // 0028 MOVE R10 R4 + 0x882C0B0A, // 0029 GETMBR R11 R5 K10 + 0x7C1C0800, // 002A CALL R7 4 + 0x7002000F, // 002B JMP #003C + 0x4C180000, // 002C LDNIL R6 + 0x20180A06, // 002D NE R6 R5 R6 + 0x781A000C, // 002E JMPF R6 #003C + 0x88180B02, // 002F GETMBR R6 R5 K2 + 0xB81E0600, // 0030 GETNGBL R7 K3 + 0x881C0F0C, // 0031 GETMBR R7 R7 K12 + 0x881C0F0D, // 0032 GETMBR R7 R7 K13 + 0x1C180C07, // 0033 EQ R6 R6 R7 + 0x781A0006, // 0034 JMPF R6 #003C + 0x8C18010E, // 0035 GETMET R6 R0 K14 + 0x60200018, // 0036 GETGBL R8 G24 + 0x5824000F, // 0037 LDCONST R9 K15 + 0x5C280600, // 0038 MOVE R10 R3 + 0x7C200400, // 0039 CALL R8 2 + 0x7C180400, // 003A CALL R6 2 + 0x80000C00, // 003B RET 0 + 0x8C140110, // 003C GETMET R5 R0 K16 + 0x7C140200, // 003D CALL R5 1 + 0x8C140111, // 003E GETMET R5 R0 K17 + 0x881C0112, // 003F GETMBR R7 R0 K18 + 0x7C140400, // 0040 CALL R5 2 + 0x8C180113, // 0041 GETMET R6 R0 K19 + 0x7C180200, // 0042 CALL R6 1 + 0x881C0107, // 0043 GETMBR R7 R0 K7 + 0x8C1C0F14, // 0044 GETMET R7 R7 K20 + 0x5C240600, // 0045 MOVE R9 R3 + 0x7C1C0400, // 0046 CALL R7 2 + 0x60200018, // 0047 GETGBL R8 G24 + 0x58240015, // 0048 LDCONST R9 K21 + 0x5C280E00, // 0049 MOVE R10 R7 + 0x5C2C0800, // 004A MOVE R11 R4 + 0x88300B16, // 004B GETMBR R12 R5 K22 + 0x7C200800, // 004C CALL R8 4 + 0x8C240117, // 004D GETMET R9 R0 K23 + 0x602C0018, // 004E GETGBL R11 G24 + 0x58300018, // 004F LDCONST R12 K24 + 0x5C340200, // 0050 MOVE R13 R1 + 0x5C380400, // 0051 MOVE R14 R2 + 0x5C3C1000, // 0052 MOVE R15 R8 + 0x5C400C00, // 0053 MOVE R16 R6 + 0x7C2C0A00, // 0054 CALL R11 5 + 0x7C240400, // 0055 CALL R9 2 + 0x70020007, // 0056 JMP #005F + 0x8C10010E, // 0057 GETMET R4 R0 K14 + 0x60180018, // 0058 GETGBL R6 G24 + 0x581C0019, // 0059 LDCONST R7 K25 + 0x5C200600, // 005A MOVE R8 R3 + 0x7C180400, // 005B CALL R6 2 + 0x7C100400, // 005C CALL R4 2 + 0x8C10011A, // 005D GETMET R4 R0 K26 + 0x7C100200, // 005E CALL R4 1 + 0x80000000, // 005F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_named_arguments_for_variable +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(CONTEXT_VARIABLE), + }), + be_str_weak(process_named_arguments_for_variable), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140001, // 0002 LDCONST R5 K1 + 0x88180102, // 0003 GETMBR R6 R0 K2 + 0x7C080800, // 0004 CALL R2 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_whitespace_including_newlines +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(COMMENT), + /* K6 */ be_nested_str_weak(NEWLINE), + /* K7 */ be_nested_str_weak(next), + }), + be_str_weak(skip_whitespace_including_newlines), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060015, // 0002 JMPT R1 #0019 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x4C080000, // 0005 LDNIL R2 + 0x20080202, // 0006 NE R2 R1 R2 + 0x780A000E, // 0007 JMPF R2 #0017 + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0xB80E0600, // 0009 GETNGBL R3 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x1C080403, // 000C EQ R2 R2 R3 + 0x740A0005, // 000D JMPT R2 #0014 + 0x88080302, // 000E GETMBR R2 R1 K2 + 0xB80E0600, // 000F GETNGBL R3 K3 + 0x880C0704, // 0010 GETMBR R3 R3 K4 + 0x880C0706, // 0011 GETMBR R3 R3 K6 + 0x1C080403, // 0012 EQ R2 R2 R3 + 0x780A0002, // 0013 JMPF R2 #0017 + 0x8C080107, // 0014 GETMET R2 R0 K7 + 0x7C080200, // 0015 CALL R2 1 + 0x70020000, // 0016 JMP #0018 + 0x70020000, // 0017 JMP #0019 + 0x7001FFE6, // 0018 JMP #0000 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_nested_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 4), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(push), + /* K1 */ be_nested_str_weak(_X20_X20provider_X2E_X25s_X20_X3D_X20_X25s_X25s), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x60140018, // 0002 GETGBL R5 G24 + 0x58180001, // 0003 LDCONST R6 K1 + 0x5C1C0000, // 0004 MOVE R7 R0 + 0x5C200200, // 0005 MOVE R8 R1 + 0x5C240400, // 0006 MOVE R9 R2 + 0x7C140800, // 0007 CALL R5 4 + 0x7C0C0400, // 0008 CALL R3 2 + 0x80000000, // 0009 RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[39]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(IDENTIFIER), + /* K6 */ be_nested_str_weak(KEYWORD), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20function_X20name), + /* K11 */ be_nested_str_weak(nil), + /* K12 */ be_nested_str_weak(symbol_table), + /* K13 */ be_nested_str_weak(get), + /* K14 */ be_nested_str_weak(_symbol_entry), + /* K15 */ be_nested_str_weak(TYPE_MATH_FUNCTION), + /* K16 */ be_nested_str_weak(process_function_arguments), + /* K17 */ be_nested_str_weak(_X25s_X28_X25s_X29), + /* K18 */ be_nested_str_weak(get_reference), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(process_log_call), + /* K21 */ be_nested_str_weak(CONTEXT_EXPRESSION), + /* K22 */ be_nested_str_weak(TYPE_TEMPLATE), + /* K23 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K24 */ be_nested_str_weak(engine), + /* K25 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K26 */ be_nested_str_weak(_validate_animation_factory_exists), + /* K27 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), + /* K28 */ be_nested_str_weak(skip_function_arguments), + /* K29 */ be_nested_str_weak(expect_left_paren), + /* K30 */ be_nested_str_weak(_process_parameters_core), + /* K31 */ be_nested_str_weak(generic), + /* K32 */ be_nested_str_weak(expect_right_paren), + /* K33 */ be_const_int(0), + /* K34 */ be_const_int(1), + /* K35 */ be_nested_str_weak(_X0A), + /* K36 */ be_nested_str_weak(stop_iteration), + /* K37 */ be_nested_str_weak(_X28def_X20_X28engine_X29_X0A_X20_X20var_X20provider_X20_X3D_X20animation_X2E_X25s_X28engine_X29_X0A_X25s_X0A_X20_X20return_X20provider_X0Aend_X29_X28engine_X29), + /* K38 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + }), + be_str_weak(process_nested_function_call), + &be_const_str_solidified, + ( &(const binstruction[153]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58080001, // 0002 LDCONST R2 K1 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0203, // 0004 NE R3 R1 R3 + 0x780E000F, // 0005 JMPF R3 #0016 + 0x880C0302, // 0006 GETMBR R3 R1 K2 + 0xB8120600, // 0007 GETNGBL R4 K3 + 0x88100904, // 0008 GETMBR R4 R4 K4 + 0x88100905, // 0009 GETMBR R4 R4 K5 + 0x1C0C0604, // 000A EQ R3 R3 R4 + 0x740E0005, // 000B JMPT R3 #0012 + 0x880C0302, // 000C GETMBR R3 R1 K2 + 0xB8120600, // 000D GETNGBL R4 K3 + 0x88100904, // 000E GETMBR R4 R4 K4 + 0x88100906, // 000F GETMBR R4 R4 K6 + 0x1C0C0604, // 0010 EQ R3 R3 R4 + 0x780E0003, // 0011 JMPF R3 #0016 + 0x88080307, // 0012 GETMBR R2 R1 K7 + 0x8C0C0108, // 0013 GETMET R3 R0 K8 + 0x7C0C0200, // 0014 CALL R3 1 + 0x70020003, // 0015 JMP #001A + 0x8C0C0109, // 0016 GETMET R3 R0 K9 + 0x5814000A, // 0017 LDCONST R5 K10 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80061600, // 0019 RET 1 K11 + 0x880C010C, // 001A GETMBR R3 R0 K12 + 0x8C0C070D, // 001B GETMET R3 R3 K13 + 0x5C140400, // 001C MOVE R5 R2 + 0x7C0C0400, // 001D CALL R3 2 + 0x4C100000, // 001E LDNIL R4 + 0x20100604, // 001F NE R4 R3 R4 + 0x7812000F, // 0020 JMPF R4 #0031 + 0x88100702, // 0021 GETMBR R4 R3 K2 + 0xB8160600, // 0022 GETNGBL R5 K3 + 0x88140B0E, // 0023 GETMBR R5 R5 K14 + 0x88140B0F, // 0024 GETMBR R5 R5 K15 + 0x1C100805, // 0025 EQ R4 R4 R5 + 0x78120009, // 0026 JMPF R4 #0031 + 0x8C100110, // 0027 GETMET R4 R0 K16 + 0x50180200, // 0028 LDBOOL R6 1 0 + 0x7C100400, // 0029 CALL R4 2 + 0x60140018, // 002A GETGBL R5 G24 + 0x58180011, // 002B LDCONST R6 K17 + 0x8C1C0712, // 002C GETMET R7 R3 K18 + 0x7C1C0200, // 002D CALL R7 1 + 0x5C200800, // 002E MOVE R8 R4 + 0x7C140600, // 002F CALL R5 3 + 0x80040A00, // 0030 RET 1 R5 + 0x1C100513, // 0031 EQ R4 R2 K19 + 0x78120008, // 0032 JMPF R4 #003C + 0x8C100110, // 0033 GETMET R4 R0 K16 + 0x50180200, // 0034 LDBOOL R6 1 0 + 0x7C100400, // 0035 CALL R4 2 + 0x8C140114, // 0036 GETMET R5 R0 K20 + 0x5C1C0800, // 0037 MOVE R7 R4 + 0x88200115, // 0038 GETMBR R8 R0 K21 + 0x58240001, // 0039 LDCONST R9 K1 + 0x7C140800, // 003A CALL R5 4 + 0x80040A00, // 003B RET 1 R5 + 0x4C100000, // 003C LDNIL R4 + 0x20100604, // 003D NE R4 R3 R4 + 0x78120017, // 003E JMPF R4 #0057 + 0x88100702, // 003F GETMBR R4 R3 K2 + 0xB8160600, // 0040 GETNGBL R5 K3 + 0x88140B0E, // 0041 GETMBR R5 R5 K14 + 0x88140B16, // 0042 GETMBR R5 R5 K22 + 0x1C100805, // 0043 EQ R4 R4 R5 + 0x78120011, // 0044 JMPF R4 #0057 + 0x8C100110, // 0045 GETMET R4 R0 K16 + 0x50180200, // 0046 LDBOOL R6 1 0 + 0x7C100400, // 0047 CALL R4 2 + 0x20140901, // 0048 NE R5 R4 K1 + 0x78160004, // 0049 JMPF R5 #004F + 0x60140018, // 004A GETGBL R5 G24 + 0x58180017, // 004B LDCONST R6 K23 + 0x5C1C0800, // 004C MOVE R7 R4 + 0x7C140400, // 004D CALL R5 2 + 0x70020000, // 004E JMP #0050 + 0x58140018, // 004F LDCONST R5 K24 + 0x60180018, // 0050 GETGBL R6 G24 + 0x581C0019, // 0051 LDCONST R7 K25 + 0x5C200400, // 0052 MOVE R8 R2 + 0x5C240A00, // 0053 MOVE R9 R5 + 0x7C180600, // 0054 CALL R6 3 + 0x80040C00, // 0055 RET 1 R6 + 0x70020040, // 0056 JMP #0098 + 0x8C10011A, // 0057 GETMET R4 R0 K26 + 0x5C180400, // 0058 MOVE R6 R2 + 0x7C100400, // 0059 CALL R4 2 + 0x74120008, // 005A JMPT R4 #0064 + 0x8C100109, // 005B GETMET R4 R0 K9 + 0x60180018, // 005C GETGBL R6 G24 + 0x581C001B, // 005D LDCONST R7 K27 + 0x5C200400, // 005E MOVE R8 R2 + 0x7C180400, // 005F CALL R6 2 + 0x7C100400, // 0060 CALL R4 2 + 0x8C10011C, // 0061 GETMET R4 R0 K28 + 0x7C100200, // 0062 CALL R4 1 + 0x80061600, // 0063 RET 1 K11 + 0x8C10011D, // 0064 GETMET R4 R0 K29 + 0x7C100200, // 0065 CALL R4 1 + 0x60100012, // 0066 GETGBL R4 G18 + 0x7C100000, // 0067 CALL R4 0 + 0x84140000, // 0068 CLOSURE R5 P0 + 0x8C18011E, // 0069 GETMET R6 R0 K30 + 0x5C200400, // 006A MOVE R8 R2 + 0x5824001F, // 006B LDCONST R9 K31 + 0x5C280A00, // 006C MOVE R10 R5 + 0x7C180800, // 006D CALL R6 4 + 0x8C180120, // 006E GETMET R6 R0 K32 + 0x7C180200, // 006F CALL R6 1 + 0x6018000C, // 0070 GETGBL R6 G12 + 0x5C1C0800, // 0071 MOVE R7 R4 + 0x7C180200, // 0072 CALL R6 1 + 0x24180D21, // 0073 GT R6 R6 K33 + 0x781A001B, // 0074 JMPF R6 #0091 + 0x58180001, // 0075 LDCONST R6 K1 + 0x601C0010, // 0076 GETGBL R7 G16 + 0x6020000C, // 0077 GETGBL R8 G12 + 0x5C240800, // 0078 MOVE R9 R4 + 0x7C200200, // 0079 CALL R8 1 + 0x04201122, // 007A SUB R8 R8 K34 + 0x40224208, // 007B CONNECT R8 K33 R8 + 0x7C1C0200, // 007C CALL R7 1 + 0xA8020007, // 007D EXBLK 0 #0086 + 0x5C200E00, // 007E MOVE R8 R7 + 0x7C200000, // 007F CALL R8 0 + 0x24241121, // 0080 GT R9 R8 K33 + 0x78260000, // 0081 JMPF R9 #0083 + 0x00180D23, // 0082 ADD R6 R6 K35 + 0x94240808, // 0083 GETIDX R9 R4 R8 + 0x00180C09, // 0084 ADD R6 R6 R9 + 0x7001FFF7, // 0085 JMP #007E + 0x581C0024, // 0086 LDCONST R7 K36 + 0xAC1C0200, // 0087 CATCH R7 1 0 + 0xB0080000, // 0088 RAISE 2 R0 R0 + 0x601C0018, // 0089 GETGBL R7 G24 + 0x58200025, // 008A LDCONST R8 K37 + 0x5C240400, // 008B MOVE R9 R2 + 0x5C280C00, // 008C MOVE R10 R6 + 0x7C1C0600, // 008D CALL R7 3 + 0xA0000000, // 008E CLOSE R0 + 0x80040E00, // 008F RET 1 R7 + 0x70020005, // 0090 JMP #0097 + 0x60180018, // 0091 GETGBL R6 G24 + 0x581C0026, // 0092 LDCONST R7 K38 + 0x5C200400, // 0093 MOVE R8 R2 + 0x7C180400, // 0094 CALL R6 2 + 0xA0000000, // 0095 CLOSE R0 + 0x80040C00, // 0096 RET 1 R6 + 0xA0100000, // 0097 CLOSE R4 + 0x80000000, // 0098 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: join_output +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_join_output, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(output), + /* K2 */ be_nested_str_weak(_X0A), + /* K3 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(join_output), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0xA8020004, // 0004 EXBLK 0 #000A + 0x5C0C0400, // 0005 MOVE R3 R2 + 0x7C0C0000, // 0006 CALL R3 0 + 0x00100702, // 0007 ADD R4 R3 K2 + 0x00040204, // 0008 ADD R1 R1 R4 + 0x7001FFFA, // 0009 JMP #0005 + 0x58080003, // 000A LDCONST R2 K3 + 0xAC080200, // 000B CATCH R2 1 0 + 0xB0080000, // 000C RAISE 2 R0 R0 + 0x80040200, // 000D RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_left_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_BRACE), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), + }), + be_str_weak(expect_left_brace), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_object_reference +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_object_reference, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(validate_symbol_reference), + }), + be_str_weak(_validate_object_reference), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xA8020005, // 0000 EXBLK 0 #0007 + 0x8C0C0100, // 0001 GETMET R3 R0 K0 + 0x5C140200, // 0002 MOVE R5 R1 + 0x5C180400, // 0003 MOVE R6 R2 + 0x7C0C0600, // 0004 CALL R3 3 + 0xA8040001, // 0005 EXBLK 1 1 + 0x70020003, // 0006 JMP #000B + 0xAC0C0002, // 0007 CATCH R3 0 2 + 0x70020000, // 0008 JMP #000A + 0x70020000, // 0009 JMP #000B + 0xB0080000, // 000A RAISE 2 R0 R0 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_standalone_log +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_standalone_log, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_left_paren), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(STRING), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), + /* K9 */ be_nested_str_weak(skip_statement), + /* K10 */ be_nested_str_weak(value), + /* K11 */ be_nested_str_weak(expect_right_paren), + /* K12 */ be_nested_str_weak(collect_inline_comment), + /* K13 */ be_nested_str_weak(process_log_call), + /* K14 */ be_nested_str_weak(standalone), + /* K15 */ be_nested_str_weak(add), + }), + be_str_weak(process_standalone_log), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C040102, // 0004 GETMET R1 R0 K2 + 0x7C040200, // 0005 CALL R1 1 + 0x4C080000, // 0006 LDNIL R2 + 0x1C080202, // 0007 EQ R2 R1 R2 + 0x740A0005, // 0008 JMPT R2 #000F + 0x88080303, // 0009 GETMBR R2 R1 K3 + 0xB80E0800, // 000A GETNGBL R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x880C0706, // 000C GETMBR R3 R3 K6 + 0x20080403, // 000D NE R2 R2 R3 + 0x780A0005, // 000E JMPF R2 #0015 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x58100008, // 0010 LDCONST R4 K8 + 0x7C080400, // 0011 CALL R2 2 + 0x8C080109, // 0012 GETMET R2 R0 K9 + 0x7C080200, // 0013 CALL R2 1 + 0x80000400, // 0014 RET 0 + 0x8808030A, // 0015 GETMBR R2 R1 K10 + 0x8C0C0100, // 0016 GETMET R3 R0 K0 + 0x7C0C0200, // 0017 CALL R3 1 + 0x8C0C010B, // 0018 GETMET R3 R0 K11 + 0x7C0C0200, // 0019 CALL R3 1 + 0x8C0C010C, // 001A GETMET R3 R0 K12 + 0x7C0C0200, // 001B CALL R3 1 + 0x8C10010D, // 001C GETMET R4 R0 K13 + 0x5C180400, // 001D MOVE R6 R2 + 0x581C000E, // 001E LDCONST R7 K14 + 0x5C200600, // 001F MOVE R8 R3 + 0x7C100800, // 0020 CALL R4 4 + 0x8C14010F, // 0021 GETMET R5 R0 K15 + 0x5C1C0800, // 0022 MOVE R7 R4 + 0x7C140400, // 0023 CALL R5 2 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_event_handler +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(line), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(_X7B_X7D), + /* K6 */ be_nested_str_weak(type), + /* K7 */ be_nested_str_weak(animation_dsl), + /* K8 */ be_nested_str_weak(Token), + /* K9 */ be_nested_str_weak(LEFT_PAREN), + /* K10 */ be_nested_str_weak(process_event_parameters), + /* K11 */ be_nested_str_weak(expect_colon), + /* K12 */ be_nested_str_weak(event_handler__X25s__X25s), + /* K13 */ be_nested_str_weak(add), + /* K14 */ be_nested_str_weak(def_X20_X25s_X28event_data_X29), + /* K15 */ be_nested_str_weak(KEYWORD), + /* K16 */ be_nested_str_weak(value), + /* K17 */ be_nested_str_weak(interrupt), + /* K18 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_current_X28_X29), + /* K19 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_animation_X28_X22_X25s_X22_X29), + /* K20 */ be_nested_str_weak(process_value), + /* K21 */ be_nested_str_weak(CONTEXT_ANIMATION), + /* K22 */ be_nested_str_weak(_X20_X20var_X20temp_anim_X20_X3D_X20_X25s), + /* K23 */ be_nested_str_weak(expr), + /* K24 */ be_nested_str_weak(_X20_X20engine_X2Eadd_X28temp_anim_X29), + /* K25 */ be_nested_str_weak(end), + /* K26 */ be_nested_str_weak(animation_X2Eregister_event_handler_X28_X22_X25s_X22_X2C_X20_X25s_X2C_X200_X2C_X20nil_X2C_X20_X25s_X29), + }), + be_str_weak(process_event_handler), + &be_const_str_solidified, + ( &(const binstruction[101]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x4C0C0000, // 0006 LDNIL R3 + 0x20080403, // 0007 NE R2 R2 R3 + 0x780A0003, // 0008 JMPF R2 #000D + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x88080503, // 000B GETMBR R2 R2 K3 + 0x70020000, // 000C JMP #000E + 0x58080004, // 000D LDCONST R2 K4 + 0x580C0005, // 000E LDCONST R3 K5 + 0x8C100102, // 000F GETMET R4 R0 K2 + 0x7C100200, // 0010 CALL R4 1 + 0x4C140000, // 0011 LDNIL R5 + 0x20100805, // 0012 NE R4 R4 R5 + 0x7812000A, // 0013 JMPF R4 #001F + 0x8C100102, // 0014 GETMET R4 R0 K2 + 0x7C100200, // 0015 CALL R4 1 + 0x88100906, // 0016 GETMBR R4 R4 K6 + 0xB8160E00, // 0017 GETNGBL R5 K7 + 0x88140B08, // 0018 GETMBR R5 R5 K8 + 0x88140B09, // 0019 GETMBR R5 R5 K9 + 0x1C100805, // 001A EQ R4 R4 R5 + 0x78120002, // 001B JMPF R4 #001F + 0x8C10010A, // 001C GETMET R4 R0 K10 + 0x7C100200, // 001D CALL R4 1 + 0x5C0C0800, // 001E MOVE R3 R4 + 0x8C10010B, // 001F GETMET R4 R0 K11 + 0x7C100200, // 0020 CALL R4 1 + 0x60100018, // 0021 GETGBL R4 G24 + 0x5814000C, // 0022 LDCONST R5 K12 + 0x5C180200, // 0023 MOVE R6 R1 + 0x5C1C0400, // 0024 MOVE R7 R2 + 0x7C100600, // 0025 CALL R4 3 + 0x8C14010D, // 0026 GETMET R5 R0 K13 + 0x601C0018, // 0027 GETGBL R7 G24 + 0x5820000E, // 0028 LDCONST R8 K14 + 0x5C240800, // 0029 MOVE R9 R4 + 0x7C1C0400, // 002A CALL R7 2 + 0x7C140400, // 002B CALL R5 2 + 0x8C140102, // 002C GETMET R5 R0 K2 + 0x7C140200, // 002D CALL R5 1 + 0x4C180000, // 002E LDNIL R6 + 0x20180A06, // 002F NE R6 R5 R6 + 0x781A0027, // 0030 JMPF R6 #0059 + 0x88180B06, // 0031 GETMBR R6 R5 K6 + 0xB81E0E00, // 0032 GETNGBL R7 K7 + 0x881C0F08, // 0033 GETMBR R7 R7 K8 + 0x881C0F0F, // 0034 GETMBR R7 R7 K15 + 0x1C180C07, // 0035 EQ R6 R6 R7 + 0x781A0013, // 0036 JMPF R6 #004B + 0x88180B10, // 0037 GETMBR R6 R5 K16 + 0x1C180D11, // 0038 EQ R6 R6 K17 + 0x781A0010, // 0039 JMPF R6 #004B + 0x8C180100, // 003A GETMET R6 R0 K0 + 0x7C180200, // 003B CALL R6 1 + 0x8C180101, // 003C GETMET R6 R0 K1 + 0x7C180200, // 003D CALL R6 1 + 0x1C1C0D02, // 003E EQ R7 R6 K2 + 0x781E0003, // 003F JMPF R7 #0044 + 0x8C1C010D, // 0040 GETMET R7 R0 K13 + 0x58240012, // 0041 LDCONST R9 K18 + 0x7C1C0400, // 0042 CALL R7 2 + 0x70020005, // 0043 JMP #004A + 0x8C1C010D, // 0044 GETMET R7 R0 K13 + 0x60240018, // 0045 GETGBL R9 G24 + 0x58280013, // 0046 LDCONST R10 K19 + 0x5C2C0C00, // 0047 MOVE R11 R6 + 0x7C240400, // 0048 CALL R9 2 + 0x7C1C0400, // 0049 CALL R7 2 + 0x7002000D, // 004A JMP #0059 + 0x8C180114, // 004B GETMET R6 R0 K20 + 0x88200115, // 004C GETMBR R8 R0 K21 + 0x7C180400, // 004D CALL R6 2 + 0x8C1C010D, // 004E GETMET R7 R0 K13 + 0x60240018, // 004F GETGBL R9 G24 + 0x58280016, // 0050 LDCONST R10 K22 + 0x882C0D17, // 0051 GETMBR R11 R6 K23 + 0x7C240400, // 0052 CALL R9 2 + 0x7C1C0400, // 0053 CALL R7 2 + 0x8C1C010D, // 0054 GETMET R7 R0 K13 + 0x60240018, // 0055 GETGBL R9 G24 + 0x58280018, // 0056 LDCONST R10 K24 + 0x7C240200, // 0057 CALL R9 1 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C18010D, // 0059 GETMET R6 R0 K13 + 0x58200019, // 005A LDCONST R8 K25 + 0x7C180400, // 005B CALL R6 2 + 0x8C18010D, // 005C GETMET R6 R0 K13 + 0x60200018, // 005D GETGBL R8 G24 + 0x5824001A, // 005E LDCONST R9 K26 + 0x5C280200, // 005F MOVE R10 R1 + 0x5C2C0800, // 0060 MOVE R11 R4 + 0x5C300600, // 0061 MOVE R12 R3 + 0x7C200800, // 0062 CALL R8 4 + 0x7C180400, // 0063 CALL R6 2 + 0x80000000, // 0064 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _determine_symbol_return_type +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__determine_symbol_return_type, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(is_color_name), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(symbol_table), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(_symbol_entry), + /* K7 */ be_nested_str_weak(TYPE_ANIMATION), + /* K8 */ be_nested_str_weak(TYPE_ANIMATION_CONSTRUCTOR), + /* K9 */ be_nested_str_weak(animation), + /* K10 */ be_nested_str_weak(TYPE_COLOR), + /* K11 */ be_nested_str_weak(TYPE_COLOR_CONSTRUCTOR), + /* K12 */ be_nested_str_weak(TYPE_VALUE_PROVIDER), + /* K13 */ be_nested_str_weak(TYPE_VALUE_PROVIDER_CONSTRUCTOR), + /* K14 */ be_nested_str_weak(value_provider), + /* K15 */ be_nested_str_weak(TYPE_PALETTE), + /* K16 */ be_nested_str_weak(TYPE_PALETTE_CONSTANT), + /* K17 */ be_nested_str_weak(palette), + /* K18 */ be_nested_str_weak(TYPE_CONSTANT), + /* K19 */ be_nested_str_weak(variable), + /* K20 */ be_nested_str_weak(TYPE_VARIABLE), + /* K21 */ be_nested_str_weak(TYPE_SEQUENCE), + /* K22 */ be_nested_str_weak(sequence), + /* K23 */ be_nested_str_weak(TYPE_TEMPLATE), + /* K24 */ be_nested_str_weak(template), + }), + be_str_weak(_determine_symbol_return_type), + &be_const_str_solidified, + ( &(const binstruction[101]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80060400, // 0005 RET 1 K2 + 0x88080103, // 0006 GETMBR R2 R0 K3 + 0x8C080504, // 0007 GETMET R2 R2 K4 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x4C0C0000, // 000A LDNIL R3 + 0x200C0403, // 000B NE R3 R2 R3 + 0x780E0056, // 000C JMPF R3 #0064 + 0x880C0505, // 000D GETMBR R3 R2 K5 + 0xB8120000, // 000E GETNGBL R4 K0 + 0x88100906, // 000F GETMBR R4 R4 K6 + 0x88100907, // 0010 GETMBR R4 R4 K7 + 0x1C0C0604, // 0011 EQ R3 R3 R4 + 0x740E0005, // 0012 JMPT R3 #0019 + 0x880C0505, // 0013 GETMBR R3 R2 K5 + 0xB8120000, // 0014 GETNGBL R4 K0 + 0x88100906, // 0015 GETMBR R4 R4 K6 + 0x88100908, // 0016 GETMBR R4 R4 K8 + 0x1C0C0604, // 0017 EQ R3 R3 R4 + 0x780E0001, // 0018 JMPF R3 #001B + 0x80061200, // 0019 RET 1 K9 + 0x70020048, // 001A JMP #0064 + 0x880C0505, // 001B GETMBR R3 R2 K5 + 0xB8120000, // 001C GETNGBL R4 K0 + 0x88100906, // 001D GETMBR R4 R4 K6 + 0x8810090A, // 001E GETMBR R4 R4 K10 + 0x1C0C0604, // 001F EQ R3 R3 R4 + 0x740E0005, // 0020 JMPT R3 #0027 + 0x880C0505, // 0021 GETMBR R3 R2 K5 + 0xB8120000, // 0022 GETNGBL R4 K0 + 0x88100906, // 0023 GETMBR R4 R4 K6 + 0x8810090B, // 0024 GETMBR R4 R4 K11 + 0x1C0C0604, // 0025 EQ R3 R3 R4 + 0x780E0001, // 0026 JMPF R3 #0029 + 0x80060400, // 0027 RET 1 K2 + 0x7002003A, // 0028 JMP #0064 + 0x880C0505, // 0029 GETMBR R3 R2 K5 + 0xB8120000, // 002A GETNGBL R4 K0 + 0x88100906, // 002B GETMBR R4 R4 K6 + 0x8810090C, // 002C GETMBR R4 R4 K12 + 0x1C0C0604, // 002D EQ R3 R3 R4 + 0x740E0005, // 002E JMPT R3 #0035 + 0x880C0505, // 002F GETMBR R3 R2 K5 + 0xB8120000, // 0030 GETNGBL R4 K0 + 0x88100906, // 0031 GETMBR R4 R4 K6 + 0x8810090D, // 0032 GETMBR R4 R4 K13 + 0x1C0C0604, // 0033 EQ R3 R3 R4 + 0x780E0001, // 0034 JMPF R3 #0037 + 0x80061C00, // 0035 RET 1 K14 + 0x7002002C, // 0036 JMP #0064 + 0x880C0505, // 0037 GETMBR R3 R2 K5 + 0xB8120000, // 0038 GETNGBL R4 K0 + 0x88100906, // 0039 GETMBR R4 R4 K6 + 0x8810090F, // 003A GETMBR R4 R4 K15 + 0x1C0C0604, // 003B EQ R3 R3 R4 + 0x740E0005, // 003C JMPT R3 #0043 + 0x880C0505, // 003D GETMBR R3 R2 K5 + 0xB8120000, // 003E GETNGBL R4 K0 + 0x88100906, // 003F GETMBR R4 R4 K6 + 0x88100910, // 0040 GETMBR R4 R4 K16 + 0x1C0C0604, // 0041 EQ R3 R3 R4 + 0x780E0001, // 0042 JMPF R3 #0045 + 0x80062200, // 0043 RET 1 K17 + 0x7002001E, // 0044 JMP #0064 + 0x880C0505, // 0045 GETMBR R3 R2 K5 + 0xB8120000, // 0046 GETNGBL R4 K0 + 0x88100906, // 0047 GETMBR R4 R4 K6 + 0x88100912, // 0048 GETMBR R4 R4 K18 + 0x1C0C0604, // 0049 EQ R3 R3 R4 + 0x780E0001, // 004A JMPF R3 #004D + 0x80062600, // 004B RET 1 K19 + 0x70020016, // 004C JMP #0064 + 0x880C0505, // 004D GETMBR R3 R2 K5 + 0xB8120000, // 004E GETNGBL R4 K0 + 0x88100906, // 004F GETMBR R4 R4 K6 + 0x88100914, // 0050 GETMBR R4 R4 K20 + 0x1C0C0604, // 0051 EQ R3 R3 R4 + 0x780E0001, // 0052 JMPF R3 #0055 + 0x80062600, // 0053 RET 1 K19 + 0x7002000E, // 0054 JMP #0064 + 0x880C0505, // 0055 GETMBR R3 R2 K5 + 0xB8120000, // 0056 GETNGBL R4 K0 + 0x88100906, // 0057 GETMBR R4 R4 K6 + 0x88100915, // 0058 GETMBR R4 R4 K21 + 0x1C0C0604, // 0059 EQ R3 R3 R4 + 0x780E0001, // 005A JMPF R3 #005D + 0x80062C00, // 005B RET 1 K22 + 0x70020006, // 005C JMP #0064 + 0x880C0505, // 005D GETMBR R3 R2 K5 + 0xB8120000, // 005E GETNGBL R4 K0 + 0x88100906, // 005F GETMBR R4 R4 K6 + 0x88100917, // 0060 GETMBR R4 R4 K23 + 0x1C0C0604, // 0061 EQ R3 R3 R4 + 0x780E0000, // 0062 JMPF R3 #0064 + 0x80063000, // 0063 RET 1 K24 + 0x80062600, // 0064 RET 1 K19 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[31]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(sequence), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(symbol_table), + /* K6 */ be_nested_str_weak(create_sequence), + /* K7 */ be_nested_str_weak(1), + /* K8 */ be_nested_str_weak(current), + /* K9 */ be_nested_str_weak(type), + /* K10 */ be_nested_str_weak(animation_dsl), + /* K11 */ be_nested_str_weak(Token), + /* K12 */ be_nested_str_weak(KEYWORD), + /* K13 */ be_nested_str_weak(value), + /* K14 */ be_nested_str_weak(repeat), + /* K15 */ be_nested_str_weak(forever), + /* K16 */ be_nested_str_weak(_X2D1), + /* K17 */ be_nested_str_weak(process_value), + /* K18 */ be_nested_str_weak(CONTEXT_REPEAT_COUNT), + /* K19 */ be_nested_str_weak(expect_keyword), + /* K20 */ be_nested_str_weak(times), + /* K21 */ be_nested_str_weak(expr), + /* K22 */ be_nested_str_weak(NUMBER), + /* K23 */ be_nested_str_weak(expect_left_brace), + /* K24 */ be_nested_str_weak(add), + /* K25 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2ESequenceManager_X28engine_X2C_X20_X25s_X29), + /* K26 */ be_nested_str_weak(at_end), + /* K27 */ be_nested_str_weak(check_right_brace), + /* K28 */ be_nested_str_weak(process_sequence_statement), + /* K29 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2ESequenceManager_X28engine_X29), + /* K30 */ be_nested_str_weak(expect_right_brace), + }), + be_str_weak(process_sequence), + &be_const_str_solidified, + ( &(const binstruction[124]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x88080105, // 000C GETMBR R2 R0 K5 + 0x8C080506, // 000D GETMET R2 R2 K6 + 0x5C100200, // 000E MOVE R4 R1 + 0x7C080400, // 000F CALL R2 2 + 0x50080000, // 0010 LDBOOL R2 0 0 + 0x580C0007, // 0011 LDCONST R3 K7 + 0x8C100108, // 0012 GETMET R4 R0 K8 + 0x7C100200, // 0013 CALL R4 1 + 0x4C140000, // 0014 LDNIL R5 + 0x20140805, // 0015 NE R5 R4 R5 + 0x7816002D, // 0016 JMPF R5 #0045 + 0x88140909, // 0017 GETMBR R5 R4 K9 + 0xB81A1400, // 0018 GETNGBL R6 K10 + 0x88180D0B, // 0019 GETMBR R6 R6 K11 + 0x88180D0C, // 001A GETMBR R6 R6 K12 + 0x1C140A06, // 001B EQ R5 R5 R6 + 0x78160027, // 001C JMPF R5 #0045 + 0x8814090D, // 001D GETMBR R5 R4 K13 + 0x1C140B0E, // 001E EQ R5 R5 K14 + 0x7816001C, // 001F JMPF R5 #003D + 0x50080200, // 0020 LDBOOL R2 1 0 + 0x8C140100, // 0021 GETMET R5 R0 K0 + 0x7C140200, // 0022 CALL R5 1 + 0x8C140108, // 0023 GETMET R5 R0 K8 + 0x7C140200, // 0024 CALL R5 1 + 0x4C180000, // 0025 LDNIL R6 + 0x20180A06, // 0026 NE R6 R5 R6 + 0x781A000C, // 0027 JMPF R6 #0035 + 0x88180B09, // 0028 GETMBR R6 R5 K9 + 0xB81E1400, // 0029 GETNGBL R7 K10 + 0x881C0F0B, // 002A GETMBR R7 R7 K11 + 0x881C0F0C, // 002B GETMBR R7 R7 K12 + 0x1C180C07, // 002C EQ R6 R6 R7 + 0x781A0006, // 002D JMPF R6 #0035 + 0x88180B0D, // 002E GETMBR R6 R5 K13 + 0x1C180D0F, // 002F EQ R6 R6 K15 + 0x781A0003, // 0030 JMPF R6 #0035 + 0x8C180100, // 0031 GETMET R6 R0 K0 + 0x7C180200, // 0032 CALL R6 1 + 0x580C0010, // 0033 LDCONST R3 K16 + 0x70020006, // 0034 JMP #003C + 0x8C180111, // 0035 GETMET R6 R0 K17 + 0x88200112, // 0036 GETMBR R8 R0 K18 + 0x7C180400, // 0037 CALL R6 2 + 0x8C1C0113, // 0038 GETMET R7 R0 K19 + 0x58240014, // 0039 LDCONST R9 K20 + 0x7C1C0400, // 003A CALL R7 2 + 0x880C0D15, // 003B GETMBR R3 R6 K21 + 0x70020006, // 003C JMP #0044 + 0x8814090D, // 003D GETMBR R5 R4 K13 + 0x1C140B0F, // 003E EQ R5 R5 K15 + 0x78160003, // 003F JMPF R5 #0044 + 0x50080200, // 0040 LDBOOL R2 1 0 + 0x8C140100, // 0041 GETMET R5 R0 K0 + 0x7C140200, // 0042 CALL R5 1 + 0x580C0010, // 0043 LDCONST R3 K16 + 0x70020010, // 0044 JMP #0056 + 0x4C140000, // 0045 LDNIL R5 + 0x20140805, // 0046 NE R5 R4 R5 + 0x7816000D, // 0047 JMPF R5 #0056 + 0x88140909, // 0048 GETMBR R5 R4 K9 + 0xB81A1400, // 0049 GETNGBL R6 K10 + 0x88180D0B, // 004A GETMBR R6 R6 K11 + 0x88180D16, // 004B GETMBR R6 R6 K22 + 0x1C140A06, // 004C EQ R5 R5 R6 + 0x78160007, // 004D JMPF R5 #0056 + 0x50080200, // 004E LDBOOL R2 1 0 + 0x8C140111, // 004F GETMET R5 R0 K17 + 0x881C0112, // 0050 GETMBR R7 R0 K18 + 0x7C140400, // 0051 CALL R5 2 + 0x8C180113, // 0052 GETMET R6 R0 K19 + 0x58200014, // 0053 LDCONST R8 K20 + 0x7C180400, // 0054 CALL R6 2 + 0x880C0B15, // 0055 GETMBR R3 R5 K21 + 0x8C140117, // 0056 GETMET R5 R0 K23 + 0x7C140200, // 0057 CALL R5 1 + 0x780A0010, // 0058 JMPF R2 #006A + 0x8C140118, // 0059 GETMET R5 R0 K24 + 0x601C0018, // 005A GETGBL R7 G24 + 0x58200019, // 005B LDCONST R8 K25 + 0x5C240200, // 005C MOVE R9 R1 + 0x5C280600, // 005D MOVE R10 R3 + 0x7C1C0600, // 005E CALL R7 3 + 0x7C140400, // 005F CALL R5 2 + 0x8C14011A, // 0060 GETMET R5 R0 K26 + 0x7C140200, // 0061 CALL R5 1 + 0x74160005, // 0062 JMPT R5 #0069 + 0x8C14011B, // 0063 GETMET R5 R0 K27 + 0x7C140200, // 0064 CALL R5 1 + 0x74160002, // 0065 JMPT R5 #0069 + 0x8C14011C, // 0066 GETMET R5 R0 K28 + 0x7C140200, // 0067 CALL R5 1 + 0x7001FFF6, // 0068 JMP #0060 + 0x7002000E, // 0069 JMP #0079 + 0x8C140118, // 006A GETMET R5 R0 K24 + 0x601C0018, // 006B GETGBL R7 G24 + 0x5820001D, // 006C LDCONST R8 K29 + 0x5C240200, // 006D MOVE R9 R1 + 0x7C1C0400, // 006E CALL R7 2 + 0x7C140400, // 006F CALL R5 2 + 0x8C14011A, // 0070 GETMET R5 R0 K26 + 0x7C140200, // 0071 CALL R5 1 + 0x74160005, // 0072 JMPT R5 #0079 + 0x8C14011B, // 0073 GETMET R5 R0 K27 + 0x7C140200, // 0074 CALL R5 1 + 0x74160002, // 0075 JMPT R5 #0079 + 0x8C14011C, // 0076 GETMET R5 R0 K28 + 0x7C140200, // 0077 CALL R5 1 + 0x7001FFF6, // 0078 JMP #0070 + 0x8C14011E, // 0079 GETMET R5 R0 K30 + 0x7C140200, // 007A CALL R5 1 + 0x80000000, // 007B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_computed_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_computed_expression, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_X28), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(animation_X2E), + /* K5 */ be_nested_str_weak(_), + }), + be_str_weak(is_computed_expression), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140901, // 0001 GETMET R5 R4 K1 + 0x5C1C0200, // 0002 MOVE R7 R1 + 0x58200002, // 0003 LDCONST R8 K2 + 0x7C140600, // 0004 CALL R5 3 + 0x28140B03, // 0005 GE R5 R5 K3 + 0x7416001E, // 0006 JMPT R5 #0026 + 0x8C140901, // 0007 GETMET R5 R4 K1 + 0x5C1C0600, // 0008 MOVE R7 R3 + 0x58200002, // 0009 LDCONST R8 K2 + 0x7C140600, // 000A CALL R5 3 + 0x28140B03, // 000B GE R5 R5 K3 + 0x74160018, // 000C JMPT R5 #0026 + 0x8C140901, // 000D GETMET R5 R4 K1 + 0x5C1C0200, // 000E MOVE R7 R1 + 0x58200004, // 000F LDCONST R8 K4 + 0x7C140600, // 0010 CALL R5 3 + 0x28140B03, // 0011 GE R5 R5 K3 + 0x74160012, // 0012 JMPT R5 #0026 + 0x8C140901, // 0013 GETMET R5 R4 K1 + 0x5C1C0600, // 0014 MOVE R7 R3 + 0x58200004, // 0015 LDCONST R8 K4 + 0x7C140600, // 0016 CALL R5 3 + 0x28140B03, // 0017 GE R5 R5 K3 + 0x7416000C, // 0018 JMPT R5 #0026 + 0x8C140901, // 0019 GETMET R5 R4 K1 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x58200005, // 001B LDCONST R8 K5 + 0x7C140600, // 001C CALL R5 3 + 0x28140B03, // 001D GE R5 R5 K3 + 0x74160006, // 001E JMPT R5 #0026 + 0x8C140901, // 001F GETMET R5 R4 K1 + 0x5C1C0600, // 0020 MOVE R7 R3 + 0x58200005, // 0021 LDCONST R8 K5 + 0x7C140600, // 0022 CALL R5 3 + 0x28140B03, // 0023 GE R5 R5 K3 + 0x74160000, // 0024 JMPT R5 #0026 + 0x50140001, // 0025 LDBOOL R5 0 1 + 0x50140200, // 0026 LDBOOL R5 1 0 + 0x80040A00, // 0027 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_animation_factory_exists +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), + }), + be_str_weak(_validate_animation_factory_exists), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x80040600, // 0006 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: convert_to_vrgb +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_convert_to_vrgb, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(format), + /* K3 */ be_nested_str_weak(_X2502X), + /* K4 */ be_nested_str_weak(FFFFFF), + /* K5 */ be_nested_str_weak(startswith), + /* K6 */ be_nested_str_weak(0x), + /* K7 */ be_const_int(2), + }), + be_str_weak(convert_to_vrgb), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x60100009, // 0001 GETGBL R4 G9 + 0x6014000A, // 0002 GETGBL R5 G10 + 0x5C180200, // 0003 MOVE R6 R1 + 0x7C140200, // 0004 CALL R5 1 + 0x7C100200, // 0005 CALL R4 1 + 0x14140901, // 0006 LT R5 R4 K1 + 0x78160001, // 0007 JMPF R5 #000A + 0x58100001, // 0008 LDCONST R4 K1 + 0x70020003, // 0009 JMP #000E + 0x541600FE, // 000A LDINT R5 255 + 0x24140805, // 000B GT R5 R4 R5 + 0x78160000, // 000C JMPF R5 #000E + 0x541200FE, // 000D LDINT R4 255 + 0x8C140702, // 000E GETMET R5 R3 K2 + 0x581C0003, // 000F LDCONST R7 K3 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x60180008, // 0012 GETGBL R6 G8 + 0x5C1C0400, // 0013 MOVE R7 R2 + 0x7C180200, // 0014 CALL R6 1 + 0x581C0004, // 0015 LDCONST R7 K4 + 0x8C200705, // 0016 GETMET R8 R3 K5 + 0x5C280C00, // 0017 MOVE R10 R6 + 0x582C0006, // 0018 LDCONST R11 K6 + 0x7C200600, // 0019 CALL R8 3 + 0x7822000A, // 001A JMPF R8 #0026 + 0x6020000C, // 001B GETGBL R8 G12 + 0x5C240C00, // 001C MOVE R9 R6 + 0x7C200200, // 001D CALL R8 1 + 0x54260009, // 001E LDINT R9 10 + 0x28201009, // 001F GE R8 R8 R9 + 0x78220004, // 0020 JMPF R8 #0026 + 0x54220003, // 0021 LDINT R8 4 + 0x54260008, // 0022 LDINT R9 9 + 0x40201009, // 0023 CONNECT R8 R8 R9 + 0x941C0C08, // 0024 GETIDX R7 R6 R8 + 0x7002000D, // 0025 JMP #0034 + 0x8C200705, // 0026 GETMET R8 R3 K5 + 0x5C280C00, // 0027 MOVE R10 R6 + 0x582C0006, // 0028 LDCONST R11 K6 + 0x7C200600, // 0029 CALL R8 3 + 0x78220008, // 002A JMPF R8 #0034 + 0x6020000C, // 002B GETGBL R8 G12 + 0x5C240C00, // 002C MOVE R9 R6 + 0x7C200200, // 002D CALL R8 1 + 0x54260007, // 002E LDINT R9 8 + 0x1C201009, // 002F EQ R8 R8 R9 + 0x78220002, // 0030 JMPF R8 #0034 + 0x54220006, // 0031 LDINT R8 7 + 0x40220E08, // 0032 CONNECT R8 K7 R8 + 0x941C0C08, // 0033 GETIDX R7 R6 R8 + 0x00200A07, // 0034 ADD R8 R5 R7 + 0x80041000, // 0035 RET 1 R8 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_right_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_BRACKET), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), + }), + be_str_weak(expect_right_bracket), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_function_arguments +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(at_end), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(RIGHT_PAREN), + }), + be_str_weak(skip_function_arguments), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060023, // 0004 JMPF R1 #0029 + 0x8C040100, // 0005 GETMET R1 R0 K0 + 0x7C040200, // 0006 CALL R1 1 + 0x88040301, // 0007 GETMBR R1 R1 K1 + 0xB80A0400, // 0008 GETNGBL R2 K2 + 0x88080503, // 0009 GETMBR R2 R2 K3 + 0x88080504, // 000A GETMBR R2 R2 K4 + 0x1C040202, // 000B EQ R1 R1 R2 + 0x7806001B, // 000C JMPF R1 #0029 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0x58040006, // 000F LDCONST R1 K6 + 0x8C080107, // 0010 GETMET R2 R0 K7 + 0x7C080200, // 0011 CALL R2 1 + 0x740A0015, // 0012 JMPT R2 #0029 + 0x24080308, // 0013 GT R2 R1 K8 + 0x780A0013, // 0014 JMPF R2 #0029 + 0x8C080100, // 0015 GETMET R2 R0 K0 + 0x7C080200, // 0016 CALL R2 1 + 0x880C0501, // 0017 GETMBR R3 R2 K1 + 0xB8120400, // 0018 GETNGBL R4 K2 + 0x88100903, // 0019 GETMBR R4 R4 K3 + 0x88100904, // 001A GETMBR R4 R4 K4 + 0x1C0C0604, // 001B EQ R3 R3 R4 + 0x780E0001, // 001C JMPF R3 #001F + 0x00040306, // 001D ADD R1 R1 K6 + 0x70020006, // 001E JMP #0026 + 0x880C0501, // 001F GETMBR R3 R2 K1 + 0xB8120400, // 0020 GETNGBL R4 K2 + 0x88100903, // 0021 GETMBR R4 R4 K3 + 0x88100909, // 0022 GETMBR R4 R4 K9 + 0x1C0C0604, // 0023 EQ R3 R3 R4 + 0x780E0000, // 0024 JMPF R3 #0026 + 0x04040306, // 0025 SUB R1 R1 K6 + 0x8C0C0105, // 0026 GETMET R3 R0 K5 + 0x7C0C0200, // 0027 CALL R3 1 + 0x7001FFE6, // 0028 JMP #0010 + 0x80000000, // 0029 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_comma +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(COMMA), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), + }), + be_str_weak(expect_comma), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_additive_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ + be_nested_proto( + 15, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(process_multiplicative_expression), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(PLUS), + /* K7 */ be_nested_str_weak(MINUS), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(ExpressionResult), + /* K11 */ be_nested_str_weak(combine), + /* K12 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K13 */ be_nested_str_weak(expr), + }), + be_str_weak(process_additive_expression), + &be_const_str_solidified, + ( &(const binstruction[49]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x5C180200, // 0001 MOVE R6 R1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x5C200600, // 0003 MOVE R8 R3 + 0x7C100800, // 0004 CALL R4 4 + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x74160027, // 0007 JMPT R5 #0030 + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0x4C180000, // 000A LDNIL R6 + 0x20180A06, // 000B NE R6 R5 R6 + 0x781A0020, // 000C JMPF R6 #002E + 0x88180B03, // 000D GETMBR R6 R5 K3 + 0xB81E0800, // 000E GETNGBL R7 K4 + 0x881C0F05, // 000F GETMBR R7 R7 K5 + 0x881C0F06, // 0010 GETMBR R7 R7 K6 + 0x1C180C07, // 0011 EQ R6 R6 R7 + 0x741A0005, // 0012 JMPT R6 #0019 + 0x88180B03, // 0013 GETMBR R6 R5 K3 + 0xB81E0800, // 0014 GETNGBL R7 K4 + 0x881C0F05, // 0015 GETMBR R7 R7 K5 + 0x881C0F07, // 0016 GETMBR R7 R7 K7 + 0x1C180C07, // 0017 EQ R6 R6 R7 + 0x781A0014, // 0018 JMPF R6 #002E + 0x88180B08, // 0019 GETMBR R6 R5 K8 + 0x8C1C0109, // 001A GETMET R7 R0 K9 + 0x7C1C0200, // 001B CALL R7 1 + 0x8C1C0100, // 001C GETMET R7 R0 K0 + 0x5C240200, // 001D MOVE R9 R1 + 0x50280000, // 001E LDBOOL R10 0 0 + 0x5C2C0600, // 001F MOVE R11 R3 + 0x7C1C0800, // 0020 CALL R7 4 + 0x8820010A, // 0021 GETMBR R8 R0 K10 + 0x8C20110B, // 0022 GETMET R8 R8 K11 + 0x60280018, // 0023 GETGBL R10 G24 + 0x582C000C, // 0024 LDCONST R11 K12 + 0x8830090D, // 0025 GETMBR R12 R4 K13 + 0x5C340C00, // 0026 MOVE R13 R6 + 0x88380F0D, // 0027 GETMBR R14 R7 K13 + 0x7C280800, // 0028 CALL R10 4 + 0x5C2C0800, // 0029 MOVE R11 R4 + 0x5C300E00, // 002A MOVE R12 R7 + 0x7C200800, // 002B CALL R8 4 + 0x5C101000, // 002C MOVE R4 R8 + 0x70020000, // 002D JMP #002F + 0x70020000, // 002E JMP #0030 + 0x7001FFD4, // 002F JMP #0005 + 0x80040800, // 0030 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_errors +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(errors), + }), + be_str_weak(get_errors), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_computed_expression_string +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_computed_expression_string, /* name */ + be_nested_proto( + 12, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_X20_X2B_X20), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(_X20_X2D_X20), + /* K5 */ be_nested_str_weak(_X20_X2A_X20), + /* K6 */ be_nested_str_weak(_X20_X2F_X20), + /* K7 */ be_nested_str_weak(_X28), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(is_identifier_char), + /* K10 */ be_nested_str_weak(_is_named_arg_constructor), + }), + be_str_weak(is_computed_expression_string), + &be_const_str_solidified, + ( &(const binstruction[63]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x280C0703, // 0005 GE R3 R3 K3 + 0x740E0012, // 0006 JMPT R3 #001A + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x5C140200, // 0008 MOVE R5 R1 + 0x58180004, // 0009 LDCONST R6 K4 + 0x7C0C0600, // 000A CALL R3 3 + 0x280C0703, // 000B GE R3 R3 K3 + 0x740E000C, // 000C JMPT R3 #001A + 0x8C0C0501, // 000D GETMET R3 R2 K1 + 0x5C140200, // 000E MOVE R5 R1 + 0x58180005, // 000F LDCONST R6 K5 + 0x7C0C0600, // 0010 CALL R3 3 + 0x280C0703, // 0011 GE R3 R3 K3 + 0x740E0006, // 0012 JMPT R3 #001A + 0x8C0C0501, // 0013 GETMET R3 R2 K1 + 0x5C140200, // 0014 MOVE R5 R1 + 0x58180006, // 0015 LDCONST R6 K6 + 0x7C0C0600, // 0016 CALL R3 3 + 0x280C0703, // 0017 GE R3 R3 K3 + 0x740E0000, // 0018 JMPT R3 #001A + 0x500C0001, // 0019 LDBOOL R3 0 1 + 0x500C0200, // 001A LDBOOL R3 1 0 + 0x50100000, // 001B LDBOOL R4 0 0 + 0x8C140501, // 001C GETMET R5 R2 K1 + 0x5C1C0200, // 001D MOVE R7 R1 + 0x58200007, // 001E LDCONST R8 K7 + 0x7C140600, // 001F CALL R5 3 + 0x24180B03, // 0020 GT R6 R5 K3 + 0x781A0017, // 0021 JMPF R6 #003A + 0x04180B08, // 0022 SUB R6 R5 K8 + 0x94180206, // 0023 GETIDX R6 R1 R6 + 0x8C1C0109, // 0024 GETMET R7 R0 K9 + 0x5C240C00, // 0025 MOVE R9 R6 + 0x7C1C0400, // 0026 CALL R7 2 + 0x781E0011, // 0027 JMPF R7 #003A + 0x041C0B08, // 0028 SUB R7 R5 K8 + 0x28200F03, // 0029 GE R8 R7 K3 + 0x78220005, // 002A JMPF R8 #0031 + 0x8C200109, // 002B GETMET R8 R0 K9 + 0x94280207, // 002C GETIDX R10 R1 R7 + 0x7C200400, // 002D CALL R8 2 + 0x78220001, // 002E JMPF R8 #0031 + 0x041C0F08, // 002F SUB R7 R7 K8 + 0x7001FFF7, // 0030 JMP #0029 + 0x001C0F08, // 0031 ADD R7 R7 K8 + 0x04200B08, // 0032 SUB R8 R5 K8 + 0x40200E08, // 0033 CONNECT R8 R7 R8 + 0x94200208, // 0034 GETIDX R8 R1 R8 + 0x8C24010A, // 0035 GETMET R9 R0 K10 + 0x5C2C1000, // 0036 MOVE R11 R8 + 0x7C240400, // 0037 CALL R9 2 + 0x78260000, // 0038 JMPF R9 #003A + 0x50100200, // 0039 LDBOOL R4 1 0 + 0x740E0001, // 003A JMPT R3 #003D + 0x74120000, // 003B JMPT R4 #003D + 0x50180001, // 003C LDBOOL R6 0 1 + 0x50180200, // 003D LDBOOL R6 1 0 + 0x80040C00, // 003E RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_right_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X29_X27), + }), + be_str_weak(expect_right_paren), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_for_color_provider +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(CONTEXT_COLOR_PROVIDER), + }), + be_str_weak(_process_named_arguments_for_color_provider), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x881C0101, // 0003 GETMBR R7 R0 K1 + 0x7C0C0800, // 0004 CALL R3 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_berry_code_block +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_berry_code_block, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(STRING), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20string_X20literal_X20after_X20_X27berry_X27_X20keyword_X2E_X20Use_X20berry_X20_X22_X22_X22_X3Ccode_X3E_X22_X22_X22_X20or_X20berry_X20_X27_X27_X27_X3Ccode_X3E_X27_X27_X27), + /* K8 */ be_nested_str_weak(skip_statement), + /* K9 */ be_nested_str_weak(value), + /* K10 */ be_nested_str_weak(collect_inline_comment), + /* K11 */ be_nested_str_weak(add), + /* K12 */ be_nested_str_weak(_X23_X20Berry_X20code_X20block_X25s), + /* K13 */ be_nested_str_weak(string), + /* K14 */ be_nested_str_weak(split), + /* K15 */ be_nested_str_weak(_X0A), + /* K16 */ be_nested_str_weak(stop_iteration), + /* K17 */ be_nested_str_weak(_X23_X20End_X20berry_X20code_X20block), + }), + be_str_weak(process_berry_code_block), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x4C080000, // 0004 LDNIL R2 + 0x1C080202, // 0005 EQ R2 R1 R2 + 0x740A0005, // 0006 JMPT R2 #000D + 0x88080302, // 0007 GETMBR R2 R1 K2 + 0xB80E0600, // 0008 GETNGBL R3 K3 + 0x880C0704, // 0009 GETMBR R3 R3 K4 + 0x880C0705, // 000A GETMBR R3 R3 K5 + 0x20080403, // 000B NE R2 R2 R3 + 0x780A0005, // 000C JMPF R2 #0013 + 0x8C080106, // 000D GETMET R2 R0 K6 + 0x58100007, // 000E LDCONST R4 K7 + 0x7C080400, // 000F CALL R2 2 + 0x8C080108, // 0010 GETMET R2 R0 K8 + 0x7C080200, // 0011 CALL R2 1 + 0x80000400, // 0012 RET 0 + 0x88080309, // 0013 GETMBR R2 R1 K9 + 0x8C0C0100, // 0014 GETMET R3 R0 K0 + 0x7C0C0200, // 0015 CALL R3 1 + 0x8C0C010A, // 0016 GETMET R3 R0 K10 + 0x7C0C0200, // 0017 CALL R3 1 + 0x8C10010B, // 0018 GETMET R4 R0 K11 + 0x60180018, // 0019 GETGBL R6 G24 + 0x581C000C, // 001A LDCONST R7 K12 + 0x5C200600, // 001B MOVE R8 R3 + 0x7C180400, // 001C CALL R6 2 + 0x7C100400, // 001D CALL R4 2 + 0xA4121A00, // 001E IMPORT R4 K13 + 0x8C14090E, // 001F GETMET R5 R4 K14 + 0x5C1C0400, // 0020 MOVE R7 R2 + 0x5820000F, // 0021 LDCONST R8 K15 + 0x7C140600, // 0022 CALL R5 3 + 0x60180010, // 0023 GETGBL R6 G16 + 0x5C1C0A00, // 0024 MOVE R7 R5 + 0x7C180200, // 0025 CALL R6 1 + 0xA8020005, // 0026 EXBLK 0 #002D + 0x5C1C0C00, // 0027 MOVE R7 R6 + 0x7C1C0000, // 0028 CALL R7 0 + 0x8C20010B, // 0029 GETMET R8 R0 K11 + 0x5C280E00, // 002A MOVE R10 R7 + 0x7C200400, // 002B CALL R8 2 + 0x7001FFF9, // 002C JMP #0027 + 0x58180010, // 002D LDCONST R6 K16 + 0xAC180200, // 002E CATCH R6 1 0 + 0xB0080000, // 002F RAISE 2 R0 R0 + 0x8C18010B, // 0030 GETMET R6 R0 K11 + 0x58200011, // 0031 LDCONST R8 K17 + 0x7C180400, // 0032 CALL R6 2 + 0x80000000, // 0033 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_colon +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(COLON), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X3A_X27), + }), + be_str_weak(expect_colon), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_palette_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_palette_color, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Expected_X20color_X20value_X20in_X20palette), + /* K3 */ be_nested_str_weak(0xFFFFFFFF), + /* K4 */ be_nested_str_weak(type), + /* K5 */ be_nested_str_weak(animation_dsl), + /* K6 */ be_nested_str_weak(Token), + /* K7 */ be_nested_str_weak(COLOR), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(convert_color), + /* K10 */ be_nested_str_weak(value), + /* K11 */ be_nested_str_weak(IDENTIFIER), + /* K12 */ be_nested_str_weak(is_color_name), + /* K13 */ be_nested_str_weak(get_named_color_value), + /* K14 */ be_nested_str_weak(Unknown_X20color_X20_X27_X25s_X27_X2E_X20Palettes_X20only_X20accept_X20hex_X20colors_X20_X280xRRGGBB_X29_X20or_X20predefined_X20color_X20names_X20_X28like_X20_X27red_X27_X2C_X20_X27blue_X27_X2C_X20_X27green_X27_X29_X2C_X20but_X20not_X20custom_X20colors_X20defined_X20previously_X2E_X20For_X20dynamic_X20palettes_X20with_X20custom_X20colors_X2C_X20use_X20user_X20functions_X20instead_X2E), + /* K15 */ be_nested_str_weak(Expected_X20color_X20value_X20in_X20palette_X2E_X20Use_X20hex_X20colors_X20_X280xRRGGBB_X29_X20or_X20predefined_X20color_X20names_X20_X28like_X20_X27red_X27_X2C_X20_X27blue_X27_X2C_X20_X27green_X27_X29_X2E), + }), + be_str_weak(process_palette_color), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C080202, // 0003 EQ R2 R1 R2 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x8C080101, // 0005 GETMET R2 R0 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x7C080400, // 0007 CALL R2 2 + 0x80060600, // 0008 RET 1 K3 + 0x88080304, // 0009 GETMBR R2 R1 K4 + 0xB80E0A00, // 000A GETNGBL R3 K5 + 0x880C0706, // 000B GETMBR R3 R3 K6 + 0x880C0707, // 000C GETMBR R3 R3 K7 + 0x1C080403, // 000D EQ R2 R2 R3 + 0x780A0005, // 000E JMPF R2 #0015 + 0x8C080108, // 000F GETMET R2 R0 K8 + 0x7C080200, // 0010 CALL R2 1 + 0x8C080109, // 0011 GETMET R2 R0 K9 + 0x8810030A, // 0012 GETMBR R4 R1 K10 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x88080304, // 0015 GETMBR R2 R1 K4 + 0xB80E0A00, // 0016 GETNGBL R3 K5 + 0x880C0706, // 0017 GETMBR R3 R3 K6 + 0x880C070B, // 0018 GETMBR R3 R3 K11 + 0x1C080403, // 0019 EQ R2 R2 R3 + 0x780A0012, // 001A JMPF R2 #002E + 0x8808030A, // 001B GETMBR R2 R1 K10 + 0x8C0C0108, // 001C GETMET R3 R0 K8 + 0x7C0C0200, // 001D CALL R3 1 + 0xB80E0A00, // 001E GETNGBL R3 K5 + 0x8C0C070C, // 001F GETMET R3 R3 K12 + 0x5C140400, // 0020 MOVE R5 R2 + 0x7C0C0400, // 0021 CALL R3 2 + 0x780E0003, // 0022 JMPF R3 #0027 + 0x8C0C010D, // 0023 GETMET R3 R0 K13 + 0x5C140400, // 0024 MOVE R5 R2 + 0x7C0C0400, // 0025 CALL R3 2 + 0x80040600, // 0026 RET 1 R3 + 0x8C0C0101, // 0027 GETMET R3 R0 K1 + 0x60140018, // 0028 GETGBL R5 G24 + 0x5818000E, // 0029 LDCONST R6 K14 + 0x5C1C0400, // 002A MOVE R7 R2 + 0x7C140400, // 002B CALL R5 2 + 0x7C0C0400, // 002C CALL R3 2 + 0x80060600, // 002D RET 1 K3 + 0x8C080101, // 002E GETMET R2 R0 K1 + 0x5810000F, // 002F LDCONST R4 K15 + 0x7C080400, // 0030 CALL R2 2 + 0x80060600, // 0031 RET 1 K3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transpile_template_body +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transpile_template_body, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(process_statement), + /* K2 */ be_nested_str_weak(run_statements), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(name), + /* K5 */ be_nested_str_weak(comment), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), + /* K8 */ be_nested_str_weak(stop_iteration), + /* K9 */ be_nested_str_weak(errors), + /* K10 */ be_nested_str_weak(join_output), + /* K11 */ be_nested_str_weak(error), + /* K12 */ be_nested_str_weak(Template_X20body_X20transpilation_X20failed_X3A_X20_X25s), + }), + be_str_weak(transpile_template_body), + &be_const_str_solidified, + ( &(const binstruction[57]) { /* code */ + 0xA802002A, // 0000 EXBLK 0 #002C + 0x8C040100, // 0001 GETMET R1 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x74060002, // 0003 JMPT R1 #0007 + 0x8C040101, // 0004 GETMET R1 R0 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x7001FFF9, // 0006 JMP #0001 + 0x6004000C, // 0007 GETGBL R1 G12 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x7C040200, // 0009 CALL R1 1 + 0x24040303, // 000A GT R1 R1 K3 + 0x78060012, // 000B JMPF R1 #001F + 0x60040010, // 000C GETGBL R1 G16 + 0x88080102, // 000D GETMBR R2 R0 K2 + 0x7C040200, // 000E CALL R1 1 + 0xA802000B, // 000F EXBLK 0 #001C + 0x5C080200, // 0010 MOVE R2 R1 + 0x7C080000, // 0011 CALL R2 0 + 0x940C0504, // 0012 GETIDX R3 R2 K4 + 0x94100505, // 0013 GETIDX R4 R2 K5 + 0x8C140106, // 0014 GETMET R5 R0 K6 + 0x601C0018, // 0015 GETGBL R7 G24 + 0x58200007, // 0016 LDCONST R8 K7 + 0x5C240600, // 0017 MOVE R9 R3 + 0x5C280800, // 0018 MOVE R10 R4 + 0x7C1C0600, // 0019 CALL R7 3 + 0x7C140400, // 001A CALL R5 2 + 0x7001FFF3, // 001B JMP #0010 + 0x58040008, // 001C LDCONST R1 K8 + 0xAC040200, // 001D CATCH R1 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x6004000C, // 001F GETGBL R1 G12 + 0x88080109, // 0020 GETMBR R2 R0 K9 + 0x7C040200, // 0021 CALL R1 1 + 0x1C040303, // 0022 EQ R1 R1 K3 + 0x78060002, // 0023 JMPF R1 #0027 + 0x8C04010A, // 0024 GETMET R1 R0 K10 + 0x7C040200, // 0025 CALL R1 1 + 0x70020000, // 0026 JMP #0028 + 0x4C040000, // 0027 LDNIL R1 + 0xA8040001, // 0028 EXBLK 1 1 + 0x80040200, // 0029 RET 1 R1 + 0xA8040001, // 002A EXBLK 1 1 + 0x7002000B, // 002B JMP #0038 + 0xAC040002, // 002C CATCH R1 0 2 + 0x70020008, // 002D JMP #0037 + 0x8C0C010B, // 002E GETMET R3 R0 K11 + 0x60140018, // 002F GETGBL R5 G24 + 0x5818000C, // 0030 LDCONST R6 K12 + 0x5C1C0400, // 0031 MOVE R7 R2 + 0x7C140400, // 0032 CALL R5 2 + 0x7C0C0400, // 0033 CALL R3 2 + 0x4C0C0000, // 0034 LDNIL R3 + 0x80040600, // 0035 RET 1 R3 + 0x70020000, // 0036 JMP #0038 + 0xB0080000, // 0037 RAISE 2 R0 R0 + 0x80000000, // 0038 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_engine_run +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_engine_run, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(run_statements), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(has_template_calls), + /* K3 */ be_nested_str_weak(name), + /* K4 */ be_nested_str_weak(comment), + /* K5 */ be_nested_str_weak(add), + /* K6 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), + /* K7 */ be_nested_str_weak(stop_iteration), + /* K8 */ be_nested_str_weak(engine_X2Erun_X28_X29), + }), + be_str_weak(generate_engine_run), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040301, // 0003 EQ R1 R1 K1 + 0x78060002, // 0004 JMPF R1 #0008 + 0x88040102, // 0005 GETMBR R1 R0 K2 + 0x74060000, // 0006 JMPT R1 #0008 + 0x80000200, // 0007 RET 0 + 0x60040010, // 0008 GETGBL R1 G16 + 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x7C040200, // 000A CALL R1 1 + 0xA802000B, // 000B EXBLK 0 #0018 + 0x5C080200, // 000C MOVE R2 R1 + 0x7C080000, // 000D CALL R2 0 + 0x940C0503, // 000E GETIDX R3 R2 K3 + 0x94100504, // 000F GETIDX R4 R2 K4 + 0x8C140105, // 0010 GETMET R5 R0 K5 + 0x601C0018, // 0011 GETGBL R7 G24 + 0x58200006, // 0012 LDCONST R8 K6 + 0x5C240600, // 0013 MOVE R9 R3 + 0x5C280800, // 0014 MOVE R10 R4 + 0x7C1C0600, // 0015 CALL R7 3 + 0x7C140400, // 0016 CALL R5 2 + 0x7001FFF3, // 0017 JMP #000C + 0x58040007, // 0018 LDCONST R1 K7 + 0xAC040200, // 0019 CATCH R1 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x8C040105, // 001B GETMET R1 R0 K5 + 0x580C0008, // 001C LDCONST R3 K8 + 0x7C040400, // 001D CALL R1 2 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _has_function_parameters +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__has_function_parameters, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(LEFT_PAREN), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K8 */ be_nested_str_weak(RIGHT_PAREN), + }), + be_str_weak(_has_function_parameters), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C080403, // 0004 EQ R2 R2 R3 + 0x740A0007, // 0005 JMPT R2 #000E + 0x8C080101, // 0006 GETMET R2 R0 K1 + 0x7C080200, // 0007 CALL R2 1 + 0x88080502, // 0008 GETMBR R2 R2 K2 + 0xB80E0600, // 0009 GETNGBL R3 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x20080403, // 000C NE R2 R2 R3 + 0x780A0001, // 000D JMPF R2 #0010 + 0x50080000, // 000E LDBOOL R2 0 0 + 0x80040400, // 000F RET 1 R2 + 0x8C080106, // 0010 GETMET R2 R0 K6 + 0x7C080200, // 0011 CALL R2 1 + 0x8C080107, // 0012 GETMET R2 R0 K7 + 0x7C080200, // 0013 CALL R2 1 + 0x8C080101, // 0014 GETMET R2 R0 K1 + 0x7C080200, // 0015 CALL R2 1 + 0x4C0C0000, // 0016 LDNIL R3 + 0x20080403, // 0017 NE R2 R2 R3 + 0x780A0007, // 0018 JMPF R2 #0021 + 0x8C080101, // 0019 GETMET R2 R0 K1 + 0x7C080200, // 001A CALL R2 1 + 0x88080502, // 001B GETMBR R2 R2 K2 + 0xB80E0600, // 001C GETNGBL R3 K3 + 0x880C0704, // 001D GETMBR R3 R3 K4 + 0x880C0708, // 001E GETMBR R3 R3 K8 + 0x1C080403, // 001F EQ R2 R2 R3 + 0x740A0000, // 0020 JMPT R2 #0022 + 0x50080001, // 0021 LDBOOL R2 0 1 + 0x50080200, // 0022 LDBOOL R2 1 0 + 0x780A0000, // 0023 JMPF R2 #0025 + 0x50080001, // 0024 LDBOOL R2 0 1 + 0x50080200, // 0025 LDBOOL R2 1 0 + 0x90020001, // 0026 SETMBR R0 K0 R1 + 0x80040400, // 0027 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_indent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_indent, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_X20_X20), + /* K1 */ be_nested_str_weak(indent_level), + /* K2 */ be_const_int(1), + }), + be_str_weak(get_indent), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x00040302, // 0001 ADD R1 R1 K2 + 0x08060001, // 0002 MUL R1 K0 R1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_single_parameter +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(_has_param), + /* K3 */ be_nested_str_weak(current), + /* K4 */ be_nested_str_weak(line), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Animation_X20_X27_X25s_X27_X20does_X20not_X20have_X20parameter_X20_X27_X25s_X27_X2E_X20Check_X20the_X20animation_X20documentation_X20for_X20valid_X20parameters_X2E), + }), + be_str_weak(_validate_single_parameter), + &be_const_str_solidified, + ( &(const binstruction[38]) { /* code */ + 0xA802001F, // 0000 EXBLK 0 #0021 + 0xA4120000, // 0001 IMPORT R4 K0 + 0x4C140000, // 0002 LDNIL R5 + 0x20140605, // 0003 NE R5 R3 R5 + 0x78160019, // 0004 JMPF R5 #001F + 0x8C140901, // 0005 GETMET R5 R4 K1 + 0x5C1C0600, // 0006 MOVE R7 R3 + 0x58200002, // 0007 LDCONST R8 K2 + 0x7C140600, // 0008 CALL R5 3 + 0x78160014, // 0009 JMPF R5 #001F + 0x8C140702, // 000A GETMET R5 R3 K2 + 0x5C1C0400, // 000B MOVE R7 R2 + 0x7C140400, // 000C CALL R5 2 + 0x74160010, // 000D JMPT R5 #001F + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x7C140200, // 000F CALL R5 1 + 0x4C180000, // 0010 LDNIL R6 + 0x20140A06, // 0011 NE R5 R5 R6 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C140103, // 0013 GETMET R5 R0 K3 + 0x7C140200, // 0014 CALL R5 1 + 0x88140B04, // 0015 GETMBR R5 R5 K4 + 0x70020000, // 0016 JMP #0018 + 0x58140005, // 0017 LDCONST R5 K5 + 0x8C180106, // 0018 GETMET R6 R0 K6 + 0x60200018, // 0019 GETGBL R8 G24 + 0x58240007, // 001A LDCONST R9 K7 + 0x5C280200, // 001B MOVE R10 R1 + 0x5C2C0400, // 001C MOVE R11 R2 + 0x7C200600, // 001D CALL R8 3 + 0x7C180400, // 001E CALL R6 2 + 0xA8040001, // 001F EXBLK 1 1 + 0x70020003, // 0020 JMP #0025 + 0xAC100002, // 0021 CATCH R4 0 2 + 0x70020000, // 0022 JMP #0024 + 0x70020000, // 0023 JMP #0025 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x80000000, // 0025 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_assignment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(process_sequence_assignment_generic), + /* K1 */ be_nested_str_weak(steps), + }), + be_str_weak(process_sequence_assignment), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140001, // 0002 LDCONST R5 K1 + 0x7C080600, // 0003 CALL R2 3 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: validate_symbol_reference +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_validate_symbol_reference, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(symbol_exists), + /* K2 */ be_nested_str_weak(error), + /* K3 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X2E_X20Make_X20sure_X20the_X20object_X20is_X20defined_X20before_X20use_X2E), + }), + be_str_weak(validate_symbol_reference), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x740E0008, // 0004 JMPT R3 #000E + 0x8C0C0102, // 0005 GETMET R3 R0 K2 + 0x60140018, // 0006 GETGBL R5 G24 + 0x58180003, // 0007 LDCONST R6 K3 + 0x5C1C0200, // 0008 MOVE R7 R1 + 0x5C200400, // 0009 MOVE R8 R2 + 0x7C140600, // 000A CALL R5 3 + 0x7C0C0400, // 000B CALL R3 2 + 0x500C0000, // 000C LDBOOL R3 0 0 + 0x80040600, // 000D RET 1 R3 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: current +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_current, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(tokens), + }), + be_str_weak(current), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14040202, // 0004 LT R1 R1 R2 + 0x78060003, // 0005 JMPF R1 #000A + 0x88040101, // 0006 GETMBR R1 R0 K1 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x94040202, // 0008 GETIDX R1 R1 R2 + 0x70020000, // 0009 JMP #000B + 0x4C040000, // 000A LDNIL R1 + 0x80040200, // 000B RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[28]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(IDENTIFIER), + /* K6 */ be_nested_str_weak(KEYWORD), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20function_X20name), + /* K11 */ be_nested_str_weak(nil), + /* K12 */ be_nested_str_weak(symbol_table), + /* K13 */ be_nested_str_weak(get), + /* K14 */ be_nested_str_weak(_symbol_entry), + /* K15 */ be_nested_str_weak(TYPE_MATH_FUNCTION), + /* K16 */ be_nested_str_weak(process_function_arguments), + /* K17 */ be_nested_str_weak(_X25s_X28_X25s_X29), + /* K18 */ be_nested_str_weak(get_reference), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(process_log_call), + /* K21 */ be_nested_str_weak(CONTEXT_EXPRESSION), + /* K22 */ be_nested_str_weak(TYPE_TEMPLATE), + /* K23 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K24 */ be_nested_str_weak(engine), + /* K25 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K26 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), + /* K27 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + }), + be_str_weak(process_function_call), + &be_const_str_solidified, + ( &(const binstruction[102]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x4C100000, // 0003 LDNIL R4 + 0x20100404, // 0004 NE R4 R2 R4 + 0x7812000F, // 0005 JMPF R4 #0016 + 0x88100502, // 0006 GETMBR R4 R2 K2 + 0xB8160600, // 0007 GETNGBL R5 K3 + 0x88140B04, // 0008 GETMBR R5 R5 K4 + 0x88140B05, // 0009 GETMBR R5 R5 K5 + 0x1C100805, // 000A EQ R4 R4 R5 + 0x74120005, // 000B JMPT R4 #0012 + 0x88100502, // 000C GETMBR R4 R2 K2 + 0xB8160600, // 000D GETNGBL R5 K3 + 0x88140B04, // 000E GETMBR R5 R5 K4 + 0x88140B06, // 000F GETMBR R5 R5 K6 + 0x1C100805, // 0010 EQ R4 R4 R5 + 0x78120003, // 0011 JMPF R4 #0016 + 0x880C0507, // 0012 GETMBR R3 R2 K7 + 0x8C100108, // 0013 GETMET R4 R0 K8 + 0x7C100200, // 0014 CALL R4 1 + 0x70020003, // 0015 JMP #001A + 0x8C100109, // 0016 GETMET R4 R0 K9 + 0x5818000A, // 0017 LDCONST R6 K10 + 0x7C100400, // 0018 CALL R4 2 + 0x80061600, // 0019 RET 1 K11 + 0x8810010C, // 001A GETMBR R4 R0 K12 + 0x8C10090D, // 001B GETMET R4 R4 K13 + 0x5C180600, // 001C MOVE R6 R3 + 0x7C100400, // 001D CALL R4 2 + 0x4C140000, // 001E LDNIL R5 + 0x20140805, // 001F NE R5 R4 R5 + 0x7816000F, // 0020 JMPF R5 #0031 + 0x88140902, // 0021 GETMBR R5 R4 K2 + 0xB81A0600, // 0022 GETNGBL R6 K3 + 0x88180D0E, // 0023 GETMBR R6 R6 K14 + 0x88180D0F, // 0024 GETMBR R6 R6 K15 + 0x1C140A06, // 0025 EQ R5 R5 R6 + 0x78160009, // 0026 JMPF R5 #0031 + 0x8C140110, // 0027 GETMET R5 R0 K16 + 0x501C0000, // 0028 LDBOOL R7 0 0 + 0x7C140400, // 0029 CALL R5 2 + 0x60180018, // 002A GETGBL R6 G24 + 0x581C0011, // 002B LDCONST R7 K17 + 0x8C200912, // 002C GETMET R8 R4 K18 + 0x7C200200, // 002D CALL R8 1 + 0x5C240A00, // 002E MOVE R9 R5 + 0x7C180600, // 002F CALL R6 3 + 0x80040C00, // 0030 RET 1 R6 + 0x1C140713, // 0031 EQ R5 R3 K19 + 0x78160008, // 0032 JMPF R5 #003C + 0x8C140110, // 0033 GETMET R5 R0 K16 + 0x501C0000, // 0034 LDBOOL R7 0 0 + 0x7C140400, // 0035 CALL R5 2 + 0x8C180114, // 0036 GETMET R6 R0 K20 + 0x5C200A00, // 0037 MOVE R8 R5 + 0x88240115, // 0038 GETMBR R9 R0 K21 + 0x58280001, // 0039 LDCONST R10 K1 + 0x7C180800, // 003A CALL R6 4 + 0x80040C00, // 003B RET 1 R6 + 0x8C140110, // 003C GETMET R5 R0 K16 + 0x501C0000, // 003D LDBOOL R7 0 0 + 0x7C140400, // 003E CALL R5 2 + 0x4C180000, // 003F LDNIL R6 + 0x20180806, // 0040 NE R6 R4 R6 + 0x781A0014, // 0041 JMPF R6 #0057 + 0x88180902, // 0042 GETMBR R6 R4 K2 + 0xB81E0600, // 0043 GETNGBL R7 K3 + 0x881C0F0E, // 0044 GETMBR R7 R7 K14 + 0x881C0F16, // 0045 GETMBR R7 R7 K22 + 0x1C180C07, // 0046 EQ R6 R6 R7 + 0x781A000E, // 0047 JMPF R6 #0057 + 0x20180B01, // 0048 NE R6 R5 K1 + 0x781A0004, // 0049 JMPF R6 #004F + 0x60180018, // 004A GETGBL R6 G24 + 0x581C0017, // 004B LDCONST R7 K23 + 0x5C200A00, // 004C MOVE R8 R5 + 0x7C180400, // 004D CALL R6 2 + 0x70020000, // 004E JMP #0050 + 0x58180018, // 004F LDCONST R6 K24 + 0x601C0018, // 0050 GETGBL R7 G24 + 0x58200019, // 0051 LDCONST R8 K25 + 0x5C240600, // 0052 MOVE R9 R3 + 0x5C280C00, // 0053 MOVE R10 R6 + 0x7C1C0600, // 0054 CALL R7 3 + 0x80040E00, // 0055 RET 1 R7 + 0x7002000D, // 0056 JMP #0065 + 0x20180B01, // 0057 NE R6 R5 K1 + 0x781A0006, // 0058 JMPF R6 #0060 + 0x60180018, // 0059 GETGBL R6 G24 + 0x581C001A, // 005A LDCONST R7 K26 + 0x5C200600, // 005B MOVE R8 R3 + 0x5C240A00, // 005C MOVE R9 R5 + 0x7C180600, // 005D CALL R6 3 + 0x80040C00, // 005E RET 1 R6 + 0x70020004, // 005F JMP #0065 + 0x60180018, // 0060 GETGBL R6 G24 + 0x581C001B, // 0061 LDCONST R7 K27 + 0x5C200600, // 0062 MOVE R8 R3 + 0x7C180400, // 0063 CALL R6 2 + 0x80040C00, // 0064 RET 1 R6 + 0x80000000, // 0065 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_play_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_play_statement_fluent, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(IDENTIFIER), + /* K7 */ be_nested_str_weak(KEYWORD), + /* K8 */ be_nested_str_weak(peek), + /* K9 */ be_nested_str_weak(LEFT_PAREN), + /* K10 */ be_nested_str_weak(process_nested_function_call), + /* K11 */ be_nested_str_weak(expect_identifier), + /* K12 */ be_nested_str_weak(_validate_object_reference), + /* K13 */ be_nested_str_weak(sequence_X20play), + /* K14 */ be_nested_str_weak(_X25s_), + /* K15 */ be_nested_str_weak(nil), + /* K16 */ be_nested_str_weak(value), + /* K17 */ be_nested_str_weak(for), + /* K18 */ be_nested_str_weak(process_time_value), + /* K19 */ be_nested_str_weak(collect_inline_comment), + /* K20 */ be_nested_str_weak(add), + /* K21 */ be_nested_str_weak(_X25s_X2Epush_play_step_X28_X25s_X2C_X20_X25s_X29_X25s), + /* K22 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_play_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[85]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58040001, // 0002 LDCONST R1 K1 + 0x8C080102, // 0003 GETMET R2 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x4C0C0000, // 0005 LDNIL R3 + 0x200C0403, // 0006 NE R3 R2 R3 + 0x780E001C, // 0007 JMPF R3 #0025 + 0x880C0503, // 0008 GETMBR R3 R2 K3 + 0xB8120800, // 0009 GETNGBL R4 K4 + 0x88100905, // 000A GETMBR R4 R4 K5 + 0x88100906, // 000B GETMBR R4 R4 K6 + 0x1C0C0604, // 000C EQ R3 R3 R4 + 0x740E0005, // 000D JMPT R3 #0014 + 0x880C0503, // 000E GETMBR R3 R2 K3 + 0xB8120800, // 000F GETNGBL R4 K4 + 0x88100905, // 0010 GETMBR R4 R4 K5 + 0x88100907, // 0011 GETMBR R4 R4 K7 + 0x1C0C0604, // 0012 EQ R3 R3 R4 + 0x780E0010, // 0013 JMPF R3 #0025 + 0x8C0C0108, // 0014 GETMET R3 R0 K8 + 0x7C0C0200, // 0015 CALL R3 1 + 0x4C100000, // 0016 LDNIL R4 + 0x200C0604, // 0017 NE R3 R3 R4 + 0x780E000B, // 0018 JMPF R3 #0025 + 0x8C0C0108, // 0019 GETMET R3 R0 K8 + 0x7C0C0200, // 001A CALL R3 1 + 0x880C0703, // 001B GETMBR R3 R3 K3 + 0xB8120800, // 001C GETNGBL R4 K4 + 0x88100905, // 001D GETMBR R4 R4 K5 + 0x88100909, // 001E GETMBR R4 R4 K9 + 0x1C0C0604, // 001F EQ R3 R3 R4 + 0x780E0003, // 0020 JMPF R3 #0025 + 0x8C0C010A, // 0021 GETMET R3 R0 K10 + 0x7C0C0200, // 0022 CALL R3 1 + 0x5C040600, // 0023 MOVE R1 R3 + 0x7002000A, // 0024 JMP #0030 + 0x8C0C010B, // 0025 GETMET R3 R0 K11 + 0x7C0C0200, // 0026 CALL R3 1 + 0x8C10010C, // 0027 GETMET R4 R0 K12 + 0x5C180600, // 0028 MOVE R6 R3 + 0x581C000D, // 0029 LDCONST R7 K13 + 0x7C100600, // 002A CALL R4 3 + 0x60100018, // 002B GETGBL R4 G24 + 0x5814000E, // 002C LDCONST R5 K14 + 0x5C180600, // 002D MOVE R6 R3 + 0x7C100400, // 002E CALL R4 2 + 0x5C040800, // 002F MOVE R1 R4 + 0x580C000F, // 0030 LDCONST R3 K15 + 0x8C100102, // 0031 GETMET R4 R0 K2 + 0x7C100200, // 0032 CALL R4 1 + 0x4C140000, // 0033 LDNIL R5 + 0x20100805, // 0034 NE R4 R4 R5 + 0x78120011, // 0035 JMPF R4 #0048 + 0x8C100102, // 0036 GETMET R4 R0 K2 + 0x7C100200, // 0037 CALL R4 1 + 0x88100903, // 0038 GETMBR R4 R4 K3 + 0xB8160800, // 0039 GETNGBL R5 K4 + 0x88140B05, // 003A GETMBR R5 R5 K5 + 0x88140B07, // 003B GETMBR R5 R5 K7 + 0x1C100805, // 003C EQ R4 R4 R5 + 0x78120009, // 003D JMPF R4 #0048 + 0x8C100102, // 003E GETMET R4 R0 K2 + 0x7C100200, // 003F CALL R4 1 + 0x88100910, // 0040 GETMBR R4 R4 K16 + 0x1C100911, // 0041 EQ R4 R4 K17 + 0x78120004, // 0042 JMPF R4 #0048 + 0x8C100100, // 0043 GETMET R4 R0 K0 + 0x7C100200, // 0044 CALL R4 1 + 0x8C100112, // 0045 GETMET R4 R0 K18 + 0x7C100200, // 0046 CALL R4 1 + 0x5C0C0800, // 0047 MOVE R3 R4 + 0x8C100113, // 0048 GETMET R4 R0 K19 + 0x7C100200, // 0049 CALL R4 1 + 0x8C140114, // 004A GETMET R5 R0 K20 + 0x601C0018, // 004B GETGBL R7 G24 + 0x58200015, // 004C LDCONST R8 K21 + 0x8C240116, // 004D GETMET R9 R0 K22 + 0x7C240200, // 004E CALL R9 1 + 0x5C280200, // 004F MOVE R10 R1 + 0x5C2C0600, // 0050 MOVE R11 R3 + 0x5C300800, // 0051 MOVE R12 R4 + 0x7C1C0A00, // 0052 CALL R7 5 + 0x7C140400, // 0053 CALL R5 2 + 0x80000000, // 0054 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_for_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(CONTEXT_ANIMATION), + }), + be_str_weak(_process_named_arguments_for_animation), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x881C0101, // 0003 GETMBR R7 R0 K1 + 0x7C0C0800, // 0004 CALL R3 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: peek +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(tokens), + }), + be_str_weak(peek), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x00040301, // 0001 ADD R1 R1 K1 + 0x6008000C, // 0002 GETGBL R2 G12 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x14040202, // 0005 LT R1 R1 R2 + 0x78060004, // 0006 JMPF R1 #000C + 0x88040100, // 0007 GETMBR R1 R0 K0 + 0x00040301, // 0008 ADD R1 R1 K1 + 0x88080102, // 0009 GETMBR R2 R0 K2 + 0x94040401, // 000A GETIDX R1 R2 R1 + 0x70020000, // 000B JMP #000D + 0x4C040000, // 000C LDNIL R1 + 0x80040200, // 000D RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: at_end +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(tokens), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(EOF), + }), + be_str_weak(at_end), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x28040202, // 0004 GE R1 R1 R2 + 0x7406000D, // 0005 JMPT R1 #0014 + 0x8C040102, // 0006 GETMET R1 R0 K2 + 0x7C040200, // 0007 CALL R1 1 + 0x4C080000, // 0008 LDNIL R2 + 0x20040202, // 0009 NE R1 R1 R2 + 0x78060007, // 000A JMPF R1 #0013 + 0x8C040102, // 000B GETMET R1 R0 K2 + 0x7C040200, // 000C CALL R1 1 + 0x88040303, // 000D GETMBR R1 R1 K3 + 0xB80A0800, // 000E GETNGBL R2 K4 + 0x88080505, // 000F GETMBR R2 R2 K5 + 0x88080506, // 0010 GETMBR R2 R2 K6 + 0x1C040202, // 0011 EQ R1 R1 R2 + 0x74060000, // 0012 JMPT R1 #0014 + 0x50040001, // 0013 LDBOOL R1 0 1 + 0x50040200, // 0014 LDBOOL R1 1 0 + 0x80040200, // 0015 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_identifier_char +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(a), + /* K1 */ be_nested_str_weak(z), + /* K2 */ be_nested_str_weak(A), + /* K3 */ be_nested_str_weak(Z), + /* K4 */ be_nested_str_weak(0), + /* K5 */ be_nested_str_weak(9), + /* K6 */ be_nested_str_weak(_), + }), + be_str_weak(is_identifier_char), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x28080300, // 0000 GE R2 R1 K0 + 0x780A0001, // 0001 JMPF R2 #0004 + 0x18080301, // 0002 LE R2 R1 K1 + 0x740A000A, // 0003 JMPT R2 #000F + 0x28080302, // 0004 GE R2 R1 K2 + 0x780A0001, // 0005 JMPF R2 #0008 + 0x18080303, // 0006 LE R2 R1 K3 + 0x740A0006, // 0007 JMPT R2 #000F + 0x28080304, // 0008 GE R2 R1 K4 + 0x780A0001, // 0009 JMPF R2 #000C + 0x18080305, // 000A LE R2 R1 K5 + 0x740A0002, // 000B JMPT R2 #000F + 0x1C080306, // 000C EQ R2 R1 K6 + 0x740A0000, // 000D JMPT R2 #000F + 0x50080001, // 000E LDBOOL R2 0 1 + 0x50080200, // 000F LDBOOL R2 1 0 + 0x80040400, // 0010 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: collect_inline_comment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(COMMENT), + /* K5 */ be_nested_str_weak(_X20_X20), + /* K6 */ be_nested_str_weak(value), + /* K7 */ be_nested_str_weak(next), + /* K8 */ be_nested_str_weak(), + }), + be_str_weak(collect_inline_comment), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A000A, // 0004 JMPF R2 #0010 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0004, // 000A JMPF R2 #0010 + 0x88080306, // 000B GETMBR R2 R1 K6 + 0x000A0A02, // 000C ADD R2 K5 R2 + 0x8C0C0107, // 000D GETMET R3 R0 K7 + 0x7C0C0200, // 000E CALL R3 1 + 0x80040400, // 000F RET 1 R2 + 0x80061000, // 0010 RET 1 K8 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_template +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_template, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(template), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_left_brace), + /* K6 */ be_nested_str_weak(at_end), + /* K7 */ be_nested_str_weak(check_right_brace), + /* K8 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K9 */ be_nested_str_weak(current), + /* K10 */ be_nested_str_weak(type), + /* K11 */ be_nested_str_weak(animation_dsl), + /* K12 */ be_nested_str_weak(Token), + /* K13 */ be_nested_str_weak(KEYWORD), + /* K14 */ be_nested_str_weak(value), + /* K15 */ be_nested_str_weak(param), + /* K16 */ be_nested_str_weak(push), + /* K17 */ be_nested_str_weak(NEWLINE), + /* K18 */ be_const_int(0), + /* K19 */ be_nested_str_weak(EOF), + /* K20 */ be_nested_str_weak(LEFT_BRACE), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str_weak(RIGHT_BRACE), + /* K23 */ be_nested_str_weak(expect_right_brace), + /* K24 */ be_nested_str_weak(generate_template_function), + /* K25 */ be_nested_str_weak(symbol_table), + /* K26 */ be_nested_str_weak(create_template), + }), + be_str_weak(process_template), + &be_const_str_solidified, + ( &(const binstruction[161]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x60080012, // 000E GETGBL R2 G18 + 0x7C080000, // 000F CALL R2 0 + 0x600C0013, // 0010 GETGBL R3 G19 + 0x7C0C0000, // 0011 CALL R3 0 + 0x8C100106, // 0012 GETMET R4 R0 K6 + 0x7C100200, // 0013 CALL R4 1 + 0x7412004B, // 0014 JMPT R4 #0061 + 0x8C100107, // 0015 GETMET R4 R0 K7 + 0x7C100200, // 0016 CALL R4 1 + 0x74120048, // 0017 JMPT R4 #0061 + 0x8C100108, // 0018 GETMET R4 R0 K8 + 0x7C100200, // 0019 CALL R4 1 + 0x8C100107, // 001A GETMET R4 R0 K7 + 0x7C100200, // 001B CALL R4 1 + 0x78120000, // 001C JMPF R4 #001E + 0x70020042, // 001D JMP #0061 + 0x8C100109, // 001E GETMET R4 R0 K9 + 0x7C100200, // 001F CALL R4 1 + 0x4C140000, // 0020 LDNIL R5 + 0x20140805, // 0021 NE R5 R4 R5 + 0x7816003B, // 0022 JMPF R5 #005F + 0x8814090A, // 0023 GETMBR R5 R4 K10 + 0xB81A1600, // 0024 GETNGBL R6 K11 + 0x88180D0C, // 0025 GETMBR R6 R6 K12 + 0x88180D0D, // 0026 GETMBR R6 R6 K13 + 0x1C140A06, // 0027 EQ R5 R5 R6 + 0x78160035, // 0028 JMPF R5 #005F + 0x8814090E, // 0029 GETMBR R5 R4 K14 + 0x1C140B0F, // 002A EQ R5 R5 K15 + 0x78160032, // 002B JMPF R5 #005F + 0x8C140100, // 002C GETMET R5 R0 K0 + 0x7C140200, // 002D CALL R5 1 + 0x8C140101, // 002E GETMET R5 R0 K1 + 0x7C140200, // 002F CALL R5 1 + 0x4C180000, // 0030 LDNIL R6 + 0x8C1C0109, // 0031 GETMET R7 R0 K9 + 0x7C1C0200, // 0032 CALL R7 1 + 0x4C200000, // 0033 LDNIL R8 + 0x201C0E08, // 0034 NE R7 R7 R8 + 0x781E0011, // 0035 JMPF R7 #0048 + 0x8C1C0109, // 0036 GETMET R7 R0 K9 + 0x7C1C0200, // 0037 CALL R7 1 + 0x881C0F0A, // 0038 GETMBR R7 R7 K10 + 0xB8221600, // 0039 GETNGBL R8 K11 + 0x8820110C, // 003A GETMBR R8 R8 K12 + 0x8820110D, // 003B GETMBR R8 R8 K13 + 0x1C1C0E08, // 003C EQ R7 R7 R8 + 0x781E0009, // 003D JMPF R7 #0048 + 0x8C1C0109, // 003E GETMET R7 R0 K9 + 0x7C1C0200, // 003F CALL R7 1 + 0x881C0F0E, // 0040 GETMBR R7 R7 K14 + 0x1C1C0F0A, // 0041 EQ R7 R7 K10 + 0x781E0004, // 0042 JMPF R7 #0048 + 0x8C1C0100, // 0043 GETMET R7 R0 K0 + 0x7C1C0200, // 0044 CALL R7 1 + 0x8C1C0101, // 0045 GETMET R7 R0 K1 + 0x7C1C0200, // 0046 CALL R7 1 + 0x5C180E00, // 0047 MOVE R6 R7 + 0x8C1C0510, // 0048 GETMET R7 R2 K16 + 0x5C240A00, // 0049 MOVE R9 R5 + 0x7C1C0400, // 004A CALL R7 2 + 0x4C1C0000, // 004B LDNIL R7 + 0x201C0C07, // 004C NE R7 R6 R7 + 0x781E0000, // 004D JMPF R7 #004F + 0x980C0A06, // 004E SETIDX R3 R5 R6 + 0x8C1C0109, // 004F GETMET R7 R0 K9 + 0x7C1C0200, // 0050 CALL R7 1 + 0x4C200000, // 0051 LDNIL R8 + 0x201C0E08, // 0052 NE R7 R7 R8 + 0x781E0009, // 0053 JMPF R7 #005E + 0x8C1C0109, // 0054 GETMET R7 R0 K9 + 0x7C1C0200, // 0055 CALL R7 1 + 0x881C0F0A, // 0056 GETMBR R7 R7 K10 + 0xB8221600, // 0057 GETNGBL R8 K11 + 0x8820110C, // 0058 GETMBR R8 R8 K12 + 0x88201111, // 0059 GETMBR R8 R8 K17 + 0x1C1C0E08, // 005A EQ R7 R7 R8 + 0x781E0001, // 005B JMPF R7 #005E + 0x8C1C0100, // 005C GETMET R7 R0 K0 + 0x7C1C0200, // 005D CALL R7 1 + 0x70020000, // 005E JMP #0060 + 0x70020000, // 005F JMP #0061 + 0x7001FFB0, // 0060 JMP #0012 + 0x60100012, // 0061 GETGBL R4 G18 + 0x7C100000, // 0062 CALL R4 0 + 0x58140012, // 0063 LDCONST R5 K18 + 0x8C180106, // 0064 GETMET R6 R0 K6 + 0x7C180200, // 0065 CALL R6 1 + 0x741A002B, // 0066 JMPT R6 #0093 + 0x8C180109, // 0067 GETMET R6 R0 K9 + 0x7C180200, // 0068 CALL R6 1 + 0x4C1C0000, // 0069 LDNIL R7 + 0x1C1C0C07, // 006A EQ R7 R6 R7 + 0x741E0005, // 006B JMPT R7 #0072 + 0x881C0D0A, // 006C GETMBR R7 R6 K10 + 0xB8221600, // 006D GETNGBL R8 K11 + 0x8820110C, // 006E GETMBR R8 R8 K12 + 0x88201113, // 006F GETMBR R8 R8 K19 + 0x1C1C0E08, // 0070 EQ R7 R7 R8 + 0x781E0000, // 0071 JMPF R7 #0073 + 0x7002001F, // 0072 JMP #0093 + 0x881C0D0A, // 0073 GETMBR R7 R6 K10 + 0xB8221600, // 0074 GETNGBL R8 K11 + 0x8820110C, // 0075 GETMBR R8 R8 K12 + 0x88201114, // 0076 GETMBR R8 R8 K20 + 0x1C1C0E08, // 0077 EQ R7 R7 R8 + 0x781E0004, // 0078 JMPF R7 #007E + 0x00140B15, // 0079 ADD R5 R5 K21 + 0x8C1C0910, // 007A GETMET R7 R4 K16 + 0x5C240C00, // 007B MOVE R9 R6 + 0x7C1C0400, // 007C CALL R7 2 + 0x70020011, // 007D JMP #0090 + 0x881C0D0A, // 007E GETMBR R7 R6 K10 + 0xB8221600, // 007F GETNGBL R8 K11 + 0x8820110C, // 0080 GETMBR R8 R8 K12 + 0x88201116, // 0081 GETMBR R8 R8 K22 + 0x1C1C0E08, // 0082 EQ R7 R7 R8 + 0x781E0008, // 0083 JMPF R7 #008D + 0x1C1C0B12, // 0084 EQ R7 R5 K18 + 0x781E0001, // 0085 JMPF R7 #0088 + 0x7002000B, // 0086 JMP #0093 + 0x70020003, // 0087 JMP #008C + 0x04140B15, // 0088 SUB R5 R5 K21 + 0x8C1C0910, // 0089 GETMET R7 R4 K16 + 0x5C240C00, // 008A MOVE R9 R6 + 0x7C1C0400, // 008B CALL R7 2 + 0x70020002, // 008C JMP #0090 + 0x8C1C0910, // 008D GETMET R7 R4 K16 + 0x5C240C00, // 008E MOVE R9 R6 + 0x7C1C0400, // 008F CALL R7 2 + 0x8C1C0100, // 0090 GETMET R7 R0 K0 + 0x7C1C0200, // 0091 CALL R7 1 + 0x7001FFD0, // 0092 JMP #0064 + 0x8C180117, // 0093 GETMET R6 R0 K23 + 0x7C180200, // 0094 CALL R6 1 + 0x8C180118, // 0095 GETMET R6 R0 K24 + 0x5C200200, // 0096 MOVE R8 R1 + 0x5C240400, // 0097 MOVE R9 R2 + 0x5C280600, // 0098 MOVE R10 R3 + 0x5C2C0800, // 0099 MOVE R11 R4 + 0x7C180A00, // 009A CALL R6 5 + 0x88180119, // 009B GETMBR R6 R0 K25 + 0x8C180D1A, // 009C GETMET R6 R6 K26 + 0x5C200200, // 009D MOVE R8 R1 + 0x5C240600, // 009E MOVE R9 R3 + 0x7C180600, // 009F CALL R6 3 + 0x80000000, // 00A0 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_dot +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_dot, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(DOT), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X2E_X27), + }), + be_str_weak(expect_dot), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_simple_value_assignment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_simple_value_assignment, /* name */ + be_nested_proto( + 16, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(IDENTIFIER), + /* K5 */ be_nested_str_weak(peek), + /* K6 */ be_nested_str_weak(LEFT_PAREN), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(process_value), + /* K9 */ be_nested_str_weak(collect_inline_comment), + /* K10 */ be_nested_str_weak(add), + /* K11 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), + /* K12 */ be_nested_str_weak(expr), + /* K13 */ be_nested_str_weak(symbol_table), + /* K14 */ be_nested_str_weak(contains), + /* K15 */ be_nested_str_weak(get), + /* K16 */ be_nested_str_weak(instance), + }), + be_str_weak(_process_simple_value_assignment), + &be_const_str_solidified, + ( &(const binstruction[78]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x4C140000, // 0002 LDNIL R5 + 0x20140805, // 0003 NE R5 R4 R5 + 0x78160012, // 0004 JMPF R5 #0018 + 0x88140901, // 0005 GETMBR R5 R4 K1 + 0xB81A0400, // 0006 GETNGBL R6 K2 + 0x88180D03, // 0007 GETMBR R6 R6 K3 + 0x88180D04, // 0008 GETMBR R6 R6 K4 + 0x1C140A06, // 0009 EQ R5 R5 R6 + 0x7816000C, // 000A JMPF R5 #0018 + 0x8C140105, // 000B GETMET R5 R0 K5 + 0x7C140200, // 000C CALL R5 1 + 0x4C180000, // 000D LDNIL R6 + 0x1C140A06, // 000E EQ R5 R5 R6 + 0x74160008, // 000F JMPT R5 #0019 + 0x8C140105, // 0010 GETMET R5 R0 K5 + 0x7C140200, // 0011 CALL R5 1 + 0x88140B01, // 0012 GETMBR R5 R5 K1 + 0xB81A0400, // 0013 GETNGBL R6 K2 + 0x88180D03, // 0014 GETMBR R6 R6 K3 + 0x88180D06, // 0015 GETMBR R6 R6 K6 + 0x20140A06, // 0016 NE R5 R5 R6 + 0x74160000, // 0017 JMPT R5 #0019 + 0x50140001, // 0018 LDBOOL R5 0 1 + 0x50140200, // 0019 LDBOOL R5 1 0 + 0x78160001, // 001A JMPF R5 #001D + 0x88180907, // 001B GETMBR R6 R4 K7 + 0x70020000, // 001C JMP #001E + 0x4C180000, // 001D LDNIL R6 + 0x8C1C0108, // 001E GETMET R7 R0 K8 + 0x5C240400, // 001F MOVE R9 R2 + 0x7C1C0400, // 0020 CALL R7 2 + 0x8C200109, // 0021 GETMET R8 R0 K9 + 0x7C200200, // 0022 CALL R8 1 + 0x8C24010A, // 0023 GETMET R9 R0 K10 + 0x602C0018, // 0024 GETGBL R11 G24 + 0x5830000B, // 0025 LDCONST R12 K11 + 0x5C340200, // 0026 MOVE R13 R1 + 0x88380F0C, // 0027 GETMBR R14 R7 K12 + 0x5C3C1000, // 0028 MOVE R15 R8 + 0x7C2C0800, // 0029 CALL R11 4 + 0x7C240400, // 002A CALL R9 2 + 0x7816001C, // 002B JMPF R5 #0049 + 0x4C240000, // 002C LDNIL R9 + 0x20240C09, // 002D NE R9 R6 R9 + 0x78260019, // 002E JMPF R9 #0049 + 0x8824010D, // 002F GETMBR R9 R0 K13 + 0x8C24130E, // 0030 GETMET R9 R9 K14 + 0x5C2C0C00, // 0031 MOVE R11 R6 + 0x7C240400, // 0032 CALL R9 2 + 0x78260014, // 0033 JMPF R9 #0049 + 0x8824010D, // 0034 GETMBR R9 R0 K13 + 0x8C24130F, // 0035 GETMET R9 R9 K15 + 0x5C2C0C00, // 0036 MOVE R11 R6 + 0x7C240400, // 0037 CALL R9 2 + 0x4C280000, // 0038 LDNIL R10 + 0x2028120A, // 0039 NE R10 R9 R10 + 0x782A0008, // 003A JMPF R10 #0044 + 0x88281310, // 003B GETMBR R10 R9 K16 + 0x4C2C0000, // 003C LDNIL R11 + 0x2028140B, // 003D NE R10 R10 R11 + 0x782A0004, // 003E JMPF R10 #0044 + 0x5C280600, // 003F MOVE R10 R3 + 0x5C2C0200, // 0040 MOVE R11 R1 + 0x88301310, // 0041 GETMBR R12 R9 K16 + 0x7C280400, // 0042 CALL R10 2 + 0x70020003, // 0043 JMP #0048 + 0x5C280600, // 0044 MOVE R10 R3 + 0x5C2C0200, // 0045 MOVE R11 R1 + 0x4C300000, // 0046 LDNIL R12 + 0x7C280400, // 0047 CALL R10 2 + 0x70020003, // 0048 JMP #004D + 0x5C240600, // 0049 MOVE R9 R3 + 0x5C280200, // 004A MOVE R10 R1 + 0x4C2C0000, // 004B LDNIL R11 + 0x7C240400, // 004C CALL R9 2 + 0x80000000, // 004D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_left_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_BRACKET), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X5B_X27), + }), + be_str_weak(expect_left_bracket), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_computation_closure_from_string +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(transform_expression_for_closure), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(_X20_X20), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(replace), + /* K6 */ be_nested_str_weak(_X20), + /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), + /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), + }), + be_str_weak(create_computation_closure_from_string), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0101, // 0001 GETMET R3 R0 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x8C100502, // 0004 GETMET R4 R2 K2 + 0x5C180600, // 0005 MOVE R6 R3 + 0x581C0003, // 0006 LDCONST R7 K3 + 0x7C100600, // 0007 CALL R4 3 + 0x28100904, // 0008 GE R4 R4 K4 + 0x78120006, // 0009 JMPF R4 #0011 + 0x8C100505, // 000A GETMET R4 R2 K5 + 0x5C180600, // 000B MOVE R6 R3 + 0x581C0003, // 000C LDCONST R7 K3 + 0x58200006, // 000D LDCONST R8 K6 + 0x7C100800, // 000E CALL R4 4 + 0x5C0C0800, // 000F MOVE R3 R4 + 0x7001FFF2, // 0010 JMP #0004 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140007, // 0012 LDCONST R5 K7 + 0x5C180600, // 0013 MOVE R6 R3 + 0x7C100400, // 0014 CALL R4 2 + 0x60140018, // 0015 GETGBL R5 G24 + 0x58180008, // 0016 LDCONST R6 K8 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x7C140400, // 0018 CALL R5 2 + 0x80040A00, // 0019 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_simple_function_from_string +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_create_simple_function_from_string, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), + }), + be_str_weak(create_simple_function_from_string), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x60080018, // 0000 GETGBL R2 G24 + 0x580C0000, // 0001 LDCONST R3 K0 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: has_errors +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_has_errors, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(errors), + /* K1 */ be_const_int(0), + }), + be_str_weak(has_errors), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x24040301, // 0003 GT R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _is_named_arg_constructor +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__is_named_arg_constructor, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(takes_named_args), + }), + be_str_weak(_is_named_arg_constructor), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0002, // 0006 JMPF R3 #000A + 0x8C0C0502, // 0007 GETMET R3 R2 K2 + 0x7C0C0200, // 0008 CALL R3 1 + 0x80040600, // 0009 RET 1 R3 + 0x500C0200, // 000A LDBOOL R3 1 0 + 0x80040600, // 000B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_unary_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Expected_X20value), + /* K3 */ be_nested_str_weak(ExpressionResult), + /* K4 */ be_nested_str_weak(literal), + /* K5 */ be_nested_str_weak(nil), + /* K6 */ be_nested_str_weak(type), + /* K7 */ be_nested_str_weak(animation_dsl), + /* K8 */ be_nested_str_weak(Token), + /* K9 */ be_nested_str_weak(MINUS), + /* K10 */ be_nested_str_weak(next), + /* K11 */ be_nested_str_weak(process_unary_expression), + /* K12 */ be_nested_str_weak(_X28_X2D_X25s_X29), + /* K13 */ be_nested_str_weak(expr), + /* K14 */ be_nested_str_weak(has_functions), + /* K15 */ be_nested_str_weak(has_variables), + /* K16 */ be_nested_str_weak(has_properties), + /* K17 */ be_nested_str_weak(PLUS), + /* K18 */ be_nested_str_weak(process_primary_expression), + }), + be_str_weak(process_unary_expression), + &be_const_str_solidified, + ( &(const binstruction[57]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x4C140000, // 0002 LDNIL R5 + 0x1C140805, // 0003 EQ R5 R4 R5 + 0x78160007, // 0004 JMPF R5 #000D + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x581C0002, // 0006 LDCONST R7 K2 + 0x7C140400, // 0007 CALL R5 2 + 0x88140103, // 0008 GETMBR R5 R0 K3 + 0x8C140B04, // 0009 GETMET R5 R5 K4 + 0x581C0005, // 000A LDCONST R7 K5 + 0x7C140400, // 000B CALL R5 2 + 0x80040A00, // 000C RET 1 R5 + 0x88140906, // 000D GETMBR R5 R4 K6 + 0xB81A0E00, // 000E GETNGBL R6 K7 + 0x88180D08, // 000F GETMBR R6 R6 K8 + 0x88180D09, // 0010 GETMBR R6 R6 K9 + 0x1C140A06, // 0011 EQ R5 R5 R6 + 0x78160011, // 0012 JMPF R5 #0025 + 0x8C14010A, // 0013 GETMET R5 R0 K10 + 0x7C140200, // 0014 CALL R5 1 + 0x8C14010B, // 0015 GETMET R5 R0 K11 + 0x5C1C0200, // 0016 MOVE R7 R1 + 0x50200000, // 0017 LDBOOL R8 0 0 + 0x5C240600, // 0018 MOVE R9 R3 + 0x7C140800, // 0019 CALL R5 4 + 0x8C180103, // 001A GETMET R6 R0 K3 + 0x60200018, // 001B GETGBL R8 G24 + 0x5824000C, // 001C LDCONST R9 K12 + 0x88280B0D, // 001D GETMBR R10 R5 K13 + 0x7C200400, // 001E CALL R8 2 + 0x88240B0E, // 001F GETMBR R9 R5 K14 + 0x88280B0F, // 0020 GETMBR R10 R5 K15 + 0x882C0B10, // 0021 GETMBR R11 R5 K16 + 0x50300200, // 0022 LDBOOL R12 1 0 + 0x7C180C00, // 0023 CALL R6 6 + 0x80040C00, // 0024 RET 1 R6 + 0x88140906, // 0025 GETMBR R5 R4 K6 + 0xB81A0E00, // 0026 GETNGBL R6 K7 + 0x88180D08, // 0027 GETMBR R6 R6 K8 + 0x88180D11, // 0028 GETMBR R6 R6 K17 + 0x1C140A06, // 0029 EQ R5 R5 R6 + 0x78160007, // 002A JMPF R5 #0033 + 0x8C14010A, // 002B GETMET R5 R0 K10 + 0x7C140200, // 002C CALL R5 1 + 0x8C14010B, // 002D GETMET R5 R0 K11 + 0x5C1C0200, // 002E MOVE R7 R1 + 0x50200000, // 002F LDBOOL R8 0 0 + 0x5C240600, // 0030 MOVE R9 R3 + 0x7C140800, // 0031 CALL R5 4 + 0x80040A00, // 0032 RET 1 R5 + 0x8C140112, // 0033 GETMET R5 R0 K18 + 0x5C1C0200, // 0034 MOVE R7 R1 + 0x5C200400, // 0035 MOVE R8 R2 + 0x5C240600, // 0036 MOVE R9 R3 + 0x7C140800, // 0037 CALL R5 4 + 0x80040A00, // 0038 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_log_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_log_statement_fluent, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_left_paren), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(STRING), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), + /* K9 */ be_nested_str_weak(skip_statement), + /* K10 */ be_nested_str_weak(value), + /* K11 */ be_nested_str_weak(expect_right_paren), + /* K12 */ be_nested_str_weak(collect_inline_comment), + /* K13 */ be_nested_str_weak(process_log_call), + /* K14 */ be_nested_str_weak(fluent), + /* K15 */ be_nested_str_weak(add), + }), + be_str_weak(process_log_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C040102, // 0004 GETMET R1 R0 K2 + 0x7C040200, // 0005 CALL R1 1 + 0x4C080000, // 0006 LDNIL R2 + 0x1C080202, // 0007 EQ R2 R1 R2 + 0x740A0005, // 0008 JMPT R2 #000F + 0x88080303, // 0009 GETMBR R2 R1 K3 + 0xB80E0800, // 000A GETNGBL R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x880C0706, // 000C GETMBR R3 R3 K6 + 0x20080403, // 000D NE R2 R2 R3 + 0x780A0005, // 000E JMPF R2 #0015 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x58100008, // 0010 LDCONST R4 K8 + 0x7C080400, // 0011 CALL R2 2 + 0x8C080109, // 0012 GETMET R2 R0 K9 + 0x7C080200, // 0013 CALL R2 1 + 0x80000400, // 0014 RET 0 + 0x8808030A, // 0015 GETMBR R2 R1 K10 + 0x8C0C0100, // 0016 GETMET R3 R0 K0 + 0x7C0C0200, // 0017 CALL R3 1 + 0x8C0C010B, // 0018 GETMET R3 R0 K11 + 0x7C0C0200, // 0019 CALL R3 1 + 0x8C0C010C, // 001A GETMET R3 R0 K12 + 0x7C0C0200, // 001B CALL R3 1 + 0x8C10010D, // 001C GETMET R4 R0 K13 + 0x5C180400, // 001D MOVE R6 R2 + 0x581C000E, // 001E LDCONST R7 K14 + 0x5C200600, // 001F MOVE R8 R3 + 0x7C100800, // 0020 CALL R4 4 + 0x8C14010F, // 0021 GETMET R5 R0 K15 + 0x5C1C0800, // 0022 MOVE R7 R4 + 0x7C140400, // 0023 CALL R5 2 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_time_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(TIME), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(convert_time_to_ms), + /* K8 */ be_nested_str_weak(NUMBER), + /* K9 */ be_nested_str_weak(IDENTIFIER), + /* K10 */ be_nested_str_weak(_validate_object_reference), + /* K11 */ be_nested_str_weak(duration), + /* K12 */ be_nested_str_weak(process_primary_expression), + /* K13 */ be_nested_str_weak(CONTEXT_TIME), + /* K14 */ be_nested_str_weak(expr), + /* K15 */ be_nested_str_weak(error), + /* K16 */ be_nested_str_weak(Expected_X20time_X20value), + /* K17 */ be_nested_str_weak(1000), + }), + be_str_weak(process_time_value), + &be_const_str_solidified, + ( &(const binstruction[71]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A000F, // 0004 JMPF R2 #0015 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0009, // 000A JMPF R2 #0015 + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x7C0C0200, // 000D CALL R3 1 + 0x600C0008, // 000E GETGBL R3 G8 + 0x8C100107, // 000F GETMET R4 R0 K7 + 0x5C180400, // 0010 MOVE R6 R2 + 0x7C100400, // 0011 CALL R4 2 + 0x7C0C0200, // 0012 CALL R3 1 + 0x80040600, // 0013 RET 1 R3 + 0x70020030, // 0014 JMP #0046 + 0x4C080000, // 0015 LDNIL R2 + 0x20080202, // 0016 NE R2 R1 R2 + 0x780A0013, // 0017 JMPF R2 #002C + 0x88080301, // 0018 GETMBR R2 R1 K1 + 0xB80E0400, // 0019 GETNGBL R3 K2 + 0x880C0703, // 001A GETMBR R3 R3 K3 + 0x880C0708, // 001B GETMBR R3 R3 K8 + 0x1C080403, // 001C EQ R2 R2 R3 + 0x780A000D, // 001D JMPF R2 #002C + 0x88080305, // 001E GETMBR R2 R1 K5 + 0x8C0C0106, // 001F GETMET R3 R0 K6 + 0x7C0C0200, // 0020 CALL R3 1 + 0x600C0008, // 0021 GETGBL R3 G8 + 0x60100009, // 0022 GETGBL R4 G9 + 0x6014000A, // 0023 GETGBL R5 G10 + 0x5C180400, // 0024 MOVE R6 R2 + 0x7C140200, // 0025 CALL R5 1 + 0x7C100200, // 0026 CALL R4 1 + 0x541603E7, // 0027 LDINT R5 1000 + 0x08100805, // 0028 MUL R4 R4 R5 + 0x7C0C0200, // 0029 CALL R3 1 + 0x80040600, // 002A RET 1 R3 + 0x70020019, // 002B JMP #0046 + 0x4C080000, // 002C LDNIL R2 + 0x20080202, // 002D NE R2 R1 R2 + 0x780A0012, // 002E JMPF R2 #0042 + 0x88080301, // 002F GETMBR R2 R1 K1 + 0xB80E0400, // 0030 GETNGBL R3 K2 + 0x880C0703, // 0031 GETMBR R3 R3 K3 + 0x880C0709, // 0032 GETMBR R3 R3 K9 + 0x1C080403, // 0033 EQ R2 R2 R3 + 0x780A000C, // 0034 JMPF R2 #0042 + 0x88080305, // 0035 GETMBR R2 R1 K5 + 0x8C0C010A, // 0036 GETMET R3 R0 K10 + 0x5C140400, // 0037 MOVE R5 R2 + 0x5818000B, // 0038 LDCONST R6 K11 + 0x7C0C0600, // 0039 CALL R3 3 + 0x8C0C010C, // 003A GETMET R3 R0 K12 + 0x8814010D, // 003B GETMBR R5 R0 K13 + 0x50180200, // 003C LDBOOL R6 1 0 + 0x501C0000, // 003D LDBOOL R7 0 0 + 0x7C0C0800, // 003E CALL R3 4 + 0x8810070E, // 003F GETMBR R4 R3 K14 + 0x80040800, // 0040 RET 1 R4 + 0x70020003, // 0041 JMP #0046 + 0x8C08010F, // 0042 GETMET R2 R0 K15 + 0x58100010, // 0043 LDCONST R4 K16 + 0x7C080400, // 0044 CALL R2 2 + 0x80062200, // 0045 RET 1 K17 + 0x80000000, // 0046 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_restart_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(value), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(expect_identifier), + /* K4 */ be_nested_str_weak(_validate_value_provider_reference), + /* K5 */ be_nested_str_weak(skip_statement), + /* K6 */ be_nested_str_weak(collect_inline_comment), + /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2Estart_X28engine_X2Etime_ms_X29_X20end), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), + /* K10 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_restart_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x88040301, // 0002 GETMBR R1 R1 K1 + 0x8C080102, // 0003 GETMET R2 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x8C080103, // 0005 GETMET R2 R0 K3 + 0x7C080200, // 0006 CALL R2 1 + 0x8C0C0104, // 0007 GETMET R3 R0 K4 + 0x5C140400, // 0008 MOVE R5 R2 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C0C0600, // 000A CALL R3 3 + 0x740E0002, // 000B JMPT R3 #000F + 0x8C0C0105, // 000C GETMET R3 R0 K5 + 0x7C0C0200, // 000D CALL R3 1 + 0x80000600, // 000E RET 0 + 0x8C0C0106, // 000F GETMET R3 R0 K6 + 0x7C0C0200, // 0010 CALL R3 1 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140007, // 0012 LDCONST R5 K7 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x8C140108, // 0015 GETMET R5 R0 K8 + 0x601C0018, // 0016 GETGBL R7 G24 + 0x58200009, // 0017 LDCONST R8 K9 + 0x8C24010A, // 0018 GETMET R9 R0 K10 + 0x7C240200, // 0019 CALL R9 1 + 0x5C280800, // 001A MOVE R10 R4 + 0x5C2C0600, // 001B MOVE R11 R3 + 0x7C1C0800, // 001C CALL R7 4 + 0x7C140400, // 001D CALL R5 2 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_assign +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(ASSIGN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X3D_X27), + }), + be_str_weak(expect_assign), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_default_strip_initialization +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(strip_initialized), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_nested_str_weak(_X23_X20Auto_X2Dgenerated_X20strip_X20initialization_X20_X28using_X20Tasmota_X20configuration_X29), + /* K3 */ be_nested_str_weak(var_X20engine_X20_X3D_X20animation_X2Einit_strip_X28_X29), + /* K4 */ be_nested_str_weak(), + }), + be_str_weak(generate_default_strip_initialization), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x7C040400, // 0005 CALL R1 2 + 0x8C040101, // 0006 GETMET R1 R0 K1 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x7C040400, // 0008 CALL R1 2 + 0x8C040101, // 0009 GETMET R1 R0 K1 + 0x580C0004, // 000A LDCONST R3 K4 + 0x7C040400, // 000B CALL R1 2 + 0x50040200, // 000C LDBOOL R1 1 0 + 0x90020001, // 000D SETMBR R0 K0 R1 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_primary_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name */ + be_nested_proto( + 16, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[82]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Expected_X20value), + /* K3 */ be_nested_str_weak(ExpressionResult), + /* K4 */ be_nested_str_weak(literal), + /* K5 */ be_nested_str_weak(nil), + /* K6 */ be_nested_str_weak(type), + /* K7 */ be_nested_str_weak(animation_dsl), + /* K8 */ be_nested_str_weak(Token), + /* K9 */ be_nested_str_weak(LEFT_PAREN), + /* K10 */ be_nested_str_weak(next), + /* K11 */ be_nested_str_weak(process_additive_expression), + /* K12 */ be_nested_str_weak(expect_right_paren), + /* K13 */ be_nested_str_weak(_X28_X25s_X29), + /* K14 */ be_nested_str_weak(expr), + /* K15 */ be_nested_str_weak(has_functions), + /* K16 */ be_nested_str_weak(has_variables), + /* K17 */ be_nested_str_weak(has_properties), + /* K18 */ be_nested_str_weak(COLOR), + /* K19 */ be_nested_str_weak(convert_color), + /* K20 */ be_nested_str_weak(value), + /* K21 */ be_nested_str_weak(color), + /* K22 */ be_nested_str_weak(TIME), + /* K23 */ be_nested_str_weak(process_time_value), + /* K24 */ be_nested_str_weak(PERCENTAGE), + /* K25 */ be_nested_str_weak(process_percentage_value), + /* K26 */ be_nested_str_weak(NUMBER), + /* K27 */ be_nested_str_weak(KEYWORD), + /* K28 */ be_nested_str_weak(true), + /* K29 */ be_nested_str_weak(false), + /* K30 */ be_nested_str_weak(STRING), + /* K31 */ be_nested_str_weak(_X22_X25s_X22), + /* K32 */ be_nested_str_weak(LEFT_BRACKET), + /* K33 */ be_nested_str_weak(process_array_literal), + /* K34 */ be_nested_str_weak(IDENTIFIER), + /* K35 */ be_nested_str_weak(peek), + /* K36 */ be_nested_str_weak(symbol_table), + /* K37 */ be_nested_str_weak(get), + /* K38 */ be_nested_str_weak(Unknown_X20function_X20or_X20identifier_X20_X27_X25s_X27_X2E_X20Make_X20sure_X20it_X27s_X20defined_X20before_X20use_X2E), + /* K39 */ be_nested_str_weak(skip_statement), + /* K40 */ be_nested_str_weak(is_user_function), + /* K41 */ be_nested_str_weak(_process_user_function_call), + /* K42 */ be_nested_str_weak(function_call), + /* K43 */ be_nested_str_weak(is_dangerous_call), + /* K44 */ be_nested_str_weak(Function_X20_X27_X25s_X27_X20cannot_X20be_X20used_X20in_X20computed_X20expressions_X2E_X20This_X20creates_X20a_X20new_X20instance_X20at_X20each_X20evaluation_X2E_X20Use_X20either_X3A_X0A_X20_X20set_X20var_name_X20_X3D_X20_X25s_X28_X29_X20_X20_X23_X20Single_X20function_X20call_X0A_X20_X20set_X20computed_X20_X3D_X20_X28existing_var_X20_X2B_X201_X29_X20_X2F_X202_X20_X20_X23_X20Computation_X20with_X20existing_X20values), + /* K45 */ be_nested_str_weak(_symbol_entry), + /* K46 */ be_nested_str_weak(TYPE_MATH_FUNCTION), + /* K47 */ be_nested_str_weak(process_function_arguments), + /* K48 */ be_nested_str_weak(_X25s_X28_X25s_X29), + /* K49 */ be_nested_str_weak(get_reference), + /* K50 */ be_nested_str_weak(TYPE_TEMPLATE), + /* K51 */ be_nested_str_weak(), + /* K52 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K53 */ be_nested_str_weak(engine), + /* K54 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K55 */ be_nested_str_weak(Function_X20_X27_X25s_X27_X20not_X20supported_X20in_X20expression_X20context), + /* K56 */ be_nested_str_weak(takes_named_args), + /* K57 */ be_nested_str_weak(process_function_call), + /* K58 */ be_nested_str_weak(_determine_function_return_type), + /* K59 */ be_nested_str_weak(instance), + /* K60 */ be_nested_str_weak(CONTEXT_ARGUMENT), + /* K61 */ be_nested_str_weak(CONTEXT_PROPERTY), + /* K62 */ be_nested_str_weak(CONTEXT_VARIABLE), + /* K63 */ be_nested_str_weak(process_nested_function_call), + /* K64 */ be_nested_str_weak(constructor_call), + /* K65 */ be_nested_str_weak(Unknown_X20identifier_X20_X27_X25s_X27_X2E_X20Make_X20sure_X20it_X27s_X20defined_X20before_X20use_X2E), + /* K66 */ be_nested_str_weak(DOT), + /* K67 */ be_nested_str_weak(expect_identifier), + /* K68 */ be_nested_str_weak(_X25s_X2E_X25s), + /* K69 */ be_nested_str_weak(contains), + /* K70 */ be_nested_str_weak(_validate_single_parameter), + /* K71 */ be_nested_str_weak(TYPE_SEQUENCE), + /* K72 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20references_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), + /* K73 */ be_nested_str_weak(CONTEXT_REPEAT_COUNT), + /* K74 */ be_nested_str_weak(property_access), + /* K75 */ be_nested_str_weak(variable), + /* K76 */ be_nested_str_weak(animation_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), + /* K77 */ be_nested_str_weak(symbol_exists), + /* K78 */ be_nested_str_weak(_determine_symbol_return_type), + /* K79 */ be_nested_str_weak(variable_ref), + /* K80 */ be_nested_str_weak(animation_X2E_X25s), + /* K81 */ be_nested_str_weak(Unexpected_X20value_X3A_X20_X25s), + }), + be_str_weak(process_primary_expression), + &be_const_str_solidified, + ( &(const binstruction[527]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x4C140000, // 0002 LDNIL R5 + 0x1C140805, // 0003 EQ R5 R4 R5 + 0x78160007, // 0004 JMPF R5 #000D + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x581C0002, // 0006 LDCONST R7 K2 + 0x7C140400, // 0007 CALL R5 2 + 0x88140103, // 0008 GETMBR R5 R0 K3 + 0x8C140B04, // 0009 GETMET R5 R5 K4 + 0x581C0005, // 000A LDCONST R7 K5 + 0x7C140400, // 000B CALL R5 2 + 0x80040A00, // 000C RET 1 R5 + 0x88140906, // 000D GETMBR R5 R4 K6 + 0xB81A0E00, // 000E GETNGBL R6 K7 + 0x88180D08, // 000F GETMBR R6 R6 K8 + 0x88180D09, // 0010 GETMBR R6 R6 K9 + 0x1C140A06, // 0011 EQ R5 R5 R6 + 0x78160013, // 0012 JMPF R5 #0027 + 0x8C14010A, // 0013 GETMET R5 R0 K10 + 0x7C140200, // 0014 CALL R5 1 + 0x8C14010B, // 0015 GETMET R5 R0 K11 + 0x5C1C0200, // 0016 MOVE R7 R1 + 0x50200000, // 0017 LDBOOL R8 0 0 + 0x5C240600, // 0018 MOVE R9 R3 + 0x7C140800, // 0019 CALL R5 4 + 0x8C18010C, // 001A GETMET R6 R0 K12 + 0x7C180200, // 001B CALL R6 1 + 0x8C180103, // 001C GETMET R6 R0 K3 + 0x60200018, // 001D GETGBL R8 G24 + 0x5824000D, // 001E LDCONST R9 K13 + 0x88280B0E, // 001F GETMBR R10 R5 K14 + 0x7C200400, // 0020 CALL R8 2 + 0x88240B0F, // 0021 GETMBR R9 R5 K15 + 0x88280B10, // 0022 GETMBR R10 R5 K16 + 0x882C0B11, // 0023 GETMBR R11 R5 K17 + 0x50300200, // 0024 LDBOOL R12 1 0 + 0x7C180C00, // 0025 CALL R6 6 + 0x80040C00, // 0026 RET 1 R6 + 0x88140906, // 0027 GETMBR R5 R4 K6 + 0xB81A0E00, // 0028 GETNGBL R6 K7 + 0x88180D08, // 0029 GETMBR R6 R6 K8 + 0x88180D12, // 002A GETMBR R6 R6 K18 + 0x1C140A06, // 002B EQ R5 R5 R6 + 0x78160009, // 002C JMPF R5 #0037 + 0x8C14010A, // 002D GETMET R5 R0 K10 + 0x7C140200, // 002E CALL R5 1 + 0x88140103, // 002F GETMBR R5 R0 K3 + 0x8C140B04, // 0030 GETMET R5 R5 K4 + 0x8C1C0113, // 0031 GETMET R7 R0 K19 + 0x88240914, // 0032 GETMBR R9 R4 K20 + 0x7C1C0400, // 0033 CALL R7 2 + 0x58200015, // 0034 LDCONST R8 K21 + 0x7C140600, // 0035 CALL R5 3 + 0x80040A00, // 0036 RET 1 R5 + 0x88140906, // 0037 GETMBR R5 R4 K6 + 0xB81A0E00, // 0038 GETNGBL R6 K7 + 0x88180D08, // 0039 GETMBR R6 R6 K8 + 0x88180D16, // 003A GETMBR R6 R6 K22 + 0x1C140A06, // 003B EQ R5 R5 R6 + 0x78160005, // 003C JMPF R5 #0043 + 0x88140103, // 003D GETMBR R5 R0 K3 + 0x8C140B04, // 003E GETMET R5 R5 K4 + 0x8C1C0117, // 003F GETMET R7 R0 K23 + 0x7C1C0200, // 0040 CALL R7 1 + 0x7C140400, // 0041 CALL R5 2 + 0x80040A00, // 0042 RET 1 R5 + 0x88140906, // 0043 GETMBR R5 R4 K6 + 0xB81A0E00, // 0044 GETNGBL R6 K7 + 0x88180D08, // 0045 GETMBR R6 R6 K8 + 0x88180D18, // 0046 GETMBR R6 R6 K24 + 0x1C140A06, // 0047 EQ R5 R5 R6 + 0x78160007, // 0048 JMPF R5 #0051 + 0x88140103, // 0049 GETMBR R5 R0 K3 + 0x8C140B04, // 004A GETMET R5 R5 K4 + 0x601C0008, // 004B GETGBL R7 G8 + 0x8C200119, // 004C GETMET R8 R0 K25 + 0x7C200200, // 004D CALL R8 1 + 0x7C1C0200, // 004E CALL R7 1 + 0x7C140400, // 004F CALL R5 2 + 0x80040A00, // 0050 RET 1 R5 + 0x88140906, // 0051 GETMBR R5 R4 K6 + 0xB81A0E00, // 0052 GETNGBL R6 K7 + 0x88180D08, // 0053 GETMBR R6 R6 K8 + 0x88180D1A, // 0054 GETMBR R6 R6 K26 + 0x1C140A06, // 0055 EQ R5 R5 R6 + 0x78160007, // 0056 JMPF R5 #005F + 0x88140914, // 0057 GETMBR R5 R4 K20 + 0x8C18010A, // 0058 GETMET R6 R0 K10 + 0x7C180200, // 0059 CALL R6 1 + 0x88180103, // 005A GETMBR R6 R0 K3 + 0x8C180D04, // 005B GETMET R6 R6 K4 + 0x5C200A00, // 005C MOVE R8 R5 + 0x7C180400, // 005D CALL R6 2 + 0x80040C00, // 005E RET 1 R6 + 0x88140906, // 005F GETMBR R5 R4 K6 + 0xB81A0E00, // 0060 GETNGBL R6 K7 + 0x88180D08, // 0061 GETMBR R6 R6 K8 + 0x88180D1B, // 0062 GETMBR R6 R6 K27 + 0x1C140A06, // 0063 EQ R5 R5 R6 + 0x7816000D, // 0064 JMPF R5 #0073 + 0x88140914, // 0065 GETMBR R5 R4 K20 + 0x1C140B1C, // 0066 EQ R5 R5 K28 + 0x74160002, // 0067 JMPT R5 #006B + 0x88140914, // 0068 GETMBR R5 R4 K20 + 0x1C140B1D, // 0069 EQ R5 R5 K29 + 0x78160007, // 006A JMPF R5 #0073 + 0x88140914, // 006B GETMBR R5 R4 K20 + 0x8C18010A, // 006C GETMET R6 R0 K10 + 0x7C180200, // 006D CALL R6 1 + 0x88180103, // 006E GETMBR R6 R0 K3 + 0x8C180D04, // 006F GETMET R6 R6 K4 + 0x5C200A00, // 0070 MOVE R8 R5 + 0x7C180400, // 0071 CALL R6 2 + 0x80040C00, // 0072 RET 1 R6 + 0x88140906, // 0073 GETMBR R5 R4 K6 + 0xB81A0E00, // 0074 GETNGBL R6 K7 + 0x88180D08, // 0075 GETMBR R6 R6 K8 + 0x88180D1E, // 0076 GETMBR R6 R6 K30 + 0x1C140A06, // 0077 EQ R5 R5 R6 + 0x7816000A, // 0078 JMPF R5 #0084 + 0x88140914, // 0079 GETMBR R5 R4 K20 + 0x8C18010A, // 007A GETMET R6 R0 K10 + 0x7C180200, // 007B CALL R6 1 + 0x88180103, // 007C GETMBR R6 R0 K3 + 0x8C180D04, // 007D GETMET R6 R6 K4 + 0x60200018, // 007E GETGBL R8 G24 + 0x5824001F, // 007F LDCONST R9 K31 + 0x5C280A00, // 0080 MOVE R10 R5 + 0x7C200400, // 0081 CALL R8 2 + 0x7C180400, // 0082 CALL R6 2 + 0x80040C00, // 0083 RET 1 R6 + 0x88140906, // 0084 GETMBR R5 R4 K6 + 0xB81A0E00, // 0085 GETNGBL R6 K7 + 0x88180D08, // 0086 GETMBR R6 R6 K8 + 0x88180D20, // 0087 GETMBR R6 R6 K32 + 0x1C140A06, // 0088 EQ R5 R5 R6 + 0x78160008, // 0089 JMPF R5 #0093 + 0x5C140600, // 008A MOVE R5 R3 + 0x74160006, // 008B JMPT R5 #0093 + 0x8C140121, // 008C GETMET R5 R0 K33 + 0x7C140200, // 008D CALL R5 1 + 0x88180103, // 008E GETMBR R6 R0 K3 + 0x8C180D04, // 008F GETMET R6 R6 K4 + 0x5C200A00, // 0090 MOVE R8 R5 + 0x7C180400, // 0091 CALL R6 2 + 0x80040C00, // 0092 RET 1 R6 + 0x88140906, // 0093 GETMBR R5 R4 K6 + 0xB81A0E00, // 0094 GETNGBL R6 K7 + 0x88180D08, // 0095 GETMBR R6 R6 K8 + 0x88180D1B, // 0096 GETMBR R6 R6 K27 + 0x1C140A06, // 0097 EQ R5 R5 R6 + 0x74160005, // 0098 JMPT R5 #009F + 0x88140906, // 0099 GETMBR R5 R4 K6 + 0xB81A0E00, // 009A GETNGBL R6 K7 + 0x88180D08, // 009B GETMBR R6 R6 K8 + 0x88180D22, // 009C GETMBR R6 R6 K34 + 0x1C140A06, // 009D EQ R5 R5 R6 + 0x781600B6, // 009E JMPF R5 #0156 + 0x8C140123, // 009F GETMET R5 R0 K35 + 0x7C140200, // 00A0 CALL R5 1 + 0x4C180000, // 00A1 LDNIL R6 + 0x20140A06, // 00A2 NE R5 R5 R6 + 0x781600B1, // 00A3 JMPF R5 #0156 + 0x8C140123, // 00A4 GETMET R5 R0 K35 + 0x7C140200, // 00A5 CALL R5 1 + 0x88140B06, // 00A6 GETMBR R5 R5 K6 + 0xB81A0E00, // 00A7 GETNGBL R6 K7 + 0x88180D08, // 00A8 GETMBR R6 R6 K8 + 0x88180D09, // 00A9 GETMBR R6 R6 K9 + 0x1C140A06, // 00AA EQ R5 R5 R6 + 0x781600A9, // 00AB JMPF R5 #0156 + 0x88140914, // 00AC GETMBR R5 R4 K20 + 0x88180124, // 00AD GETMBR R6 R0 K36 + 0x8C180D25, // 00AE GETMET R6 R6 K37 + 0x5C200A00, // 00AF MOVE R8 R5 + 0x7C180400, // 00B0 CALL R6 2 + 0x4C1C0000, // 00B1 LDNIL R7 + 0x1C1C0C07, // 00B2 EQ R7 R6 R7 + 0x781E000C, // 00B3 JMPF R7 #00C1 + 0x8C1C0101, // 00B4 GETMET R7 R0 K1 + 0x60240018, // 00B5 GETGBL R9 G24 + 0x58280026, // 00B6 LDCONST R10 K38 + 0x5C2C0A00, // 00B7 MOVE R11 R5 + 0x7C240400, // 00B8 CALL R9 2 + 0x7C1C0400, // 00B9 CALL R7 2 + 0x8C1C0127, // 00BA GETMET R7 R0 K39 + 0x7C1C0200, // 00BB CALL R7 1 + 0x881C0103, // 00BC GETMBR R7 R0 K3 + 0x8C1C0F04, // 00BD GETMET R7 R7 K4 + 0x58240005, // 00BE LDCONST R9 K5 + 0x7C1C0400, // 00BF CALL R7 2 + 0x80040E00, // 00C0 RET 1 R7 + 0x8C1C0D28, // 00C1 GETMET R7 R6 K40 + 0x7C1C0200, // 00C2 CALL R7 1 + 0x781E0009, // 00C3 JMPF R7 #00CE + 0x8C1C010A, // 00C4 GETMET R7 R0 K10 + 0x7C1C0200, // 00C5 CALL R7 1 + 0x8C1C0129, // 00C6 GETMET R7 R0 K41 + 0x5C240A00, // 00C7 MOVE R9 R5 + 0x7C1C0400, // 00C8 CALL R7 2 + 0x88200103, // 00C9 GETMBR R8 R0 K3 + 0x8C20112A, // 00CA GETMET R8 R8 K42 + 0x5C280E00, // 00CB MOVE R10 R7 + 0x7C200400, // 00CC CALL R8 2 + 0x80041000, // 00CD RET 1 R8 + 0x5C1C0400, // 00CE MOVE R7 R2 + 0x741E0010, // 00CF JMPT R7 #00E1 + 0x8C1C0D2B, // 00D0 GETMET R7 R6 K43 + 0x7C1C0200, // 00D1 CALL R7 1 + 0x781E000D, // 00D2 JMPF R7 #00E1 + 0x8C1C0101, // 00D3 GETMET R7 R0 K1 + 0x60240018, // 00D4 GETGBL R9 G24 + 0x5828002C, // 00D5 LDCONST R10 K44 + 0x5C2C0A00, // 00D6 MOVE R11 R5 + 0x5C300A00, // 00D7 MOVE R12 R5 + 0x7C240600, // 00D8 CALL R9 3 + 0x7C1C0400, // 00D9 CALL R7 2 + 0x8C1C0127, // 00DA GETMET R7 R0 K39 + 0x7C1C0200, // 00DB CALL R7 1 + 0x881C0103, // 00DC GETMBR R7 R0 K3 + 0x8C1C0F04, // 00DD GETMET R7 R7 K4 + 0x58240005, // 00DE LDCONST R9 K5 + 0x7C1C0400, // 00DF CALL R7 2 + 0x80040E00, // 00E0 RET 1 R7 + 0x780E003F, // 00E1 JMPF R3 #0122 + 0x8C1C010A, // 00E2 GETMET R7 R0 K10 + 0x7C1C0200, // 00E3 CALL R7 1 + 0x4C1C0000, // 00E4 LDNIL R7 + 0x201C0C07, // 00E5 NE R7 R6 R7 + 0x781E0011, // 00E6 JMPF R7 #00F9 + 0x881C0D06, // 00E7 GETMBR R7 R6 K6 + 0xB8220E00, // 00E8 GETNGBL R8 K7 + 0x8820112D, // 00E9 GETMBR R8 R8 K45 + 0x8820112E, // 00EA GETMBR R8 R8 K46 + 0x1C1C0E08, // 00EB EQ R7 R7 R8 + 0x781E000B, // 00EC JMPF R7 #00F9 + 0x8C1C012F, // 00ED GETMET R7 R0 K47 + 0x50240200, // 00EE LDBOOL R9 1 0 + 0x7C1C0400, // 00EF CALL R7 2 + 0x88200103, // 00F0 GETMBR R8 R0 K3 + 0x8C20112A, // 00F1 GETMET R8 R8 K42 + 0x60280018, // 00F2 GETGBL R10 G24 + 0x582C0030, // 00F3 LDCONST R11 K48 + 0x8C300D31, // 00F4 GETMET R12 R6 K49 + 0x7C300200, // 00F5 CALL R12 1 + 0x5C340E00, // 00F6 MOVE R13 R7 + 0x7C280600, // 00F7 CALL R10 3 + 0x7C200400, // 00F8 CALL R8 2 + 0x4C1C0000, // 00F9 LDNIL R7 + 0x201C0C07, // 00FA NE R7 R6 R7 + 0x781E0019, // 00FB JMPF R7 #0116 + 0x881C0D06, // 00FC GETMBR R7 R6 K6 + 0xB8220E00, // 00FD GETNGBL R8 K7 + 0x8820112D, // 00FE GETMBR R8 R8 K45 + 0x88201132, // 00FF GETMBR R8 R8 K50 + 0x1C1C0E08, // 0100 EQ R7 R7 R8 + 0x781E0013, // 0101 JMPF R7 #0116 + 0x8C1C012F, // 0102 GETMET R7 R0 K47 + 0x50240200, // 0103 LDBOOL R9 1 0 + 0x7C1C0400, // 0104 CALL R7 2 + 0x20200F33, // 0105 NE R8 R7 K51 + 0x78220004, // 0106 JMPF R8 #010C + 0x60200018, // 0107 GETGBL R8 G24 + 0x58240034, // 0108 LDCONST R9 K52 + 0x5C280E00, // 0109 MOVE R10 R7 + 0x7C200400, // 010A CALL R8 2 + 0x70020000, // 010B JMP #010D + 0x58200035, // 010C LDCONST R8 K53 + 0x88240103, // 010D GETMBR R9 R0 K3 + 0x8C24132A, // 010E GETMET R9 R9 K42 + 0x602C0018, // 010F GETGBL R11 G24 + 0x58300036, // 0110 LDCONST R12 K54 + 0x5C340A00, // 0111 MOVE R13 R5 + 0x5C381000, // 0112 MOVE R14 R8 + 0x7C2C0600, // 0113 CALL R11 3 + 0x7C240400, // 0114 CALL R9 2 + 0x80041200, // 0115 RET 1 R9 + 0x8C1C0101, // 0116 GETMET R7 R0 K1 + 0x60240018, // 0117 GETGBL R9 G24 + 0x58280037, // 0118 LDCONST R10 K55 + 0x5C2C0A00, // 0119 MOVE R11 R5 + 0x7C240400, // 011A CALL R9 2 + 0x7C1C0400, // 011B CALL R7 2 + 0x881C0103, // 011C GETMBR R7 R0 K3 + 0x8C1C0F04, // 011D GETMET R7 R7 K4 + 0x58240005, // 011E LDCONST R9 K5 + 0x7C1C0400, // 011F CALL R7 2 + 0x80040E00, // 0120 RET 1 R7 + 0x70020033, // 0121 JMP #0156 + 0x8C1C0D38, // 0122 GETMET R7 R6 K56 + 0x7C1C0200, // 0123 CALL R7 1 + 0x741E000D, // 0124 JMPT R7 #0133 + 0x8C1C0139, // 0125 GETMET R7 R0 K57 + 0x5C240200, // 0126 MOVE R9 R1 + 0x7C1C0400, // 0127 CALL R7 2 + 0x8C20013A, // 0128 GETMET R8 R0 K58 + 0x5C280C00, // 0129 MOVE R10 R6 + 0x7C200400, // 012A CALL R8 2 + 0x88240103, // 012B GETMBR R9 R0 K3 + 0x8C24132A, // 012C GETMET R9 R9 K42 + 0x5C2C0E00, // 012D MOVE R11 R7 + 0x5C301000, // 012E MOVE R12 R8 + 0x88340D3B, // 012F GETMBR R13 R6 K59 + 0x7C240800, // 0130 CALL R9 4 + 0x80041200, // 0131 RET 1 R9 + 0x70020022, // 0132 JMP #0156 + 0x881C013C, // 0133 GETMBR R7 R0 K60 + 0x1C1C0207, // 0134 EQ R7 R1 R7 + 0x741E0005, // 0135 JMPT R7 #013C + 0x881C013D, // 0136 GETMBR R7 R0 K61 + 0x1C1C0207, // 0137 EQ R7 R1 R7 + 0x741E0002, // 0138 JMPT R7 #013C + 0x881C013E, // 0139 GETMBR R7 R0 K62 + 0x1C1C0207, // 013A EQ R7 R1 R7 + 0x781E000C, // 013B JMPF R7 #0149 + 0x8C1C013F, // 013C GETMET R7 R0 K63 + 0x7C1C0200, // 013D CALL R7 1 + 0x8C20013A, // 013E GETMET R8 R0 K58 + 0x5C280C00, // 013F MOVE R10 R6 + 0x7C200400, // 0140 CALL R8 2 + 0x88240103, // 0141 GETMBR R9 R0 K3 + 0x8C241340, // 0142 GETMET R9 R9 K64 + 0x5C2C0E00, // 0143 MOVE R11 R7 + 0x5C301000, // 0144 MOVE R12 R8 + 0x88340D3B, // 0145 GETMBR R13 R6 K59 + 0x7C240800, // 0146 CALL R9 4 + 0x80041200, // 0147 RET 1 R9 + 0x7002000C, // 0148 JMP #0156 + 0x8C1C0139, // 0149 GETMET R7 R0 K57 + 0x5C240200, // 014A MOVE R9 R1 + 0x7C1C0400, // 014B CALL R7 2 + 0x8C20013A, // 014C GETMET R8 R0 K58 + 0x5C280C00, // 014D MOVE R10 R6 + 0x7C200400, // 014E CALL R8 2 + 0x88240103, // 014F GETMBR R9 R0 K3 + 0x8C241340, // 0150 GETMET R9 R9 K64 + 0x5C2C0E00, // 0151 MOVE R11 R7 + 0x5C301000, // 0152 MOVE R12 R8 + 0x88340D3B, // 0153 GETMBR R13 R6 K59 + 0x7C240800, // 0154 CALL R9 4 + 0x80041200, // 0155 RET 1 R9 + 0x88140906, // 0156 GETMBR R5 R4 K6 + 0xB81A0E00, // 0157 GETNGBL R6 K7 + 0x88180D08, // 0158 GETMBR R6 R6 K8 + 0x88180D22, // 0159 GETMBR R6 R6 K34 + 0x1C140A06, // 015A EQ R5 R5 R6 + 0x78160094, // 015B JMPF R5 #01F1 + 0x88140914, // 015C GETMBR R5 R4 K20 + 0x88180124, // 015D GETMBR R6 R0 K36 + 0x8C180D25, // 015E GETMET R6 R6 K37 + 0x5C200A00, // 015F MOVE R8 R5 + 0x7C180400, // 0160 CALL R6 2 + 0x4C1C0000, // 0161 LDNIL R7 + 0x1C1C0C07, // 0162 EQ R7 R6 R7 + 0x781E000C, // 0163 JMPF R7 #0171 + 0x8C1C0101, // 0164 GETMET R7 R0 K1 + 0x60240018, // 0165 GETGBL R9 G24 + 0x58280041, // 0166 LDCONST R10 K65 + 0x5C2C0A00, // 0167 MOVE R11 R5 + 0x7C240400, // 0168 CALL R9 2 + 0x7C1C0400, // 0169 CALL R7 2 + 0x8C1C0127, // 016A GETMET R7 R0 K39 + 0x7C1C0200, // 016B CALL R7 1 + 0x881C0103, // 016C GETMBR R7 R0 K3 + 0x8C1C0F04, // 016D GETMET R7 R7 K4 + 0x58240005, // 016E LDCONST R9 K5 + 0x7C1C0400, // 016F CALL R7 2 + 0x80040E00, // 0170 RET 1 R7 + 0x8C1C010A, // 0171 GETMET R7 R0 K10 + 0x7C1C0200, // 0172 CALL R7 1 + 0x8C1C0100, // 0173 GETMET R7 R0 K0 + 0x7C1C0200, // 0174 CALL R7 1 + 0x4C200000, // 0175 LDNIL R8 + 0x201C0E08, // 0176 NE R7 R7 R8 + 0x781E0058, // 0177 JMPF R7 #01D1 + 0x8C1C0100, // 0178 GETMET R7 R0 K0 + 0x7C1C0200, // 0179 CALL R7 1 + 0x881C0F06, // 017A GETMBR R7 R7 K6 + 0xB8220E00, // 017B GETNGBL R8 K7 + 0x88201108, // 017C GETMBR R8 R8 K8 + 0x88201142, // 017D GETMBR R8 R8 K66 + 0x1C1C0E08, // 017E EQ R7 R7 R8 + 0x781E0050, // 017F JMPF R7 #01D1 + 0x8C1C010A, // 0180 GETMET R7 R0 K10 + 0x7C1C0200, // 0181 CALL R7 1 + 0x8C1C0143, // 0182 GETMET R7 R0 K67 + 0x7C1C0200, // 0183 CALL R7 1 + 0x60200018, // 0184 GETGBL R8 G24 + 0x58240044, // 0185 LDCONST R9 K68 + 0x5C280A00, // 0186 MOVE R10 R5 + 0x5C2C0E00, // 0187 MOVE R11 R7 + 0x7C200600, // 0188 CALL R8 3 + 0x5C240600, // 0189 MOVE R9 R3 + 0x74260028, // 018A JMPT R9 #01B4 + 0x88240124, // 018B GETMBR R9 R0 K36 + 0x8C241345, // 018C GETMET R9 R9 K69 + 0x5C2C0A00, // 018D MOVE R11 R5 + 0x7C240400, // 018E CALL R9 2 + 0x78260023, // 018F JMPF R9 #01B4 + 0x4C240000, // 0190 LDNIL R9 + 0x20240C09, // 0191 NE R9 R6 R9 + 0x7826000C, // 0192 JMPF R9 #01A0 + 0x88240D3B, // 0193 GETMBR R9 R6 K59 + 0x4C280000, // 0194 LDNIL R10 + 0x2024120A, // 0195 NE R9 R9 R10 + 0x78260008, // 0196 JMPF R9 #01A0 + 0x60240005, // 0197 GETGBL R9 G5 + 0x88280D3B, // 0198 GETMBR R10 R6 K59 + 0x7C240200, // 0199 CALL R9 1 + 0x8C280146, // 019A GETMET R10 R0 K70 + 0x5C301200, // 019B MOVE R12 R9 + 0x5C340E00, // 019C MOVE R13 R7 + 0x88380D3B, // 019D GETMBR R14 R6 K59 + 0x7C280800, // 019E CALL R10 4 + 0x70020013, // 019F JMP #01B4 + 0x4C240000, // 01A0 LDNIL R9 + 0x20240C09, // 01A1 NE R9 R6 R9 + 0x78260010, // 01A2 JMPF R9 #01B4 + 0x88240D06, // 01A3 GETMBR R9 R6 K6 + 0xB82A0E00, // 01A4 GETNGBL R10 K7 + 0x8828152D, // 01A5 GETMBR R10 R10 K45 + 0x88281547, // 01A6 GETMBR R10 R10 K71 + 0x1C24120A, // 01A7 EQ R9 R9 R10 + 0x7826000A, // 01A8 JMPF R9 #01B4 + 0x8C240101, // 01A9 GETMET R9 R0 K1 + 0x602C0018, // 01AA GETGBL R11 G24 + 0x58300048, // 01AB LDCONST R12 K72 + 0x5C340A00, // 01AC MOVE R13 R5 + 0x7C2C0400, // 01AD CALL R11 2 + 0x7C240400, // 01AE CALL R9 2 + 0x88240103, // 01AF GETMBR R9 R0 K3 + 0x8C241304, // 01B0 GETMET R9 R9 K4 + 0x582C0005, // 01B1 LDCONST R11 K5 + 0x7C240400, // 01B2 CALL R9 2 + 0x80041200, // 01B3 RET 1 R9 + 0x88240124, // 01B4 GETMBR R9 R0 K36 + 0x8C241331, // 01B5 GETMET R9 R9 K49 + 0x5C2C0A00, // 01B6 MOVE R11 R5 + 0x7C240400, // 01B7 CALL R9 2 + 0x740E0002, // 01B8 JMPT R3 #01BC + 0x88280149, // 01B9 GETMBR R10 R0 K73 + 0x1C28020A, // 01BA EQ R10 R1 R10 + 0x782A000A, // 01BB JMPF R10 #01C7 + 0x88280103, // 01BC GETMBR R10 R0 K3 + 0x8C28154A, // 01BD GETMET R10 R10 K74 + 0x60300018, // 01BE GETGBL R12 G24 + 0x58340044, // 01BF LDCONST R13 K68 + 0x5C381200, // 01C0 MOVE R14 R9 + 0x5C3C0E00, // 01C1 MOVE R15 R7 + 0x7C300600, // 01C2 CALL R12 3 + 0x5834004B, // 01C3 LDCONST R13 K75 + 0x7C280600, // 01C4 CALL R10 3 + 0x80041400, // 01C5 RET 1 R10 + 0x70020009, // 01C6 JMP #01D1 + 0x88280103, // 01C7 GETMBR R10 R0 K3 + 0x8C28154A, // 01C8 GETMET R10 R10 K74 + 0x60300018, // 01C9 GETGBL R12 G24 + 0x5834004C, // 01CA LDCONST R13 K76 + 0x5C381200, // 01CB MOVE R14 R9 + 0x5C3C0E00, // 01CC MOVE R15 R7 + 0x7C300600, // 01CD CALL R12 3 + 0x5834004B, // 01CE LDCONST R13 K75 + 0x7C280600, // 01CF CALL R10 3 + 0x80041400, // 01D0 RET 1 R10 + 0x881C0124, // 01D1 GETMBR R7 R0 K36 + 0x8C1C0F31, // 01D2 GETMET R7 R7 K49 + 0x5C240A00, // 01D3 MOVE R9 R5 + 0x7C1C0400, // 01D4 CALL R7 2 + 0x88200124, // 01D5 GETMBR R8 R0 K36 + 0x8C20114D, // 01D6 GETMET R8 R8 K77 + 0x5C280A00, // 01D7 MOVE R10 R5 + 0x7C200400, // 01D8 CALL R8 2 + 0x78220009, // 01D9 JMPF R8 #01E4 + 0x8C20014E, // 01DA GETMET R8 R0 K78 + 0x5C280A00, // 01DB MOVE R10 R5 + 0x7C200400, // 01DC CALL R8 2 + 0x88240103, // 01DD GETMBR R9 R0 K3 + 0x8C24134F, // 01DE GETMET R9 R9 K79 + 0x5C2C0E00, // 01DF MOVE R11 R7 + 0x5C301000, // 01E0 MOVE R12 R8 + 0x7C240600, // 01E1 CALL R9 3 + 0x80041200, // 01E2 RET 1 R9 + 0x7002000C, // 01E3 JMP #01F1 + 0x8C200101, // 01E4 GETMET R8 R0 K1 + 0x60280018, // 01E5 GETGBL R10 G24 + 0x582C0041, // 01E6 LDCONST R11 K65 + 0x5C300A00, // 01E7 MOVE R12 R5 + 0x7C280400, // 01E8 CALL R10 2 + 0x7C200400, // 01E9 CALL R8 2 + 0x8C200127, // 01EA GETMET R8 R0 K39 + 0x7C200200, // 01EB CALL R8 1 + 0x88200103, // 01EC GETMBR R8 R0 K3 + 0x8C201104, // 01ED GETMET R8 R8 K4 + 0x58280005, // 01EE LDCONST R10 K5 + 0x7C200400, // 01EF CALL R8 2 + 0x80041000, // 01F0 RET 1 R8 + 0x88140906, // 01F1 GETMBR R5 R4 K6 + 0xB81A0E00, // 01F2 GETNGBL R6 K7 + 0x88180D08, // 01F3 GETMBR R6 R6 K8 + 0x88180D1B, // 01F4 GETMBR R6 R6 K27 + 0x1C140A06, // 01F5 EQ R5 R5 R6 + 0x7816000A, // 01F6 JMPF R5 #0202 + 0x88140914, // 01F7 GETMBR R5 R4 K20 + 0x8C18010A, // 01F8 GETMET R6 R0 K10 + 0x7C180200, // 01F9 CALL R6 1 + 0x88180103, // 01FA GETMBR R6 R0 K3 + 0x8C180D04, // 01FB GETMET R6 R6 K4 + 0x60200018, // 01FC GETGBL R8 G24 + 0x58240050, // 01FD LDCONST R9 K80 + 0x5C280A00, // 01FE MOVE R10 R5 + 0x7C200400, // 01FF CALL R8 2 + 0x7C180400, // 0200 CALL R6 2 + 0x80040C00, // 0201 RET 1 R6 + 0x8C140101, // 0202 GETMET R5 R0 K1 + 0x601C0018, // 0203 GETGBL R7 G24 + 0x58200051, // 0204 LDCONST R8 K81 + 0x88240914, // 0205 GETMBR R9 R4 K20 + 0x7C1C0400, // 0206 CALL R7 2 + 0x7C140400, // 0207 CALL R5 2 + 0x8C140127, // 0208 GETMET R5 R0 K39 + 0x7C140200, // 0209 CALL R5 1 + 0x88140103, // 020A GETMBR R5 R0 K3 + 0x8C140B04, // 020B GETMET R5 R5 K4 + 0x581C0005, // 020C LDCONST R7 K5 + 0x7C140400, // 020D CALL R5 2 + 0x80040A00, // 020E RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transpile +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transpile, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_nested_str_weak(import_X20animation), + /* K2 */ be_nested_str_weak(), + /* K3 */ be_nested_str_weak(at_end), + /* K4 */ be_nested_str_weak(process_statement), + /* K5 */ be_nested_str_weak(generate_engine_run), + /* K6 */ be_nested_str_weak(errors), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(join_output), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Transpilation_X20failed_X3A_X20_X25s), + }), + be_str_weak(transpile), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0xA802001A, // 0000 EXBLK 0 #001C + 0x8C040100, // 0001 GETMET R1 R0 K0 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x7C040400, // 0003 CALL R1 2 + 0x8C040100, // 0004 GETMET R1 R0 K0 + 0x580C0002, // 0005 LDCONST R3 K2 + 0x7C040400, // 0006 CALL R1 2 + 0x8C040103, // 0007 GETMET R1 R0 K3 + 0x7C040200, // 0008 CALL R1 1 + 0x74060002, // 0009 JMPT R1 #000D + 0x8C040104, // 000A GETMET R1 R0 K4 + 0x7C040200, // 000B CALL R1 1 + 0x7001FFF9, // 000C JMP #0007 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0x6004000C, // 000F GETGBL R1 G12 + 0x88080106, // 0010 GETMBR R2 R0 K6 + 0x7C040200, // 0011 CALL R1 1 + 0x1C040307, // 0012 EQ R1 R1 K7 + 0x78060002, // 0013 JMPF R1 #0017 + 0x8C040108, // 0014 GETMET R1 R0 K8 + 0x7C040200, // 0015 CALL R1 1 + 0x70020000, // 0016 JMP #0018 + 0x4C040000, // 0017 LDNIL R1 + 0xA8040001, // 0018 EXBLK 1 1 + 0x80040200, // 0019 RET 1 R1 + 0xA8040001, // 001A EXBLK 1 1 + 0x7002000B, // 001B JMP #0028 + 0xAC040002, // 001C CATCH R1 0 2 + 0x70020008, // 001D JMP #0027 + 0x8C0C0109, // 001E GETMET R3 R0 K9 + 0x60140018, // 001F GETGBL R5 G24 + 0x5818000A, // 0020 LDCONST R6 K10 + 0x5C1C0400, // 0021 MOVE R7 R2 + 0x7C140400, // 0022 CALL R5 2 + 0x7C0C0400, // 0023 CALL R3 2 + 0x4C0C0000, // 0024 LDNIL R3 + 0x80040600, // 0025 RET 1 R3 + 0x70020000, // 0026 JMP #0028 + 0xB0080000, // 0027 RAISE 2 R0 R0 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: can_use_as_identifier +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_can_use_as_identifier, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(color), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(palette), + /* K3 */ be_nested_str_weak(startup), + /* K4 */ be_nested_str_weak(shutdown), + /* K5 */ be_nested_str_weak(button_press), + /* K6 */ be_nested_str_weak(button_hold), + /* K7 */ be_nested_str_weak(motion_detected), + /* K8 */ be_nested_str_weak(brightness_change), + /* K9 */ be_nested_str_weak(timer), + /* K10 */ be_nested_str_weak(time), + /* K11 */ be_nested_str_weak(sound_peak), + /* K12 */ be_nested_str_weak(network_message), + /* K13 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(can_use_as_identifier), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x400C0500, // 0002 CONNECT R3 R2 K0 + 0x400C0501, // 0003 CONNECT R3 R2 K1 + 0x400C0502, // 0004 CONNECT R3 R2 K2 + 0x400C0503, // 0005 CONNECT R3 R2 K3 + 0x400C0504, // 0006 CONNECT R3 R2 K4 + 0x400C0505, // 0007 CONNECT R3 R2 K5 + 0x400C0506, // 0008 CONNECT R3 R2 K6 + 0x400C0507, // 0009 CONNECT R3 R2 K7 + 0x400C0508, // 000A CONNECT R3 R2 K8 + 0x400C0509, // 000B CONNECT R3 R2 K9 + 0x400C050A, // 000C CONNECT R3 R2 K10 + 0x400C050B, // 000D CONNECT R3 R2 K11 + 0x400C050C, // 000E CONNECT R3 R2 K12 + 0x600C0010, // 000F GETGBL R3 G16 + 0x5C100400, // 0010 MOVE R4 R2 + 0x7C0C0200, // 0011 CALL R3 1 + 0xA8020007, // 0012 EXBLK 0 #001B + 0x5C100600, // 0013 MOVE R4 R3 + 0x7C100000, // 0014 CALL R4 0 + 0x1C140204, // 0015 EQ R5 R1 R4 + 0x78160002, // 0016 JMPF R5 #001A + 0x50140200, // 0017 LDBOOL R5 1 0 + 0xA8040001, // 0018 EXBLK 1 1 + 0x80040A00, // 0019 RET 1 R5 + 0x7001FFF7, // 001A JMP #0013 + 0x580C000D, // 001B LDCONST R3 K13 + 0xAC0C0200, // 001C CATCH R3 1 0 + 0xB0080000, // 001D RAISE 2 R0 R0 + 0x500C0000, // 001E LDBOOL R3 0 0 + 0x80040600, // 001F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: convert_time_to_ms +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(endswith), + /* K2 */ be_nested_str_weak(ms), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(s), + /* K5 */ be_nested_str_weak(m), + /* K6 */ be_nested_str_weak(h), + /* K7 */ be_const_int(3600000), + }), + be_str_weak(convert_time_to_ms), + &be_const_str_solidified, + ( &(const binstruction[63]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x600C0009, // 0006 GETGBL R3 G9 + 0x6010000A, // 0007 GETGBL R4 G10 + 0x5415FFFC, // 0008 LDINT R5 -3 + 0x40160605, // 0009 CONNECT R5 K3 R5 + 0x94140205, // 000A GETIDX R5 R1 R5 + 0x7C100200, // 000B CALL R4 1 + 0x7C0C0200, // 000C CALL R3 1 + 0x80040600, // 000D RET 1 R3 + 0x7002002D, // 000E JMP #003D + 0x8C0C0501, // 000F GETMET R3 R2 K1 + 0x5C140200, // 0010 MOVE R5 R1 + 0x58180004, // 0011 LDCONST R6 K4 + 0x7C0C0600, // 0012 CALL R3 3 + 0x780E000A, // 0013 JMPF R3 #001F + 0x600C0009, // 0014 GETGBL R3 G9 + 0x6010000A, // 0015 GETGBL R4 G10 + 0x5415FFFD, // 0016 LDINT R5 -2 + 0x40160605, // 0017 CONNECT R5 K3 R5 + 0x94140205, // 0018 GETIDX R5 R1 R5 + 0x7C100200, // 0019 CALL R4 1 + 0x541603E7, // 001A LDINT R5 1000 + 0x08100805, // 001B MUL R4 R4 R5 + 0x7C0C0200, // 001C CALL R3 1 + 0x80040600, // 001D RET 1 R3 + 0x7002001D, // 001E JMP #003D + 0x8C0C0501, // 001F GETMET R3 R2 K1 + 0x5C140200, // 0020 MOVE R5 R1 + 0x58180005, // 0021 LDCONST R6 K5 + 0x7C0C0600, // 0022 CALL R3 3 + 0x780E000A, // 0023 JMPF R3 #002F + 0x600C0009, // 0024 GETGBL R3 G9 + 0x6010000A, // 0025 GETGBL R4 G10 + 0x5415FFFD, // 0026 LDINT R5 -2 + 0x40160605, // 0027 CONNECT R5 K3 R5 + 0x94140205, // 0028 GETIDX R5 R1 R5 + 0x7C100200, // 0029 CALL R4 1 + 0x5416EA5F, // 002A LDINT R5 60000 + 0x08100805, // 002B MUL R4 R4 R5 + 0x7C0C0200, // 002C CALL R3 1 + 0x80040600, // 002D RET 1 R3 + 0x7002000D, // 002E JMP #003D + 0x8C0C0501, // 002F GETMET R3 R2 K1 + 0x5C140200, // 0030 MOVE R5 R1 + 0x58180006, // 0031 LDCONST R6 K6 + 0x7C0C0600, // 0032 CALL R3 3 + 0x780E0008, // 0033 JMPF R3 #003D + 0x600C0009, // 0034 GETGBL R3 G9 + 0x6010000A, // 0035 GETGBL R4 G10 + 0x5415FFFD, // 0036 LDINT R5 -2 + 0x40160605, // 0037 CONNECT R5 K3 R5 + 0x94140205, // 0038 GETIDX R5 R1 R5 + 0x7C100200, // 0039 CALL R4 1 + 0x08100907, // 003A MUL R4 R4 K7 + 0x7C0C0200, // 003B CALL R3 1 + 0x80040600, // 003C RET 1 R3 + 0x540E03E7, // 003D LDINT R3 1000 + 0x80040600, // 003E RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(NEWLINE), + /* K6 */ be_nested_str_weak(EOF), + /* K7 */ be_nested_str_weak(next), + }), + be_str_weak(skip_statement), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060011, // 0002 JMPT R1 #0015 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x88080302, // 0005 GETMBR R2 R1 K2 + 0xB80E0600, // 0006 GETNGBL R3 K3 + 0x880C0704, // 0007 GETMBR R3 R3 K4 + 0x880C0705, // 0008 GETMBR R3 R3 K5 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0005, // 000A JMPT R2 #0011 + 0x88080302, // 000B GETMBR R2 R1 K2 + 0xB80E0600, // 000C GETNGBL R3 K3 + 0x880C0704, // 000D GETMBR R3 R3 K4 + 0x880C0706, // 000E GETMBR R3 R3 K6 + 0x1C080403, // 000F EQ R2 R2 R3 + 0x780A0000, // 0010 JMPF R2 #0012 + 0x70020002, // 0011 JMP #0015 + 0x8C080107, // 0012 GETMET R2 R0 K7 + 0x7C080200, // 0013 CALL R2 1 + 0x7001FFEA, // 0014 JMP #0000 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_log_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_log_call, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(fluent), + /* K1 */ be_nested_str_weak(def_X20_X28engine_X29_X20log_X28f_X22_X25s_X22_X2C_X203_X29_X20end), + /* K2 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), + /* K3 */ be_nested_str_weak(get_indent), + /* K4 */ be_nested_str_weak(CONTEXT_EXPRESSION), + /* K5 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29), + /* K6 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29_X25s), + }), + be_str_weak(process_log_call), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x1C100500, // 0000 EQ R4 R2 K0 + 0x7812000C, // 0001 JMPF R4 #000F + 0x60100018, // 0002 GETGBL R4 G24 + 0x58140001, // 0003 LDCONST R5 K1 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x60140018, // 0006 GETGBL R5 G24 + 0x58180002, // 0007 LDCONST R6 K2 + 0x8C1C0103, // 0008 GETMET R7 R0 K3 + 0x7C1C0200, // 0009 CALL R7 1 + 0x5C200800, // 000A MOVE R8 R4 + 0x5C240600, // 000B MOVE R9 R3 + 0x7C140800, // 000C CALL R5 4 + 0x80040A00, // 000D RET 1 R5 + 0x7002000E, // 000E JMP #001E + 0x88100104, // 000F GETMBR R4 R0 K4 + 0x1C100404, // 0010 EQ R4 R2 R4 + 0x78120005, // 0011 JMPF R4 #0018 + 0x60100018, // 0012 GETGBL R4 G24 + 0x58140005, // 0013 LDCONST R5 K5 + 0x5C180200, // 0014 MOVE R6 R1 + 0x7C100400, // 0015 CALL R4 2 + 0x80040800, // 0016 RET 1 R4 + 0x70020005, // 0017 JMP #001E + 0x60100018, // 0018 GETGBL R4 G24 + 0x58140006, // 0019 LDCONST R5 K6 + 0x5C180200, // 001A MOVE R6 R1 + 0x5C1C0600, // 001B MOVE R7 R3 + 0x7C100600, // 001C CALL R4 3 + 0x80040800, // 001D RET 1 R4 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_identifier +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(IDENTIFIER), + /* K5 */ be_nested_str_weak(COLOR), + /* K6 */ be_nested_str_weak(KEYWORD), + /* K7 */ be_nested_str_weak(can_use_as_identifier), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(error), + /* K11 */ be_nested_str_weak(Expected_X20identifier), + /* K12 */ be_nested_str_weak(unknown), + }), + be_str_weak(expect_identifier), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A001A, // 0004 JMPF R2 #0020 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A000F, // 000A JMPT R2 #001B + 0x88080301, // 000B GETMBR R2 R1 K1 + 0xB80E0400, // 000C GETNGBL R3 K2 + 0x880C0703, // 000D GETMBR R3 R3 K3 + 0x880C0705, // 000E GETMBR R3 R3 K5 + 0x1C080403, // 000F EQ R2 R2 R3 + 0x740A0009, // 0010 JMPT R2 #001B + 0x88080301, // 0011 GETMBR R2 R1 K1 + 0xB80E0400, // 0012 GETNGBL R3 K2 + 0x880C0703, // 0013 GETMBR R3 R3 K3 + 0x880C0706, // 0014 GETMBR R3 R3 K6 + 0x1C080403, // 0015 EQ R2 R2 R3 + 0x780A0008, // 0016 JMPF R2 #0020 + 0x8C080107, // 0017 GETMET R2 R0 K7 + 0x88100308, // 0018 GETMBR R4 R1 K8 + 0x7C080400, // 0019 CALL R2 2 + 0x780A0004, // 001A JMPF R2 #0020 + 0x88080308, // 001B GETMBR R2 R1 K8 + 0x8C0C0109, // 001C GETMET R3 R0 K9 + 0x7C0C0200, // 001D CALL R3 1 + 0x80040400, // 001E RET 1 R2 + 0x70020003, // 001F JMP #0024 + 0x8C08010A, // 0020 GETMET R2 R0 K10 + 0x5810000B, // 0021 LDCONST R4 K11 + 0x7C080400, // 0022 CALL R2 2 + 0x80061800, // 0023 RET 1 K12 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_whitespace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(NEWLINE), + /* K6 */ be_nested_str_weak(COMMENT), + /* K7 */ be_nested_str_weak(next), + }), + be_str_weak(skip_whitespace), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060015, // 0002 JMPT R1 #0019 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x4C080000, // 0005 LDNIL R2 + 0x20080202, // 0006 NE R2 R1 R2 + 0x780A000E, // 0007 JMPF R2 #0017 + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0xB80E0600, // 0009 GETNGBL R3 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x1C080403, // 000C EQ R2 R2 R3 + 0x740A0005, // 000D JMPT R2 #0014 + 0x88080302, // 000E GETMBR R2 R1 K2 + 0xB80E0600, // 000F GETNGBL R3 K3 + 0x880C0704, // 0010 GETMBR R3 R3 K4 + 0x880C0706, // 0011 GETMBR R3 R3 K6 + 0x1C080403, // 0012 EQ R2 R2 R3 + 0x780A0002, // 0013 JMPF R2 #0017 + 0x8C080107, // 0014 GETMET R2 R0 K7 + 0x7C080200, // 0015 CALL R2 1 + 0x70020000, // 0016 JMP #0018 + 0x70020000, // 0017 JMP #0019 + 0x7001FFE6, // 0018 JMP #0000 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_add, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(output), + /* K1 */ be_nested_str_weak(push), + }), + be_str_weak(add), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(process_additive_expression), + /* K1 */ be_nested_str_weak(_X3E_X20process_value_X20context_X3D_X25s_X20result_X3D_X25s), + /* K2 */ be_nested_str_weak(CONTEXT_VARIABLE), + /* K3 */ be_nested_str_weak(CONTEXT_PROPERTY), + /* K4 */ be_nested_str_weak(needs_closure), + /* K5 */ be_nested_str_weak(CONTEXT_REPEAT_COUNT), + /* K6 */ be_nested_str_weak(needs_function), + /* K7 */ be_nested_str_weak(string), + /* K8 */ be_nested_str_weak(find), + /* K9 */ be_nested_str_weak(expr), + /* K10 */ be_nested_str_weak(_X2E), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(create_simple_function_from_string), + /* K13 */ be_nested_str_weak(ExpressionResult), + /* K14 */ be_nested_str_weak(function_call), + /* K15 */ be_nested_str_weak(create_computation_closure_from_string), + /* K16 */ be_nested_str_weak(symbol_table), + /* K17 */ be_nested_str_weak(get), + /* K18 */ be_nested_str_weak(closure_value), + /* K19 */ be_nested_str_weak(type), + /* K20 */ be_nested_str_weak(instance), + }), + be_str_weak(process_value), + &be_const_str_solidified, + ( &(const binstruction[65]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x50140200, // 0002 LDBOOL R5 1 0 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x7C080800, // 0004 CALL R2 4 + 0x600C0001, // 0005 GETGBL R3 G1 + 0x60100018, // 0006 GETGBL R4 G24 + 0x58140001, // 0007 LDCONST R5 K1 + 0x5C180200, // 0008 MOVE R6 R1 + 0x5C1C0400, // 0009 MOVE R7 R2 + 0x7C100600, // 000A CALL R4 3 + 0x7C0C0200, // 000B CALL R3 1 + 0x880C0102, // 000C GETMBR R3 R0 K2 + 0x1C0C0203, // 000D EQ R3 R1 R3 + 0x740E0002, // 000E JMPT R3 #0012 + 0x880C0103, // 000F GETMBR R3 R0 K3 + 0x1C0C0203, // 0010 EQ R3 R1 R3 + 0x780E0002, // 0011 JMPF R3 #0015 + 0x8C0C0504, // 0012 GETMET R3 R2 K4 + 0x7C0C0200, // 0013 CALL R3 1 + 0x740E0005, // 0014 JMPT R3 #001B + 0x880C0105, // 0015 GETMBR R3 R0 K5 + 0x1C0C0203, // 0016 EQ R3 R1 R3 + 0x780E0026, // 0017 JMPF R3 #003F + 0x8C0C0506, // 0018 GETMET R3 R2 K6 + 0x7C0C0200, // 0019 CALL R3 1 + 0x780E0023, // 001A JMPF R3 #003F + 0x880C0105, // 001B GETMBR R3 R0 K5 + 0x1C0C0203, // 001C EQ R3 R1 R3 + 0x780E0011, // 001D JMPF R3 #0030 + 0xA40E0E00, // 001E IMPORT R3 K7 + 0x8C100708, // 001F GETMET R4 R3 K8 + 0x88180509, // 0020 GETMBR R6 R2 K9 + 0x581C000A, // 0021 LDCONST R7 K10 + 0x7C100600, // 0022 CALL R4 3 + 0x2810090B, // 0023 GE R4 R4 K11 + 0x78120008, // 0024 JMPF R4 #002E + 0x8C10010C, // 0025 GETMET R4 R0 K12 + 0x88180509, // 0026 GETMBR R6 R2 K9 + 0x7C100400, // 0027 CALL R4 2 + 0x8814010D, // 0028 GETMBR R5 R0 K13 + 0x8C140B0E, // 0029 GETMET R5 R5 K14 + 0x5C1C0800, // 002A MOVE R7 R4 + 0x7C140400, // 002B CALL R5 2 + 0x80040A00, // 002C RET 1 R5 + 0x70020000, // 002D JMP #002F + 0x80040400, // 002E RET 1 R2 + 0x7002000D, // 002F JMP #003E + 0x8C0C010F, // 0030 GETMET R3 R0 K15 + 0x88140509, // 0031 GETMBR R5 R2 K9 + 0x7C0C0400, // 0032 CALL R3 2 + 0x88100110, // 0033 GETMBR R4 R0 K16 + 0x8C100911, // 0034 GETMET R4 R4 K17 + 0x58180012, // 0035 LDCONST R6 K18 + 0x7C100400, // 0036 CALL R4 2 + 0x8814010D, // 0037 GETMBR R5 R0 K13 + 0x8C140B0E, // 0038 GETMET R5 R5 K14 + 0x5C1C0600, // 0039 MOVE R7 R3 + 0x88200913, // 003A GETMBR R8 R4 K19 + 0x88240914, // 003B GETMBR R9 R4 K20 + 0x7C140800, // 003C CALL R5 4 + 0x80040A00, // 003D RET 1 R5 + 0x70020000, // 003E JMP #0040 + 0x80040400, // 003F RET 1 R2 + 0x80000000, // 0040 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(tokens), + /* K1 */ be_nested_str_weak(pos), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(output), + /* K4 */ be_nested_str_weak(errors), + /* K5 */ be_nested_str_weak(run_statements), + /* K6 */ be_nested_str_weak(strip_initialized), + /* K7 */ be_nested_str_weak(symbol_table), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(_symbol_table), + /* K10 */ be_nested_str_weak(indent_level), + /* K11 */ be_nested_str_weak(has_template_calls), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x5C080200, // 0003 MOVE R2 R1 + 0x70020001, // 0004 JMP #0007 + 0x60080012, // 0005 GETGBL R2 G18 + 0x7C080000, // 0006 CALL R2 0 + 0x90020002, // 0007 SETMBR R0 K0 R2 + 0x90020302, // 0008 SETMBR R0 K1 K2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90020602, // 000B SETMBR R0 K3 R2 + 0x60080012, // 000C GETGBL R2 G18 + 0x7C080000, // 000D CALL R2 0 + 0x90020802, // 000E SETMBR R0 K4 R2 + 0x60080012, // 000F GETGBL R2 G18 + 0x7C080000, // 0010 CALL R2 0 + 0x90020A02, // 0011 SETMBR R0 K5 R2 + 0x50080000, // 0012 LDBOOL R2 0 0 + 0x90020C02, // 0013 SETMBR R0 K6 R2 + 0xB80A1000, // 0014 GETNGBL R2 K8 + 0x8C080509, // 0015 GETMET R2 R2 K9 + 0x7C080200, // 0016 CALL R2 1 + 0x90020E02, // 0017 SETMBR R0 K7 R2 + 0x90021502, // 0018 SETMBR R0 K10 K2 + 0x50080000, // 0019 LDBOOL R2 0 0 + 0x90021602, // 001A SETMBR R0 K11 R2 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_palette +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_palette, /* name */ + be_nested_proto( + 18, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[49]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(palette), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(expect_left_bracket), + /* K7 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K8 */ be_nested_str_weak(check_right_bracket), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Empty_X20palettes_X20are_X20not_X20allowed_X2E_X20A_X20palette_X20must_X20contain_X20at_X20least_X20one_X20color_X20entry_X2E), + /* K11 */ be_nested_str_weak(current), + /* K12 */ be_nested_str_weak(type), + /* K13 */ be_nested_str_weak(animation_dsl), + /* K14 */ be_nested_str_weak(Token), + /* K15 */ be_nested_str_weak(LEFT_PAREN), + /* K16 */ be_nested_str_weak(at_end), + /* K17 */ be_nested_str_weak(Cannot_X20mix_X20alternative_X20syntax_X20_X5Bcolor1_X2C_X20color2_X2C_X20_X2E_X2E_X2E_X5D_X20with_X20tuple_X20syntax_X20_X28value_X2C_X20color_X29_X2E_X20Use_X20only_X20one_X20syntax_X20per_X20palette_X2E), + /* K18 */ be_nested_str_weak(expect_left_paren), + /* K19 */ be_nested_str_weak(expect_number), + /* K20 */ be_nested_str_weak(expect_comma), + /* K21 */ be_nested_str_weak(process_palette_color), + /* K22 */ be_nested_str_weak(expect_right_paren), + /* K23 */ be_nested_str_weak(convert_to_vrgb), + /* K24 */ be_nested_str_weak(0x_X25s), + /* K25 */ be_nested_str_weak(push), + /* K26 */ be_nested_str_weak(Cannot_X20mix_X20tuple_X20syntax_X20_X28value_X2C_X20color_X29_X20with_X20alternative_X20syntax_X20_X5Bcolor1_X2C_X20color2_X2C_X20_X2E_X2E_X2E_X5D_X2E_X20Use_X20only_X20one_X20syntax_X20per_X20palette_X2E), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(COMMA), + /* K29 */ be_nested_str_weak(COMMENT), + /* K30 */ be_nested_str_weak(value), + /* K31 */ be_nested_str_weak(NEWLINE), + /* K32 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20palette_X20definition), + /* K33 */ be_nested_str_weak(expect_right_bracket), + /* K34 */ be_nested_str_weak(collect_inline_comment), + /* K35 */ be_nested_str_weak(stop_iteration), + /* K36 */ be_nested_str_weak(add), + /* K37 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20bytes_X28_X25s), + /* K38 */ be_const_int(0), + /* K39 */ be_const_int(1), + /* K40 */ be_nested_str_weak(_X2508X), + /* K41 */ be_nested_str_weak(_X20_X20_X25s), + /* K42 */ be_nested_str_weak(_X20_X20_X22_X25s_X22_X25s), + /* K43 */ be_nested_str_weak(_X29), + /* K44 */ be_nested_str_weak(_X20), + /* K45 */ be_nested_str_weak(_X22_X25s_X22), + /* K46 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20bytes_X28_X25s_X29_X25s), + /* K47 */ be_nested_str_weak(symbol_table), + /* K48 */ be_nested_str_weak(create_palette), + }), + be_str_weak(process_palette), + &be_const_str_solidified, + ( &(const binstruction[349]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x60080012, // 0010 GETGBL R2 G18 + 0x7C080000, // 0011 CALL R2 0 + 0x600C0012, // 0012 GETGBL R3 G18 + 0x7C0C0000, // 0013 CALL R3 0 + 0x8C100107, // 0014 GETMET R4 R0 K7 + 0x7C100200, // 0015 CALL R4 1 + 0x8C100108, // 0016 GETMET R4 R0 K8 + 0x7C100200, // 0017 CALL R4 1 + 0x78120005, // 0018 JMPF R4 #001F + 0x8C100109, // 0019 GETMET R4 R0 K9 + 0x5818000A, // 001A LDCONST R6 K10 + 0x7C100400, // 001B CALL R4 2 + 0x8C100104, // 001C GETMET R4 R0 K4 + 0x7C100200, // 001D CALL R4 1 + 0x80000800, // 001E RET 0 + 0x8C10010B, // 001F GETMET R4 R0 K11 + 0x7C100200, // 0020 CALL R4 1 + 0x4C140000, // 0021 LDNIL R5 + 0x20100805, // 0022 NE R4 R4 R5 + 0x78120007, // 0023 JMPF R4 #002C + 0x8C10010B, // 0024 GETMET R4 R0 K11 + 0x7C100200, // 0025 CALL R4 1 + 0x8810090C, // 0026 GETMBR R4 R4 K12 + 0xB8161A00, // 0027 GETNGBL R5 K13 + 0x88140B0E, // 0028 GETMBR R5 R5 K14 + 0x88140B0F, // 0029 GETMBR R5 R5 K15 + 0x1C100805, // 002A EQ R4 R4 R5 + 0x74120000, // 002B JMPT R4 #002D + 0x50100001, // 002C LDBOOL R4 0 1 + 0x50100200, // 002D LDBOOL R4 1 0 + 0x8C140110, // 002E GETMET R5 R0 K16 + 0x7C140200, // 002F CALL R5 1 + 0x741600BF, // 0030 JMPT R5 #00F1 + 0x8C140108, // 0031 GETMET R5 R0 K8 + 0x7C140200, // 0032 CALL R5 1 + 0x741600BC, // 0033 JMPT R5 #00F1 + 0x8C140107, // 0034 GETMET R5 R0 K7 + 0x7C140200, // 0035 CALL R5 1 + 0x8C140108, // 0036 GETMET R5 R0 K8 + 0x7C140200, // 0037 CALL R5 1 + 0x78160000, // 0038 JMPF R5 #003A + 0x700200B6, // 0039 JMP #00F1 + 0x7812002A, // 003A JMPF R4 #0066 + 0x8C14010B, // 003B GETMET R5 R0 K11 + 0x7C140200, // 003C CALL R5 1 + 0x4C180000, // 003D LDNIL R6 + 0x20140A06, // 003E NE R5 R5 R6 + 0x7816000D, // 003F JMPF R5 #004E + 0x8C14010B, // 0040 GETMET R5 R0 K11 + 0x7C140200, // 0041 CALL R5 1 + 0x88140B0C, // 0042 GETMBR R5 R5 K12 + 0xB81A1A00, // 0043 GETNGBL R6 K13 + 0x88180D0E, // 0044 GETMBR R6 R6 K14 + 0x88180D0F, // 0045 GETMBR R6 R6 K15 + 0x20140A06, // 0046 NE R5 R5 R6 + 0x78160005, // 0047 JMPF R5 #004E + 0x8C140109, // 0048 GETMET R5 R0 K9 + 0x581C0011, // 0049 LDCONST R7 K17 + 0x7C140400, // 004A CALL R5 2 + 0x8C140104, // 004B GETMET R5 R0 K4 + 0x7C140200, // 004C CALL R5 1 + 0x80000A00, // 004D RET 0 + 0x8C140112, // 004E GETMET R5 R0 K18 + 0x7C140200, // 004F CALL R5 1 + 0x8C140113, // 0050 GETMET R5 R0 K19 + 0x7C140200, // 0051 CALL R5 1 + 0x8C180114, // 0052 GETMET R6 R0 K20 + 0x7C180200, // 0053 CALL R6 1 + 0x8C180115, // 0054 GETMET R6 R0 K21 + 0x7C180200, // 0055 CALL R6 1 + 0x8C1C0116, // 0056 GETMET R7 R0 K22 + 0x7C1C0200, // 0057 CALL R7 1 + 0x8C1C0117, // 0058 GETMET R7 R0 K23 + 0x5C240A00, // 0059 MOVE R9 R5 + 0x5C280C00, // 005A MOVE R10 R6 + 0x7C1C0600, // 005B CALL R7 3 + 0x60200009, // 005C GETGBL R8 G9 + 0x60240018, // 005D GETGBL R9 G24 + 0x58280018, // 005E LDCONST R10 K24 + 0x5C2C0E00, // 005F MOVE R11 R7 + 0x7C240400, // 0060 CALL R9 2 + 0x7C200200, // 0061 CALL R8 1 + 0x8C240519, // 0062 GETMET R9 R2 K25 + 0x5C2C1000, // 0063 MOVE R11 R8 + 0x7C240400, // 0064 CALL R9 2 + 0x70020021, // 0065 JMP #0088 + 0x8C14010B, // 0066 GETMET R5 R0 K11 + 0x7C140200, // 0067 CALL R5 1 + 0x4C180000, // 0068 LDNIL R6 + 0x20140A06, // 0069 NE R5 R5 R6 + 0x7816000D, // 006A JMPF R5 #0079 + 0x8C14010B, // 006B GETMET R5 R0 K11 + 0x7C140200, // 006C CALL R5 1 + 0x88140B0C, // 006D GETMBR R5 R5 K12 + 0xB81A1A00, // 006E GETNGBL R6 K13 + 0x88180D0E, // 006F GETMBR R6 R6 K14 + 0x88180D0F, // 0070 GETMBR R6 R6 K15 + 0x1C140A06, // 0071 EQ R5 R5 R6 + 0x78160005, // 0072 JMPF R5 #0079 + 0x8C140109, // 0073 GETMET R5 R0 K9 + 0x581C001A, // 0074 LDCONST R7 K26 + 0x7C140400, // 0075 CALL R5 2 + 0x8C140104, // 0076 GETMET R5 R0 K4 + 0x7C140200, // 0077 CALL R5 1 + 0x80000A00, // 0078 RET 0 + 0x8C140115, // 0079 GETMET R5 R0 K21 + 0x7C140200, // 007A CALL R5 1 + 0x8C180117, // 007B GETMET R6 R0 K23 + 0x542200FE, // 007C LDINT R8 255 + 0x5C240A00, // 007D MOVE R9 R5 + 0x7C180600, // 007E CALL R6 3 + 0x601C0009, // 007F GETGBL R7 G9 + 0x60200018, // 0080 GETGBL R8 G24 + 0x58240018, // 0081 LDCONST R9 K24 + 0x5C280C00, // 0082 MOVE R10 R6 + 0x7C200400, // 0083 CALL R8 2 + 0x7C1C0200, // 0084 CALL R7 1 + 0x8C200519, // 0085 GETMET R8 R2 K25 + 0x5C280E00, // 0086 MOVE R10 R7 + 0x7C200400, // 0087 CALL R8 2 + 0x5814001B, // 0088 LDCONST R5 K27 + 0x8C18010B, // 0089 GETMET R6 R0 K11 + 0x7C180200, // 008A CALL R6 1 + 0x4C1C0000, // 008B LDNIL R7 + 0x20180C07, // 008C NE R6 R6 R7 + 0x781A002F, // 008D JMPF R6 #00BE + 0x8C18010B, // 008E GETMET R6 R0 K11 + 0x7C180200, // 008F CALL R6 1 + 0x88180D0C, // 0090 GETMBR R6 R6 K12 + 0xB81E1A00, // 0091 GETNGBL R7 K13 + 0x881C0F0E, // 0092 GETMBR R7 R7 K14 + 0x881C0F1C, // 0093 GETMBR R7 R7 K28 + 0x1C180C07, // 0094 EQ R6 R6 R7 + 0x781A0027, // 0095 JMPF R6 #00BE + 0x8C180100, // 0096 GETMET R6 R0 K0 + 0x7C180200, // 0097 CALL R6 1 + 0x8C18010B, // 0098 GETMET R6 R0 K11 + 0x7C180200, // 0099 CALL R6 1 + 0x4C1C0000, // 009A LDNIL R7 + 0x20180C07, // 009B NE R6 R6 R7 + 0x781A000C, // 009C JMPF R6 #00AA + 0x8C18010B, // 009D GETMET R6 R0 K11 + 0x7C180200, // 009E CALL R6 1 + 0x88180D0C, // 009F GETMBR R6 R6 K12 + 0xB81E1A00, // 00A0 GETNGBL R7 K13 + 0x881C0F0E, // 00A1 GETMBR R7 R7 K14 + 0x881C0F1D, // 00A2 GETMBR R7 R7 K29 + 0x1C180C07, // 00A3 EQ R6 R6 R7 + 0x781A0004, // 00A4 JMPF R6 #00AA + 0x8C18010B, // 00A5 GETMET R6 R0 K11 + 0x7C180200, // 00A6 CALL R6 1 + 0x88140D1E, // 00A7 GETMBR R5 R6 K30 + 0x8C180100, // 00A8 GETMET R6 R0 K0 + 0x7C180200, // 00A9 CALL R6 1 + 0x8C180110, // 00AA GETMET R6 R0 K16 + 0x7C180200, // 00AB CALL R6 1 + 0x741A000F, // 00AC JMPT R6 #00BD + 0x8C18010B, // 00AD GETMET R6 R0 K11 + 0x7C180200, // 00AE CALL R6 1 + 0x4C1C0000, // 00AF LDNIL R7 + 0x201C0C07, // 00B0 NE R7 R6 R7 + 0x781E0008, // 00B1 JMPF R7 #00BB + 0x881C0D0C, // 00B2 GETMBR R7 R6 K12 + 0xB8221A00, // 00B3 GETNGBL R8 K13 + 0x8820110E, // 00B4 GETMBR R8 R8 K14 + 0x8820111F, // 00B5 GETMBR R8 R8 K31 + 0x1C1C0E08, // 00B6 EQ R7 R7 R8 + 0x781E0002, // 00B7 JMPF R7 #00BB + 0x8C1C0100, // 00B8 GETMET R7 R0 K0 + 0x7C1C0200, // 00B9 CALL R7 1 + 0x70020000, // 00BA JMP #00BC + 0x70020000, // 00BB JMP #00BD + 0x7001FFEC, // 00BC JMP #00AA + 0x7002002E, // 00BD JMP #00ED + 0x8C18010B, // 00BE GETMET R6 R0 K11 + 0x7C180200, // 00BF CALL R6 1 + 0x4C1C0000, // 00C0 LDNIL R7 + 0x20180C07, // 00C1 NE R6 R6 R7 + 0x781A000C, // 00C2 JMPF R6 #00D0 + 0x8C18010B, // 00C3 GETMET R6 R0 K11 + 0x7C180200, // 00C4 CALL R6 1 + 0x88180D0C, // 00C5 GETMBR R6 R6 K12 + 0xB81E1A00, // 00C6 GETNGBL R7 K13 + 0x881C0F0E, // 00C7 GETMBR R7 R7 K14 + 0x881C0F1F, // 00C8 GETMBR R7 R7 K31 + 0x1C180C07, // 00C9 EQ R6 R6 R7 + 0x781A0004, // 00CA JMPF R6 #00D0 + 0x8C180100, // 00CB GETMET R6 R0 K0 + 0x7C180200, // 00CC CALL R6 1 + 0x8C180107, // 00CD GETMET R6 R0 K7 + 0x7C180200, // 00CE CALL R6 1 + 0x7002001C, // 00CF JMP #00ED + 0x8C180108, // 00D0 GETMET R6 R0 K8 + 0x7C180200, // 00D1 CALL R6 1 + 0x741A0019, // 00D2 JMPT R6 #00ED + 0x8C18010B, // 00D3 GETMET R6 R0 K11 + 0x7C180200, // 00D4 CALL R6 1 + 0x4C1C0000, // 00D5 LDNIL R7 + 0x20180C07, // 00D6 NE R6 R6 R7 + 0x781A000D, // 00D7 JMPF R6 #00E6 + 0x8C18010B, // 00D8 GETMET R6 R0 K11 + 0x7C180200, // 00D9 CALL R6 1 + 0x88180D0C, // 00DA GETMBR R6 R6 K12 + 0xB81E1A00, // 00DB GETNGBL R7 K13 + 0x881C0F0E, // 00DC GETMBR R7 R7 K14 + 0x881C0F1D, // 00DD GETMBR R7 R7 K29 + 0x1C180C07, // 00DE EQ R6 R6 R7 + 0x781A0005, // 00DF JMPF R6 #00E6 + 0x8C18010B, // 00E0 GETMET R6 R0 K11 + 0x7C180200, // 00E1 CALL R6 1 + 0x88140D1E, // 00E2 GETMBR R5 R6 K30 + 0x8C180100, // 00E3 GETMET R6 R0 K0 + 0x7C180200, // 00E4 CALL R6 1 + 0x70020006, // 00E5 JMP #00ED + 0x8C180108, // 00E6 GETMET R6 R0 K8 + 0x7C180200, // 00E7 CALL R6 1 + 0x741A0003, // 00E8 JMPT R6 #00ED + 0x8C180109, // 00E9 GETMET R6 R0 K9 + 0x58200020, // 00EA LDCONST R8 K32 + 0x7C180400, // 00EB CALL R6 2 + 0x70020003, // 00EC JMP #00F1 + 0x8C180719, // 00ED GETMET R6 R3 K25 + 0x5C200A00, // 00EE MOVE R8 R5 + 0x7C180400, // 00EF CALL R6 2 + 0x7001FF3C, // 00F0 JMP #002E + 0x8C140121, // 00F1 GETMET R5 R0 K33 + 0x7C140200, // 00F2 CALL R5 1 + 0x8C140122, // 00F3 GETMET R5 R0 K34 + 0x7C140200, // 00F4 CALL R5 1 + 0x50180000, // 00F5 LDBOOL R6 0 0 + 0x601C0010, // 00F6 GETGBL R7 G16 + 0x5C200600, // 00F7 MOVE R8 R3 + 0x7C1C0200, // 00F8 CALL R7 1 + 0xA8020008, // 00F9 EXBLK 0 #0103 + 0x5C200E00, // 00FA MOVE R8 R7 + 0x7C200000, // 00FB CALL R8 0 + 0x2024111B, // 00FC NE R9 R8 K27 + 0x78260001, // 00FD JMPF R9 #0100 + 0x50180200, // 00FE LDBOOL R6 1 0 + 0x70020000, // 00FF JMP #0101 + 0x7001FFF8, // 0100 JMP #00FA + 0xA8040001, // 0101 EXBLK 1 1 + 0x70020002, // 0102 JMP #0106 + 0x581C0023, // 0103 LDCONST R7 K35 + 0xAC1C0200, // 0104 CATCH R7 1 0 + 0xB0080000, // 0105 RAISE 2 R0 R0 + 0x781A002C, // 0106 JMPF R6 #0134 + 0x8C1C0124, // 0107 GETMET R7 R0 K36 + 0x60240018, // 0108 GETGBL R9 G24 + 0x58280025, // 0109 LDCONST R10 K37 + 0x5C2C0200, // 010A MOVE R11 R1 + 0x5C300A00, // 010B MOVE R12 R5 + 0x7C240600, // 010C CALL R9 3 + 0x7C1C0400, // 010D CALL R7 2 + 0x601C0010, // 010E GETGBL R7 G16 + 0x6020000C, // 010F GETGBL R8 G12 + 0x5C240400, // 0110 MOVE R9 R2 + 0x7C200200, // 0111 CALL R8 1 + 0x04201127, // 0112 SUB R8 R8 K39 + 0x40224C08, // 0113 CONNECT R8 K38 R8 + 0x7C1C0200, // 0114 CALL R7 1 + 0xA8020016, // 0115 EXBLK 0 #012D + 0x5C200E00, // 0116 MOVE R8 R7 + 0x7C200000, // 0117 CALL R8 0 + 0x60240018, // 0118 GETGBL R9 G24 + 0x58280028, // 0119 LDCONST R10 K40 + 0x942C0408, // 011A GETIDX R11 R2 R8 + 0x7C240400, // 011B CALL R9 2 + 0x94280608, // 011C GETIDX R10 R3 R8 + 0x202C151B, // 011D NE R11 R10 K27 + 0x782E0004, // 011E JMPF R11 #0124 + 0x602C0018, // 011F GETGBL R11 G24 + 0x58300029, // 0120 LDCONST R12 K41 + 0x5C341400, // 0121 MOVE R13 R10 + 0x7C2C0400, // 0122 CALL R11 2 + 0x70020000, // 0123 JMP #0125 + 0x582C001B, // 0124 LDCONST R11 K27 + 0x8C300124, // 0125 GETMET R12 R0 K36 + 0x60380018, // 0126 GETGBL R14 G24 + 0x583C002A, // 0127 LDCONST R15 K42 + 0x5C401200, // 0128 MOVE R16 R9 + 0x5C441600, // 0129 MOVE R17 R11 + 0x7C380600, // 012A CALL R14 3 + 0x7C300400, // 012B CALL R12 2 + 0x7001FFE8, // 012C JMP #0116 + 0x581C0023, // 012D LDCONST R7 K35 + 0xAC1C0200, // 012E CATCH R7 1 0 + 0xB0080000, // 012F RAISE 2 R0 R0 + 0x8C1C0124, // 0130 GETMET R7 R0 K36 + 0x5824002B, // 0131 LDCONST R9 K43 + 0x7C1C0400, // 0132 CALL R7 2 + 0x70020022, // 0133 JMP #0157 + 0x581C001B, // 0134 LDCONST R7 K27 + 0x60200010, // 0135 GETGBL R8 G16 + 0x6024000C, // 0136 GETGBL R9 G12 + 0x5C280400, // 0137 MOVE R10 R2 + 0x7C240200, // 0138 CALL R9 1 + 0x04241327, // 0139 SUB R9 R9 K39 + 0x40264C09, // 013A CONNECT R9 K38 R9 + 0x7C200200, // 013B CALL R8 1 + 0xA802000E, // 013C EXBLK 0 #014C + 0x5C241000, // 013D MOVE R9 R8 + 0x7C240000, // 013E CALL R9 0 + 0x24281326, // 013F GT R10 R9 K38 + 0x782A0000, // 0140 JMPF R10 #0142 + 0x001C0F2C, // 0141 ADD R7 R7 K44 + 0x60280018, // 0142 GETGBL R10 G24 + 0x582C0028, // 0143 LDCONST R11 K40 + 0x94300409, // 0144 GETIDX R12 R2 R9 + 0x7C280400, // 0145 CALL R10 2 + 0x602C0018, // 0146 GETGBL R11 G24 + 0x5830002D, // 0147 LDCONST R12 K45 + 0x5C341400, // 0148 MOVE R13 R10 + 0x7C2C0400, // 0149 CALL R11 2 + 0x001C0E0B, // 014A ADD R7 R7 R11 + 0x7001FFF0, // 014B JMP #013D + 0x58200023, // 014C LDCONST R8 K35 + 0xAC200200, // 014D CATCH R8 1 0 + 0xB0080000, // 014E RAISE 2 R0 R0 + 0x8C200124, // 014F GETMET R8 R0 K36 + 0x60280018, // 0150 GETGBL R10 G24 + 0x582C002E, // 0151 LDCONST R11 K46 + 0x5C300200, // 0152 MOVE R12 R1 + 0x5C340E00, // 0153 MOVE R13 R7 + 0x5C380A00, // 0154 MOVE R14 R5 + 0x7C280800, // 0155 CALL R10 4 + 0x7C200400, // 0156 CALL R8 2 + 0x881C012F, // 0157 GETMBR R7 R0 K47 + 0x8C1C0F30, // 0158 GETMET R7 R7 K48 + 0x5C240200, // 0159 MOVE R9 R1 + 0x4C280000, // 015A LDNIL R10 + 0x7C1C0600, // 015B CALL R7 3 + 0x80000000, // 015C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_error_report +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(has_errors), + /* K1 */ be_nested_str_weak(No_X20compilation_X20errors), + /* K2 */ be_nested_str_weak(Compilation_X20errors_X3A_X0A), + /* K3 */ be_nested_str_weak(errors), + /* K4 */ be_nested_str_weak(_X20_X20), + /* K5 */ be_nested_str_weak(_X0A), + /* K6 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(get_error_report), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060000, // 0002 JMPT R1 #0004 + 0x80060200, // 0003 RET 1 K1 + 0x58040002, // 0004 LDCONST R1 K2 + 0x60080010, // 0005 GETGBL R2 G16 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020005, // 0008 EXBLK 0 #000F + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x00120803, // 000B ADD R4 K4 R3 + 0x00100905, // 000C ADD R4 R4 K5 + 0x00040204, // 000D ADD R1 R1 R4 + 0x7001FFF9, // 000E JMP #0009 + 0x58080006, // 000F LDCONST R2 K6 + 0xAC080200, // 0010 CATCH R2 1 0 + 0xB0080000, // 0011 RAISE 2 R0 R0 + 0x80040200, // 0012 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_color_provider_factory_exists +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(_symbol_entry), + /* K5 */ be_nested_str_weak(TYPE_COLOR_CONSTRUCTOR), + }), + be_str_weak(_validate_color_provider_factory_exists), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0005, // 0006 JMPF R3 #000D + 0x880C0502, // 0007 GETMBR R3 R2 K2 + 0xB8120600, // 0008 GETNGBL R4 K3 + 0x88100904, // 0009 GETMBR R4 R4 K4 + 0x88100905, // 000A GETMBR R4 R4 K5 + 0x1C0C0604, // 000B EQ R3 R3 R4 + 0x740E0000, // 000C JMPT R3 #000E + 0x500C0001, // 000D LDBOOL R3 0 1 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_array_literal +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_bracket), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_bracket), + /* K3 */ be_nested_str_weak(process_value), + /* K4 */ be_nested_str_weak(CONTEXT_ARRAY_ELEMENT), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_nested_str_weak(expr), + /* K7 */ be_nested_str_weak(current), + /* K8 */ be_nested_str_weak(type), + /* K9 */ be_nested_str_weak(animation_dsl), + /* K10 */ be_nested_str_weak(Token), + /* K11 */ be_nested_str_weak(COMMA), + /* K12 */ be_nested_str_weak(next), + /* K13 */ be_nested_str_weak(error), + /* K14 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20array_X20literal), + /* K15 */ be_nested_str_weak(expect_right_bracket), + /* K16 */ be_nested_str_weak(_X5B), + /* K17 */ be_const_int(0), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_str_weak(_X2C_X20), + /* K20 */ be_nested_str_weak(stop_iteration), + /* K21 */ be_nested_str_weak(_X5D), + }), + be_str_weak(process_array_literal), + &be_const_str_solidified, + ( &(const binstruction[64]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x60040012, // 0002 GETGBL R1 G18 + 0x7C040000, // 0003 CALL R1 0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x740A0020, // 0006 JMPT R2 #0028 + 0x8C080102, // 0007 GETMET R2 R0 K2 + 0x7C080200, // 0008 CALL R2 1 + 0x740A001D, // 0009 JMPT R2 #0028 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x88100104, // 000B GETMBR R4 R0 K4 + 0x7C080400, // 000C CALL R2 2 + 0x8C0C0305, // 000D GETMET R3 R1 K5 + 0x88140506, // 000E GETMBR R5 R2 K6 + 0x7C0C0400, // 000F CALL R3 2 + 0x8C0C0107, // 0010 GETMET R3 R0 K7 + 0x7C0C0200, // 0011 CALL R3 1 + 0x4C100000, // 0012 LDNIL R4 + 0x200C0604, // 0013 NE R3 R3 R4 + 0x780E000A, // 0014 JMPF R3 #0020 + 0x8C0C0107, // 0015 GETMET R3 R0 K7 + 0x7C0C0200, // 0016 CALL R3 1 + 0x880C0708, // 0017 GETMBR R3 R3 K8 + 0xB8121200, // 0018 GETNGBL R4 K9 + 0x8810090A, // 0019 GETMBR R4 R4 K10 + 0x8810090B, // 001A GETMBR R4 R4 K11 + 0x1C0C0604, // 001B EQ R3 R3 R4 + 0x780E0002, // 001C JMPF R3 #0020 + 0x8C0C010C, // 001D GETMET R3 R0 K12 + 0x7C0C0200, // 001E CALL R3 1 + 0x70020006, // 001F JMP #0027 + 0x8C0C0102, // 0020 GETMET R3 R0 K2 + 0x7C0C0200, // 0021 CALL R3 1 + 0x740E0003, // 0022 JMPT R3 #0027 + 0x8C0C010D, // 0023 GETMET R3 R0 K13 + 0x5814000E, // 0024 LDCONST R5 K14 + 0x7C0C0400, // 0025 CALL R3 2 + 0x70020000, // 0026 JMP #0028 + 0x7001FFDB, // 0027 JMP #0004 + 0x8C08010F, // 0028 GETMET R2 R0 K15 + 0x7C080200, // 0029 CALL R2 1 + 0x58080010, // 002A LDCONST R2 K16 + 0x600C0010, // 002B GETGBL R3 G16 + 0x6010000C, // 002C GETGBL R4 G12 + 0x5C140200, // 002D MOVE R5 R1 + 0x7C100200, // 002E CALL R4 1 + 0x04100912, // 002F SUB R4 R4 K18 + 0x40122204, // 0030 CONNECT R4 K17 R4 + 0x7C0C0200, // 0031 CALL R3 1 + 0xA8020007, // 0032 EXBLK 0 #003B + 0x5C100600, // 0033 MOVE R4 R3 + 0x7C100000, // 0034 CALL R4 0 + 0x24140911, // 0035 GT R5 R4 K17 + 0x78160000, // 0036 JMPF R5 #0038 + 0x00080513, // 0037 ADD R2 R2 K19 + 0x94140204, // 0038 GETIDX R5 R1 R4 + 0x00080405, // 0039 ADD R2 R2 R5 + 0x7001FFF7, // 003A JMP #0033 + 0x580C0014, // 003B LDCONST R3 K20 + 0xAC0C0200, // 003C CATCH R3 1 0 + 0xB0080000, // 003D RAISE 2 R0 R0 + 0x00080515, // 003E ADD R2 R2 K21 + 0x80040400, // 003F RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_right_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_BRACE), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X7D_X27), + }), + be_str_weak(expect_right_brace), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_multiplicative_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ + be_nested_proto( + 15, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(process_unary_expression), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(MULTIPLY), + /* K7 */ be_nested_str_weak(DIVIDE), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(ExpressionResult), + /* K11 */ be_nested_str_weak(combine), + /* K12 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K13 */ be_nested_str_weak(expr), + }), + be_str_weak(process_multiplicative_expression), + &be_const_str_solidified, + ( &(const binstruction[49]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x5C180200, // 0001 MOVE R6 R1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x5C200600, // 0003 MOVE R8 R3 + 0x7C100800, // 0004 CALL R4 4 + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x74160027, // 0007 JMPT R5 #0030 + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0x4C180000, // 000A LDNIL R6 + 0x20180A06, // 000B NE R6 R5 R6 + 0x781A0020, // 000C JMPF R6 #002E + 0x88180B03, // 000D GETMBR R6 R5 K3 + 0xB81E0800, // 000E GETNGBL R7 K4 + 0x881C0F05, // 000F GETMBR R7 R7 K5 + 0x881C0F06, // 0010 GETMBR R7 R7 K6 + 0x1C180C07, // 0011 EQ R6 R6 R7 + 0x741A0005, // 0012 JMPT R6 #0019 + 0x88180B03, // 0013 GETMBR R6 R5 K3 + 0xB81E0800, // 0014 GETNGBL R7 K4 + 0x881C0F05, // 0015 GETMBR R7 R7 K5 + 0x881C0F07, // 0016 GETMBR R7 R7 K7 + 0x1C180C07, // 0017 EQ R6 R6 R7 + 0x781A0014, // 0018 JMPF R6 #002E + 0x88180B08, // 0019 GETMBR R6 R5 K8 + 0x8C1C0109, // 001A GETMET R7 R0 K9 + 0x7C1C0200, // 001B CALL R7 1 + 0x8C1C0100, // 001C GETMET R7 R0 K0 + 0x5C240200, // 001D MOVE R9 R1 + 0x50280000, // 001E LDBOOL R10 0 0 + 0x5C2C0600, // 001F MOVE R11 R3 + 0x7C1C0800, // 0020 CALL R7 4 + 0x8820010A, // 0021 GETMBR R8 R0 K10 + 0x8C20110B, // 0022 GETMET R8 R8 K11 + 0x60280018, // 0023 GETGBL R10 G24 + 0x582C000C, // 0024 LDCONST R11 K12 + 0x8830090D, // 0025 GETMBR R12 R4 K13 + 0x5C340C00, // 0026 MOVE R13 R6 + 0x88380F0D, // 0027 GETMBR R14 R7 K13 + 0x7C280800, // 0028 CALL R10 4 + 0x5C2C0800, // 0029 MOVE R11 R4 + 0x5C300E00, // 002A MOVE R12 R7 + 0x7C200800, // 002B CALL R8 4 + 0x5C101000, // 002C MOVE R4 R8 + 0x70020000, // 002D JMP #002F + 0x70020000, // 002E JMP #0030 + 0x7001FFD4, // 002F JMP #0005 + 0x80040800, // 0030 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[48]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(EOF), + /* K5 */ be_nested_str_weak(COMMENT), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(get_indent), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(NEWLINE), + /* K11 */ be_nested_str_weak(KEYWORD), + /* K12 */ be_nested_str_weak(play), + /* K13 */ be_nested_str_weak(process_play_statement_fluent), + /* K14 */ be_nested_str_weak(wait), + /* K15 */ be_nested_str_weak(process_wait_statement_fluent), + /* K16 */ be_nested_str_weak(IDENTIFIER), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(process_log_statement_fluent), + /* K19 */ be_nested_str_weak(restart), + /* K20 */ be_nested_str_weak(process_restart_statement_fluent), + /* K21 */ be_nested_str_weak(reset), + /* K22 */ be_nested_str_weak(error), + /* K23 */ be_nested_str_weak(_X27reset_X27_X20command_X20is_X20no_X20longer_X20supported_X2E_X20Use_X20_X27restart_X27_X20instead_X2E), + /* K24 */ be_nested_str_weak(skip_statement), + /* K25 */ be_nested_str_weak(repeat), + /* K26 */ be_nested_str_weak(1), + /* K27 */ be_nested_str_weak(forever), + /* K28 */ be_nested_str_weak(_X2D1), + /* K29 */ be_nested_str_weak(process_value), + /* K30 */ be_nested_str_weak(CONTEXT_REPEAT_COUNT), + /* K31 */ be_nested_str_weak(expect_keyword), + /* K32 */ be_nested_str_weak(times), + /* K33 */ be_nested_str_weak(expr), + /* K34 */ be_nested_str_weak(expect_left_brace), + /* K35 */ be_nested_str_weak(_X25s_X2Epush_repeat_subsequence_X28animation_X2ESequenceManager_X28engine_X2C_X20_X25s_X29), + /* K36 */ be_nested_str_weak(indent_level), + /* K37 */ be_const_int(1), + /* K38 */ be_nested_str_weak(at_end), + /* K39 */ be_nested_str_weak(check_right_brace), + /* K40 */ be_nested_str_weak(process_sequence_statement), + /* K41 */ be_nested_str_weak(expect_right_brace), + /* K42 */ be_nested_str_weak(_X25s_X29), + /* K43 */ be_nested_str_weak(peek), + /* K44 */ be_nested_str_weak(DOT), + /* K45 */ be_nested_str_weak(process_sequence_assignment_fluent), + /* K46 */ be_nested_str_weak(Unknown_X20command_X20_X27_X25s_X27_X20in_X20sequence_X2E_X20Valid_X20sequence_X20commands_X20are_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments_X20_X28object_X2Eproperty_X20_X3D_X20value_X29), + /* K47 */ be_nested_str_weak(Invalid_X20statement_X20in_X20sequence_X2E_X20Expected_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments), + }), + be_str_weak(process_sequence_statement), + &be_const_str_solidified, + ( &(const binstruction[210]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C080202, // 0003 EQ R2 R1 R2 + 0x740A0005, // 0004 JMPT R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0000, // 000A JMPF R2 #000C + 0x80000400, // 000B RET 0 + 0x88080301, // 000C GETMBR R2 R1 K1 + 0xB80E0400, // 000D GETNGBL R3 K2 + 0x880C0703, // 000E GETMBR R3 R3 K3 + 0x880C0705, // 000F GETMBR R3 R3 K5 + 0x1C080403, // 0010 EQ R2 R2 R3 + 0x780A0008, // 0011 JMPF R2 #001B + 0x8C080106, // 0012 GETMET R2 R0 K6 + 0x8C100107, // 0013 GETMET R4 R0 K7 + 0x7C100200, // 0014 CALL R4 1 + 0x88140308, // 0015 GETMBR R5 R1 K8 + 0x00100805, // 0016 ADD R4 R4 R5 + 0x7C080400, // 0017 CALL R2 2 + 0x8C080109, // 0018 GETMET R2 R0 K9 + 0x7C080200, // 0019 CALL R2 1 + 0x80000400, // 001A RET 0 + 0x88080301, // 001B GETMBR R2 R1 K1 + 0xB80E0400, // 001C GETNGBL R3 K2 + 0x880C0703, // 001D GETMBR R3 R3 K3 + 0x880C070A, // 001E GETMBR R3 R3 K10 + 0x1C080403, // 001F EQ R2 R2 R3 + 0x780A0002, // 0020 JMPF R2 #0024 + 0x8C080109, // 0021 GETMET R2 R0 K9 + 0x7C080200, // 0022 CALL R2 1 + 0x80000400, // 0023 RET 0 + 0x88080301, // 0024 GETMBR R2 R1 K1 + 0xB80E0400, // 0025 GETNGBL R3 K2 + 0x880C0703, // 0026 GETMBR R3 R3 K3 + 0x880C070B, // 0027 GETMBR R3 R3 K11 + 0x1C080403, // 0028 EQ R2 R2 R3 + 0x780A0005, // 0029 JMPF R2 #0030 + 0x88080308, // 002A GETMBR R2 R1 K8 + 0x1C08050C, // 002B EQ R2 R2 K12 + 0x780A0002, // 002C JMPF R2 #0030 + 0x8C08010D, // 002D GETMET R2 R0 K13 + 0x7C080200, // 002E CALL R2 1 + 0x700200A0, // 002F JMP #00D1 + 0x88080301, // 0030 GETMBR R2 R1 K1 + 0xB80E0400, // 0031 GETNGBL R3 K2 + 0x880C0703, // 0032 GETMBR R3 R3 K3 + 0x880C070B, // 0033 GETMBR R3 R3 K11 + 0x1C080403, // 0034 EQ R2 R2 R3 + 0x780A0005, // 0035 JMPF R2 #003C + 0x88080308, // 0036 GETMBR R2 R1 K8 + 0x1C08050E, // 0037 EQ R2 R2 K14 + 0x780A0002, // 0038 JMPF R2 #003C + 0x8C08010F, // 0039 GETMET R2 R0 K15 + 0x7C080200, // 003A CALL R2 1 + 0x70020094, // 003B JMP #00D1 + 0x88080301, // 003C GETMBR R2 R1 K1 + 0xB80E0400, // 003D GETNGBL R3 K2 + 0x880C0703, // 003E GETMBR R3 R3 K3 + 0x880C0710, // 003F GETMBR R3 R3 K16 + 0x1C080403, // 0040 EQ R2 R2 R3 + 0x780A0005, // 0041 JMPF R2 #0048 + 0x88080308, // 0042 GETMBR R2 R1 K8 + 0x1C080511, // 0043 EQ R2 R2 K17 + 0x780A0002, // 0044 JMPF R2 #0048 + 0x8C080112, // 0045 GETMET R2 R0 K18 + 0x7C080200, // 0046 CALL R2 1 + 0x70020088, // 0047 JMP #00D1 + 0x88080301, // 0048 GETMBR R2 R1 K1 + 0xB80E0400, // 0049 GETNGBL R3 K2 + 0x880C0703, // 004A GETMBR R3 R3 K3 + 0x880C070B, // 004B GETMBR R3 R3 K11 + 0x1C080403, // 004C EQ R2 R2 R3 + 0x780A0005, // 004D JMPF R2 #0054 + 0x88080308, // 004E GETMBR R2 R1 K8 + 0x1C080513, // 004F EQ R2 R2 K19 + 0x780A0002, // 0050 JMPF R2 #0054 + 0x8C080114, // 0051 GETMET R2 R0 K20 + 0x7C080200, // 0052 CALL R2 1 + 0x7002007C, // 0053 JMP #00D1 + 0x88080301, // 0054 GETMBR R2 R1 K1 + 0xB80E0400, // 0055 GETNGBL R3 K2 + 0x880C0703, // 0056 GETMBR R3 R3 K3 + 0x880C070B, // 0057 GETMBR R3 R3 K11 + 0x1C080403, // 0058 EQ R2 R2 R3 + 0x780A0008, // 0059 JMPF R2 #0063 + 0x88080308, // 005A GETMBR R2 R1 K8 + 0x1C080515, // 005B EQ R2 R2 K21 + 0x780A0005, // 005C JMPF R2 #0063 + 0x8C080116, // 005D GETMET R2 R0 K22 + 0x58100017, // 005E LDCONST R4 K23 + 0x7C080400, // 005F CALL R2 2 + 0x8C080118, // 0060 GETMET R2 R0 K24 + 0x7C080200, // 0061 CALL R2 1 + 0x7002006D, // 0062 JMP #00D1 + 0x88080301, // 0063 GETMBR R2 R1 K1 + 0xB80E0400, // 0064 GETNGBL R3 K2 + 0x880C0703, // 0065 GETMBR R3 R3 K3 + 0x880C070B, // 0066 GETMBR R3 R3 K11 + 0x1C080403, // 0067 EQ R2 R2 R3 + 0x780A0041, // 0068 JMPF R2 #00AB + 0x88080308, // 0069 GETMBR R2 R1 K8 + 0x1C080519, // 006A EQ R2 R2 K25 + 0x780A003E, // 006B JMPF R2 #00AB + 0x8C080109, // 006C GETMET R2 R0 K9 + 0x7C080200, // 006D CALL R2 1 + 0x5808001A, // 006E LDCONST R2 K26 + 0x8C0C0100, // 006F GETMET R3 R0 K0 + 0x7C0C0200, // 0070 CALL R3 1 + 0x4C100000, // 0071 LDNIL R4 + 0x20100604, // 0072 NE R4 R3 R4 + 0x7812000C, // 0073 JMPF R4 #0081 + 0x88100701, // 0074 GETMBR R4 R3 K1 + 0xB8160400, // 0075 GETNGBL R5 K2 + 0x88140B03, // 0076 GETMBR R5 R5 K3 + 0x88140B0B, // 0077 GETMBR R5 R5 K11 + 0x1C100805, // 0078 EQ R4 R4 R5 + 0x78120006, // 0079 JMPF R4 #0081 + 0x88100708, // 007A GETMBR R4 R3 K8 + 0x1C10091B, // 007B EQ R4 R4 K27 + 0x78120003, // 007C JMPF R4 #0081 + 0x8C100109, // 007D GETMET R4 R0 K9 + 0x7C100200, // 007E CALL R4 1 + 0x5808001C, // 007F LDCONST R2 K28 + 0x70020006, // 0080 JMP #0088 + 0x8C10011D, // 0081 GETMET R4 R0 K29 + 0x8818011E, // 0082 GETMBR R6 R0 K30 + 0x7C100400, // 0083 CALL R4 2 + 0x8C14011F, // 0084 GETMET R5 R0 K31 + 0x581C0020, // 0085 LDCONST R7 K32 + 0x7C140400, // 0086 CALL R5 2 + 0x88080921, // 0087 GETMBR R2 R4 K33 + 0x8C100122, // 0088 GETMET R4 R0 K34 + 0x7C100200, // 0089 CALL R4 1 + 0x8C100106, // 008A GETMET R4 R0 K6 + 0x60180018, // 008B GETGBL R6 G24 + 0x581C0023, // 008C LDCONST R7 K35 + 0x8C200107, // 008D GETMET R8 R0 K7 + 0x7C200200, // 008E CALL R8 1 + 0x5C240400, // 008F MOVE R9 R2 + 0x7C180600, // 0090 CALL R6 3 + 0x7C100400, // 0091 CALL R4 2 + 0x88100124, // 0092 GETMBR R4 R0 K36 + 0x00100925, // 0093 ADD R4 R4 K37 + 0x90024804, // 0094 SETMBR R0 K36 R4 + 0x8C100126, // 0095 GETMET R4 R0 K38 + 0x7C100200, // 0096 CALL R4 1 + 0x74120005, // 0097 JMPT R4 #009E + 0x8C100127, // 0098 GETMET R4 R0 K39 + 0x7C100200, // 0099 CALL R4 1 + 0x74120002, // 009A JMPT R4 #009E + 0x8C100128, // 009B GETMET R4 R0 K40 + 0x7C100200, // 009C CALL R4 1 + 0x7001FFF6, // 009D JMP #0095 + 0x8C100129, // 009E GETMET R4 R0 K41 + 0x7C100200, // 009F CALL R4 1 + 0x8C100106, // 00A0 GETMET R4 R0 K6 + 0x60180018, // 00A1 GETGBL R6 G24 + 0x581C002A, // 00A2 LDCONST R7 K42 + 0x8C200107, // 00A3 GETMET R8 R0 K7 + 0x7C200200, // 00A4 CALL R8 1 + 0x7C180400, // 00A5 CALL R6 2 + 0x7C100400, // 00A6 CALL R4 2 + 0x88100124, // 00A7 GETMBR R4 R0 K36 + 0x04100925, // 00A8 SUB R4 R4 K37 + 0x90024804, // 00A9 SETMBR R0 K36 R4 + 0x70020025, // 00AA JMP #00D1 + 0x88080301, // 00AB GETMBR R2 R1 K1 + 0xB80E0400, // 00AC GETNGBL R3 K2 + 0x880C0703, // 00AD GETMBR R3 R3 K3 + 0x880C0710, // 00AE GETMBR R3 R3 K16 + 0x1C080403, // 00AF EQ R2 R2 R3 + 0x780A0018, // 00B0 JMPF R2 #00CA + 0x8C08012B, // 00B1 GETMET R2 R0 K43 + 0x7C080200, // 00B2 CALL R2 1 + 0x4C0C0000, // 00B3 LDNIL R3 + 0x20080403, // 00B4 NE R2 R2 R3 + 0x780A000A, // 00B5 JMPF R2 #00C1 + 0x8C08012B, // 00B6 GETMET R2 R0 K43 + 0x7C080200, // 00B7 CALL R2 1 + 0x88080501, // 00B8 GETMBR R2 R2 K1 + 0xB80E0400, // 00B9 GETNGBL R3 K2 + 0x880C0703, // 00BA GETMBR R3 R3 K3 + 0x880C072C, // 00BB GETMBR R3 R3 K44 + 0x1C080403, // 00BC EQ R2 R2 R3 + 0x780A0002, // 00BD JMPF R2 #00C1 + 0x8C08012D, // 00BE GETMET R2 R0 K45 + 0x7C080200, // 00BF CALL R2 1 + 0x70020007, // 00C0 JMP #00C9 + 0x8C080116, // 00C1 GETMET R2 R0 K22 + 0x60100018, // 00C2 GETGBL R4 G24 + 0x5814002E, // 00C3 LDCONST R5 K46 + 0x88180308, // 00C4 GETMBR R6 R1 K8 + 0x7C100400, // 00C5 CALL R4 2 + 0x7C080400, // 00C6 CALL R2 2 + 0x8C080118, // 00C7 GETMET R2 R0 K24 + 0x7C080200, // 00C8 CALL R2 1 + 0x70020006, // 00C9 JMP #00D1 + 0x8C080116, // 00CA GETMET R2 R0 K22 + 0x60100018, // 00CB GETGBL R4 G24 + 0x5814002F, // 00CC LDCONST R5 K47 + 0x7C100200, // 00CD CALL R4 1 + 0x7C080400, // 00CE CALL R2 2 + 0x8C080118, // 00CF GETMET R2 R0 K24 + 0x7C080200, // 00D0 CALL R2 1 + 0x80000000, // 00D1 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_BRACKET), + }), + be_str_weak(check_right_bracket), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0005, // 0004 JMPF R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0000, // 000A JMPT R2 #000C + 0x50080001, // 000B LDBOOL R2 0 1 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x80040400, // 000D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_value_provider_factory_exists +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(_symbol_entry), + /* K5 */ be_nested_str_weak(TYPE_VALUE_PROVIDER_CONSTRUCTOR), + }), + be_str_weak(_validate_value_provider_factory_exists), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0005, // 0006 JMPF R3 #000D + 0x880C0502, // 0007 GETMBR R3 R2 K2 + 0xB8120600, // 0008 GETNGBL R4 K3 + 0x88100904, // 0009 GETMBR R4 R4 K4 + 0x88100905, // 000A GETMBR R4 R4 K5 + 0x1C0C0604, // 000B EQ R3 R3 R4 + 0x740E0000, // 000C JMPT R3 #000E + 0x500C0001, // 000D LDBOOL R3 0 1 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_statement, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[45]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(EOF), + /* K5 */ be_nested_str_weak(COMMENT), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(NEWLINE), + /* K10 */ be_nested_str_weak(KEYWORD), + /* K11 */ be_nested_str_weak(strip), + /* K12 */ be_nested_str_weak(error), + /* K13 */ be_nested_str_weak(_X27strip_X27_X20directive_X20is_X20temporarily_X20disabled_X2E_X20Strip_X20configuration_X20is_X20handled_X20automatically_X2E), + /* K14 */ be_nested_str_weak(skip_statement), + /* K15 */ be_nested_str_weak(template), + /* K16 */ be_nested_str_weak(process_template), + /* K17 */ be_nested_str_weak(strip_initialized), + /* K18 */ be_nested_str_weak(generate_default_strip_initialization), + /* K19 */ be_nested_str_weak(color), + /* K20 */ be_nested_str_weak(process_color), + /* K21 */ be_nested_str_weak(palette), + /* K22 */ be_nested_str_weak(process_palette), + /* K23 */ be_nested_str_weak(animation), + /* K24 */ be_nested_str_weak(process_animation), + /* K25 */ be_nested_str_weak(set), + /* K26 */ be_nested_str_weak(process_set), + /* K27 */ be_nested_str_weak(sequence), + /* K28 */ be_nested_str_weak(process_sequence), + /* K29 */ be_nested_str_weak(run), + /* K30 */ be_nested_str_weak(process_run), + /* K31 */ be_nested_str_weak(import), + /* K32 */ be_nested_str_weak(process_import), + /* K33 */ be_nested_str_weak(on), + /* K34 */ be_nested_str_weak(process_event_handler), + /* K35 */ be_nested_str_weak(berry), + /* K36 */ be_nested_str_weak(process_berry_code_block), + /* K37 */ be_nested_str_weak(Unknown_X20keyword_X20_X27_X25s_X27_X2E), + /* K38 */ be_nested_str_weak(IDENTIFIER), + /* K39 */ be_nested_str_weak(log), + /* K40 */ be_nested_str_weak(peek), + /* K41 */ be_nested_str_weak(LEFT_PAREN), + /* K42 */ be_nested_str_weak(process_standalone_log), + /* K43 */ be_nested_str_weak(process_property_assignment), + /* K44 */ be_nested_str_weak(Unexpected_X20token_X20_X27_X25s_X27_X2E), + }), + be_str_weak(process_statement), + &be_const_str_solidified, + ( &(const binstruction[163]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C080202, // 0003 EQ R2 R1 R2 + 0x740A0005, // 0004 JMPT R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0000, // 000A JMPF R2 #000C + 0x80000400, // 000B RET 0 + 0x88080301, // 000C GETMBR R2 R1 K1 + 0xB80E0400, // 000D GETNGBL R3 K2 + 0x880C0703, // 000E GETMBR R3 R3 K3 + 0x880C0705, // 000F GETMBR R3 R3 K5 + 0x1C080403, // 0010 EQ R2 R2 R3 + 0x780A0005, // 0011 JMPF R2 #0018 + 0x8C080106, // 0012 GETMET R2 R0 K6 + 0x88100307, // 0013 GETMBR R4 R1 K7 + 0x7C080400, // 0014 CALL R2 2 + 0x8C080108, // 0015 GETMET R2 R0 K8 + 0x7C080200, // 0016 CALL R2 1 + 0x80000400, // 0017 RET 0 + 0x88080301, // 0018 GETMBR R2 R1 K1 + 0xB80E0400, // 0019 GETNGBL R3 K2 + 0x880C0703, // 001A GETMBR R3 R3 K3 + 0x880C0709, // 001B GETMBR R3 R3 K9 + 0x1C080403, // 001C EQ R2 R2 R3 + 0x780A0002, // 001D JMPF R2 #0021 + 0x8C080108, // 001E GETMET R2 R0 K8 + 0x7C080200, // 001F CALL R2 1 + 0x80000400, // 0020 RET 0 + 0x88080301, // 0021 GETMBR R2 R1 K1 + 0xB80E0400, // 0022 GETNGBL R3 K2 + 0x880C0703, // 0023 GETMBR R3 R3 K3 + 0x880C070A, // 0024 GETMBR R3 R3 K10 + 0x1C080403, // 0025 EQ R2 R2 R3 + 0x780A0052, // 0026 JMPF R2 #007A + 0x88080307, // 0027 GETMBR R2 R1 K7 + 0x1C08050B, // 0028 EQ R2 R2 K11 + 0x780A0006, // 0029 JMPF R2 #0031 + 0x8C08010C, // 002A GETMET R2 R0 K12 + 0x5810000D, // 002B LDCONST R4 K13 + 0x7C080400, // 002C CALL R2 2 + 0x8C08010E, // 002D GETMET R2 R0 K14 + 0x7C080200, // 002E CALL R2 1 + 0x80000400, // 002F RET 0 + 0x70020047, // 0030 JMP #0079 + 0x88080307, // 0031 GETMBR R2 R1 K7 + 0x1C08050F, // 0032 EQ R2 R2 K15 + 0x780A0002, // 0033 JMPF R2 #0037 + 0x8C080110, // 0034 GETMET R2 R0 K16 + 0x7C080200, // 0035 CALL R2 1 + 0x70020041, // 0036 JMP #0079 + 0x88080111, // 0037 GETMBR R2 R0 K17 + 0x740A0001, // 0038 JMPT R2 #003B + 0x8C080112, // 0039 GETMET R2 R0 K18 + 0x7C080200, // 003A CALL R2 1 + 0x88080307, // 003B GETMBR R2 R1 K7 + 0x1C080513, // 003C EQ R2 R2 K19 + 0x780A0002, // 003D JMPF R2 #0041 + 0x8C080114, // 003E GETMET R2 R0 K20 + 0x7C080200, // 003F CALL R2 1 + 0x70020037, // 0040 JMP #0079 + 0x88080307, // 0041 GETMBR R2 R1 K7 + 0x1C080515, // 0042 EQ R2 R2 K21 + 0x780A0002, // 0043 JMPF R2 #0047 + 0x8C080116, // 0044 GETMET R2 R0 K22 + 0x7C080200, // 0045 CALL R2 1 + 0x70020031, // 0046 JMP #0079 + 0x88080307, // 0047 GETMBR R2 R1 K7 + 0x1C080517, // 0048 EQ R2 R2 K23 + 0x780A0002, // 0049 JMPF R2 #004D + 0x8C080118, // 004A GETMET R2 R0 K24 + 0x7C080200, // 004B CALL R2 1 + 0x7002002B, // 004C JMP #0079 + 0x88080307, // 004D GETMBR R2 R1 K7 + 0x1C080519, // 004E EQ R2 R2 K25 + 0x780A0002, // 004F JMPF R2 #0053 + 0x8C08011A, // 0050 GETMET R2 R0 K26 + 0x7C080200, // 0051 CALL R2 1 + 0x70020025, // 0052 JMP #0079 + 0x88080307, // 0053 GETMBR R2 R1 K7 + 0x1C08051B, // 0054 EQ R2 R2 K27 + 0x780A0002, // 0055 JMPF R2 #0059 + 0x8C08011C, // 0056 GETMET R2 R0 K28 + 0x7C080200, // 0057 CALL R2 1 + 0x7002001F, // 0058 JMP #0079 + 0x88080307, // 0059 GETMBR R2 R1 K7 + 0x1C08051D, // 005A EQ R2 R2 K29 + 0x780A0002, // 005B JMPF R2 #005F + 0x8C08011E, // 005C GETMET R2 R0 K30 + 0x7C080200, // 005D CALL R2 1 + 0x70020019, // 005E JMP #0079 + 0x88080307, // 005F GETMBR R2 R1 K7 + 0x1C08051F, // 0060 EQ R2 R2 K31 + 0x780A0002, // 0061 JMPF R2 #0065 + 0x8C080120, // 0062 GETMET R2 R0 K32 + 0x7C080200, // 0063 CALL R2 1 + 0x70020013, // 0064 JMP #0079 + 0x88080307, // 0065 GETMBR R2 R1 K7 + 0x1C080521, // 0066 EQ R2 R2 K33 + 0x780A0002, // 0067 JMPF R2 #006B + 0x8C080122, // 0068 GETMET R2 R0 K34 + 0x7C080200, // 0069 CALL R2 1 + 0x7002000D, // 006A JMP #0079 + 0x88080307, // 006B GETMBR R2 R1 K7 + 0x1C080523, // 006C EQ R2 R2 K35 + 0x780A0002, // 006D JMPF R2 #0071 + 0x8C080124, // 006E GETMET R2 R0 K36 + 0x7C080200, // 006F CALL R2 1 + 0x70020007, // 0070 JMP #0079 + 0x8C08010C, // 0071 GETMET R2 R0 K12 + 0x60100018, // 0072 GETGBL R4 G24 + 0x58140025, // 0073 LDCONST R5 K37 + 0x88180307, // 0074 GETMBR R6 R1 K7 + 0x7C100400, // 0075 CALL R4 2 + 0x7C080400, // 0076 CALL R2 2 + 0x8C08010E, // 0077 GETMET R2 R0 K14 + 0x7C080200, // 0078 CALL R2 1 + 0x70020027, // 0079 JMP #00A2 + 0x88080301, // 007A GETMBR R2 R1 K1 + 0xB80E0400, // 007B GETNGBL R3 K2 + 0x880C0703, // 007C GETMBR R3 R3 K3 + 0x880C0726, // 007D GETMBR R3 R3 K38 + 0x1C080403, // 007E EQ R2 R2 R3 + 0x780A0019, // 007F JMPF R2 #009A + 0x88080111, // 0080 GETMBR R2 R0 K17 + 0x740A0001, // 0081 JMPT R2 #0084 + 0x8C080112, // 0082 GETMET R2 R0 K18 + 0x7C080200, // 0083 CALL R2 1 + 0x88080307, // 0084 GETMBR R2 R1 K7 + 0x1C080527, // 0085 EQ R2 R2 K39 + 0x780A000F, // 0086 JMPF R2 #0097 + 0x8C080128, // 0087 GETMET R2 R0 K40 + 0x7C080200, // 0088 CALL R2 1 + 0x4C0C0000, // 0089 LDNIL R3 + 0x20080403, // 008A NE R2 R2 R3 + 0x780A000A, // 008B JMPF R2 #0097 + 0x8C080128, // 008C GETMET R2 R0 K40 + 0x7C080200, // 008D CALL R2 1 + 0x88080501, // 008E GETMBR R2 R2 K1 + 0xB80E0400, // 008F GETNGBL R3 K2 + 0x880C0703, // 0090 GETMBR R3 R3 K3 + 0x880C0729, // 0091 GETMBR R3 R3 K41 + 0x1C080403, // 0092 EQ R2 R2 R3 + 0x780A0002, // 0093 JMPF R2 #0097 + 0x8C08012A, // 0094 GETMET R2 R0 K42 + 0x7C080200, // 0095 CALL R2 1 + 0x70020001, // 0096 JMP #0099 + 0x8C08012B, // 0097 GETMET R2 R0 K43 + 0x7C080200, // 0098 CALL R2 1 + 0x70020007, // 0099 JMP #00A2 + 0x8C08010C, // 009A GETMET R2 R0 K12 + 0x60100018, // 009B GETGBL R4 G24 + 0x5814002C, // 009C LDCONST R5 K44 + 0x88180307, // 009D GETMBR R6 R1 K7 + 0x7C100400, // 009E CALL R4 2 + 0x7C080400, // 009F CALL R2 2 + 0x8C08010E, // 00A0 GETMET R2 R0 K14 + 0x7C080200, // 00A1 CALL R2 1 + 0x80000000, // 00A2 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_event_parameters +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_event_parameters, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(_X7B), + /* K2 */ be_nested_str_weak(at_end), + /* K3 */ be_nested_str_weak(check_right_paren), + /* K4 */ be_nested_str_weak(current), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(animation_dsl), + /* K7 */ be_nested_str_weak(Token), + /* K8 */ be_nested_str_weak(TIME), + /* K9 */ be_nested_str_weak(process_time_value), + /* K10 */ be_nested_str_weak(_X22interval_X22_X3A_X20_X25s), + /* K11 */ be_nested_str_weak(process_value), + /* K12 */ be_nested_str_weak(event_param), + /* K13 */ be_nested_str_weak(_X22value_X22_X3A_X20_X25s), + /* K14 */ be_nested_str_weak(expr), + /* K15 */ be_nested_str_weak(expect_right_paren), + /* K16 */ be_nested_str_weak(_X7D), + }), + be_str_weak(process_event_parameters), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58040001, // 0002 LDCONST R1 K1 + 0x8C080102, // 0003 GETMET R2 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x740A001D, // 0005 JMPT R2 #0024 + 0x8C080103, // 0006 GETMET R2 R0 K3 + 0x7C080200, // 0007 CALL R2 1 + 0x740A001A, // 0008 JMPT R2 #0024 + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x4C0C0000, // 000B LDNIL R3 + 0x200C0403, // 000C NE R3 R2 R3 + 0x780E000D, // 000D JMPF R3 #001C + 0x880C0505, // 000E GETMBR R3 R2 K5 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x88100907, // 0010 GETMBR R4 R4 K7 + 0x88100908, // 0011 GETMBR R4 R4 K8 + 0x1C0C0604, // 0012 EQ R3 R3 R4 + 0x780E0007, // 0013 JMPF R3 #001C + 0x8C0C0109, // 0014 GETMET R3 R0 K9 + 0x7C0C0200, // 0015 CALL R3 1 + 0x60100018, // 0016 GETGBL R4 G24 + 0x5814000A, // 0017 LDCONST R5 K10 + 0x5C180600, // 0018 MOVE R6 R3 + 0x7C100400, // 0019 CALL R4 2 + 0x00040204, // 001A ADD R1 R1 R4 + 0x70020007, // 001B JMP #0024 + 0x8C0C010B, // 001C GETMET R3 R0 K11 + 0x5814000C, // 001D LDCONST R5 K12 + 0x7C0C0400, // 001E CALL R3 2 + 0x60100018, // 001F GETGBL R4 G24 + 0x5814000D, // 0020 LDCONST R5 K13 + 0x8818070E, // 0021 GETMBR R6 R3 K14 + 0x7C100400, // 0022 CALL R4 2 + 0x00040204, // 0023 ADD R1 R1 R4 + 0x8C08010F, // 0024 GETMET R2 R0 K15 + 0x7C080200, // 0025 CALL R2 1 + 0x00040310, // 0026 ADD R1 R1 K16 + 0x80040200, // 0027 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_named_color_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_named_color_value, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get_reference), + }), + be_str_weak(get_named_color_value), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_number +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(NUMBER), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20number), + /* K9 */ be_nested_str_weak(0), + }), + be_str_weak(expect_number), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A000A, // 0004 JMPF R2 #0010 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0004, // 000A JMPF R2 #0010 + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x7C0C0200, // 000D CALL R3 1 + 0x80040400, // 000E RET 1 R2 + 0x70020003, // 000F JMP #0014 + 0x8C080107, // 0010 GETMET R2 R0 K7 + 0x58100008, // 0011 LDCONST R4 K8 + 0x7C080400, // 0012 CALL R2 2 + 0x80061200, // 0013 RET 1 K9 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_function_arguments +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_paren), + /* K3 */ be_nested_str_weak(skip_whitespace), + /* K4 */ be_nested_str_weak(process_additive_expression), + /* K5 */ be_nested_str_weak(CONTEXT_ARGUMENT), + /* K6 */ be_nested_str_weak(expr), + /* K7 */ be_nested_str_weak(process_value), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(current), + /* K10 */ be_nested_str_weak(type), + /* K11 */ be_nested_str_weak(animation_dsl), + /* K12 */ be_nested_str_weak(Token), + /* K13 */ be_nested_str_weak(COMMA), + /* K14 */ be_nested_str_weak(next), + /* K15 */ be_nested_str_weak(error), + /* K16 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K17 */ be_nested_str_weak(expect_right_paren), + /* K18 */ be_nested_str_weak(), + /* K19 */ be_const_int(0), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(_X2C_X20), + /* K22 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_function_arguments), + &be_const_str_solidified, + ( &(const binstruction[83]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x60080012, // 0002 GETGBL R2 G18 + 0x7C080000, // 0003 CALL R2 0 + 0x8C0C0101, // 0004 GETMET R3 R0 K1 + 0x7C0C0200, // 0005 CALL R3 1 + 0x740E0034, // 0006 JMPT R3 #003C + 0x8C0C0102, // 0007 GETMET R3 R0 K2 + 0x7C0C0200, // 0008 CALL R3 1 + 0x740E0031, // 0009 JMPT R3 #003C + 0x8C0C0103, // 000A GETMET R3 R0 K3 + 0x7C0C0200, // 000B CALL R3 1 + 0x8C0C0102, // 000C GETMET R3 R0 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7002002B, // 000F JMP #003C + 0x4C0C0000, // 0010 LDNIL R3 + 0x78060006, // 0011 JMPF R1 #0019 + 0x8C100104, // 0012 GETMET R4 R0 K4 + 0x88180105, // 0013 GETMBR R6 R0 K5 + 0x501C0200, // 0014 LDBOOL R7 1 0 + 0x50200200, // 0015 LDBOOL R8 1 0 + 0x7C100800, // 0016 CALL R4 4 + 0x880C0906, // 0017 GETMBR R3 R4 K6 + 0x70020003, // 0018 JMP #001D + 0x8C100107, // 0019 GETMET R4 R0 K7 + 0x88180105, // 001A GETMBR R6 R0 K5 + 0x7C100400, // 001B CALL R4 2 + 0x880C0906, // 001C GETMBR R3 R4 K6 + 0x8C100508, // 001D GETMET R4 R2 K8 + 0x5C180600, // 001E MOVE R6 R3 + 0x7C100400, // 001F CALL R4 2 + 0x8C100103, // 0020 GETMET R4 R0 K3 + 0x7C100200, // 0021 CALL R4 1 + 0x8C100109, // 0022 GETMET R4 R0 K9 + 0x7C100200, // 0023 CALL R4 1 + 0x4C140000, // 0024 LDNIL R5 + 0x20100805, // 0025 NE R4 R4 R5 + 0x7812000C, // 0026 JMPF R4 #0034 + 0x8C100109, // 0027 GETMET R4 R0 K9 + 0x7C100200, // 0028 CALL R4 1 + 0x8810090A, // 0029 GETMBR R4 R4 K10 + 0xB8161600, // 002A GETNGBL R5 K11 + 0x88140B0C, // 002B GETMBR R5 R5 K12 + 0x88140B0D, // 002C GETMBR R5 R5 K13 + 0x1C100805, // 002D EQ R4 R4 R5 + 0x78120004, // 002E JMPF R4 #0034 + 0x8C10010E, // 002F GETMET R4 R0 K14 + 0x7C100200, // 0030 CALL R4 1 + 0x8C100103, // 0031 GETMET R4 R0 K3 + 0x7C100200, // 0032 CALL R4 1 + 0x70020006, // 0033 JMP #003B + 0x8C100102, // 0034 GETMET R4 R0 K2 + 0x7C100200, // 0035 CALL R4 1 + 0x74120003, // 0036 JMPT R4 #003B + 0x8C10010F, // 0037 GETMET R4 R0 K15 + 0x58180010, // 0038 LDCONST R6 K16 + 0x7C100400, // 0039 CALL R4 2 + 0x70020000, // 003A JMP #003C + 0x7001FFC7, // 003B JMP #0004 + 0x8C0C0111, // 003C GETMET R3 R0 K17 + 0x7C0C0200, // 003D CALL R3 1 + 0x580C0012, // 003E LDCONST R3 K18 + 0x60100010, // 003F GETGBL R4 G16 + 0x6014000C, // 0040 GETGBL R5 G12 + 0x5C180400, // 0041 MOVE R6 R2 + 0x7C140200, // 0042 CALL R5 1 + 0x04140B14, // 0043 SUB R5 R5 K20 + 0x40162605, // 0044 CONNECT R5 K19 R5 + 0x7C100200, // 0045 CALL R4 1 + 0xA8020007, // 0046 EXBLK 0 #004F + 0x5C140800, // 0047 MOVE R5 R4 + 0x7C140000, // 0048 CALL R5 0 + 0x24180B13, // 0049 GT R6 R5 K19 + 0x781A0000, // 004A JMPF R6 #004C + 0x000C0715, // 004B ADD R3 R3 K21 + 0x94180405, // 004C GETIDX R6 R2 R5 + 0x000C0606, // 004D ADD R3 R3 R6 + 0x7001FFF7, // 004E JMP #0047 + 0x58100016, // 004F LDCONST R4 K22 + 0xAC100200, // 0050 CATCH R4 1 0 + 0xB0080000, // 0051 RAISE 2 R0 R0 + 0x80040600, // 0052 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_import +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(collect_inline_comment), + /* K3 */ be_nested_str_weak(add), + /* K4 */ be_nested_str_weak(import_X20_X25s_X20_X25s), + }), + be_str_weak(process_import), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x7C140600, // 000B CALL R5 3 + 0x7C0C0400, // 000C CALL R3 2 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_parameters_core +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_parameters_core, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(CONTEXT_VARIABLE), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(temp_), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(split), + /* K6 */ be_nested_str_weak(_), + /* K7 */ be_const_int(2), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(), + /* K10 */ be_nested_str_weak(_create_instance_for_validation), + /* K11 */ be_nested_str_weak(at_end), + /* K12 */ be_nested_str_weak(check_right_paren), + /* K13 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K14 */ be_nested_str_weak(expect_identifier), + /* K15 */ be_nested_str_weak(_validate_single_parameter), + /* K16 */ be_nested_str_weak(expect_assign), + /* K17 */ be_nested_str_weak(process_value), + /* K18 */ be_nested_str_weak(collect_inline_comment), + /* K19 */ be_nested_str_weak(expr), + /* K20 */ be_nested_str_weak(current), + /* K21 */ be_nested_str_weak(type), + /* K22 */ be_nested_str_weak(animation_dsl), + /* K23 */ be_nested_str_weak(Token), + /* K24 */ be_nested_str_weak(COMMENT), + /* K25 */ be_nested_str_weak(next), + /* K26 */ be_nested_str_weak(COMMA), + /* K27 */ be_nested_str_weak(NEWLINE), + /* K28 */ be_nested_str_weak(error), + /* K29 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + }), + be_str_weak(_process_parameters_core), + &be_const_str_solidified, + ( &(const binstruction[128]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x5C140200, // 0001 MOVE R5 R1 + 0x88180100, // 0002 GETMBR R6 R0 K0 + 0x1C180406, // 0003 EQ R6 R2 R6 + 0x781A0010, // 0004 JMPF R6 #0016 + 0xA41A0200, // 0005 IMPORT R6 K1 + 0x8C1C0D02, // 0006 GETMET R7 R6 K2 + 0x5C240200, // 0007 MOVE R9 R1 + 0x58280003, // 0008 LDCONST R10 K3 + 0x7C1C0600, // 0009 CALL R7 3 + 0x1C1C0F04, // 000A EQ R7 R7 K4 + 0x781E0009, // 000B JMPF R7 #0016 + 0x8C1C0D05, // 000C GETMET R7 R6 K5 + 0x5C240200, // 000D MOVE R9 R1 + 0x58280006, // 000E LDCONST R10 K6 + 0x7C1C0600, // 000F CALL R7 3 + 0x6020000C, // 0010 GETGBL R8 G12 + 0x5C240E00, // 0011 MOVE R9 R7 + 0x7C200200, // 0012 CALL R8 1 + 0x28201107, // 0013 GE R8 R8 K7 + 0x78220000, // 0014 JMPF R8 #0016 + 0x94140F08, // 0015 GETIDX R5 R7 K8 + 0x20180B09, // 0016 NE R6 R5 K9 + 0x781A0003, // 0017 JMPF R6 #001C + 0x8C18010A, // 0018 GETMET R6 R0 K10 + 0x5C200A00, // 0019 MOVE R8 R5 + 0x7C180400, // 001A CALL R6 2 + 0x5C100C00, // 001B MOVE R4 R6 + 0x8C18010B, // 001C GETMET R6 R0 K11 + 0x7C180200, // 001D CALL R6 1 + 0x741A005F, // 001E JMPT R6 #007F + 0x8C18010C, // 001F GETMET R6 R0 K12 + 0x7C180200, // 0020 CALL R6 1 + 0x741A005C, // 0021 JMPT R6 #007F + 0x8C18010D, // 0022 GETMET R6 R0 K13 + 0x7C180200, // 0023 CALL R6 1 + 0x8C18010C, // 0024 GETMET R6 R0 K12 + 0x7C180200, // 0025 CALL R6 1 + 0x781A0000, // 0026 JMPF R6 #0028 + 0x70020056, // 0027 JMP #007F + 0x8C18010E, // 0028 GETMET R6 R0 K14 + 0x7C180200, // 0029 CALL R6 1 + 0x4C1C0000, // 002A LDNIL R7 + 0x201C0807, // 002B NE R7 R4 R7 + 0x781E0006, // 002C JMPF R7 #0034 + 0x201C0B09, // 002D NE R7 R5 K9 + 0x781E0004, // 002E JMPF R7 #0034 + 0x8C1C010F, // 002F GETMET R7 R0 K15 + 0x5C240A00, // 0030 MOVE R9 R5 + 0x5C280C00, // 0031 MOVE R10 R6 + 0x5C2C0800, // 0032 MOVE R11 R4 + 0x7C1C0800, // 0033 CALL R7 4 + 0x8C1C0110, // 0034 GETMET R7 R0 K16 + 0x7C1C0200, // 0035 CALL R7 1 + 0x8C1C0111, // 0036 GETMET R7 R0 K17 + 0x88240100, // 0037 GETMBR R9 R0 K0 + 0x7C1C0400, // 0038 CALL R7 2 + 0x8C200112, // 0039 GETMET R8 R0 K18 + 0x7C200200, // 003A CALL R8 1 + 0x5C240600, // 003B MOVE R9 R3 + 0x5C280C00, // 003C MOVE R10 R6 + 0x882C0F13, // 003D GETMBR R11 R7 K19 + 0x5C301000, // 003E MOVE R12 R8 + 0x7C240600, // 003F CALL R9 3 + 0x8C24010B, // 0040 GETMET R9 R0 K11 + 0x7C240200, // 0041 CALL R9 1 + 0x7426000F, // 0042 JMPT R9 #0053 + 0x8C240114, // 0043 GETMET R9 R0 K20 + 0x7C240200, // 0044 CALL R9 1 + 0x4C280000, // 0045 LDNIL R10 + 0x2028120A, // 0046 NE R10 R9 R10 + 0x782A0008, // 0047 JMPF R10 #0051 + 0x88281315, // 0048 GETMBR R10 R9 K21 + 0xB82E2C00, // 0049 GETNGBL R11 K22 + 0x882C1717, // 004A GETMBR R11 R11 K23 + 0x882C1718, // 004B GETMBR R11 R11 K24 + 0x1C28140B, // 004C EQ R10 R10 R11 + 0x782A0002, // 004D JMPF R10 #0051 + 0x8C280119, // 004E GETMET R10 R0 K25 + 0x7C280200, // 004F CALL R10 1 + 0x70020000, // 0050 JMP #0052 + 0x70020000, // 0051 JMP #0053 + 0x7001FFEC, // 0052 JMP #0040 + 0x8C240114, // 0053 GETMET R9 R0 K20 + 0x7C240200, // 0054 CALL R9 1 + 0x4C280000, // 0055 LDNIL R10 + 0x2024120A, // 0056 NE R9 R9 R10 + 0x7826000C, // 0057 JMPF R9 #0065 + 0x8C240114, // 0058 GETMET R9 R0 K20 + 0x7C240200, // 0059 CALL R9 1 + 0x88241315, // 005A GETMBR R9 R9 K21 + 0xB82A2C00, // 005B GETNGBL R10 K22 + 0x88281517, // 005C GETMBR R10 R10 K23 + 0x8828151A, // 005D GETMBR R10 R10 K26 + 0x1C24120A, // 005E EQ R9 R9 R10 + 0x78260004, // 005F JMPF R9 #0065 + 0x8C240119, // 0060 GETMET R9 R0 K25 + 0x7C240200, // 0061 CALL R9 1 + 0x8C24010D, // 0062 GETMET R9 R0 K13 + 0x7C240200, // 0063 CALL R9 1 + 0x70020018, // 0064 JMP #007E + 0x8C240114, // 0065 GETMET R9 R0 K20 + 0x7C240200, // 0066 CALL R9 1 + 0x4C280000, // 0067 LDNIL R10 + 0x2024120A, // 0068 NE R9 R9 R10 + 0x7826000C, // 0069 JMPF R9 #0077 + 0x8C240114, // 006A GETMET R9 R0 K20 + 0x7C240200, // 006B CALL R9 1 + 0x88241315, // 006C GETMBR R9 R9 K21 + 0xB82A2C00, // 006D GETNGBL R10 K22 + 0x88281517, // 006E GETMBR R10 R10 K23 + 0x8828151B, // 006F GETMBR R10 R10 K27 + 0x1C24120A, // 0070 EQ R9 R9 R10 + 0x78260004, // 0071 JMPF R9 #0077 + 0x8C240119, // 0072 GETMET R9 R0 K25 + 0x7C240200, // 0073 CALL R9 1 + 0x8C24010D, // 0074 GETMET R9 R0 K13 + 0x7C240200, // 0075 CALL R9 1 + 0x70020006, // 0076 JMP #007E + 0x8C24010C, // 0077 GETMET R9 R0 K12 + 0x7C240200, // 0078 CALL R9 1 + 0x74260003, // 0079 JMPT R9 #007E + 0x8C24011C, // 007A GETMET R9 R0 K28 + 0x582C001D, // 007B LDCONST R11 K29 + 0x7C240400, // 007C CALL R9 2 + 0x70020000, // 007D JMP #007F + 0x7001FF9C, // 007E JMP #001C + 0x80000000, // 007F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_color, /* name */ + be_nested_proto( + 16, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(create_color), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x88080500, // 0001 GETMBR R2 R2 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x5C100000, // 0003 MOVE R4 R0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[39]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(color), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(KEYWORD), + /* K11 */ be_nested_str_weak(IDENTIFIER), + /* K12 */ be_nested_str_weak(peek), + /* K13 */ be_nested_str_weak(LEFT_PAREN), + /* K14 */ be_nested_str_weak(value), + /* K15 */ be_nested_str_weak(), + /* K16 */ be_nested_str_weak(COMMENT), + /* K17 */ be_nested_str_weak(_X20_X20), + /* K18 */ be_nested_str_weak(symbol_table), + /* K19 */ be_nested_str_weak(get), + /* K20 */ be_nested_str_weak(_symbol_entry), + /* K21 */ be_nested_str_weak(TYPE_TEMPLATE), + /* K22 */ be_nested_str_weak(process_function_arguments), + /* K23 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K24 */ be_nested_str_weak(engine), + /* K25 */ be_nested_str_weak(add), + /* K26 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_template_X28_X25s_X29_X25s), + /* K27 */ be_nested_str_weak(create_color), + /* K28 */ be_nested_str_weak(TYPE_USER_FUNCTION), + /* K29 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), + /* K30 */ be_nested_str_weak(_validate_color_provider_factory_exists), + /* K31 */ be_nested_str_weak(error), + /* K32 */ be_nested_str_weak(Color_X20provider_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), + /* K33 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), + /* K34 */ be_nested_str_weak(_create_instance_for_validation), + /* K35 */ be_nested_str_weak(_process_named_arguments_for_color_provider), + /* K36 */ be_nested_str_weak(_X25s_), + /* K37 */ be_nested_str_weak(_process_simple_value_assignment), + /* K38 */ be_nested_str_weak(CONTEXT_COLOR), + }), + be_str_weak(process_color), + &be_const_str_solidified, + ( &(const binstruction[186]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x880C0507, // 0010 GETMBR R3 R2 K7 + 0xB8121000, // 0011 GETNGBL R4 K8 + 0x88100909, // 0012 GETMBR R4 R4 K9 + 0x8810090A, // 0013 GETMBR R4 R4 K10 + 0x1C0C0604, // 0014 EQ R3 R3 R4 + 0x740E0005, // 0015 JMPT R3 #001C + 0x880C0507, // 0016 GETMBR R3 R2 K7 + 0xB8121000, // 0017 GETNGBL R4 K8 + 0x88100909, // 0018 GETMBR R4 R4 K9 + 0x8810090B, // 0019 GETMBR R4 R4 K11 + 0x1C0C0604, // 001A EQ R3 R3 R4 + 0x780E0096, // 001B JMPF R3 #00B3 + 0x8C0C010C, // 001C GETMET R3 R0 K12 + 0x7C0C0200, // 001D CALL R3 1 + 0x4C100000, // 001E LDNIL R4 + 0x200C0604, // 001F NE R3 R3 R4 + 0x780E0091, // 0020 JMPF R3 #00B3 + 0x8C0C010C, // 0021 GETMET R3 R0 K12 + 0x7C0C0200, // 0022 CALL R3 1 + 0x880C0707, // 0023 GETMBR R3 R3 K7 + 0xB8121000, // 0024 GETNGBL R4 K8 + 0x88100909, // 0025 GETMBR R4 R4 K9 + 0x8810090D, // 0026 GETMBR R4 R4 K13 + 0x1C0C0604, // 0027 EQ R3 R3 R4 + 0x780E0089, // 0028 JMPF R3 #00B3 + 0x880C050E, // 0029 GETMBR R3 R2 K14 + 0x8C100100, // 002A GETMET R4 R0 K0 + 0x7C100200, // 002B CALL R4 1 + 0x5810000F, // 002C LDCONST R4 K15 + 0x8C140106, // 002D GETMET R5 R0 K6 + 0x7C140200, // 002E CALL R5 1 + 0x4C180000, // 002F LDNIL R6 + 0x20140A06, // 0030 NE R5 R5 R6 + 0x7816000E, // 0031 JMPF R5 #0041 + 0x8C140106, // 0032 GETMET R5 R0 K6 + 0x7C140200, // 0033 CALL R5 1 + 0x88140B07, // 0034 GETMBR R5 R5 K7 + 0xB81A1000, // 0035 GETNGBL R6 K8 + 0x88180D09, // 0036 GETMBR R6 R6 K9 + 0x88180D10, // 0037 GETMBR R6 R6 K16 + 0x1C140A06, // 0038 EQ R5 R5 R6 + 0x78160006, // 0039 JMPF R5 #0041 + 0x8C140106, // 003A GETMET R5 R0 K6 + 0x7C140200, // 003B CALL R5 1 + 0x88140B0E, // 003C GETMBR R5 R5 K14 + 0x00162205, // 003D ADD R5 K17 R5 + 0x5C100A00, // 003E MOVE R4 R5 + 0x8C140100, // 003F GETMET R5 R0 K0 + 0x7C140200, // 0040 CALL R5 1 + 0x88140112, // 0041 GETMBR R5 R0 K18 + 0x8C140B13, // 0042 GETMET R5 R5 K19 + 0x5C1C0600, // 0043 MOVE R7 R3 + 0x7C140400, // 0044 CALL R5 2 + 0x4C180000, // 0045 LDNIL R6 + 0x20180A06, // 0046 NE R6 R5 R6 + 0x781A001F, // 0047 JMPF R6 #0068 + 0x88180B07, // 0048 GETMBR R6 R5 K7 + 0xB81E1000, // 0049 GETNGBL R7 K8 + 0x881C0F14, // 004A GETMBR R7 R7 K20 + 0x881C0F15, // 004B GETMBR R7 R7 K21 + 0x1C180C07, // 004C EQ R6 R6 R7 + 0x781A0019, // 004D JMPF R6 #0068 + 0x8C180116, // 004E GETMET R6 R0 K22 + 0x50200000, // 004F LDBOOL R8 0 0 + 0x7C180400, // 0050 CALL R6 2 + 0x201C0D0F, // 0051 NE R7 R6 K15 + 0x781E0004, // 0052 JMPF R7 #0058 + 0x601C0018, // 0053 GETGBL R7 G24 + 0x58200017, // 0054 LDCONST R8 K23 + 0x5C240C00, // 0055 MOVE R9 R6 + 0x7C1C0400, // 0056 CALL R7 2 + 0x70020000, // 0057 JMP #0059 + 0x581C0018, // 0058 LDCONST R7 K24 + 0x8C200119, // 0059 GETMET R8 R0 K25 + 0x60280018, // 005A GETGBL R10 G24 + 0x582C001A, // 005B LDCONST R11 K26 + 0x5C300200, // 005C MOVE R12 R1 + 0x5C340600, // 005D MOVE R13 R3 + 0x5C380E00, // 005E MOVE R14 R7 + 0x5C3C0800, // 005F MOVE R15 R4 + 0x7C280A00, // 0060 CALL R10 5 + 0x7C200400, // 0061 CALL R8 2 + 0x88200112, // 0062 GETMBR R8 R0 K18 + 0x8C20111B, // 0063 GETMET R8 R8 K27 + 0x5C280200, // 0064 MOVE R10 R1 + 0x4C2C0000, // 0065 LDNIL R11 + 0x7C200600, // 0066 CALL R8 3 + 0x70020049, // 0067 JMP #00B2 + 0x4C180000, // 0068 LDNIL R6 + 0x20180A06, // 0069 NE R6 R5 R6 + 0x781A001F, // 006A JMPF R6 #008B + 0x88180B07, // 006B GETMBR R6 R5 K7 + 0xB81E1000, // 006C GETNGBL R7 K8 + 0x881C0F14, // 006D GETMBR R7 R7 K20 + 0x881C0F1C, // 006E GETMBR R7 R7 K28 + 0x1C180C07, // 006F EQ R6 R6 R7 + 0x781A0019, // 0070 JMPF R6 #008B + 0x8C180116, // 0071 GETMET R6 R0 K22 + 0x50200000, // 0072 LDBOOL R8 0 0 + 0x7C180400, // 0073 CALL R6 2 + 0x201C0D0F, // 0074 NE R7 R6 K15 + 0x781E0004, // 0075 JMPF R7 #007B + 0x601C0018, // 0076 GETGBL R7 G24 + 0x58200017, // 0077 LDCONST R8 K23 + 0x5C240C00, // 0078 MOVE R9 R6 + 0x7C1C0400, // 0079 CALL R7 2 + 0x70020000, // 007A JMP #007C + 0x581C0018, // 007B LDCONST R7 K24 + 0x8C200119, // 007C GETMET R8 R0 K25 + 0x60280018, // 007D GETGBL R10 G24 + 0x582C001D, // 007E LDCONST R11 K29 + 0x5C300200, // 007F MOVE R12 R1 + 0x5C340600, // 0080 MOVE R13 R3 + 0x5C380E00, // 0081 MOVE R14 R7 + 0x5C3C0800, // 0082 MOVE R15 R4 + 0x7C280A00, // 0083 CALL R10 5 + 0x7C200400, // 0084 CALL R8 2 + 0x88200112, // 0085 GETMBR R8 R0 K18 + 0x8C20111B, // 0086 GETMET R8 R8 K27 + 0x5C280200, // 0087 MOVE R10 R1 + 0x4C2C0000, // 0088 LDNIL R11 + 0x7C200600, // 0089 CALL R8 3 + 0x70020026, // 008A JMP #00B2 + 0x8C18011E, // 008B GETMET R6 R0 K30 + 0x5C200600, // 008C MOVE R8 R3 + 0x7C180400, // 008D CALL R6 2 + 0x741A0008, // 008E JMPT R6 #0098 + 0x8C18011F, // 008F GETMET R6 R0 K31 + 0x60200018, // 0090 GETGBL R8 G24 + 0x58240020, // 0091 LDCONST R9 K32 + 0x5C280600, // 0092 MOVE R10 R3 + 0x7C200400, // 0093 CALL R8 2 + 0x7C180400, // 0094 CALL R6 2 + 0x8C180104, // 0095 GETMET R6 R0 K4 + 0x7C180200, // 0096 CALL R6 1 + 0x80000C00, // 0097 RET 0 + 0x8C180119, // 0098 GETMET R6 R0 K25 + 0x60200018, // 0099 GETGBL R8 G24 + 0x58240021, // 009A LDCONST R9 K33 + 0x5C280200, // 009B MOVE R10 R1 + 0x5C2C0600, // 009C MOVE R11 R3 + 0x5C300800, // 009D MOVE R12 R4 + 0x7C200800, // 009E CALL R8 4 + 0x7C180400, // 009F CALL R6 2 + 0x8C180122, // 00A0 GETMET R6 R0 K34 + 0x5C200600, // 00A1 MOVE R8 R3 + 0x7C180400, // 00A2 CALL R6 2 + 0x4C1C0000, // 00A3 LDNIL R7 + 0x201C0C07, // 00A4 NE R7 R6 R7 + 0x781E0004, // 00A5 JMPF R7 #00AB + 0x881C0112, // 00A6 GETMBR R7 R0 K18 + 0x8C1C0F1B, // 00A7 GETMET R7 R7 K27 + 0x5C240200, // 00A8 MOVE R9 R1 + 0x5C280C00, // 00A9 MOVE R10 R6 + 0x7C1C0600, // 00AA CALL R7 3 + 0x8C1C0123, // 00AB GETMET R7 R0 K35 + 0x60240018, // 00AC GETGBL R9 G24 + 0x58280024, // 00AD LDCONST R10 K36 + 0x5C2C0200, // 00AE MOVE R11 R1 + 0x7C240400, // 00AF CALL R9 2 + 0x5C280600, // 00B0 MOVE R10 R3 + 0x7C1C0600, // 00B1 CALL R7 3 + 0x70020004, // 00B2 JMP #00B8 + 0x8C0C0125, // 00B3 GETMET R3 R0 K37 + 0x5C140200, // 00B4 MOVE R5 R1 + 0x88180126, // 00B5 GETMBR R6 R0 K38 + 0x841C0000, // 00B6 CLOSURE R7 P0 + 0x7C0C0800, // 00B7 CALL R3 4 + 0xA0000000, // 00B8 CLOSE R0 + 0x80000000, // 00B9 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_symbol_table_report +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_symbol_table_report, /* name */ + be_nested_proto( + 27, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 4]) { + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(_XE2_X9C_X93), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(_XE2_X9A_XA0_XEF_XB8_X8F), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(_XE2_X9A_XA0), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(keys), + /* K7 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(display_width), + &be_const_str_solidified, + ( &(const binstruction[58]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x98060101, // 0002 SETIDX R1 K0 K1 + 0x98060503, // 0003 SETIDX R1 K2 K3 + 0x98060901, // 0004 SETIDX R1 K4 K1 + 0x58080005, // 0005 LDCONST R2 K5 + 0x580C0005, // 0006 LDCONST R3 K5 + 0x6010000C, // 0007 GETGBL R4 G12 + 0x5C140000, // 0008 MOVE R5 R0 + 0x7C100200, // 0009 CALL R4 1 + 0x14100604, // 000A LT R4 R3 R4 + 0x7812002C, // 000B JMPF R4 #0039 + 0x50100000, // 000C LDBOOL R4 0 0 + 0x60140010, // 000D GETGBL R5 G16 + 0x8C180306, // 000E GETMET R6 R1 K6 + 0x7C180200, // 000F CALL R6 1 + 0x7C140200, // 0010 CALL R5 1 + 0xA802001E, // 0011 EXBLK 0 #0031 + 0x5C180A00, // 0012 MOVE R6 R5 + 0x7C180000, // 0013 CALL R6 0 + 0x601C000C, // 0014 GETGBL R7 G12 + 0x5C200C00, // 0015 MOVE R8 R6 + 0x7C1C0200, // 0016 CALL R7 1 + 0x001C0607, // 0017 ADD R7 R3 R7 + 0x6020000C, // 0018 GETGBL R8 G12 + 0x5C240000, // 0019 MOVE R9 R0 + 0x7C200200, // 001A CALL R8 1 + 0x181C0E08, // 001B LE R7 R7 R8 + 0x781E0010, // 001C JMPF R7 #002E + 0x601C000C, // 001D GETGBL R7 G12 + 0x5C200C00, // 001E MOVE R8 R6 + 0x7C1C0200, // 001F CALL R7 1 + 0x001C0607, // 0020 ADD R7 R3 R7 + 0x041C0F01, // 0021 SUB R7 R7 K1 + 0x401C0607, // 0022 CONNECT R7 R3 R7 + 0x941C0007, // 0023 GETIDX R7 R0 R7 + 0x1C1C0E06, // 0024 EQ R7 R7 R6 + 0x781E0007, // 0025 JMPF R7 #002E + 0x941C0206, // 0026 GETIDX R7 R1 R6 + 0x00080407, // 0027 ADD R2 R2 R7 + 0x601C000C, // 0028 GETGBL R7 G12 + 0x5C200C00, // 0029 MOVE R8 R6 + 0x7C1C0200, // 002A CALL R7 1 + 0x000C0607, // 002B ADD R3 R3 R7 + 0x50100200, // 002C LDBOOL R4 1 0 + 0x70020000, // 002D JMP #002F + 0x7001FFE2, // 002E JMP #0012 + 0xA8040001, // 002F EXBLK 1 1 + 0x70020002, // 0030 JMP #0034 + 0x58140007, // 0031 LDCONST R5 K7 + 0xAC140200, // 0032 CATCH R5 1 0 + 0xB0080000, // 0033 RAISE 2 R0 R0 + 0x5C140800, // 0034 MOVE R5 R4 + 0x74160001, // 0035 JMPT R5 #0038 + 0x00080501, // 0036 ADD R2 R2 K1 + 0x000C0701, // 0037 ADD R3 R3 K1 + 0x7001FFCD, // 0038 JMP #0007 + 0x80040400, // 0039 RET 1 R2 + }) + ), + be_nested_proto( + 8, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 5), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(1), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_const_int(0), + }), + be_str_weak(_sort_symbol_data), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x6000000C, // 0000 GETGBL R0 G12 + 0x68040000, // 0001 GETUPV R1 U0 + 0x7C000200, // 0002 CALL R0 1 + 0x18040100, // 0003 LE R1 R0 K0 + 0x78060000, // 0004 JMPF R1 #0006 + 0x80000200, // 0005 RET 0 + 0x58040000, // 0006 LDCONST R1 K0 + 0x14080200, // 0007 LT R2 R1 R0 + 0x780A0016, // 0008 JMPF R2 #0020 + 0x68080000, // 0009 GETUPV R2 U0 + 0x94080401, // 000A GETIDX R2 R2 R1 + 0x940C0501, // 000B GETIDX R3 R2 K1 + 0x5C100200, // 000C MOVE R4 R1 + 0x24140902, // 000D GT R5 R4 K2 + 0x7816000C, // 000E JMPF R5 #001C + 0x04140900, // 000F SUB R5 R4 K0 + 0x68180000, // 0010 GETUPV R6 U0 + 0x94140C05, // 0011 GETIDX R5 R6 R5 + 0x94140B01, // 0012 GETIDX R5 R5 K1 + 0x24140A03, // 0013 GT R5 R5 R3 + 0x78160006, // 0014 JMPF R5 #001C + 0x68140000, // 0015 GETUPV R5 U0 + 0x04180900, // 0016 SUB R6 R4 K0 + 0x681C0000, // 0017 GETUPV R7 U0 + 0x94180E06, // 0018 GETIDX R6 R7 R6 + 0x98140806, // 0019 SETIDX R5 R4 R6 + 0x04100900, // 001A SUB R4 R4 K0 + 0x7001FFF0, // 001B JMP #000D + 0x68140000, // 001C GETUPV R5 U0 + 0x98140802, // 001D SETIDX R5 R4 R2 + 0x00040300, // 001E ADD R1 R1 K0 + 0x7001FFE6, // 001F JMP #0007 + 0x80000000, // 0020 RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 4), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(_X20), + }), + be_str_weak(pad_string), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x04080202, // 0003 SUB R2 R1 R2 + 0x180C0500, // 0004 LE R3 R2 K0 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040000, // 0006 RET 1 R0 + 0x080E0202, // 0007 MUL R3 K1 R2 + 0x000C0003, // 0008 ADD R3 R0 R3 + 0x80040600, // 0009 RET 1 R3 + }) + ), + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 4), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_const_int(2), + /* K2 */ be_nested_str_weak(_X20), + }), + be_str_weak(center_string), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x04080202, // 0003 SUB R2 R1 R2 + 0x180C0500, // 0004 LE R3 R2 K0 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x80040000, // 0006 RET 1 R0 + 0x0C0C0501, // 0007 DIV R3 R2 K1 + 0x04100403, // 0008 SUB R4 R2 R3 + 0x08160403, // 0009 MUL R5 K2 R3 + 0x00140A00, // 000A ADD R5 R5 R0 + 0x081A0404, // 000B MUL R6 K2 R4 + 0x00140A06, // 000C ADD R5 R5 R6 + 0x80040A00, // 000D RET 1 R5 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[34]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(_X23_X23_X20Symbol_X20Table_X0A_X0A), + /* K2 */ be_nested_str_weak(symbol_table), + /* K3 */ be_nested_str_weak(list_symbols), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(No_X20symbols_X20defined_X0A_X0A), + /* K6 */ be_nested_str_weak(split), + /* K7 */ be_nested_str_weak(_X3A_X20), + /* K8 */ be_const_int(2), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(get), + /* K11 */ be_nested_str_weak(is_builtin), + /* K12 */ be_nested_str_weak(_XE2_X9C_X93), + /* K13 */ be_nested_str_weak(), + /* K14 */ be_nested_str_weak(is_dangerous_call), + /* K15 */ be_nested_str_weak(_XE2_X9A_XA0_XEF_XB8_X8F), + /* K16 */ be_nested_str_weak(takes_args), + /* K17 */ be_nested_str_weak(_X20_XE2_X9C_X93_X20), + /* K18 */ be_nested_str_weak(_X60_X25s_X60), + /* K19 */ be_nested_str_weak(push), + /* K20 */ be_nested_str_weak(name), + /* K21 */ be_nested_str_weak(typ), + /* K22 */ be_nested_str_weak(builtin), + /* K23 */ be_nested_str_weak(dangerous), + /* K24 */ be_nested_str_weak(stop_iteration), + /* K25 */ be_nested_str_weak(_X7C_X20_X25s_X20_X7C_X20_X25s_X20_X7C_X20_X25s_X20_X7C_X20_X25s_X20_X7C_X20_X25s_X20_X7C_X0A), + /* K26 */ be_nested_str_weak(Symbol), + /* K27 */ be_nested_str_weak(Type), + /* K28 */ be_nested_str_weak(Builtin), + /* K29 */ be_nested_str_weak(Dangerous), + /* K30 */ be_nested_str_weak(Takes_X20Args), + /* K31 */ be_nested_str_weak(_X7C_X25s_X7C_X25s_X7C_X25s_X7C_X25s_X7C_X25s_X7C_X0A), + /* K32 */ be_nested_str_weak(_X2D), + /* K33 */ be_nested_str_weak(_X0A), + }), + be_str_weak(get_symbol_table_report), + &be_const_str_solidified, + ( &(const binstruction[202]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x58080001, // 0001 LDCONST R2 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x8C0C0703, // 0003 GETMET R3 R3 K3 + 0x7C0C0200, // 0004 CALL R3 1 + 0x6010000C, // 0005 GETGBL R4 G12 + 0x5C140600, // 0006 MOVE R5 R3 + 0x7C100200, // 0007 CALL R4 1 + 0x1C100904, // 0008 EQ R4 R4 K4 + 0x78120001, // 0009 JMPF R4 #000C + 0x00080505, // 000A ADD R2 R2 K5 + 0x80040400, // 000B RET 1 R2 + 0x84100000, // 000C CLOSURE R4 P0 + 0x60140012, // 000D GETGBL R5 G18 + 0x7C140000, // 000E CALL R5 0 + 0x541A0005, // 000F LDINT R6 6 + 0x541E0003, // 0010 LDINT R7 4 + 0x54220006, // 0011 LDINT R8 7 + 0x54260008, // 0012 LDINT R9 9 + 0x542A0009, // 0013 LDINT R10 10 + 0x602C0010, // 0014 GETGBL R11 G16 + 0x5C300600, // 0015 MOVE R12 R3 + 0x7C2C0200, // 0016 CALL R11 1 + 0xA802005E, // 0017 EXBLK 0 #0077 + 0x5C301600, // 0018 MOVE R12 R11 + 0x7C300000, // 0019 CALL R12 0 + 0x8C340306, // 001A GETMET R13 R1 K6 + 0x5C3C1800, // 001B MOVE R15 R12 + 0x58400007, // 001C LDCONST R16 K7 + 0x7C340600, // 001D CALL R13 3 + 0x6038000C, // 001E GETGBL R14 G12 + 0x5C3C1A00, // 001F MOVE R15 R13 + 0x7C380200, // 0020 CALL R14 1 + 0x28381D08, // 0021 GE R14 R14 K8 + 0x783A0052, // 0022 JMPF R14 #0076 + 0x94381B04, // 0023 GETIDX R14 R13 K4 + 0x943C1B09, // 0024 GETIDX R15 R13 K9 + 0x88400102, // 0025 GETMBR R16 R0 K2 + 0x8C40210A, // 0026 GETMET R16 R16 K10 + 0x5C481C00, // 0027 MOVE R18 R14 + 0x7C400400, // 0028 CALL R16 2 + 0x4C440000, // 0029 LDNIL R17 + 0x20442011, // 002A NE R17 R16 R17 + 0x78460049, // 002B JMPF R17 #0076 + 0x8844210B, // 002C GETMBR R17 R16 K11 + 0x78460001, // 002D JMPF R17 #0030 + 0x5844000C, // 002E LDCONST R17 K12 + 0x70020000, // 002F JMP #0031 + 0x5844000D, // 0030 LDCONST R17 K13 + 0x8C48210E, // 0031 GETMET R18 R16 K14 + 0x7C480200, // 0032 CALL R18 1 + 0x784A0001, // 0033 JMPF R18 #0036 + 0x5848000F, // 0034 LDCONST R18 K15 + 0x70020000, // 0035 JMP #0037 + 0x5848000D, // 0036 LDCONST R18 K13 + 0x884C2110, // 0037 GETMBR R19 R16 K16 + 0x784E0001, // 0038 JMPF R19 #003B + 0x584C0011, // 0039 LDCONST R19 K17 + 0x70020000, // 003A JMP #003C + 0x584C000D, // 003B LDCONST R19 K13 + 0x60500018, // 003C GETGBL R20 G24 + 0x58540012, // 003D LDCONST R21 K18 + 0x5C581C00, // 003E MOVE R22 R14 + 0x7C500400, // 003F CALL R20 2 + 0x5C540800, // 0040 MOVE R21 R4 + 0x5C582800, // 0041 MOVE R22 R20 + 0x7C540200, // 0042 CALL R21 1 + 0x24542A06, // 0043 GT R21 R21 R6 + 0x78560003, // 0044 JMPF R21 #0049 + 0x5C540800, // 0045 MOVE R21 R4 + 0x5C582800, // 0046 MOVE R22 R20 + 0x7C540200, // 0047 CALL R21 1 + 0x5C182A00, // 0048 MOVE R6 R21 + 0x5C540800, // 0049 MOVE R21 R4 + 0x5C581E00, // 004A MOVE R22 R15 + 0x7C540200, // 004B CALL R21 1 + 0x24542A07, // 004C GT R21 R21 R7 + 0x78560003, // 004D JMPF R21 #0052 + 0x5C540800, // 004E MOVE R21 R4 + 0x5C581E00, // 004F MOVE R22 R15 + 0x7C540200, // 0050 CALL R21 1 + 0x5C1C2A00, // 0051 MOVE R7 R21 + 0x5C540800, // 0052 MOVE R21 R4 + 0x5C582200, // 0053 MOVE R22 R17 + 0x7C540200, // 0054 CALL R21 1 + 0x24542A08, // 0055 GT R21 R21 R8 + 0x78560003, // 0056 JMPF R21 #005B + 0x5C540800, // 0057 MOVE R21 R4 + 0x5C582200, // 0058 MOVE R22 R17 + 0x7C540200, // 0059 CALL R21 1 + 0x5C202A00, // 005A MOVE R8 R21 + 0x5C540800, // 005B MOVE R21 R4 + 0x5C582400, // 005C MOVE R22 R18 + 0x7C540200, // 005D CALL R21 1 + 0x24542A09, // 005E GT R21 R21 R9 + 0x78560003, // 005F JMPF R21 #0064 + 0x5C540800, // 0060 MOVE R21 R4 + 0x5C582400, // 0061 MOVE R22 R18 + 0x7C540200, // 0062 CALL R21 1 + 0x5C242A00, // 0063 MOVE R9 R21 + 0x5C540800, // 0064 MOVE R21 R4 + 0x5C582600, // 0065 MOVE R22 R19 + 0x7C540200, // 0066 CALL R21 1 + 0x24542A0A, // 0067 GT R21 R21 R10 + 0x78560003, // 0068 JMPF R21 #006D + 0x5C540800, // 0069 MOVE R21 R4 + 0x5C582600, // 006A MOVE R22 R19 + 0x7C540200, // 006B CALL R21 1 + 0x5C282A00, // 006C MOVE R10 R21 + 0x8C540B13, // 006D GETMET R21 R5 K19 + 0x605C0013, // 006E GETGBL R23 G19 + 0x7C5C0000, // 006F CALL R23 0 + 0x985E2814, // 0070 SETIDX R23 K20 R20 + 0x985E2A0F, // 0071 SETIDX R23 K21 R15 + 0x985E2C11, // 0072 SETIDX R23 K22 R17 + 0x985E2E12, // 0073 SETIDX R23 K23 R18 + 0x985E2013, // 0074 SETIDX R23 K16 R19 + 0x7C540400, // 0075 CALL R21 2 + 0x7001FFA0, // 0076 JMP #0018 + 0x582C0018, // 0077 LDCONST R11 K24 + 0xAC2C0200, // 0078 CATCH R11 1 0 + 0xB0080000, // 0079 RAISE 2 R0 R0 + 0x842C0001, // 007A CLOSURE R11 P1 + 0x5C301600, // 007B MOVE R12 R11 + 0x7C300000, // 007C CALL R12 0 + 0x84300002, // 007D CLOSURE R12 P2 + 0x84340003, // 007E CLOSURE R13 P3 + 0x60380018, // 007F GETGBL R14 G24 + 0x583C0019, // 0080 LDCONST R15 K25 + 0x5C401800, // 0081 MOVE R16 R12 + 0x5844001A, // 0082 LDCONST R17 K26 + 0x5C480C00, // 0083 MOVE R18 R6 + 0x7C400400, // 0084 CALL R16 2 + 0x5C441800, // 0085 MOVE R17 R12 + 0x5848001B, // 0086 LDCONST R18 K27 + 0x5C4C0E00, // 0087 MOVE R19 R7 + 0x7C440400, // 0088 CALL R17 2 + 0x5C481800, // 0089 MOVE R18 R12 + 0x584C001C, // 008A LDCONST R19 K28 + 0x5C501000, // 008B MOVE R20 R8 + 0x7C480400, // 008C CALL R18 2 + 0x5C4C1800, // 008D MOVE R19 R12 + 0x5850001D, // 008E LDCONST R20 K29 + 0x5C541200, // 008F MOVE R21 R9 + 0x7C4C0400, // 0090 CALL R19 2 + 0x5C501800, // 0091 MOVE R20 R12 + 0x5854001E, // 0092 LDCONST R21 K30 + 0x5C581400, // 0093 MOVE R22 R10 + 0x7C500400, // 0094 CALL R20 2 + 0x7C380C00, // 0095 CALL R14 6 + 0x603C0018, // 0096 GETGBL R15 G24 + 0x5840001F, // 0097 LDCONST R16 K31 + 0x00440D08, // 0098 ADD R17 R6 K8 + 0x08464011, // 0099 MUL R17 K32 R17 + 0x00480F08, // 009A ADD R18 R7 K8 + 0x084A4012, // 009B MUL R18 K32 R18 + 0x004C1108, // 009C ADD R19 R8 K8 + 0x084E4013, // 009D MUL R19 K32 R19 + 0x00501308, // 009E ADD R20 R9 K8 + 0x08524014, // 009F MUL R20 K32 R20 + 0x00541508, // 00A0 ADD R21 R10 K8 + 0x08564015, // 00A1 MUL R21 K32 R21 + 0x7C3C0C00, // 00A2 CALL R15 6 + 0x0008040E, // 00A3 ADD R2 R2 R14 + 0x0008040F, // 00A4 ADD R2 R2 R15 + 0x60400010, // 00A5 GETGBL R16 G16 + 0x5C440A00, // 00A6 MOVE R17 R5 + 0x7C400200, // 00A7 CALL R16 1 + 0xA802001A, // 00A8 EXBLK 0 #00C4 + 0x5C442000, // 00A9 MOVE R17 R16 + 0x7C440000, // 00AA CALL R17 0 + 0x60480018, // 00AB GETGBL R18 G24 + 0x584C0019, // 00AC LDCONST R19 K25 + 0x5C501800, // 00AD MOVE R20 R12 + 0x94542314, // 00AE GETIDX R21 R17 K20 + 0x5C580C00, // 00AF MOVE R22 R6 + 0x7C500400, // 00B0 CALL R20 2 + 0x5C541800, // 00B1 MOVE R21 R12 + 0x94582315, // 00B2 GETIDX R22 R17 K21 + 0x5C5C0E00, // 00B3 MOVE R23 R7 + 0x7C540400, // 00B4 CALL R21 2 + 0x5C581A00, // 00B5 MOVE R22 R13 + 0x945C2316, // 00B6 GETIDX R23 R17 K22 + 0x5C601000, // 00B7 MOVE R24 R8 + 0x7C580400, // 00B8 CALL R22 2 + 0x5C5C1A00, // 00B9 MOVE R23 R13 + 0x94602317, // 00BA GETIDX R24 R17 K23 + 0x5C641200, // 00BB MOVE R25 R9 + 0x7C5C0400, // 00BC CALL R23 2 + 0x5C601A00, // 00BD MOVE R24 R13 + 0x94642310, // 00BE GETIDX R25 R17 K16 + 0x5C681400, // 00BF MOVE R26 R10 + 0x7C600400, // 00C0 CALL R24 2 + 0x7C480C00, // 00C1 CALL R18 6 + 0x00080412, // 00C2 ADD R2 R2 R18 + 0x7001FFE4, // 00C3 JMP #00A9 + 0x58400018, // 00C4 LDCONST R16 K24 + 0xAC400200, // 00C5 CATCH R16 1 0 + 0xB0080000, // 00C6 RAISE 2 R0 R0 + 0x00080521, // 00C7 ADD R2 R2 K33 + 0xA0000000, // 00C8 CLOSE R0 + 0x80040400, // 00C9 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: next +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_next, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(tokens), + /* K2 */ be_const_int(1), + }), + be_str_weak(next), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14040202, // 0004 LT R1 R1 R2 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040100, // 0006 GETMBR R1 R0 K0 + 0x00040302, // 0007 ADD R1 R1 K2 + 0x90020001, // 0008 SETMBR R0 K0 R1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_user_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_user_function_call, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_PAREN), + /* K5 */ be_nested_str_weak(process_function_arguments), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K8 */ be_nested_str_weak(engine), + /* K9 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), + /* K10 */ be_nested_str_weak(error), + /* K11 */ be_nested_str_weak(User_X20functions_X20must_X20be_X20called_X20with_X20parentheses_X3A_X20user_X2Efunction_name_X28_X29), + /* K12 */ be_nested_str_weak(nil), + }), + be_str_weak(_process_user_function_call), + &be_const_str_solidified, + ( &(const binstruction[36]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0019, // 0004 JMPF R2 #001F + 0x8C080100, // 0005 GETMET R2 R0 K0 + 0x7C080200, // 0006 CALL R2 1 + 0x88080501, // 0007 GETMBR R2 R2 K1 + 0xB80E0400, // 0008 GETNGBL R3 K2 + 0x880C0703, // 0009 GETMBR R3 R3 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x1C080403, // 000B EQ R2 R2 R3 + 0x780A0011, // 000C JMPF R2 #001F + 0x8C080105, // 000D GETMET R2 R0 K5 + 0x50100200, // 000E LDBOOL R4 1 0 + 0x7C080400, // 000F CALL R2 2 + 0x200C0506, // 0010 NE R3 R2 K6 + 0x780E0004, // 0011 JMPF R3 #0017 + 0x600C0018, // 0012 GETGBL R3 G24 + 0x58100007, // 0013 LDCONST R4 K7 + 0x5C140400, // 0014 MOVE R5 R2 + 0x7C0C0400, // 0015 CALL R3 2 + 0x70020000, // 0016 JMP #0018 + 0x580C0008, // 0017 LDCONST R3 K8 + 0x60100018, // 0018 GETGBL R4 G24 + 0x58140009, // 0019 LDCONST R5 K9 + 0x5C180200, // 001A MOVE R6 R1 + 0x5C1C0600, // 001B MOVE R7 R3 + 0x7C100600, // 001C CALL R4 3 + 0x80040800, // 001D RET 1 R4 + 0x70020003, // 001E JMP #0023 + 0x8C08010A, // 001F GETMET R2 R0 K10 + 0x5810000B, // 0020 LDCONST R4 K11 + 0x7C080400, // 0021 CALL R2 2 + 0x80061800, // 0022 RET 1 K12 + 0x80000000, // 0023 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_animation, /* name */ + be_nested_proto( + 16, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(create_animation), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x88080500, // 0001 GETMBR R2 R2 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x5C100000, // 0003 MOVE R4 R0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[39]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(animation), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(KEYWORD), + /* K11 */ be_nested_str_weak(IDENTIFIER), + /* K12 */ be_nested_str_weak(peek), + /* K13 */ be_nested_str_weak(LEFT_PAREN), + /* K14 */ be_nested_str_weak(value), + /* K15 */ be_nested_str_weak(), + /* K16 */ be_nested_str_weak(COMMENT), + /* K17 */ be_nested_str_weak(_X20_X20), + /* K18 */ be_nested_str_weak(symbol_table), + /* K19 */ be_nested_str_weak(get), + /* K20 */ be_nested_str_weak(_symbol_entry), + /* K21 */ be_nested_str_weak(TYPE_TEMPLATE), + /* K22 */ be_nested_str_weak(process_function_arguments), + /* K23 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K24 */ be_nested_str_weak(engine), + /* K25 */ be_nested_str_weak(add), + /* K26 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_template_X28_X25s_X29_X25s), + /* K27 */ be_nested_str_weak(create_animation), + /* K28 */ be_nested_str_weak(TYPE_USER_FUNCTION), + /* K29 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), + /* K30 */ be_nested_str_weak(_validate_animation_factory_creates_animation), + /* K31 */ be_nested_str_weak(error), + /* K32 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X20or_X20does_X20not_X20create_X20an_X20instance_X20of_X20animation_X2Eanimation_X20class_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X20returns_X20an_X20animation_X20object_X2E), + /* K33 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), + /* K34 */ be_nested_str_weak(_create_instance_for_validation), + /* K35 */ be_nested_str_weak(_process_named_arguments_for_animation), + /* K36 */ be_nested_str_weak(_X25s_), + /* K37 */ be_nested_str_weak(_process_simple_value_assignment), + /* K38 */ be_nested_str_weak(CONTEXT_ANIMATION), + }), + be_str_weak(process_animation), + &be_const_str_solidified, + ( &(const binstruction[186]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x880C0507, // 0010 GETMBR R3 R2 K7 + 0xB8121000, // 0011 GETNGBL R4 K8 + 0x88100909, // 0012 GETMBR R4 R4 K9 + 0x8810090A, // 0013 GETMBR R4 R4 K10 + 0x1C0C0604, // 0014 EQ R3 R3 R4 + 0x740E0005, // 0015 JMPT R3 #001C + 0x880C0507, // 0016 GETMBR R3 R2 K7 + 0xB8121000, // 0017 GETNGBL R4 K8 + 0x88100909, // 0018 GETMBR R4 R4 K9 + 0x8810090B, // 0019 GETMBR R4 R4 K11 + 0x1C0C0604, // 001A EQ R3 R3 R4 + 0x780E0096, // 001B JMPF R3 #00B3 + 0x8C0C010C, // 001C GETMET R3 R0 K12 + 0x7C0C0200, // 001D CALL R3 1 + 0x4C100000, // 001E LDNIL R4 + 0x200C0604, // 001F NE R3 R3 R4 + 0x780E0091, // 0020 JMPF R3 #00B3 + 0x8C0C010C, // 0021 GETMET R3 R0 K12 + 0x7C0C0200, // 0022 CALL R3 1 + 0x880C0707, // 0023 GETMBR R3 R3 K7 + 0xB8121000, // 0024 GETNGBL R4 K8 + 0x88100909, // 0025 GETMBR R4 R4 K9 + 0x8810090D, // 0026 GETMBR R4 R4 K13 + 0x1C0C0604, // 0027 EQ R3 R3 R4 + 0x780E0089, // 0028 JMPF R3 #00B3 + 0x880C050E, // 0029 GETMBR R3 R2 K14 + 0x8C100100, // 002A GETMET R4 R0 K0 + 0x7C100200, // 002B CALL R4 1 + 0x5810000F, // 002C LDCONST R4 K15 + 0x8C140106, // 002D GETMET R5 R0 K6 + 0x7C140200, // 002E CALL R5 1 + 0x4C180000, // 002F LDNIL R6 + 0x20140A06, // 0030 NE R5 R5 R6 + 0x7816000E, // 0031 JMPF R5 #0041 + 0x8C140106, // 0032 GETMET R5 R0 K6 + 0x7C140200, // 0033 CALL R5 1 + 0x88140B07, // 0034 GETMBR R5 R5 K7 + 0xB81A1000, // 0035 GETNGBL R6 K8 + 0x88180D09, // 0036 GETMBR R6 R6 K9 + 0x88180D10, // 0037 GETMBR R6 R6 K16 + 0x1C140A06, // 0038 EQ R5 R5 R6 + 0x78160006, // 0039 JMPF R5 #0041 + 0x8C140106, // 003A GETMET R5 R0 K6 + 0x7C140200, // 003B CALL R5 1 + 0x88140B0E, // 003C GETMBR R5 R5 K14 + 0x00162205, // 003D ADD R5 K17 R5 + 0x5C100A00, // 003E MOVE R4 R5 + 0x8C140100, // 003F GETMET R5 R0 K0 + 0x7C140200, // 0040 CALL R5 1 + 0x88140112, // 0041 GETMBR R5 R0 K18 + 0x8C140B13, // 0042 GETMET R5 R5 K19 + 0x5C1C0600, // 0043 MOVE R7 R3 + 0x7C140400, // 0044 CALL R5 2 + 0x4C180000, // 0045 LDNIL R6 + 0x20180A06, // 0046 NE R6 R5 R6 + 0x781A001F, // 0047 JMPF R6 #0068 + 0x88180B07, // 0048 GETMBR R6 R5 K7 + 0xB81E1000, // 0049 GETNGBL R7 K8 + 0x881C0F14, // 004A GETMBR R7 R7 K20 + 0x881C0F15, // 004B GETMBR R7 R7 K21 + 0x1C180C07, // 004C EQ R6 R6 R7 + 0x781A0019, // 004D JMPF R6 #0068 + 0x8C180116, // 004E GETMET R6 R0 K22 + 0x50200000, // 004F LDBOOL R8 0 0 + 0x7C180400, // 0050 CALL R6 2 + 0x201C0D0F, // 0051 NE R7 R6 K15 + 0x781E0004, // 0052 JMPF R7 #0058 + 0x601C0018, // 0053 GETGBL R7 G24 + 0x58200017, // 0054 LDCONST R8 K23 + 0x5C240C00, // 0055 MOVE R9 R6 + 0x7C1C0400, // 0056 CALL R7 2 + 0x70020000, // 0057 JMP #0059 + 0x581C0018, // 0058 LDCONST R7 K24 + 0x8C200119, // 0059 GETMET R8 R0 K25 + 0x60280018, // 005A GETGBL R10 G24 + 0x582C001A, // 005B LDCONST R11 K26 + 0x5C300200, // 005C MOVE R12 R1 + 0x5C340600, // 005D MOVE R13 R3 + 0x5C380E00, // 005E MOVE R14 R7 + 0x5C3C0800, // 005F MOVE R15 R4 + 0x7C280A00, // 0060 CALL R10 5 + 0x7C200400, // 0061 CALL R8 2 + 0x88200112, // 0062 GETMBR R8 R0 K18 + 0x8C20111B, // 0063 GETMET R8 R8 K27 + 0x5C280200, // 0064 MOVE R10 R1 + 0x4C2C0000, // 0065 LDNIL R11 + 0x7C200600, // 0066 CALL R8 3 + 0x70020049, // 0067 JMP #00B2 + 0x4C180000, // 0068 LDNIL R6 + 0x20180A06, // 0069 NE R6 R5 R6 + 0x781A001F, // 006A JMPF R6 #008B + 0x88180B07, // 006B GETMBR R6 R5 K7 + 0xB81E1000, // 006C GETNGBL R7 K8 + 0x881C0F14, // 006D GETMBR R7 R7 K20 + 0x881C0F1C, // 006E GETMBR R7 R7 K28 + 0x1C180C07, // 006F EQ R6 R6 R7 + 0x781A0019, // 0070 JMPF R6 #008B + 0x8C180116, // 0071 GETMET R6 R0 K22 + 0x50200000, // 0072 LDBOOL R8 0 0 + 0x7C180400, // 0073 CALL R6 2 + 0x201C0D0F, // 0074 NE R7 R6 K15 + 0x781E0004, // 0075 JMPF R7 #007B + 0x601C0018, // 0076 GETGBL R7 G24 + 0x58200017, // 0077 LDCONST R8 K23 + 0x5C240C00, // 0078 MOVE R9 R6 + 0x7C1C0400, // 0079 CALL R7 2 + 0x70020000, // 007A JMP #007C + 0x581C0018, // 007B LDCONST R7 K24 + 0x8C200119, // 007C GETMET R8 R0 K25 + 0x60280018, // 007D GETGBL R10 G24 + 0x582C001D, // 007E LDCONST R11 K29 + 0x5C300200, // 007F MOVE R12 R1 + 0x5C340600, // 0080 MOVE R13 R3 + 0x5C380E00, // 0081 MOVE R14 R7 + 0x5C3C0800, // 0082 MOVE R15 R4 + 0x7C280A00, // 0083 CALL R10 5 + 0x7C200400, // 0084 CALL R8 2 + 0x88200112, // 0085 GETMBR R8 R0 K18 + 0x8C20111B, // 0086 GETMET R8 R8 K27 + 0x5C280200, // 0087 MOVE R10 R1 + 0x4C2C0000, // 0088 LDNIL R11 + 0x7C200600, // 0089 CALL R8 3 + 0x70020026, // 008A JMP #00B2 + 0x8C18011E, // 008B GETMET R6 R0 K30 + 0x5C200600, // 008C MOVE R8 R3 + 0x7C180400, // 008D CALL R6 2 + 0x741A0008, // 008E JMPT R6 #0098 + 0x8C18011F, // 008F GETMET R6 R0 K31 + 0x60200018, // 0090 GETGBL R8 G24 + 0x58240020, // 0091 LDCONST R9 K32 + 0x5C280600, // 0092 MOVE R10 R3 + 0x7C200400, // 0093 CALL R8 2 + 0x7C180400, // 0094 CALL R6 2 + 0x8C180104, // 0095 GETMET R6 R0 K4 + 0x7C180200, // 0096 CALL R6 1 + 0x80000C00, // 0097 RET 0 + 0x8C180119, // 0098 GETMET R6 R0 K25 + 0x60200018, // 0099 GETGBL R8 G24 + 0x58240021, // 009A LDCONST R9 K33 + 0x5C280200, // 009B MOVE R10 R1 + 0x5C2C0600, // 009C MOVE R11 R3 + 0x5C300800, // 009D MOVE R12 R4 + 0x7C200800, // 009E CALL R8 4 + 0x7C180400, // 009F CALL R6 2 + 0x8C180122, // 00A0 GETMET R6 R0 K34 + 0x5C200600, // 00A1 MOVE R8 R3 + 0x7C180400, // 00A2 CALL R6 2 + 0x4C1C0000, // 00A3 LDNIL R7 + 0x201C0C07, // 00A4 NE R7 R6 R7 + 0x781E0004, // 00A5 JMPF R7 #00AB + 0x881C0112, // 00A6 GETMBR R7 R0 K18 + 0x8C1C0F1B, // 00A7 GETMET R7 R7 K27 + 0x5C240200, // 00A8 MOVE R9 R1 + 0x5C280C00, // 00A9 MOVE R10 R6 + 0x7C1C0600, // 00AA CALL R7 3 + 0x8C1C0123, // 00AB GETMET R7 R0 K35 + 0x60240018, // 00AC GETGBL R9 G24 + 0x58280024, // 00AD LDCONST R10 K36 + 0x5C2C0200, // 00AE MOVE R11 R1 + 0x7C240400, // 00AF CALL R9 2 + 0x5C280600, // 00B0 MOVE R10 R3 + 0x7C1C0600, // 00B1 CALL R7 3 + 0x70020004, // 00B2 JMP #00B8 + 0x8C0C0125, // 00B3 GETMET R3 R0 K37 + 0x5C140200, // 00B4 MOVE R5 R1 + 0x88180126, // 00B5 GETMBR R6 R0 K38 + 0x841C0000, // 00B6 CLOSURE R7 P0 + 0x7C0C0800, // 00B7 CALL R3 4 + 0xA0000000, // 00B8 CLOSE R0 + 0x80000000, // 00B9 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_wait_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(process_time_value), + /* K2 */ be_nested_str_weak(collect_inline_comment), + /* K3 */ be_nested_str_weak(add), + /* K4 */ be_nested_str_weak(_X25s_X2Epush_wait_step_X28_X25s_X29_X25s), + /* K5 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_wait_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x8C1C0105, // 0009 GETMET R7 R0 K5 + 0x7C1C0200, // 000A CALL R7 1 + 0x5C200200, // 000B MOVE R8 R1 + 0x5C240400, // 000C MOVE R9 R2 + 0x7C140800, // 000D CALL R5 4 + 0x7C0C0400, // 000E CALL R3 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_BRACE), + }), + be_str_weak(check_right_brace), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0005, // 0004 JMPF R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0000, // 000A JMPT R2 #000C + 0x50080001, // 000B LDBOOL R2 0 1 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x80040400, // 000D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: error +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_error, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(line), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(errors), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), + }), + be_str_weak(error), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x8C080100, // 0005 GETMET R2 R0 K0 + 0x7C080200, // 0006 CALL R2 1 + 0x88080501, // 0007 GETMBR R2 R2 K1 + 0x70020000, // 0008 JMP #000A + 0x58080002, // 0009 LDCONST R2 K2 + 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x8C0C0704, // 000B GETMET R3 R3 K4 + 0x60140018, // 000C GETGBL R5 G24 + 0x58180005, // 000D LDCONST R6 K5 + 0x5C1C0400, // 000E MOVE R7 R2 + 0x5C200200, // 000F MOVE R8 R1 + 0x7C140600, // 0010 CALL R5 3 + 0x7C0C0400, // 0011 CALL R3 2 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: convert_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ + be_nested_proto( + 17, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(startswith), + /* K2 */ be_nested_str_weak(0x), + /* K3 */ be_nested_str_weak(0xFF_X25s), + /* K4 */ be_const_int(2), + /* K5 */ be_const_int(2147483647), + /* K6 */ be_nested_str_weak(_X23), + /* K7 */ be_nested_str_weak(0x_X25s), + /* K8 */ be_const_int(1), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(0x_X25s_X25s_X25s_X25s_X25s_X25s_X25s_X25s), + /* K11 */ be_nested_str_weak(0xFF_X25s_X25s_X25s_X25s_X25s_X25s), + /* K12 */ be_nested_str_weak(animation_dsl), + /* K13 */ be_nested_str_weak(is_color_name), + /* K14 */ be_nested_str_weak(get_named_color_value), + /* K15 */ be_nested_str_weak(0xFFFFFFFF), + }), + be_str_weak(convert_color), + &be_const_str_solidified, + ( &(const binstruction[110]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x780E0013, // 0005 JMPF R3 #001A + 0x600C000C, // 0006 GETGBL R3 G12 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x54120009, // 0009 LDINT R4 10 + 0x1C0C0604, // 000A EQ R3 R3 R4 + 0x780E0001, // 000B JMPF R3 #000E + 0x80040200, // 000C RET 1 R1 + 0x7002000B, // 000D JMP #001A + 0x600C000C, // 000E GETGBL R3 G12 + 0x5C100200, // 000F MOVE R4 R1 + 0x7C0C0200, // 0010 CALL R3 1 + 0x54120007, // 0011 LDINT R4 8 + 0x1C0C0604, // 0012 EQ R3 R3 R4 + 0x780E0005, // 0013 JMPF R3 #001A + 0x600C0018, // 0014 GETGBL R3 G24 + 0x58100003, // 0015 LDCONST R4 K3 + 0x40160905, // 0016 CONNECT R5 K4 K5 + 0x94140205, // 0017 GETIDX R5 R1 R5 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80040600, // 0019 RET 1 R3 + 0x8C0C0501, // 001A GETMET R3 R2 K1 + 0x5C140200, // 001B MOVE R5 R1 + 0x58180006, // 001C LDCONST R6 K6 + 0x7C0C0600, // 001D CALL R3 3 + 0x780E0044, // 001E JMPF R3 #0064 + 0x600C000C, // 001F GETGBL R3 G12 + 0x5C100200, // 0020 MOVE R4 R1 + 0x7C0C0200, // 0021 CALL R3 1 + 0x54120008, // 0022 LDINT R4 9 + 0x1C0C0604, // 0023 EQ R3 R3 R4 + 0x780E0006, // 0024 JMPF R3 #002C + 0x600C0018, // 0025 GETGBL R3 G24 + 0x58100007, // 0026 LDCONST R4 K7 + 0x40161105, // 0027 CONNECT R5 K8 K5 + 0x94140205, // 0028 GETIDX R5 R1 R5 + 0x7C0C0400, // 0029 CALL R3 2 + 0x80040600, // 002A RET 1 R3 + 0x70020037, // 002B JMP #0064 + 0x600C000C, // 002C GETGBL R3 G12 + 0x5C100200, // 002D MOVE R4 R1 + 0x7C0C0200, // 002E CALL R3 1 + 0x54120006, // 002F LDINT R4 7 + 0x1C0C0604, // 0030 EQ R3 R3 R4 + 0x780E0006, // 0031 JMPF R3 #0039 + 0x600C0018, // 0032 GETGBL R3 G24 + 0x58100003, // 0033 LDCONST R4 K3 + 0x40161105, // 0034 CONNECT R5 K8 K5 + 0x94140205, // 0035 GETIDX R5 R1 R5 + 0x7C0C0400, // 0036 CALL R3 2 + 0x80040600, // 0037 RET 1 R3 + 0x7002002A, // 0038 JMP #0064 + 0x600C000C, // 0039 GETGBL R3 G12 + 0x5C100200, // 003A MOVE R4 R1 + 0x7C0C0200, // 003B CALL R3 1 + 0x54120004, // 003C LDINT R4 5 + 0x1C0C0604, // 003D EQ R3 R3 R4 + 0x780E0011, // 003E JMPF R3 #0051 + 0x940C0308, // 003F GETIDX R3 R1 K8 + 0x94100304, // 0040 GETIDX R4 R1 K4 + 0x94140309, // 0041 GETIDX R5 R1 K9 + 0x541A0003, // 0042 LDINT R6 4 + 0x94180206, // 0043 GETIDX R6 R1 R6 + 0x601C0018, // 0044 GETGBL R7 G24 + 0x5820000A, // 0045 LDCONST R8 K10 + 0x5C240600, // 0046 MOVE R9 R3 + 0x5C280600, // 0047 MOVE R10 R3 + 0x5C2C0800, // 0048 MOVE R11 R4 + 0x5C300800, // 0049 MOVE R12 R4 + 0x5C340A00, // 004A MOVE R13 R5 + 0x5C380A00, // 004B MOVE R14 R5 + 0x5C3C0C00, // 004C MOVE R15 R6 + 0x5C400C00, // 004D MOVE R16 R6 + 0x7C1C1200, // 004E CALL R7 9 + 0x80040E00, // 004F RET 1 R7 + 0x70020012, // 0050 JMP #0064 + 0x600C000C, // 0051 GETGBL R3 G12 + 0x5C100200, // 0052 MOVE R4 R1 + 0x7C0C0200, // 0053 CALL R3 1 + 0x54120003, // 0054 LDINT R4 4 + 0x1C0C0604, // 0055 EQ R3 R3 R4 + 0x780E000C, // 0056 JMPF R3 #0064 + 0x940C0308, // 0057 GETIDX R3 R1 K8 + 0x94100304, // 0058 GETIDX R4 R1 K4 + 0x94140309, // 0059 GETIDX R5 R1 K9 + 0x60180018, // 005A GETGBL R6 G24 + 0x581C000B, // 005B LDCONST R7 K11 + 0x5C200600, // 005C MOVE R8 R3 + 0x5C240600, // 005D MOVE R9 R3 + 0x5C280800, // 005E MOVE R10 R4 + 0x5C2C0800, // 005F MOVE R11 R4 + 0x5C300A00, // 0060 MOVE R12 R5 + 0x5C340A00, // 0061 MOVE R13 R5 + 0x7C180E00, // 0062 CALL R6 7 + 0x80040C00, // 0063 RET 1 R6 + 0xB80E1800, // 0064 GETNGBL R3 K12 + 0x8C0C070D, // 0065 GETMET R3 R3 K13 + 0x5C140200, // 0066 MOVE R5 R1 + 0x7C0C0400, // 0067 CALL R3 2 + 0x780E0003, // 0068 JMPF R3 #006D + 0x8C0C010E, // 0069 GETMET R3 R0 K14 + 0x5C140200, // 006A MOVE R5 R1 + 0x7C0C0400, // 006B CALL R3 2 + 0x80040600, // 006C RET 1 R3 + 0x80061E00, // 006D RET 1 K15 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: SimpleDSLTranspiler +********************************************************************/ +be_local_class(SimpleDSLTranspiler, + 9, + NULL, + be_nested_map(129, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(_process_named_arguments_generic, 86), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, + { be_const_key_weak(CONTEXT_ANIMATION, -1), be_const_int(3) }, + { be_const_key_weak(CONTEXT_PROPERTY, 113), be_const_int(5) }, + { be_const_key_weak(convert_color, -1), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, + { be_const_key_weak(_create_instance_for_validation, -1), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, + { be_const_key_weak(CONTEXT_REPEAT_COUNT, 48), be_const_int(6) }, + { be_const_key_weak(process_run, -1), be_const_closure(class_SimpleDSLTranspiler_process_run_closure) }, + { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, + { be_const_key_weak(expect_left_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, + { be_const_key_weak(_create_symbol_by_return_type, 104), be_const_closure(class_SimpleDSLTranspiler__create_symbol_by_return_type_closure) }, + { be_const_key_weak(_validate_value_provider_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_reference_closure) }, + { be_const_key_weak(has_template_calls, -1), be_const_var(8) }, + { be_const_key_weak(_validate_animation_factory_creates_animation, -1), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, + { be_const_key_weak(check_right_brace, 39), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, + { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, + { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, + { be_const_key_weak(process_percentage_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, + { be_const_key_weak(ExpressionResult, -1), be_const_class(be_class_ExpressionResult) }, + { be_const_key_weak(CONTEXT_ARGUMENT, -1), be_const_int(4) }, + { be_const_key_weak(transform_expression_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, + { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, + { be_const_key_weak(process_wait_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_closure) }, + { be_const_key_weak(process_sequence_assignment_generic, 126), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic_closure) }, + { be_const_key_weak(errors, -1), be_const_var(3) }, + { be_const_key_weak(run_statements, 49), be_const_var(4) }, + { be_const_key_weak(generate_template_function, 7), be_const_closure(class_SimpleDSLTranspiler_generate_template_function_closure) }, + { be_const_key_weak(join_output, -1), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, + { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, + { be_const_key_weak(expect_colon, -1), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, + { be_const_key_weak(CONTEXT_GENERIC, 99), be_const_int(10) }, + { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, + { be_const_key_weak(next, -1), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, + { be_const_key_weak(CONTEXT_TIME, -1), be_const_int(8) }, + { be_const_key_weak(_validate_object_reference, 123), be_const_closure(class_SimpleDSLTranspiler__validate_object_reference_closure) }, + { be_const_key_weak(tokens, 95), be_const_var(0) }, + { be_const_key_weak(_validate_animation_factory_exists, 36), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, + { be_const_key_weak(process_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, + { be_const_key_weak(_process_parameters_core, -1), be_const_closure(class_SimpleDSLTranspiler__process_parameters_core_closure) }, + { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, + { be_const_key_weak(pos, 62), be_const_var(1) }, + { be_const_key_weak(expect_comma, -1), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, + { be_const_key_weak(process_additive_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, + { be_const_key_weak(get_errors, 29), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, + { be_const_key_weak(is_computed_expression_string, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_string_closure) }, + { be_const_key_weak(expect_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, + { be_const_key_weak(process_import, -1), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, + { be_const_key_weak(process_berry_code_block, 100), be_const_closure(class_SimpleDSLTranspiler_process_berry_code_block_closure) }, + { be_const_key_weak(_process_named_arguments_for_color_provider, 23), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider_closure) }, + { be_const_key_weak(process_function_arguments, 64), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, + { be_const_key_weak(is_identifier_char, 28), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, + { be_const_key_weak(transpile_template_body, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_template_body_closure) }, + { be_const_key_weak(generate_engine_run, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_run_closure) }, + { be_const_key_weak(get_named_color_value, -1), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, + { be_const_key_weak(process_event_parameters, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, + { be_const_key_weak(_process_named_arguments_unified, 112), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_unified_closure) }, + { be_const_key_weak(indent_level, -1), be_const_var(7) }, + { be_const_key_weak(symbol_table, -1), be_const_var(6) }, + { be_const_key_weak(process_named_arguments_for_variable, 32), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, + { be_const_key_weak(process_sequence_assignment, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_closure) }, + { be_const_key_weak(validate_symbol_reference, -1), be_const_closure(class_SimpleDSLTranspiler_validate_symbol_reference_closure) }, + { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, + { be_const_key_weak(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, + { be_const_key_weak(_validate_value_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists_closure) }, + { be_const_key_weak(_process_named_arguments_for_animation, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation_closure) }, + { be_const_key_weak(_is_named_arg_constructor, -1), be_const_closure(class_SimpleDSLTranspiler__is_named_arg_constructor_closure) }, + { be_const_key_weak(process_time_value, 119), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, + { be_const_key_weak(CONTEXT_EXPRESSION, -1), be_const_int(9) }, + { be_const_key_weak(validate_user_name, -1), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, + { be_const_key_weak(process_multiplicative_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, + { be_const_key_weak(_has_function_parameters, 72), be_const_closure(class_SimpleDSLTranspiler__has_function_parameters_closure) }, + { be_const_key_weak(output, 21), be_const_var(2) }, + { be_const_key_weak(process_template, 31), be_const_closure(class_SimpleDSLTranspiler_process_template_closure) }, + { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, + { be_const_key_weak(_process_simple_value_assignment, -1), be_const_closure(class_SimpleDSLTranspiler__process_simple_value_assignment_closure) }, + { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, + { be_const_key_weak(expect_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, + { be_const_key_weak(create_simple_function_from_string, -1), be_const_closure(class_SimpleDSLTranspiler_create_simple_function_from_string_closure) }, + { be_const_key_weak(has_errors, 82), be_const_closure(class_SimpleDSLTranspiler_has_errors_closure) }, + { be_const_key_weak(process_array_literal, -1), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, + { be_const_key_weak(process_unary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, + { be_const_key_weak(process_log_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_log_statement_fluent_closure) }, + { be_const_key_weak(process_standalone_log, 65), be_const_closure(class_SimpleDSLTranspiler_process_standalone_log_closure) }, + { be_const_key_weak(_validate_color_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, + { be_const_key_weak(strip_initialized, 45), be_const_var(5) }, + { be_const_key_weak(get_error_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, + { be_const_key_weak(generate_default_strip_initialization, -1), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, + { be_const_key_weak(expect_dot, -1), be_const_closure(class_SimpleDSLTranspiler_expect_dot_closure) }, + { be_const_key_weak(transpile, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, + { be_const_key_weak(can_use_as_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, + { be_const_key_weak(convert_time_to_ms, 78), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, + { be_const_key_weak(skip_statement, -1), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, + { be_const_key_weak(skip_whitespace, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, + { be_const_key_weak(_determine_symbol_return_type, 97), be_const_closure(class_SimpleDSLTranspiler__determine_symbol_return_type_closure) }, + { be_const_key_weak(process_property_assignment, 91), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, + { be_const_key_weak(add, -1), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, + { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, + { be_const_key_weak(expect_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, + { be_const_key_weak(skip_whitespace_including_newlines, 84), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, + { be_const_key_weak(process_log_call, 107), be_const_closure(class_SimpleDSLTranspiler_process_log_call_closure) }, + { be_const_key_weak(process_primary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, + { be_const_key_weak(get_indent, 75), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, + { be_const_key_weak(CONTEXT_VARIABLE, -1), be_const_int(1) }, + { be_const_key_weak(expect_keyword, 68), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, + { be_const_key_weak(process_restart_statement_fluent, 67), be_const_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent_closure) }, + { be_const_key_weak(CONTEXT_ARRAY_ELEMENT, -1), be_const_int(7) }, + { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, + { be_const_key_weak(process_play_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, + { be_const_key_weak(process_palette, 61), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, + { be_const_key_weak(CONTEXT_COLOR_PROVIDER, 53), be_const_int(11) }, + { be_const_key_weak(expect_assign, 52), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, + { be_const_key_weak(expect_number, -1), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, + { be_const_key_weak(CONTEXT_COLOR, 118), be_const_int(2) }, + { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, + { be_const_key_weak(at_end, 13), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, + { be_const_key_weak(create_computation_closure_from_string, 37), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string_closure) }, + { be_const_key_weak(is_computed_expression, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, + { be_const_key_weak(get_symbol_table_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_symbol_table_report_closure) }, + { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, + { be_const_key_weak(process_palette_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_color_closure) }, + { be_const_key_weak(_process_user_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, + { be_const_key_weak(_determine_function_return_type, 24), be_const_closure(class_SimpleDSLTranspiler__determine_function_return_type_closure) }, + { be_const_key_weak(process_animation, -1), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, + { be_const_key_weak(expect_right_bracket, 116), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, + { be_const_key_weak(process_function_call, 18), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, + { be_const_key_weak(convert_to_vrgb, 17), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, + { be_const_key_weak(process_sequence, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, + { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, + { be_const_key_weak(process_sequence_statement, 3), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, + })), + be_str_weak(SimpleDSLTranspiler) +); +// compact class 'SymbolTable' ktab size: 55, total: 115 (saved 480 bytes) +static const bvalue be_ktab_class_SymbolTable[55] = { + /* K0 */ be_nested_str_weak(get), + /* K1 */ be_nested_str_weak(takes_named_args), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(_symbol_entry), + /* K4 */ be_nested_str_weak(create_animation_instance), + /* K5 */ be_nested_str_weak(add), + /* K6 */ be_nested_str_weak(takes_positional_args), + /* K7 */ be_nested_str_weak(entries), + /* K8 */ be_nested_str_weak(contains), + /* K9 */ be_nested_str_weak(introspect), + /* K10 */ be_nested_str_weak(named_colors), + /* K11 */ be_nested_str_weak(create_color_instance), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(create_user_function), + /* K14 */ be_nested_str_weak(animation), + /* K15 */ be_nested_str_weak(is_user_function), + /* K16 */ be_nested_str_weak(_math), + /* K17 */ be_nested_str_weak(create_math_function), + /* K18 */ be_nested_str_weak(create_palette_constant), + /* K19 */ be_nested_str_weak(int), + /* K20 */ be_nested_str_weak(create_constant), + /* K21 */ be_nested_str_weak(function), + /* K22 */ be_nested_str_weak(class), + /* K23 */ be_nested_str_weak(mock_engine), + /* K24 */ be_nested_str_weak(color_provider), + /* K25 */ be_nested_str_weak(create_color_constructor), + /* K26 */ be_nested_str_weak(value_provider), + /* K27 */ be_nested_str_weak(create_value_provider_constructor), + /* K28 */ be_nested_str_weak(create_animation_constructor), + /* K29 */ be_nested_str_weak(is_dangerous_call), + /* K30 */ be_nested_str_weak(_detect_and_cache_symbol), + /* K31 */ be_nested_str_weak(create_value_provider_instance), + /* K32 */ be_nested_str_weak(is_builtin), + /* K33 */ be_nested_str_weak(type), + /* K34 */ be_nested_str_weak(TYPE_COLOR), + /* K35 */ be_nested_str_weak(0xFFFFFFFF), + /* K36 */ be_nested_str_weak(get_reference), + /* K37 */ be_nested_str_weak(_X25s_), + /* K38 */ be_nested_str_weak(create_template), + /* K39 */ be_nested_str_weak(set_param_types), + /* K40 */ be_nested_str_weak(Cannot_X20define_X20_X27_X25s_X27_X20as_X20_X25s_X20_X2D_X20it_X20conflicts_X20with_X20built_X2Din_X20_X25s), + /* K41 */ be_nested_str_weak(type_to_string), + /* K42 */ be_nested_str_weak(symbol_redefinition_error), + /* K43 */ be_nested_str_weak(find), + /* K44 */ be_nested_str_weak(Cannot_X20redefine_X20symbol_X20_X27_X25s_X27_X20as_X20_X25s_X20_X2D_X20it_X27s_X20already_X20defined_X20as_X20_X25s), + /* K45 */ be_nested_str_weak(MockEngine), + /* K46 */ be_nested_str_weak(create_sequence), + /* K47 */ be_nested_str_weak(takes_args), + /* K48 */ be_nested_str_weak(create_palette_instance), + /* K49 */ be_nested_str_weak(create_variable), + /* K50 */ be_nested_str_weak(keys), + /* K51 */ be_nested_str_weak(push), + /* K52 */ be_nested_str_weak(_X25s_X3A_X20_X25s), + /* K53 */ be_nested_str_weak(stop_iteration), + /* K54 */ be_nested_str_weak(instance), +}; + + +extern const bclass be_class_SymbolTable; + +/******************************************************************** +** Solidified function: takes_named_args +********************************************************************/ +be_local_closure(class_SymbolTable_takes_named_args, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(takes_named_args), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0002, // 0005 JMPF R3 #0009 + 0x8C0C0501, // 0006 GETMET R3 R2 K1 + 0x7C0C0200, // 0007 CALL R3 1 + 0x70020000, // 0008 JMP #000A + 0x500C0000, // 0009 LDBOOL R3 0 0 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_animation +********************************************************************/ +be_local_closure(class_SymbolTable_create_animation, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(create_animation), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xB80E0400, // 0000 GETNGBL R3 K2 + 0x880C0703, // 0001 GETMBR R3 R3 K3 + 0x8C0C0704, // 0002 GETMET R3 R3 K4 + 0x5C140200, // 0003 MOVE R5 R1 + 0x5C180400, // 0004 MOVE R6 R2 + 0x501C0000, // 0005 LDBOOL R7 0 0 + 0x7C0C0800, // 0006 CALL R3 4 + 0x8C100105, // 0007 GETMET R4 R0 K5 + 0x5C180200, // 0008 MOVE R6 R1 + 0x5C1C0600, // 0009 MOVE R7 R3 + 0x7C100600, // 000A CALL R4 3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: takes_positional_args +********************************************************************/ +be_local_closure(class_SymbolTable_takes_positional_args, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(takes_positional_args), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0002, // 0005 JMPF R3 #0009 + 0x8C0C0506, // 0006 GETMET R3 R2 K6 + 0x7C0C0200, // 0007 CALL R3 1 + 0x70020000, // 0008 JMP #000A + 0x500C0000, // 0009 LDBOOL R3 0 0 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _detect_and_cache_symbol +********************************************************************/ +be_local_closure(class_SymbolTable__detect_and_cache_symbol, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(_detect_and_cache_symbol), + &be_const_str_solidified, + ( &(const binstruction[188]) { /* code */ + 0x88080107, // 0000 GETMBR R2 R0 K7 + 0x8C080508, // 0001 GETMET R2 R2 K8 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0002, // 0004 JMPF R2 #0008 + 0x88080107, // 0005 GETMBR R2 R0 K7 + 0x94080401, // 0006 GETIDX R2 R2 R1 + 0x80040400, // 0007 RET 1 R2 + 0xA80200AB, // 0008 EXBLK 0 #00B5 + 0xA40A1200, // 0009 IMPORT R2 K9 + 0xB80E0400, // 000A GETNGBL R3 K2 + 0x880C070A, // 000B GETMBR R3 R3 K10 + 0x8C0C0708, // 000C GETMET R3 R3 K8 + 0x5C140200, // 000D MOVE R5 R1 + 0x7C0C0400, // 000E CALL R3 2 + 0x780E000A, // 000F JMPF R3 #001B + 0xB80E0400, // 0010 GETNGBL R3 K2 + 0x880C0703, // 0011 GETMBR R3 R3 K3 + 0x8C0C070B, // 0012 GETMET R3 R3 K11 + 0x5C140200, // 0013 MOVE R5 R1 + 0x4C180000, // 0014 LDNIL R6 + 0x501C0200, // 0015 LDBOOL R7 1 0 + 0x7C0C0800, // 0016 CALL R3 4 + 0x88100107, // 0017 GETMBR R4 R0 K7 + 0x98100203, // 0018 SETIDX R4 R1 R3 + 0xA8040001, // 0019 EXBLK 1 1 + 0x80040600, // 001A RET 1 R3 + 0x1C0C030C, // 001B EQ R3 R1 K12 + 0x780E0009, // 001C JMPF R3 #0027 + 0xB80E0400, // 001D GETNGBL R3 K2 + 0x880C0703, // 001E GETMBR R3 R3 K3 + 0x8C0C070D, // 001F GETMET R3 R3 K13 + 0x5814000C, // 0020 LDCONST R5 K12 + 0x50180200, // 0021 LDBOOL R6 1 0 + 0x7C0C0600, // 0022 CALL R3 3 + 0x88100107, // 0023 GETMBR R4 R0 K7 + 0x98100203, // 0024 SETIDX R4 R1 R3 + 0xA8040001, // 0025 EXBLK 1 1 + 0x80040600, // 0026 RET 1 R3 + 0xB80E1C00, // 0027 GETNGBL R3 K14 + 0x8C0C070F, // 0028 GETMET R3 R3 K15 + 0x5C140200, // 0029 MOVE R5 R1 + 0x7C0C0400, // 002A CALL R3 2 + 0x780E0009, // 002B JMPF R3 #0036 + 0xB80E0400, // 002C GETNGBL R3 K2 + 0x880C0703, // 002D GETMBR R3 R3 K3 + 0x8C0C070D, // 002E GETMET R3 R3 K13 + 0x5C140200, // 002F MOVE R5 R1 + 0x50180200, // 0030 LDBOOL R6 1 0 + 0x7C0C0600, // 0031 CALL R3 3 + 0x88100107, // 0032 GETMBR R4 R0 K7 + 0x98100203, // 0033 SETIDX R4 R1 R3 + 0xA8040001, // 0034 EXBLK 1 1 + 0x80040600, // 0035 RET 1 R3 + 0x8C0C0508, // 0036 GETMET R3 R2 K8 + 0xB8161C00, // 0037 GETNGBL R5 K14 + 0x88140B10, // 0038 GETMBR R5 R5 K16 + 0x5C180200, // 0039 MOVE R6 R1 + 0x7C0C0600, // 003A CALL R3 3 + 0x780E0009, // 003B JMPF R3 #0046 + 0xB80E0400, // 003C GETNGBL R3 K2 + 0x880C0703, // 003D GETMBR R3 R3 K3 + 0x8C0C0711, // 003E GETMET R3 R3 K17 + 0x5C140200, // 003F MOVE R5 R1 + 0x50180200, // 0040 LDBOOL R6 1 0 + 0x7C0C0600, // 0041 CALL R3 3 + 0x88100107, // 0042 GETMBR R4 R0 K7 + 0x98100203, // 0043 SETIDX R4 R1 R3 + 0xA8040001, // 0044 EXBLK 1 1 + 0x80040600, // 0045 RET 1 R3 + 0x8C0C0508, // 0046 GETMET R3 R2 K8 + 0xB8161C00, // 0047 GETNGBL R5 K14 + 0x5C180200, // 0048 MOVE R6 R1 + 0x7C0C0600, // 0049 CALL R3 3 + 0x780E0064, // 004A JMPF R3 #00B0 + 0xB80E1C00, // 004B GETNGBL R3 K14 + 0x880C0601, // 004C GETMBR R3 R3 R1 + 0x60100004, // 004D GETGBL R4 G4 + 0x5C140600, // 004E MOVE R5 R3 + 0x7C100200, // 004F CALL R4 1 + 0x6014000F, // 0050 GETGBL R5 G15 + 0x5C180600, // 0051 MOVE R6 R3 + 0x601C0015, // 0052 GETGBL R7 G21 + 0x7C140400, // 0053 CALL R5 2 + 0x7816000A, // 0054 JMPF R5 #0060 + 0xB8160400, // 0055 GETNGBL R5 K2 + 0x88140B03, // 0056 GETMBR R5 R5 K3 + 0x8C140B12, // 0057 GETMET R5 R5 K18 + 0x5C1C0200, // 0058 MOVE R7 R1 + 0x5C200600, // 0059 MOVE R8 R3 + 0x50240200, // 005A LDBOOL R9 1 0 + 0x7C140800, // 005B CALL R5 4 + 0x88180107, // 005C GETMBR R6 R0 K7 + 0x98180205, // 005D SETIDX R6 R1 R5 + 0xA8040001, // 005E EXBLK 1 1 + 0x80040A00, // 005F RET 1 R5 + 0x1C140913, // 0060 EQ R5 R4 K19 + 0x7816000A, // 0061 JMPF R5 #006D + 0xB8160400, // 0062 GETNGBL R5 K2 + 0x88140B03, // 0063 GETMBR R5 R5 K3 + 0x8C140B14, // 0064 GETMET R5 R5 K20 + 0x5C1C0200, // 0065 MOVE R7 R1 + 0x5C200600, // 0066 MOVE R8 R3 + 0x50240200, // 0067 LDBOOL R9 1 0 + 0x7C140800, // 0068 CALL R5 4 + 0x88180107, // 0069 GETMBR R6 R0 K7 + 0x98180205, // 006A SETIDX R6 R1 R5 + 0xA8040001, // 006B EXBLK 1 1 + 0x80040A00, // 006C RET 1 R5 + 0x1C140915, // 006D EQ R5 R4 K21 + 0x74160001, // 006E JMPT R5 #0071 + 0x1C140916, // 006F EQ R5 R4 K22 + 0x7816003E, // 0070 JMPF R5 #00B0 + 0xA8020039, // 0071 EXBLK 0 #00AC + 0x5C140600, // 0072 MOVE R5 R3 + 0x88180117, // 0073 GETMBR R6 R0 K23 + 0x7C140200, // 0074 CALL R5 1 + 0x6018000F, // 0075 GETGBL R6 G15 + 0x5C1C0A00, // 0076 MOVE R7 R5 + 0xB8221C00, // 0077 GETNGBL R8 K14 + 0x88201118, // 0078 GETMBR R8 R8 K24 + 0x7C180400, // 0079 CALL R6 2 + 0x781A000B, // 007A JMPF R6 #0087 + 0xB81A0400, // 007B GETNGBL R6 K2 + 0x88180D03, // 007C GETMBR R6 R6 K3 + 0x8C180D19, // 007D GETMET R6 R6 K25 + 0x5C200200, // 007E MOVE R8 R1 + 0x5C240A00, // 007F MOVE R9 R5 + 0x50280200, // 0080 LDBOOL R10 1 0 + 0x7C180800, // 0081 CALL R6 4 + 0x881C0107, // 0082 GETMBR R7 R0 K7 + 0x981C0206, // 0083 SETIDX R7 R1 R6 + 0xA8040002, // 0084 EXBLK 1 2 + 0x80040C00, // 0085 RET 1 R6 + 0x70020022, // 0086 JMP #00AA + 0x6018000F, // 0087 GETGBL R6 G15 + 0x5C1C0A00, // 0088 MOVE R7 R5 + 0xB8221C00, // 0089 GETNGBL R8 K14 + 0x8820111A, // 008A GETMBR R8 R8 K26 + 0x7C180400, // 008B CALL R6 2 + 0x781A000B, // 008C JMPF R6 #0099 + 0xB81A0400, // 008D GETNGBL R6 K2 + 0x88180D03, // 008E GETMBR R6 R6 K3 + 0x8C180D1B, // 008F GETMET R6 R6 K27 + 0x5C200200, // 0090 MOVE R8 R1 + 0x5C240A00, // 0091 MOVE R9 R5 + 0x50280200, // 0092 LDBOOL R10 1 0 + 0x7C180800, // 0093 CALL R6 4 + 0x881C0107, // 0094 GETMBR R7 R0 K7 + 0x981C0206, // 0095 SETIDX R7 R1 R6 + 0xA8040002, // 0096 EXBLK 1 2 + 0x80040C00, // 0097 RET 1 R6 + 0x70020010, // 0098 JMP #00AA + 0x6018000F, // 0099 GETGBL R6 G15 + 0x5C1C0A00, // 009A MOVE R7 R5 + 0xB8221C00, // 009B GETNGBL R8 K14 + 0x8820110E, // 009C GETMBR R8 R8 K14 + 0x7C180400, // 009D CALL R6 2 + 0x781A000A, // 009E JMPF R6 #00AA + 0xB81A0400, // 009F GETNGBL R6 K2 + 0x88180D03, // 00A0 GETMBR R6 R6 K3 + 0x8C180D1C, // 00A1 GETMET R6 R6 K28 + 0x5C200200, // 00A2 MOVE R8 R1 + 0x5C240A00, // 00A3 MOVE R9 R5 + 0x50280200, // 00A4 LDBOOL R10 1 0 + 0x7C180800, // 00A5 CALL R6 4 + 0x881C0107, // 00A6 GETMBR R7 R0 K7 + 0x981C0206, // 00A7 SETIDX R7 R1 R6 + 0xA8040002, // 00A8 EXBLK 1 2 + 0x80040C00, // 00A9 RET 1 R6 + 0xA8040001, // 00AA EXBLK 1 1 + 0x70020003, // 00AB JMP #00B0 + 0xAC140002, // 00AC CATCH R5 0 2 + 0x70020000, // 00AD JMP #00AF + 0x70020000, // 00AE JMP #00B0 + 0xB0080000, // 00AF RAISE 2 R0 R0 + 0x4C0C0000, // 00B0 LDNIL R3 + 0xA8040001, // 00B1 EXBLK 1 1 + 0x80040600, // 00B2 RET 1 R3 + 0xA8040001, // 00B3 EXBLK 1 1 + 0x70020005, // 00B4 JMP #00BB + 0xAC080002, // 00B5 CATCH R2 0 2 + 0x70020002, // 00B6 JMP #00BA + 0x4C100000, // 00B7 LDNIL R4 + 0x80040800, // 00B8 RET 1 R4 + 0x70020000, // 00B9 JMP #00BB + 0xB0080000, // 00BA RAISE 2 R0 R0 + 0x80000000, // 00BB RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_dangerous +********************************************************************/ +be_local_closure(class_SymbolTable_is_dangerous, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(is_dangerous), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0002, // 0005 JMPF R3 #0009 + 0x8C0C051D, // 0006 GETMET R3 R2 K29 + 0x7C0C0200, // 0007 CALL R3 1 + 0x70020000, // 0008 JMP #000A + 0x500C0000, // 0009 LDBOOL R3 0 0 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_color +********************************************************************/ +be_local_closure(class_SymbolTable_create_color, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(create_color), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xB80E0400, // 0000 GETNGBL R3 K2 + 0x880C0703, // 0001 GETMBR R3 R3 K3 + 0x8C0C070B, // 0002 GETMET R3 R3 K11 + 0x5C140200, // 0003 MOVE R5 R1 + 0x5C180400, // 0004 MOVE R6 R2 + 0x501C0000, // 0005 LDBOOL R7 0 0 + 0x7C0C0800, // 0006 CALL R3 4 + 0x8C100105, // 0007 GETMET R4 R0 K5 + 0x5C180200, // 0008 MOVE R6 R1 + 0x5C1C0600, // 0009 MOVE R7 R3 + 0x7C100600, // 000A CALL R4 3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: contains +********************************************************************/ +be_local_closure(class_SymbolTable_contains, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(contains), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88080107, // 0000 GETMBR R2 R0 K7 + 0x8C080508, // 0001 GETMET R2 R2 K8 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x50080200, // 0005 LDBOOL R2 1 0 + 0x80040400, // 0006 RET 1 R2 + 0x8C08011E, // 0007 GETMET R2 R0 K30 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x4C0C0000, // 000A LDNIL R3 + 0x200C0403, // 000B NE R3 R2 R3 + 0x80040600, // 000C RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_value_provider +********************************************************************/ +be_local_closure(class_SymbolTable_create_value_provider, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(create_value_provider), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xB80E0400, // 0000 GETNGBL R3 K2 + 0x880C0703, // 0001 GETMBR R3 R3 K3 + 0x8C0C071F, // 0002 GETMET R3 R3 K31 + 0x5C140200, // 0003 MOVE R5 R1 + 0x5C180400, // 0004 MOVE R6 R2 + 0x501C0000, // 0005 LDBOOL R7 0 0 + 0x7C0C0800, // 0006 CALL R3 4 + 0x8C100105, // 0007 GETMET R4 R0 K5 + 0x5C180200, // 0008 MOVE R6 R1 + 0x5C1C0600, // 0009 MOVE R7 R3 + 0x7C100600, // 000A CALL R4 3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _get_named_color_value +********************************************************************/ +be_local_closure(class_SymbolTable__get_named_color_value, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(_get_named_color_value), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E000B, // 0005 JMPF R3 #0012 + 0x880C0520, // 0006 GETMBR R3 R2 K32 + 0x780E0009, // 0007 JMPF R3 #0012 + 0x880C0521, // 0008 GETMBR R3 R2 K33 + 0xB8120400, // 0009 GETNGBL R4 K2 + 0x88100903, // 000A GETMBR R4 R4 K3 + 0x88100922, // 000B GETMBR R4 R4 K34 + 0x1C0C0604, // 000C EQ R3 R3 R4 + 0x780E0003, // 000D JMPF R3 #0012 + 0xB80E0400, // 000E GETNGBL R3 K2 + 0x880C070A, // 000F GETMBR R3 R3 K10 + 0x940C0601, // 0010 GETIDX R3 R3 R1 + 0x80040600, // 0011 RET 1 R3 + 0x80064600, // 0012 RET 1 K35 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_reference +********************************************************************/ +be_local_closure(class_SymbolTable_get_reference, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(get_reference), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E000E, // 0005 JMPF R3 #0015 + 0x880C0520, // 0006 GETMBR R3 R2 K32 + 0x780E0009, // 0007 JMPF R3 #0012 + 0x880C0521, // 0008 GETMBR R3 R2 K33 + 0xB8120400, // 0009 GETNGBL R4 K2 + 0x88100903, // 000A GETMBR R4 R4 K3 + 0x88100922, // 000B GETMBR R4 R4 K34 + 0x1C0C0604, // 000C EQ R3 R3 R4 + 0x780E0003, // 000D JMPF R3 #0012 + 0xB80E0400, // 000E GETNGBL R3 K2 + 0x880C070A, // 000F GETMBR R3 R3 K10 + 0x940C0601, // 0010 GETIDX R3 R3 R1 + 0x80040600, // 0011 RET 1 R3 + 0x8C0C0524, // 0012 GETMET R3 R2 K36 + 0x7C0C0200, // 0013 CALL R3 1 + 0x80040600, // 0014 RET 1 R3 + 0x600C0018, // 0015 GETGBL R3 G24 + 0x58100025, // 0016 LDCONST R4 K37 + 0x5C140200, // 0017 MOVE R5 R1 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80040600, // 0019 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_template +********************************************************************/ +be_local_closure(class_SymbolTable_create_template, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(create_template), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0xB80E0400, // 0000 GETNGBL R3 K2 + 0x880C0703, // 0001 GETMBR R3 R3 K3 + 0x8C0C0726, // 0002 GETMET R3 R3 K38 + 0x5C140200, // 0003 MOVE R5 R1 + 0x50180000, // 0004 LDBOOL R6 0 0 + 0x7C0C0600, // 0005 CALL R3 3 + 0x8C100727, // 0006 GETMET R4 R3 K39 + 0x4C180000, // 0007 LDNIL R6 + 0x20180406, // 0008 NE R6 R2 R6 + 0x781A0001, // 0009 JMPF R6 #000C + 0x5C180400, // 000A MOVE R6 R2 + 0x70020001, // 000B JMP #000E + 0x60180013, // 000C GETGBL R6 G19 + 0x7C180000, // 000D CALL R6 0 + 0x7C100400, // 000E CALL R4 2 + 0x8C100105, // 000F GETMET R4 R0 K5 + 0x5C180200, // 0010 MOVE R6 R1 + 0x5C1C0600, // 0011 MOVE R7 R3 + 0x7C100600, // 0012 CALL R4 3 + 0x80040800, // 0013 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_generic +********************************************************************/ +be_local_closure(class_SymbolTable_create_generic, /* name */ + be_nested_proto( + 11, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(create_generic), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xB8160400, // 0000 GETNGBL R5 K2 + 0x8C140B03, // 0001 GETMET R5 R5 K3 + 0x5C1C0200, // 0002 MOVE R7 R1 + 0x5C200400, // 0003 MOVE R8 R2 + 0x5C240600, // 0004 MOVE R9 R3 + 0x4C280000, // 0005 LDNIL R10 + 0x2028080A, // 0006 NE R10 R4 R10 + 0x782A0001, // 0007 JMPF R10 #000A + 0x5C280800, // 0008 MOVE R10 R4 + 0x70020000, // 0009 JMP #000B + 0x50280000, // 000A LDBOOL R10 0 0 + 0x7C140A00, // 000B CALL R5 5 + 0x8C180105, // 000C GETMET R6 R0 K5 + 0x5C200200, // 000D MOVE R8 R1 + 0x5C240A00, // 000E MOVE R9 R5 + 0x7C180600, // 000F CALL R6 3 + 0x80040C00, // 0010 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add +********************************************************************/ +be_local_closure(class_SymbolTable_add, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(add), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x8C0C011E, // 0000 GETMET R3 R0 K30 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x4C100000, // 0003 LDNIL R4 + 0x20100604, // 0004 NE R4 R3 R4 + 0x7812000C, // 0005 JMPF R4 #0013 + 0x88100721, // 0006 GETMBR R4 R3 K33 + 0x88140521, // 0007 GETMBR R5 R2 K33 + 0x20100805, // 0008 NE R4 R4 R5 + 0x78120008, // 0009 JMPF R4 #0013 + 0x60100018, // 000A GETGBL R4 G24 + 0x58140028, // 000B LDCONST R5 K40 + 0x5C180200, // 000C MOVE R6 R1 + 0x8C1C0529, // 000D GETMET R7 R2 K41 + 0x7C1C0200, // 000E CALL R7 1 + 0x8C200729, // 000F GETMET R8 R3 K41 + 0x7C200200, // 0010 CALL R8 1 + 0x7C100800, // 0011 CALL R4 4 + 0xB0065404, // 0012 RAISE 1 K42 R4 + 0x88100107, // 0013 GETMBR R4 R0 K7 + 0x8C10092B, // 0014 GETMET R4 R4 K43 + 0x5C180200, // 0015 MOVE R6 R1 + 0x7C100400, // 0016 CALL R4 2 + 0x4C140000, // 0017 LDNIL R5 + 0x20140805, // 0018 NE R5 R4 R5 + 0x7816000C, // 0019 JMPF R5 #0027 + 0x88140921, // 001A GETMBR R5 R4 K33 + 0x88180521, // 001B GETMBR R6 R2 K33 + 0x20140A06, // 001C NE R5 R5 R6 + 0x78160008, // 001D JMPF R5 #0027 + 0x60140018, // 001E GETGBL R5 G24 + 0x5818002C, // 001F LDCONST R6 K44 + 0x5C1C0200, // 0020 MOVE R7 R1 + 0x8C200529, // 0021 GETMET R8 R2 K41 + 0x7C200200, // 0022 CALL R8 1 + 0x8C240929, // 0023 GETMET R9 R4 K41 + 0x7C240200, // 0024 CALL R9 1 + 0x7C140800, // 0025 CALL R5 4 + 0xB0065405, // 0026 RAISE 1 K42 R5 + 0x88140107, // 0027 GETMBR R5 R0 K7 + 0x98140202, // 0028 SETIDX R5 R1 R2 + 0x80040400, // 0029 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get +********************************************************************/ +be_local_closure(class_SymbolTable_get, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(get), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88080107, // 0000 GETMBR R2 R0 K7 + 0x8C08052B, // 0001 GETMET R2 R2 K43 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0000, // 0006 JMPF R3 #0008 + 0x80040400, // 0007 RET 1 R2 + 0x8C0C011E, // 0008 GETMET R3 R0 K30 + 0x5C140200, // 0009 MOVE R5 R1 + 0x7C0C0400, // 000A CALL R3 2 + 0x80040600, // 000B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_SymbolTable_init, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x90020E01, // 0002 SETMBR R0 K7 R1 + 0xB8060400, // 0003 GETNGBL R1 K2 + 0x8C04032D, // 0004 GETMET R1 R1 K45 + 0x7C040200, // 0005 CALL R1 1 + 0x90022E01, // 0006 SETMBR R0 K23 R1 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_sequence +********************************************************************/ +be_local_closure(class_SymbolTable_create_sequence, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(create_sequence), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0xB80A0400, // 0000 GETNGBL R2 K2 + 0x88080503, // 0001 GETMBR R2 R2 K3 + 0x8C08052E, // 0002 GETMET R2 R2 K46 + 0x5C100200, // 0003 MOVE R4 R1 + 0x50140000, // 0004 LDBOOL R5 0 0 + 0x7C080600, // 0005 CALL R2 3 + 0x8C0C0105, // 0006 GETMET R3 R0 K5 + 0x5C140200, // 0007 MOVE R5 R1 + 0x5C180400, // 0008 MOVE R6 R2 + 0x7C0C0600, // 0009 CALL R3 3 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: symbol_exists +********************************************************************/ +be_local_closure(class_SymbolTable_symbol_exists, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(symbol_exists), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C080108, // 0000 GETMET R2 R0 K8 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x80040400, // 0003 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_user_function +********************************************************************/ +be_local_closure(class_SymbolTable_register_user_function, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(register_user_function), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x8C080108, // 0000 GETMET R2 R0 K8 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x740A0009, // 0003 JMPT R2 #000E + 0xB80A0400, // 0004 GETNGBL R2 K2 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x8C08050D, // 0006 GETMET R2 R2 K13 + 0x5C100200, // 0007 MOVE R4 R1 + 0x50140000, // 0008 LDBOOL R5 0 0 + 0x7C080600, // 0009 CALL R2 3 + 0x8C0C0105, // 000A GETMET R3 R0 K5 + 0x5C140200, // 000B MOVE R5 R1 + 0x5C180400, // 000C MOVE R6 R2 + 0x7C0C0600, // 000D CALL R3 3 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: takes_args +********************************************************************/ +be_local_closure(class_SymbolTable_takes_args, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(takes_args), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0001, // 0005 JMPF R3 #0008 + 0x880C052F, // 0006 GETMBR R3 R2 K47 + 0x70020000, // 0007 JMP #0009 + 0x500C0000, // 0008 LDBOOL R3 0 0 + 0x80040600, // 0009 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_palette +********************************************************************/ +be_local_closure(class_SymbolTable_create_palette, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(create_palette), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xB80E0400, // 0000 GETNGBL R3 K2 + 0x880C0703, // 0001 GETMBR R3 R3 K3 + 0x8C0C0730, // 0002 GETMET R3 R3 K48 + 0x5C140200, // 0003 MOVE R5 R1 + 0x5C180400, // 0004 MOVE R6 R2 + 0x501C0000, // 0005 LDBOOL R7 0 0 + 0x7C0C0800, // 0006 CALL R3 4 + 0x8C100105, // 0007 GETMET R4 R0 K5 + 0x5C180200, // 0008 MOVE R6 R1 + 0x5C1C0600, // 0009 MOVE R7 R3 + 0x7C100600, // 000A CALL R4 3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_variable +********************************************************************/ +be_local_closure(class_SymbolTable_create_variable, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(create_variable), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0xB80A0400, // 0000 GETNGBL R2 K2 + 0x88080503, // 0001 GETMBR R2 R2 K3 + 0x8C080531, // 0002 GETMET R2 R2 K49 + 0x5C100200, // 0003 MOVE R4 R1 + 0x50140000, // 0004 LDBOOL R5 0 0 + 0x7C080600, // 0005 CALL R2 3 + 0x8C0C0105, // 0006 GETMET R3 R0 K5 + 0x5C140200, // 0007 MOVE R5 R1 + 0x5C180400, // 0008 MOVE R6 R2 + 0x7C0C0600, // 0009 CALL R3 3 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: list_symbols +********************************************************************/ +be_local_closure(class_SymbolTable_list_symbols, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(list_symbols), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x60080010, // 0002 GETGBL R2 G16 + 0x880C0107, // 0003 GETMBR R3 R0 K7 + 0x8C0C0732, // 0004 GETMET R3 R3 K50 + 0x7C0C0200, // 0005 CALL R3 1 + 0x7C080200, // 0006 CALL R2 1 + 0xA802000C, // 0007 EXBLK 0 #0015 + 0x5C0C0400, // 0008 MOVE R3 R2 + 0x7C0C0000, // 0009 CALL R3 0 + 0x88100107, // 000A GETMBR R4 R0 K7 + 0x94100803, // 000B GETIDX R4 R4 R3 + 0x8C140333, // 000C GETMET R5 R1 K51 + 0x601C0018, // 000D GETGBL R7 G24 + 0x58200034, // 000E LDCONST R8 K52 + 0x5C240600, // 000F MOVE R9 R3 + 0x8C280929, // 0010 GETMET R10 R4 K41 + 0x7C280200, // 0011 CALL R10 1 + 0x7C1C0600, // 0012 CALL R7 3 + 0x7C140400, // 0013 CALL R5 2 + 0x7001FFF2, // 0014 JMP #0008 + 0x58080035, // 0015 LDCONST R2 K53 + 0xAC080200, // 0016 CATCH R2 1 0 + 0xB0080000, // 0017 RAISE 2 R0 R0 + 0x80040200, // 0018 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_type +********************************************************************/ +be_local_closure(class_SymbolTable_get_type, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(get_type), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0002, // 0005 JMPF R3 #0009 + 0x8C0C0529, // 0006 GETMET R3 R2 K41 + 0x7C0C0200, // 0007 CALL R3 1 + 0x70020000, // 0008 JMP #000A + 0x4C0C0000, // 0009 LDNIL R3 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_instance +********************************************************************/ +be_local_closure(class_SymbolTable_get_instance, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SymbolTable, /* shared constants */ + be_str_weak(get_instance), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0403, // 0004 NE R3 R2 R3 + 0x780E0001, // 0005 JMPF R3 #0008 + 0x880C0536, // 0006 GETMBR R3 R2 K54 + 0x70020000, // 0007 JMP #0009 + 0x4C0C0000, // 0008 LDNIL R3 + 0x80040600, // 0009 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: SymbolTable +********************************************************************/ +be_local_class(SymbolTable, + 2, + NULL, + be_nested_map(26, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(takes_positional_args, -1), be_const_closure(class_SymbolTable_takes_positional_args_closure) }, + { be_const_key_weak(create_value_provider, -1), be_const_closure(class_SymbolTable_create_value_provider_closure) }, + { be_const_key_weak(create_animation, 0), be_const_closure(class_SymbolTable_create_animation_closure) }, + { be_const_key_weak(list_symbols, 15), be_const_closure(class_SymbolTable_list_symbols_closure) }, + { be_const_key_weak(is_dangerous, -1), be_const_closure(class_SymbolTable_is_dangerous_closure) }, + { be_const_key_weak(create_color, -1), be_const_closure(class_SymbolTable_create_color_closure) }, + { be_const_key_weak(mock_engine, -1), be_const_var(1) }, + { be_const_key_weak(entries, 21), be_const_var(0) }, + { be_const_key_weak(add, -1), be_const_closure(class_SymbolTable_add_closure) }, + { be_const_key_weak(_detect_and_cache_symbol, 16), be_const_closure(class_SymbolTable__detect_and_cache_symbol_closure) }, + { be_const_key_weak(_get_named_color_value, -1), be_const_closure(class_SymbolTable__get_named_color_value_closure) }, + { be_const_key_weak(get_reference, -1), be_const_closure(class_SymbolTable_get_reference_closure) }, + { be_const_key_weak(create_template, -1), be_const_closure(class_SymbolTable_create_template_closure) }, + { be_const_key_weak(create_generic, -1), be_const_closure(class_SymbolTable_create_generic_closure) }, + { be_const_key_weak(contains, 8), be_const_closure(class_SymbolTable_contains_closure) }, + { be_const_key_weak(create_palette, -1), be_const_closure(class_SymbolTable_create_palette_closure) }, + { be_const_key_weak(takes_args, 1), be_const_closure(class_SymbolTable_takes_args_closure) }, + { be_const_key_weak(create_sequence, -1), be_const_closure(class_SymbolTable_create_sequence_closure) }, + { be_const_key_weak(symbol_exists, -1), be_const_closure(class_SymbolTable_symbol_exists_closure) }, + { be_const_key_weak(init, 20), be_const_closure(class_SymbolTable_init_closure) }, + { be_const_key_weak(register_user_function, -1), be_const_closure(class_SymbolTable_register_user_function_closure) }, + { be_const_key_weak(get, -1), be_const_closure(class_SymbolTable_get_closure) }, + { be_const_key_weak(create_variable, -1), be_const_closure(class_SymbolTable_create_variable_closure) }, + { be_const_key_weak(takes_named_args, 3), be_const_closure(class_SymbolTable_takes_named_args_closure) }, + { be_const_key_weak(get_type, -1), be_const_closure(class_SymbolTable_get_type_closure) }, + { be_const_key_weak(get_instance, -1), be_const_closure(class_SymbolTable_get_instance_closure) }, + })), + be_str_weak(SymbolTable) +); extern const bclass be_class_Token; // compact class 'Token' ktab size: 52, total: 108 (saved 448 bytes) static const bvalue be_ktab_class_Token[52] = { @@ -1954,11 +15554,12 @@ be_local_class(Token, { be_const_key_weak(is_separator, -1), be_const_closure(class_Token_is_separator_closure) }, { be_const_key_weak(NUMBER, -1), be_const_int(2) }, { be_const_key_weak(keywords, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(72, + be_const_list( * be_nested_list(73, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(strip), be_nested_str_weak(set), be_nested_str_weak(import), + be_nested_str_weak(berry), be_nested_str_weak(color), be_nested_str_weak(palette), be_nested_str_weak(animation), @@ -2098,7 +15699,7 @@ be_local_class(Token, { be_const_key_weak(EVENT_ON, -1), be_const_int(40) }, { be_const_key_weak(EVENT_AFTER, -1), be_const_int(43) }, { be_const_key_weak(statement_keywords, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(13, + be_const_list( * be_nested_list(14, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(strip), be_nested_str_weak(set), @@ -2113,82 +15714,60 @@ be_local_class(Token, be_nested_str_weak(template), be_nested_str_weak(param), be_nested_str_weak(import), + be_nested_str_weak(berry), })) ) } )) }, { be_const_key_weak(EVENT_RESUME, -1), be_const_int(42) }, })), be_str_weak(Token) ); -extern const bclass be_class_MockEngine; - /******************************************************************** -** Solidified function: init +** Solidified function: is_keyword ********************************************************************/ -be_local_closure(class_MockEngine_init, /* name */ +be_local_closure(is_keyword, /* name */ be_nested_proto( - 1, /* nstack */ + 4, /* nstack */ 1, /* argc */ - 2, /* varg */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(time_ms), - /* K1 */ be_const_int(0), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(Token), + /* K2 */ be_nested_str_weak(keywords), + /* K3 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(init), + be_str_weak(is_keyword), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020101, // 0000 SETMBR R0 K0 K1 - 0x80000000, // 0001 RET 0 + ( &(const binstruction[19]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0xB80A0000, // 0001 GETNGBL R2 K0 + 0x88080501, // 0002 GETMBR R2 R2 K1 + 0x88080502, // 0003 GETMBR R2 R2 K2 + 0x7C040200, // 0004 CALL R1 1 + 0xA8020007, // 0005 EXBLK 0 #000E + 0x5C080200, // 0006 MOVE R2 R1 + 0x7C080000, // 0007 CALL R2 0 + 0x1C0C0002, // 0008 EQ R3 R0 R2 + 0x780E0002, // 0009 JMPF R3 #000D + 0x500C0200, // 000A LDBOOL R3 1 0 + 0xA8040001, // 000B EXBLK 1 1 + 0x80040600, // 000C RET 1 R3 + 0x7001FFF7, // 000D JMP #0006 + 0x58040003, // 000E LDCONST R1 K3 + 0xAC040200, // 000F CATCH R1 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x50040000, // 0011 LDBOOL R1 0 0 + 0x80040200, // 0012 RET 1 R1 }) ) ); /*******************************************************************/ -/******************************************************************** -** Solidified function: get_strip_length -********************************************************************/ -be_local_closure(class_MockEngine_get_strip_length, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(get_strip_length), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x5406001D, // 0000 LDINT R1 30 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: MockEngine -********************************************************************/ -be_local_class(MockEngine, - 1, - NULL, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(time_ms, 1), be_const_var(0) }, - { be_const_key_weak(init, -1), be_const_closure(class_MockEngine_init_closure) }, - { be_const_key_weak(get_strip_length, -1), be_const_closure(class_MockEngine_get_strip_length_closure) }, - })), - be_str_weak(MockEngine) -); - /******************************************************************** ** Solidified function: is_right_associative ********************************************************************/ @@ -2357,73 +15936,15 @@ be_local_closure(create_eof_token, /* name */ ); /*******************************************************************/ -// ktab too big for class 'SimpleDSLTranspiler' - skipping -extern const bclass be_class_SimpleDSLTranspiler; +extern const bclass be_class_MockEngine; /******************************************************************** -** Solidified function: expect_keyword +** Solidified function: init ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ +be_local_closure(class_MockEngine_init, /* name */ be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(KEYWORD), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20_X27_X25s_X27), - }), - be_str_weak(expect_keyword), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x200C0403, // 0003 NE R3 R2 R3 - 0x780E000B, // 0004 JMPF R3 #0011 - 0x880C0501, // 0005 GETMBR R3 R2 K1 - 0xB8120400, // 0006 GETNGBL R4 K2 - 0x88100903, // 0007 GETMBR R4 R4 K3 - 0x88100904, // 0008 GETMBR R4 R4 K4 - 0x1C0C0604, // 0009 EQ R3 R3 R4 - 0x780E0005, // 000A JMPF R3 #0011 - 0x880C0505, // 000B GETMBR R3 R2 K5 - 0x1C0C0601, // 000C EQ R3 R3 R1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0106, // 000E GETMET R3 R0 K6 - 0x7C0C0200, // 000F CALL R3 1 - 0x70020005, // 0010 JMP #0017 - 0x8C0C0107, // 0011 GETMET R3 R0 K7 - 0x60140018, // 0012 GETGBL R5 G24 - 0x58180008, // 0013 LDCONST R6 K8 - 0x5C1C0200, // 0014 MOVE R7 R1 - 0x7C140400, // 0015 CALL R5 2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_identifier -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ - be_nested_proto( - 5, /* nstack */ + 1, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2431,1740 +15952,15 @@ be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(IDENTIFIER), - /* K5 */ be_nested_str_weak(COLOR), - /* K6 */ be_nested_str_weak(KEYWORD), - /* K7 */ be_nested_str_weak(can_use_as_identifier), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(error), - /* K11 */ be_nested_str_weak(Expected_X20identifier), - /* K12 */ be_nested_str_weak(unknown), - }), - be_str_weak(expect_identifier), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A001A, // 0004 JMPF R2 #0020 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A000F, // 000A JMPT R2 #001B - 0x88080301, // 000B GETMBR R2 R1 K1 - 0xB80E0400, // 000C GETNGBL R3 K2 - 0x880C0703, // 000D GETMBR R3 R3 K3 - 0x880C0705, // 000E GETMBR R3 R3 K5 - 0x1C080403, // 000F EQ R2 R2 R3 - 0x740A0009, // 0010 JMPT R2 #001B - 0x88080301, // 0011 GETMBR R2 R1 K1 - 0xB80E0400, // 0012 GETNGBL R3 K2 - 0x880C0703, // 0013 GETMBR R3 R3 K3 - 0x880C0706, // 0014 GETMBR R3 R3 K6 - 0x1C080403, // 0015 EQ R2 R2 R3 - 0x780A0008, // 0016 JMPF R2 #0020 - 0x8C080107, // 0017 GETMET R2 R0 K7 - 0x88100308, // 0018 GETMBR R4 R1 K8 - 0x7C080400, // 0019 CALL R2 2 - 0x780A0004, // 001A JMPF R2 #0020 - 0x88080308, // 001B GETMBR R2 R1 K8 - 0x8C0C0109, // 001C GETMET R3 R0 K9 - 0x7C0C0200, // 001D CALL R3 1 - 0x80040400, // 001E RET 1 R2 - 0x70020003, // 001F JMP #0024 - 0x8C08010A, // 0020 GETMET R2 R0 K10 - 0x5810000B, // 0021 LDCONST R4 K11 - 0x7C080400, // 0022 CALL R2 2 - 0x80061800, // 0023 RET 1 K12 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: symbol_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_symbol_exists, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(animation_dsl), - /* K2 */ be_nested_str_weak(is_color_name), - /* K3 */ be_nested_str_weak(symbol_table), - /* K4 */ be_nested_str_weak(contains), - /* K5 */ be_nested_str_weak(sequence_names), - /* K6 */ be_nested_str_weak(animation), - }), - be_str_weak(symbol_exists), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C0C0400, // 0004 CALL R3 2 - 0x740E000F, // 0005 JMPT R3 #0016 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x8C0C0704, // 0007 GETMET R3 R3 K4 - 0x5C140200, // 0008 MOVE R5 R1 - 0x7C0C0400, // 0009 CALL R3 2 - 0x740E000A, // 000A JMPT R3 #0016 - 0x880C0105, // 000B GETMBR R3 R0 K5 - 0x8C0C0704, // 000C GETMET R3 R3 K4 - 0x5C140200, // 000D MOVE R5 R1 - 0x7C0C0400, // 000E CALL R3 2 - 0x740E0005, // 000F JMPT R3 #0016 - 0x8C0C0504, // 0010 GETMET R3 R2 K4 - 0xB8160C00, // 0011 GETNGBL R5 K6 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C0C0600, // 0013 CALL R3 3 - 0x740E0000, // 0014 JMPT R3 #0016 - 0x500C0001, // 0015 LDBOOL R3 0 1 - 0x500C0200, // 0016 LDBOOL R3 1 0 - 0x80040600, // 0017 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_additive_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(process_multiplicative_expression), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(PLUS), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K11 */ be_nested_str_weak(is_anonymous_function), - /* K12 */ be_nested_str_weak(repeat_count), - /* K13 */ be_nested_str_weak(string), - /* K14 */ be_nested_str_weak(is_computed_expression_string), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(_X2E), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(create_simple_function_from_string), - /* K19 */ be_nested_str_weak(create_computation_closure_from_string), - }), - be_str_weak(process_additive_expression), - &be_const_str_solidified, - ( &(const binstruction[83]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x5C180200, // 0001 MOVE R6 R1 - 0x5C1C0400, // 0002 MOVE R7 R2 - 0x5C200600, // 0003 MOVE R8 R3 - 0x7C100800, // 0004 CALL R4 4 - 0x8C140101, // 0005 GETMET R5 R0 K1 - 0x7C140200, // 0006 CALL R5 1 - 0x74160022, // 0007 JMPT R5 #002B - 0x8C140102, // 0008 GETMET R5 R0 K2 - 0x7C140200, // 0009 CALL R5 1 - 0x4C180000, // 000A LDNIL R6 - 0x20180A06, // 000B NE R6 R5 R6 - 0x781A001B, // 000C JMPF R6 #0029 - 0x88180B03, // 000D GETMBR R6 R5 K3 - 0xB81E0800, // 000E GETNGBL R7 K4 - 0x881C0F05, // 000F GETMBR R7 R7 K5 - 0x881C0F06, // 0010 GETMBR R7 R7 K6 - 0x1C180C07, // 0011 EQ R6 R6 R7 - 0x741A0005, // 0012 JMPT R6 #0019 - 0x88180B03, // 0013 GETMBR R6 R5 K3 - 0xB81E0800, // 0014 GETNGBL R7 K4 - 0x881C0F05, // 0015 GETMBR R7 R7 K5 - 0x881C0F07, // 0016 GETMBR R7 R7 K7 - 0x1C180C07, // 0017 EQ R6 R6 R7 - 0x781A000F, // 0018 JMPF R6 #0029 - 0x88180B08, // 0019 GETMBR R6 R5 K8 - 0x8C1C0109, // 001A GETMET R7 R0 K9 - 0x7C1C0200, // 001B CALL R7 1 - 0x8C1C0100, // 001C GETMET R7 R0 K0 - 0x5C240200, // 001D MOVE R9 R1 - 0x50280000, // 001E LDBOOL R10 0 0 - 0x5C2C0600, // 001F MOVE R11 R3 - 0x7C1C0800, // 0020 CALL R7 4 - 0x60200018, // 0021 GETGBL R8 G24 - 0x5824000A, // 0022 LDCONST R9 K10 - 0x5C280800, // 0023 MOVE R10 R4 - 0x5C2C0C00, // 0024 MOVE R11 R6 - 0x5C300E00, // 0025 MOVE R12 R7 - 0x7C200800, // 0026 CALL R8 4 - 0x5C101000, // 0027 MOVE R4 R8 - 0x70020000, // 0028 JMP #002A - 0x70020000, // 0029 JMP #002B - 0x7001FFD9, // 002A JMP #0005 - 0x780E0000, // 002B JMPF R3 #002D - 0x80040800, // 002C RET 1 R4 - 0x780A0022, // 002D JMPF R2 #0051 - 0x8C14010B, // 002E GETMET R5 R0 K11 - 0x5C1C0800, // 002F MOVE R7 R4 - 0x7C140400, // 0030 CALL R5 2 - 0x7416001E, // 0031 JMPT R5 #0051 - 0x1C14030C, // 0032 EQ R5 R1 K12 - 0x78160011, // 0033 JMPF R5 #0046 - 0xA4161A00, // 0034 IMPORT R5 K13 - 0x8C18010E, // 0035 GETMET R6 R0 K14 - 0x5C200800, // 0036 MOVE R8 R4 - 0x7C180400, // 0037 CALL R6 2 - 0x741A0005, // 0038 JMPT R6 #003F - 0x8C180B0F, // 0039 GETMET R6 R5 K15 - 0x5C200800, // 003A MOVE R8 R4 - 0x58240010, // 003B LDCONST R9 K16 - 0x7C180600, // 003C CALL R6 3 - 0x28180D11, // 003D GE R6 R6 K17 - 0x781A0004, // 003E JMPF R6 #0044 - 0x8C180112, // 003F GETMET R6 R0 K18 - 0x5C200800, // 0040 MOVE R8 R4 - 0x7C180400, // 0041 CALL R6 2 - 0x80040C00, // 0042 RET 1 R6 - 0x70020000, // 0043 JMP #0045 - 0x80040800, // 0044 RET 1 R4 - 0x70020009, // 0045 JMP #0050 - 0x8C14010E, // 0046 GETMET R5 R0 K14 - 0x5C1C0800, // 0047 MOVE R7 R4 - 0x7C140400, // 0048 CALL R5 2 - 0x78160004, // 0049 JMPF R5 #004F - 0x8C140113, // 004A GETMET R5 R0 K19 - 0x5C1C0800, // 004B MOVE R7 R4 - 0x7C140400, // 004C CALL R5 2 - 0x80040A00, // 004D RET 1 R5 - 0x70020000, // 004E JMP #0050 - 0x80040800, // 004F RET 1 R4 - 0x70020000, // 0050 JMP #0052 - 0x80040800, // 0051 RET 1 R4 - 0x80000000, // 0052 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: at_end -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_nested_str_weak(tokens), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(EOF), - }), - be_str_weak(at_end), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x28040202, // 0004 GE R1 R1 R2 - 0x7406000D, // 0005 JMPT R1 #0014 - 0x8C040102, // 0006 GETMET R1 R0 K2 - 0x7C040200, // 0007 CALL R1 1 - 0x4C080000, // 0008 LDNIL R2 - 0x20040202, // 0009 NE R1 R1 R2 - 0x78060007, // 000A JMPF R1 #0013 - 0x8C040102, // 000B GETMET R1 R0 K2 - 0x7C040200, // 000C CALL R1 1 - 0x88040303, // 000D GETMBR R1 R1 K3 - 0xB80A0800, // 000E GETNGBL R2 K4 - 0x88080505, // 000F GETMBR R2 R2 K5 - 0x88080506, // 0010 GETMBR R2 R2 K6 - 0x1C040202, // 0011 EQ R1 R1 R2 - 0x74060000, // 0012 JMPT R1 #0014 - 0x50040001, // 0013 LDBOOL R1 0 1 - 0x50040200, // 0014 LDBOOL R1 1 0 - 0x80040200, // 0015 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_wait_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(process_time_value), - /* K2 */ be_nested_str_weak(collect_inline_comment), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(_X25s_X2Epush_wait_step_X28_X25s_X29_X25s), - /* K5 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_wait_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x8C0C0103, // 0006 GETMET R3 R0 K3 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x8C1C0105, // 0009 GETMET R7 R0 K5 - 0x7C1C0200, // 000A CALL R7 1 - 0x5C200200, // 000B MOVE R8 R1 - 0x5C240400, // 000C MOVE R9 R2 - 0x7C140800, // 000D CALL R5 4 - 0x7C0C0400, // 000E CALL R3 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_computed_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_computed_expression, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X28), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(animation_X2E), - /* K5 */ be_nested_str_weak(_), - }), - be_str_weak(is_computed_expression), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140901, // 0001 GETMET R5 R4 K1 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x58200002, // 0003 LDCONST R8 K2 - 0x7C140600, // 0004 CALL R5 3 - 0x28140B03, // 0005 GE R5 R5 K3 - 0x7416001E, // 0006 JMPT R5 #0026 - 0x8C140901, // 0007 GETMET R5 R4 K1 - 0x5C1C0600, // 0008 MOVE R7 R3 - 0x58200002, // 0009 LDCONST R8 K2 - 0x7C140600, // 000A CALL R5 3 - 0x28140B03, // 000B GE R5 R5 K3 - 0x74160018, // 000C JMPT R5 #0026 - 0x8C140901, // 000D GETMET R5 R4 K1 - 0x5C1C0200, // 000E MOVE R7 R1 - 0x58200004, // 000F LDCONST R8 K4 - 0x7C140600, // 0010 CALL R5 3 - 0x28140B03, // 0011 GE R5 R5 K3 - 0x74160012, // 0012 JMPT R5 #0026 - 0x8C140901, // 0013 GETMET R5 R4 K1 - 0x5C1C0600, // 0014 MOVE R7 R3 - 0x58200004, // 0015 LDCONST R8 K4 - 0x7C140600, // 0016 CALL R5 3 - 0x28140B03, // 0017 GE R5 R5 K3 - 0x7416000C, // 0018 JMPT R5 #0026 - 0x8C140901, // 0019 GETMET R5 R4 K1 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x58200005, // 001B LDCONST R8 K5 - 0x7C140600, // 001C CALL R5 3 - 0x28140B03, // 001D GE R5 R5 K3 - 0x74160006, // 001E JMPT R5 #0026 - 0x8C140901, // 001F GETMET R5 R4 K1 - 0x5C1C0600, // 0020 MOVE R7 R3 - 0x58200005, // 0021 LDCONST R8 K5 - 0x7C140600, // 0022 CALL R5 3 - 0x28140B03, // 0023 GE R5 R5 K3 - 0x74160000, // 0024 JMPT R5 #0026 - 0x50140001, // 0025 LDBOOL R5 0 1 - 0x50140200, // 0026 LDBOOL R5 1 0 - 0x80040A00, // 0027 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_colon -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(COLON), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X3A_X27), - }), - be_str_weak(expect_colon), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_multiplicative_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(process_unary_expression), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(MULTIPLY), - /* K7 */ be_nested_str_weak(DIVIDE), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - }), - be_str_weak(process_multiplicative_expression), - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x5C180200, // 0001 MOVE R6 R1 - 0x5C1C0400, // 0002 MOVE R7 R2 - 0x5C200600, // 0003 MOVE R8 R3 - 0x7C100800, // 0004 CALL R4 4 - 0x8C140101, // 0005 GETMET R5 R0 K1 - 0x7C140200, // 0006 CALL R5 1 - 0x74160022, // 0007 JMPT R5 #002B - 0x8C140102, // 0008 GETMET R5 R0 K2 - 0x7C140200, // 0009 CALL R5 1 - 0x4C180000, // 000A LDNIL R6 - 0x20180A06, // 000B NE R6 R5 R6 - 0x781A001B, // 000C JMPF R6 #0029 - 0x88180B03, // 000D GETMBR R6 R5 K3 - 0xB81E0800, // 000E GETNGBL R7 K4 - 0x881C0F05, // 000F GETMBR R7 R7 K5 - 0x881C0F06, // 0010 GETMBR R7 R7 K6 - 0x1C180C07, // 0011 EQ R6 R6 R7 - 0x741A0005, // 0012 JMPT R6 #0019 - 0x88180B03, // 0013 GETMBR R6 R5 K3 - 0xB81E0800, // 0014 GETNGBL R7 K4 - 0x881C0F05, // 0015 GETMBR R7 R7 K5 - 0x881C0F07, // 0016 GETMBR R7 R7 K7 - 0x1C180C07, // 0017 EQ R6 R6 R7 - 0x781A000F, // 0018 JMPF R6 #0029 - 0x88180B08, // 0019 GETMBR R6 R5 K8 - 0x8C1C0109, // 001A GETMET R7 R0 K9 - 0x7C1C0200, // 001B CALL R7 1 - 0x8C1C0100, // 001C GETMET R7 R0 K0 - 0x5C240200, // 001D MOVE R9 R1 - 0x50280000, // 001E LDBOOL R10 0 0 - 0x5C2C0600, // 001F MOVE R11 R3 - 0x7C1C0800, // 0020 CALL R7 4 - 0x60200018, // 0021 GETGBL R8 G24 - 0x5824000A, // 0022 LDCONST R9 K10 - 0x5C280800, // 0023 MOVE R10 R4 - 0x5C2C0C00, // 0024 MOVE R11 R6 - 0x5C300E00, // 0025 MOVE R12 R7 - 0x7C200800, // 0026 CALL R8 4 - 0x5C101000, // 0027 MOVE R4 R8 - 0x70020000, // 0028 JMP #002A - 0x70020000, // 0029 JMP #002B - 0x7001FFD9, // 002A JMP #0005 - 0x80040800, // 002B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_named_color_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_named_color_value, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(SimpleDSLTranspiler), - /* K2 */ be_nested_str_weak(named_colors), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(0xFFFFFFFF), - }), - be_str_weak(get_named_color_value), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x88080502, // 0002 GETMBR R2 R2 K2 - 0x8C080503, // 0003 GETMET R2 R2 K3 - 0x5C100200, // 0004 MOVE R4 R1 - 0x58140004, // 0005 LDCONST R5 K4 - 0x7C080600, // 0006 CALL R2 3 - 0x80040400, // 0007 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_color -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_color, /* name */ - be_nested_proto( - 15, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[37]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(color), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(KEYWORD), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(peek), - /* K13 */ be_nested_str_weak(LEFT_PAREN), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(), - /* K16 */ be_nested_str_weak(COMMENT), - /* K17 */ be_nested_str_weak(_X20_X20), - /* K18 */ be_nested_str_weak(template_definitions), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(process_function_arguments), - /* K21 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K22 */ be_nested_str_weak(engine), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), - /* K25 */ be_nested_str_weak(_validate_color_provider_factory_exists), - /* K26 */ be_nested_str_weak(error), - /* K27 */ be_nested_str_weak(Color_X20provider_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), - /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), - /* K29 */ be_nested_str_weak(_create_instance_for_validation), - /* K30 */ be_nested_str_weak(symbol_table), - /* K31 */ be_nested_str_weak(_process_named_arguments_for_color_provider), - /* K32 */ be_nested_str_weak(_X25s_), - /* K33 */ be_nested_str_weak(process_value), - /* K34 */ be_nested_str_weak(collect_inline_comment), - /* K35 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K36 */ be_nested_str_weak(string), - }), - be_str_weak(process_color), - &be_const_str_solidified, - ( &(const binstruction[192]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x880C0507, // 0010 GETMBR R3 R2 K7 - 0xB8121000, // 0011 GETNGBL R4 K8 - 0x88100909, // 0012 GETMBR R4 R4 K9 - 0x8810090A, // 0013 GETMBR R4 R4 K10 - 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x740E0005, // 0015 JMPT R3 #001C - 0x880C0507, // 0016 GETMBR R3 R2 K7 - 0xB8121000, // 0017 GETNGBL R4 K8 - 0x88100909, // 0018 GETMBR R4 R4 K9 - 0x8810090B, // 0019 GETMBR R4 R4 K11 - 0x1C0C0604, // 001A EQ R3 R3 R4 - 0x780E0062, // 001B JMPF R3 #007F - 0x8C0C010C, // 001C GETMET R3 R0 K12 - 0x7C0C0200, // 001D CALL R3 1 - 0x4C100000, // 001E LDNIL R4 - 0x200C0604, // 001F NE R3 R3 R4 - 0x780E005D, // 0020 JMPF R3 #007F - 0x8C0C010C, // 0021 GETMET R3 R0 K12 - 0x7C0C0200, // 0022 CALL R3 1 - 0x880C0707, // 0023 GETMBR R3 R3 K7 - 0xB8121000, // 0024 GETNGBL R4 K8 - 0x88100909, // 0025 GETMBR R4 R4 K9 - 0x8810090D, // 0026 GETMBR R4 R4 K13 - 0x1C0C0604, // 0027 EQ R3 R3 R4 - 0x780E0055, // 0028 JMPF R3 #007F - 0x880C050E, // 0029 GETMBR R3 R2 K14 - 0x8C100100, // 002A GETMET R4 R0 K0 - 0x7C100200, // 002B CALL R4 1 - 0x5810000F, // 002C LDCONST R4 K15 - 0x8C140106, // 002D GETMET R5 R0 K6 - 0x7C140200, // 002E CALL R5 1 - 0x4C180000, // 002F LDNIL R6 - 0x20140A06, // 0030 NE R5 R5 R6 - 0x7816000E, // 0031 JMPF R5 #0041 - 0x8C140106, // 0032 GETMET R5 R0 K6 - 0x7C140200, // 0033 CALL R5 1 - 0x88140B07, // 0034 GETMBR R5 R5 K7 - 0xB81A1000, // 0035 GETNGBL R6 K8 - 0x88180D09, // 0036 GETMBR R6 R6 K9 - 0x88180D10, // 0037 GETMBR R6 R6 K16 - 0x1C140A06, // 0038 EQ R5 R5 R6 - 0x78160006, // 0039 JMPF R5 #0041 - 0x8C140106, // 003A GETMET R5 R0 K6 - 0x7C140200, // 003B CALL R5 1 - 0x88140B0E, // 003C GETMBR R5 R5 K14 - 0x00162205, // 003D ADD R5 K17 R5 - 0x5C100A00, // 003E MOVE R4 R5 - 0x8C140100, // 003F GETMET R5 R0 K0 - 0x7C140200, // 0040 CALL R5 1 - 0x88140112, // 0041 GETMBR R5 R0 K18 - 0x8C140B13, // 0042 GETMET R5 R5 K19 - 0x5C1C0600, // 0043 MOVE R7 R3 - 0x7C140400, // 0044 CALL R5 2 - 0x78160013, // 0045 JMPF R5 #005A - 0x8C140114, // 0046 GETMET R5 R0 K20 - 0x501C0000, // 0047 LDBOOL R7 0 0 - 0x7C140400, // 0048 CALL R5 2 - 0x20180B0F, // 0049 NE R6 R5 K15 - 0x781A0004, // 004A JMPF R6 #0050 - 0x60180018, // 004B GETGBL R6 G24 - 0x581C0015, // 004C LDCONST R7 K21 - 0x5C200A00, // 004D MOVE R8 R5 - 0x7C180400, // 004E CALL R6 2 - 0x70020000, // 004F JMP #0051 - 0x58180016, // 0050 LDCONST R6 K22 - 0x8C1C0117, // 0051 GETMET R7 R0 K23 - 0x60240018, // 0052 GETGBL R9 G24 - 0x58280018, // 0053 LDCONST R10 K24 - 0x5C2C0600, // 0054 MOVE R11 R3 - 0x5C300C00, // 0055 MOVE R12 R6 - 0x5C340800, // 0056 MOVE R13 R4 - 0x7C240800, // 0057 CALL R9 4 - 0x7C1C0400, // 0058 CALL R7 2 - 0x70020023, // 0059 JMP #007E - 0x8C140119, // 005A GETMET R5 R0 K25 - 0x5C1C0600, // 005B MOVE R7 R3 - 0x7C140400, // 005C CALL R5 2 - 0x74160008, // 005D JMPT R5 #0067 - 0x8C14011A, // 005E GETMET R5 R0 K26 - 0x601C0018, // 005F GETGBL R7 G24 - 0x5820001B, // 0060 LDCONST R8 K27 - 0x5C240600, // 0061 MOVE R9 R3 - 0x7C1C0400, // 0062 CALL R7 2 - 0x7C140400, // 0063 CALL R5 2 - 0x8C140104, // 0064 GETMET R5 R0 K4 - 0x7C140200, // 0065 CALL R5 1 - 0x80000A00, // 0066 RET 0 - 0x8C140117, // 0067 GETMET R5 R0 K23 - 0x601C0018, // 0068 GETGBL R7 G24 - 0x5820001C, // 0069 LDCONST R8 K28 - 0x5C240200, // 006A MOVE R9 R1 - 0x5C280600, // 006B MOVE R10 R3 - 0x5C2C0800, // 006C MOVE R11 R4 - 0x7C1C0800, // 006D CALL R7 4 - 0x7C140400, // 006E CALL R5 2 - 0x8C14011D, // 006F GETMET R5 R0 K29 - 0x5C1C0600, // 0070 MOVE R7 R3 - 0x7C140400, // 0071 CALL R5 2 - 0x4C180000, // 0072 LDNIL R6 - 0x20180A06, // 0073 NE R6 R5 R6 - 0x781A0001, // 0074 JMPF R6 #0077 - 0x8818011E, // 0075 GETMBR R6 R0 K30 - 0x98180205, // 0076 SETIDX R6 R1 R5 - 0x8C18011F, // 0077 GETMET R6 R0 K31 - 0x60200018, // 0078 GETGBL R8 G24 - 0x58240020, // 0079 LDCONST R9 K32 - 0x5C280200, // 007A MOVE R10 R1 - 0x7C200400, // 007B CALL R8 2 - 0x5C240600, // 007C MOVE R9 R3 - 0x7C180600, // 007D CALL R6 3 - 0x7002003F, // 007E JMP #00BF - 0x8C0C0106, // 007F GETMET R3 R0 K6 - 0x7C0C0200, // 0080 CALL R3 1 - 0x4C100000, // 0081 LDNIL R4 - 0x20100604, // 0082 NE R4 R3 R4 - 0x78120012, // 0083 JMPF R4 #0097 - 0x88100707, // 0084 GETMBR R4 R3 K7 - 0xB8161000, // 0085 GETNGBL R5 K8 - 0x88140B09, // 0086 GETMBR R5 R5 K9 - 0x88140B0B, // 0087 GETMBR R5 R5 K11 - 0x1C100805, // 0088 EQ R4 R4 R5 - 0x7812000C, // 0089 JMPF R4 #0097 - 0x8C10010C, // 008A GETMET R4 R0 K12 - 0x7C100200, // 008B CALL R4 1 - 0x4C140000, // 008C LDNIL R5 - 0x1C100805, // 008D EQ R4 R4 R5 - 0x74120008, // 008E JMPT R4 #0098 - 0x8C10010C, // 008F GETMET R4 R0 K12 - 0x7C100200, // 0090 CALL R4 1 - 0x88100907, // 0091 GETMBR R4 R4 K7 - 0xB8161000, // 0092 GETNGBL R5 K8 - 0x88140B09, // 0093 GETMBR R5 R5 K9 - 0x88140B0D, // 0094 GETMBR R5 R5 K13 - 0x20100805, // 0095 NE R4 R4 R5 - 0x74120000, // 0096 JMPT R4 #0098 - 0x50100001, // 0097 LDBOOL R4 0 1 - 0x50100200, // 0098 LDBOOL R4 1 0 - 0x78120001, // 0099 JMPF R4 #009C - 0x8814070E, // 009A GETMBR R5 R3 K14 - 0x70020000, // 009B JMP #009D - 0x4C140000, // 009C LDNIL R5 - 0x8C180121, // 009D GETMET R6 R0 K33 - 0x58200003, // 009E LDCONST R8 K3 - 0x7C180400, // 009F CALL R6 2 - 0x8C1C0122, // 00A0 GETMET R7 R0 K34 - 0x7C1C0200, // 00A1 CALL R7 1 - 0x8C200117, // 00A2 GETMET R8 R0 K23 - 0x60280018, // 00A3 GETGBL R10 G24 - 0x582C0023, // 00A4 LDCONST R11 K35 - 0x5C300200, // 00A5 MOVE R12 R1 - 0x5C340C00, // 00A6 MOVE R13 R6 - 0x5C380E00, // 00A7 MOVE R14 R7 - 0x7C280800, // 00A8 CALL R10 4 - 0x7C200400, // 00A9 CALL R8 2 - 0x78120011, // 00AA JMPF R4 #00BD - 0x4C200000, // 00AB LDNIL R8 - 0x20200A08, // 00AC NE R8 R5 R8 - 0x7822000E, // 00AD JMPF R8 #00BD - 0x8820011E, // 00AE GETMBR R8 R0 K30 - 0x8C201113, // 00AF GETMET R8 R8 K19 - 0x5C280A00, // 00B0 MOVE R10 R5 - 0x7C200400, // 00B1 CALL R8 2 - 0x78220009, // 00B2 JMPF R8 #00BD - 0x8820011E, // 00B3 GETMBR R8 R0 K30 - 0x94201005, // 00B4 GETIDX R8 R8 R5 - 0x60240004, // 00B5 GETGBL R9 G4 - 0x5C281000, // 00B6 MOVE R10 R8 - 0x7C240200, // 00B7 CALL R9 1 - 0x20241324, // 00B8 NE R9 R9 K36 - 0x78260001, // 00B9 JMPF R9 #00BC - 0x8824011E, // 00BA GETMBR R9 R0 K30 - 0x98240208, // 00BB SETIDX R9 R1 R8 - 0x70020001, // 00BC JMP #00BF - 0x8820011E, // 00BD GETMBR R8 R0 K30 - 0x98200303, // 00BE SETIDX R8 R1 K3 - 0x80000000, // 00BF RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_standalone_log -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_standalone_log, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_left_paren), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(STRING), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), - /* K9 */ be_nested_str_weak(skip_statement), - /* K10 */ be_nested_str_weak(value), - /* K11 */ be_nested_str_weak(expect_right_paren), - /* K12 */ be_nested_str_weak(collect_inline_comment), - /* K13 */ be_nested_str_weak(process_log_call), - /* K14 */ be_nested_str_weak(standalone), - /* K15 */ be_nested_str_weak(add), - }), - be_str_weak(process_standalone_log), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C040102, // 0004 GETMET R1 R0 K2 - 0x7C040200, // 0005 CALL R1 1 - 0x4C080000, // 0006 LDNIL R2 - 0x1C080202, // 0007 EQ R2 R1 R2 - 0x740A0005, // 0008 JMPT R2 #000F - 0x88080303, // 0009 GETMBR R2 R1 K3 - 0xB80E0800, // 000A GETNGBL R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x880C0706, // 000C GETMBR R3 R3 K6 - 0x20080403, // 000D NE R2 R2 R3 - 0x780A0005, // 000E JMPF R2 #0015 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x58100008, // 0010 LDCONST R4 K8 - 0x7C080400, // 0011 CALL R2 2 - 0x8C080109, // 0012 GETMET R2 R0 K9 - 0x7C080200, // 0013 CALL R2 1 - 0x80000400, // 0014 RET 0 - 0x8808030A, // 0015 GETMBR R2 R1 K10 - 0x8C0C0100, // 0016 GETMET R3 R0 K0 - 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C010B, // 0018 GETMET R3 R0 K11 - 0x7C0C0200, // 0019 CALL R3 1 - 0x8C0C010C, // 001A GETMET R3 R0 K12 - 0x7C0C0200, // 001B CALL R3 1 - 0x8C10010D, // 001C GETMET R4 R0 K13 - 0x5C180400, // 001D MOVE R6 R2 - 0x581C000E, // 001E LDCONST R7 K14 - 0x5C200600, // 001F MOVE R8 R3 - 0x7C100800, // 0020 CALL R4 4 - 0x8C14010F, // 0021 GETMET R5 R0 K15 - 0x5C1C0800, // 0022 MOVE R7 R4 - 0x7C140400, // 0023 CALL R5 2 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resolve_symbol_reference -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_resolve_symbol_reference, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(animation_dsl), - /* K2 */ be_nested_str_weak(is_color_name), - /* K3 */ be_nested_str_weak(get_named_color_value), - /* K4 */ be_nested_str_weak(symbol_table), - /* K5 */ be_nested_str_weak(contains), - /* K6 */ be_nested_str_weak(sequence_names), - /* K7 */ be_nested_str_weak(_X25s_), - /* K8 */ be_nested_str_weak(animation), - /* K9 */ be_nested_str_weak(animation_X2E_X25s), - }), - be_str_weak(resolve_symbol_reference), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C0C0400, // 0004 CALL R3 2 - 0x780E0003, // 0005 JMPF R3 #000A - 0x8C0C0103, // 0006 GETMET R3 R0 K3 - 0x5C140200, // 0007 MOVE R5 R1 - 0x7C0C0400, // 0008 CALL R3 2 - 0x80040600, // 0009 RET 1 R3 - 0x880C0104, // 000A GETMBR R3 R0 K4 - 0x8C0C0705, // 000B GETMET R3 R3 K5 - 0x5C140200, // 000C MOVE R5 R1 - 0x7C0C0400, // 000D CALL R3 2 - 0x740E0004, // 000E JMPT R3 #0014 - 0x880C0106, // 000F GETMBR R3 R0 K6 - 0x8C0C0705, // 0010 GETMET R3 R3 K5 - 0x5C140200, // 0011 MOVE R5 R1 - 0x7C0C0400, // 0012 CALL R3 2 - 0x780E0005, // 0013 JMPF R3 #001A - 0x600C0018, // 0014 GETGBL R3 G24 - 0x58100007, // 0015 LDCONST R4 K7 - 0x5C140200, // 0016 MOVE R5 R1 - 0x7C0C0400, // 0017 CALL R3 2 - 0x80040600, // 0018 RET 1 R3 - 0x7002000F, // 0019 JMP #002A - 0x8C0C0505, // 001A GETMET R3 R2 K5 - 0xB8161000, // 001B GETNGBL R5 K8 - 0x5C180200, // 001C MOVE R6 R1 - 0x7C0C0600, // 001D CALL R3 3 - 0x780E0005, // 001E JMPF R3 #0025 - 0x600C0018, // 001F GETGBL R3 G24 - 0x58100009, // 0020 LDCONST R4 K9 - 0x5C140200, // 0021 MOVE R5 R1 - 0x7C0C0400, // 0022 CALL R3 2 - 0x80040600, // 0023 RET 1 R3 - 0x70020004, // 0024 JMP #002A - 0x600C0018, // 0025 GETGBL R3 G24 - 0x58100007, // 0026 LDCONST R4 K7 - 0x5C140200, // 0027 MOVE R5 R1 - 0x7C0C0400, // 0028 CALL R3 2 - 0x80040600, // 0029 RET 1 R3 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_whitespace_including_newlines -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(COMMENT), - /* K6 */ be_nested_str_weak(NEWLINE), - /* K7 */ be_nested_str_weak(next), - }), - be_str_weak(skip_whitespace_including_newlines), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060015, // 0002 JMPT R1 #0019 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x4C080000, // 0005 LDNIL R2 - 0x20080202, // 0006 NE R2 R1 R2 - 0x780A000E, // 0007 JMPF R2 #0017 - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0xB80E0600, // 0009 GETNGBL R3 K3 - 0x880C0704, // 000A GETMBR R3 R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x1C080403, // 000C EQ R2 R2 R3 - 0x740A0005, // 000D JMPT R2 #0014 - 0x88080302, // 000E GETMBR R2 R1 K2 - 0xB80E0600, // 000F GETNGBL R3 K3 - 0x880C0704, // 0010 GETMBR R3 R3 K4 - 0x880C0706, // 0011 GETMBR R3 R3 K6 - 0x1C080403, // 0012 EQ R2 R2 R3 - 0x780A0002, // 0013 JMPF R2 #0017 - 0x8C080107, // 0014 GETMET R2 R0 K7 - 0x7C080200, // 0015 CALL R2 1 - 0x70020000, // 0016 JMP #0018 - 0x70020000, // 0017 JMP #0019 - 0x7001FFE6, // 0018 JMP #0000 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_import -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(collect_inline_comment), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(import_X20_X25s_X20_X25s), - }), - be_str_weak(process_import), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x8C0C0103, // 0006 GETMET R3 R0 K3 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200400, // 000A MOVE R8 R2 - 0x7C140600, // 000B CALL R5 3 - 0x7C0C0400, // 000C CALL R3 2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_paren), - /* K3 */ be_nested_str_weak(skip_whitespace), - /* K4 */ be_nested_str_weak(process_additive_expression), - /* K5 */ be_nested_str_weak(argument), - /* K6 */ be_nested_str_weak(process_value), - /* K7 */ be_nested_str_weak(push), - /* K8 */ be_nested_str_weak(current), - /* K9 */ be_nested_str_weak(type), - /* K10 */ be_nested_str_weak(animation_dsl), - /* K11 */ be_nested_str_weak(Token), - /* K12 */ be_nested_str_weak(COMMA), - /* K13 */ be_nested_str_weak(next), - /* K14 */ be_nested_str_weak(error), - /* K15 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K16 */ be_nested_str_weak(expect_right_paren), - /* K17 */ be_nested_str_weak(), - /* K18 */ be_const_int(0), - /* K19 */ be_const_int(1), - /* K20 */ be_nested_str_weak(_X2C_X20), - /* K21 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(process_function_arguments), - &be_const_str_solidified, - ( &(const binstruction[83]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x60080012, // 0002 GETGBL R2 G18 - 0x7C080000, // 0003 CALL R2 0 - 0x8C0C0101, // 0004 GETMET R3 R0 K1 - 0x7C0C0200, // 0005 CALL R3 1 - 0x740E0034, // 0006 JMPT R3 #003C - 0x8C0C0102, // 0007 GETMET R3 R0 K2 - 0x7C0C0200, // 0008 CALL R3 1 - 0x740E0031, // 0009 JMPT R3 #003C - 0x8C0C0103, // 000A GETMET R3 R0 K3 - 0x7C0C0200, // 000B CALL R3 1 - 0x8C0C0102, // 000C GETMET R3 R0 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x780E0000, // 000E JMPF R3 #0010 - 0x7002002B, // 000F JMP #003C - 0x4C0C0000, // 0010 LDNIL R3 - 0x78060006, // 0011 JMPF R1 #0019 - 0x8C100104, // 0012 GETMET R4 R0 K4 - 0x58180005, // 0013 LDCONST R6 K5 - 0x501C0200, // 0014 LDBOOL R7 1 0 - 0x50200200, // 0015 LDBOOL R8 1 0 - 0x7C100800, // 0016 CALL R4 4 - 0x5C0C0800, // 0017 MOVE R3 R4 - 0x70020003, // 0018 JMP #001D - 0x8C100106, // 0019 GETMET R4 R0 K6 - 0x58180005, // 001A LDCONST R6 K5 - 0x7C100400, // 001B CALL R4 2 - 0x5C0C0800, // 001C MOVE R3 R4 - 0x8C100507, // 001D GETMET R4 R2 K7 - 0x5C180600, // 001E MOVE R6 R3 - 0x7C100400, // 001F CALL R4 2 - 0x8C100103, // 0020 GETMET R4 R0 K3 - 0x7C100200, // 0021 CALL R4 1 - 0x8C100108, // 0022 GETMET R4 R0 K8 - 0x7C100200, // 0023 CALL R4 1 - 0x4C140000, // 0024 LDNIL R5 - 0x20100805, // 0025 NE R4 R4 R5 - 0x7812000C, // 0026 JMPF R4 #0034 - 0x8C100108, // 0027 GETMET R4 R0 K8 - 0x7C100200, // 0028 CALL R4 1 - 0x88100909, // 0029 GETMBR R4 R4 K9 - 0xB8161400, // 002A GETNGBL R5 K10 - 0x88140B0B, // 002B GETMBR R5 R5 K11 - 0x88140B0C, // 002C GETMBR R5 R5 K12 - 0x1C100805, // 002D EQ R4 R4 R5 - 0x78120004, // 002E JMPF R4 #0034 - 0x8C10010D, // 002F GETMET R4 R0 K13 - 0x7C100200, // 0030 CALL R4 1 - 0x8C100103, // 0031 GETMET R4 R0 K3 - 0x7C100200, // 0032 CALL R4 1 - 0x70020006, // 0033 JMP #003B - 0x8C100102, // 0034 GETMET R4 R0 K2 - 0x7C100200, // 0035 CALL R4 1 - 0x74120003, // 0036 JMPT R4 #003B - 0x8C10010E, // 0037 GETMET R4 R0 K14 - 0x5818000F, // 0038 LDCONST R6 K15 - 0x7C100400, // 0039 CALL R4 2 - 0x70020000, // 003A JMP #003C - 0x7001FFC7, // 003B JMP #0004 - 0x8C0C0110, // 003C GETMET R3 R0 K16 - 0x7C0C0200, // 003D CALL R3 1 - 0x580C0011, // 003E LDCONST R3 K17 - 0x60100010, // 003F GETGBL R4 G16 - 0x6014000C, // 0040 GETGBL R5 G12 - 0x5C180400, // 0041 MOVE R6 R2 - 0x7C140200, // 0042 CALL R5 1 - 0x04140B13, // 0043 SUB R5 R5 K19 - 0x40162405, // 0044 CONNECT R5 K18 R5 - 0x7C100200, // 0045 CALL R4 1 - 0xA8020007, // 0046 EXBLK 0 #004F - 0x5C140800, // 0047 MOVE R5 R4 - 0x7C140000, // 0048 CALL R5 0 - 0x24180B12, // 0049 GT R6 R5 K18 - 0x781A0000, // 004A JMPF R6 #004C - 0x000C0714, // 004B ADD R3 R3 K20 - 0x94180405, // 004C GETIDX R6 R2 R5 - 0x000C0606, // 004D ADD R3 R3 R6 - 0x7001FFF7, // 004E JMP #0047 - 0x58100015, // 004F LDCONST R4 K21 - 0xAC100200, // 0050 CATCH R4 1 0 - 0xB0080000, // 0051 RAISE 2 R0 R0 - 0x80040600, // 0052 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_percentage_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(PERCENTAGE), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(NUMBER), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20percentage_X20value), - }), - be_str_weak(process_percentage_value), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0015, // 0004 JMPF R2 #001B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A000F, // 000A JMPF R2 #001B - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x600C000A, // 000E GETGBL R3 G10 - 0x5411FFFD, // 000F LDINT R4 -2 - 0x40120E04, // 0010 CONNECT R4 K7 R4 - 0x94100404, // 0011 GETIDX R4 R2 R4 - 0x7C0C0200, // 0012 CALL R3 1 - 0x60100009, // 0013 GETGBL R4 G9 - 0x541600FE, // 0014 LDINT R5 255 - 0x08140605, // 0015 MUL R5 R3 R5 - 0x541A0063, // 0016 LDINT R6 100 - 0x0C140A06, // 0017 DIV R5 R5 R6 - 0x7C100200, // 0018 CALL R4 1 - 0x80040800, // 0019 RET 1 R4 - 0x70020017, // 001A JMP #0033 - 0x4C080000, // 001B LDNIL R2 - 0x20080202, // 001C NE R2 R1 R2 - 0x780A000F, // 001D JMPF R2 #002E - 0x88080301, // 001E GETMBR R2 R1 K1 - 0xB80E0400, // 001F GETNGBL R3 K2 - 0x880C0703, // 0020 GETMBR R3 R3 K3 - 0x880C0708, // 0021 GETMBR R3 R3 K8 - 0x1C080403, // 0022 EQ R2 R2 R3 - 0x780A0009, // 0023 JMPF R2 #002E - 0x88080305, // 0024 GETMBR R2 R1 K5 - 0x8C0C0106, // 0025 GETMET R3 R0 K6 - 0x7C0C0200, // 0026 CALL R3 1 - 0x600C0009, // 0027 GETGBL R3 G9 - 0x6010000A, // 0028 GETGBL R4 G10 - 0x5C140400, // 0029 MOVE R5 R2 - 0x7C100200, // 002A CALL R4 1 - 0x7C0C0200, // 002B CALL R3 1 - 0x80040600, // 002C RET 1 R3 - 0x70020004, // 002D JMP #0033 - 0x8C080109, // 002E GETMET R2 R0 K9 - 0x5810000A, // 002F LDCONST R4 K10 - 0x7C080400, // 0030 CALL R2 2 - 0x540A00FE, // 0031 LDINT R2 255 - 0x80040400, // 0032 RET 1 R2 - 0x80000000, // 0033 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_brace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_BRACE), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), - }), - be_str_weak(expect_left_brace), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_brace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACE), - }), - be_str_weak(check_right_brace), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0005, // 0004 JMPF R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0000, // 000A JMPT R2 #000C - 0x50080001, // 000B LDBOOL R2 0 1 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x80040400, // 000D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[47]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(EOF), - /* K5 */ be_nested_str_weak(COMMENT), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(get_indent), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(NEWLINE), - /* K11 */ be_nested_str_weak(KEYWORD), - /* K12 */ be_nested_str_weak(play), - /* K13 */ be_nested_str_weak(process_play_statement_fluent), - /* K14 */ be_nested_str_weak(wait), - /* K15 */ be_nested_str_weak(process_wait_statement_fluent), - /* K16 */ be_nested_str_weak(IDENTIFIER), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(process_log_statement_fluent), - /* K19 */ be_nested_str_weak(restart), - /* K20 */ be_nested_str_weak(process_restart_statement_fluent), - /* K21 */ be_nested_str_weak(reset), - /* K22 */ be_nested_str_weak(error), - /* K23 */ be_nested_str_weak(_X27reset_X27_X20command_X20is_X20no_X20longer_X20supported_X2E_X20Use_X20_X27restart_X27_X20instead_X2E), - /* K24 */ be_nested_str_weak(skip_statement), - /* K25 */ be_nested_str_weak(repeat), - /* K26 */ be_nested_str_weak(1), - /* K27 */ be_nested_str_weak(forever), - /* K28 */ be_nested_str_weak(_X2D1), - /* K29 */ be_nested_str_weak(process_value), - /* K30 */ be_nested_str_weak(repeat_count), - /* K31 */ be_nested_str_weak(expect_keyword), - /* K32 */ be_nested_str_weak(times), - /* K33 */ be_nested_str_weak(expect_left_brace), - /* K34 */ be_nested_str_weak(_X25s_X2Epush_repeat_subsequence_X28animation_X2ESequenceManager_X28engine_X2C_X20_X25s_X29), - /* K35 */ be_nested_str_weak(indent_level), - /* K36 */ be_const_int(1), - /* K37 */ be_nested_str_weak(at_end), - /* K38 */ be_nested_str_weak(check_right_brace), - /* K39 */ be_nested_str_weak(process_sequence_statement), - /* K40 */ be_nested_str_weak(expect_right_brace), - /* K41 */ be_nested_str_weak(_X25s_X29), - /* K42 */ be_nested_str_weak(peek), - /* K43 */ be_nested_str_weak(DOT), - /* K44 */ be_nested_str_weak(process_sequence_assignment_fluent), - /* K45 */ be_nested_str_weak(Unknown_X20command_X20_X27_X25s_X27_X20in_X20sequence_X2E_X20Valid_X20sequence_X20commands_X20are_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments_X20_X28object_X2Eproperty_X20_X3D_X20value_X29), - /* K46 */ be_nested_str_weak(Invalid_X20statement_X20in_X20sequence_X2E_X20Expected_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments), - }), - be_str_weak(process_sequence_statement), - &be_const_str_solidified, - ( &(const binstruction[210]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x740A0005, // 0004 JMPT R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0000, // 000A JMPF R2 #000C - 0x80000400, // 000B RET 0 - 0x88080301, // 000C GETMBR R2 R1 K1 - 0xB80E0400, // 000D GETNGBL R3 K2 - 0x880C0703, // 000E GETMBR R3 R3 K3 - 0x880C0705, // 000F GETMBR R3 R3 K5 - 0x1C080403, // 0010 EQ R2 R2 R3 - 0x780A0008, // 0011 JMPF R2 #001B - 0x8C080106, // 0012 GETMET R2 R0 K6 - 0x8C100107, // 0013 GETMET R4 R0 K7 - 0x7C100200, // 0014 CALL R4 1 - 0x88140308, // 0015 GETMBR R5 R1 K8 - 0x00100805, // 0016 ADD R4 R4 R5 - 0x7C080400, // 0017 CALL R2 2 - 0x8C080109, // 0018 GETMET R2 R0 K9 - 0x7C080200, // 0019 CALL R2 1 - 0x80000400, // 001A RET 0 - 0x88080301, // 001B GETMBR R2 R1 K1 - 0xB80E0400, // 001C GETNGBL R3 K2 - 0x880C0703, // 001D GETMBR R3 R3 K3 - 0x880C070A, // 001E GETMBR R3 R3 K10 - 0x1C080403, // 001F EQ R2 R2 R3 - 0x780A0002, // 0020 JMPF R2 #0024 - 0x8C080109, // 0021 GETMET R2 R0 K9 - 0x7C080200, // 0022 CALL R2 1 - 0x80000400, // 0023 RET 0 - 0x88080301, // 0024 GETMBR R2 R1 K1 - 0xB80E0400, // 0025 GETNGBL R3 K2 - 0x880C0703, // 0026 GETMBR R3 R3 K3 - 0x880C070B, // 0027 GETMBR R3 R3 K11 - 0x1C080403, // 0028 EQ R2 R2 R3 - 0x780A0005, // 0029 JMPF R2 #0030 - 0x88080308, // 002A GETMBR R2 R1 K8 - 0x1C08050C, // 002B EQ R2 R2 K12 - 0x780A0002, // 002C JMPF R2 #0030 - 0x8C08010D, // 002D GETMET R2 R0 K13 - 0x7C080200, // 002E CALL R2 1 - 0x700200A0, // 002F JMP #00D1 - 0x88080301, // 0030 GETMBR R2 R1 K1 - 0xB80E0400, // 0031 GETNGBL R3 K2 - 0x880C0703, // 0032 GETMBR R3 R3 K3 - 0x880C070B, // 0033 GETMBR R3 R3 K11 - 0x1C080403, // 0034 EQ R2 R2 R3 - 0x780A0005, // 0035 JMPF R2 #003C - 0x88080308, // 0036 GETMBR R2 R1 K8 - 0x1C08050E, // 0037 EQ R2 R2 K14 - 0x780A0002, // 0038 JMPF R2 #003C - 0x8C08010F, // 0039 GETMET R2 R0 K15 - 0x7C080200, // 003A CALL R2 1 - 0x70020094, // 003B JMP #00D1 - 0x88080301, // 003C GETMBR R2 R1 K1 - 0xB80E0400, // 003D GETNGBL R3 K2 - 0x880C0703, // 003E GETMBR R3 R3 K3 - 0x880C0710, // 003F GETMBR R3 R3 K16 - 0x1C080403, // 0040 EQ R2 R2 R3 - 0x780A0005, // 0041 JMPF R2 #0048 - 0x88080308, // 0042 GETMBR R2 R1 K8 - 0x1C080511, // 0043 EQ R2 R2 K17 - 0x780A0002, // 0044 JMPF R2 #0048 - 0x8C080112, // 0045 GETMET R2 R0 K18 - 0x7C080200, // 0046 CALL R2 1 - 0x70020088, // 0047 JMP #00D1 - 0x88080301, // 0048 GETMBR R2 R1 K1 - 0xB80E0400, // 0049 GETNGBL R3 K2 - 0x880C0703, // 004A GETMBR R3 R3 K3 - 0x880C070B, // 004B GETMBR R3 R3 K11 - 0x1C080403, // 004C EQ R2 R2 R3 - 0x780A0005, // 004D JMPF R2 #0054 - 0x88080308, // 004E GETMBR R2 R1 K8 - 0x1C080513, // 004F EQ R2 R2 K19 - 0x780A0002, // 0050 JMPF R2 #0054 - 0x8C080114, // 0051 GETMET R2 R0 K20 - 0x7C080200, // 0052 CALL R2 1 - 0x7002007C, // 0053 JMP #00D1 - 0x88080301, // 0054 GETMBR R2 R1 K1 - 0xB80E0400, // 0055 GETNGBL R3 K2 - 0x880C0703, // 0056 GETMBR R3 R3 K3 - 0x880C070B, // 0057 GETMBR R3 R3 K11 - 0x1C080403, // 0058 EQ R2 R2 R3 - 0x780A0008, // 0059 JMPF R2 #0063 - 0x88080308, // 005A GETMBR R2 R1 K8 - 0x1C080515, // 005B EQ R2 R2 K21 - 0x780A0005, // 005C JMPF R2 #0063 - 0x8C080116, // 005D GETMET R2 R0 K22 - 0x58100017, // 005E LDCONST R4 K23 - 0x7C080400, // 005F CALL R2 2 - 0x8C080118, // 0060 GETMET R2 R0 K24 - 0x7C080200, // 0061 CALL R2 1 - 0x7002006D, // 0062 JMP #00D1 - 0x88080301, // 0063 GETMBR R2 R1 K1 - 0xB80E0400, // 0064 GETNGBL R3 K2 - 0x880C0703, // 0065 GETMBR R3 R3 K3 - 0x880C070B, // 0066 GETMBR R3 R3 K11 - 0x1C080403, // 0067 EQ R2 R2 R3 - 0x780A0041, // 0068 JMPF R2 #00AB - 0x88080308, // 0069 GETMBR R2 R1 K8 - 0x1C080519, // 006A EQ R2 R2 K25 - 0x780A003E, // 006B JMPF R2 #00AB - 0x8C080109, // 006C GETMET R2 R0 K9 - 0x7C080200, // 006D CALL R2 1 - 0x5808001A, // 006E LDCONST R2 K26 - 0x8C0C0100, // 006F GETMET R3 R0 K0 - 0x7C0C0200, // 0070 CALL R3 1 - 0x4C100000, // 0071 LDNIL R4 - 0x20100604, // 0072 NE R4 R3 R4 - 0x7812000C, // 0073 JMPF R4 #0081 - 0x88100701, // 0074 GETMBR R4 R3 K1 - 0xB8160400, // 0075 GETNGBL R5 K2 - 0x88140B03, // 0076 GETMBR R5 R5 K3 - 0x88140B0B, // 0077 GETMBR R5 R5 K11 - 0x1C100805, // 0078 EQ R4 R4 R5 - 0x78120006, // 0079 JMPF R4 #0081 - 0x88100708, // 007A GETMBR R4 R3 K8 - 0x1C10091B, // 007B EQ R4 R4 K27 - 0x78120003, // 007C JMPF R4 #0081 - 0x8C100109, // 007D GETMET R4 R0 K9 - 0x7C100200, // 007E CALL R4 1 - 0x5808001C, // 007F LDCONST R2 K28 - 0x70020006, // 0080 JMP #0088 - 0x8C10011D, // 0081 GETMET R4 R0 K29 - 0x5818001E, // 0082 LDCONST R6 K30 - 0x7C100400, // 0083 CALL R4 2 - 0x8C14011F, // 0084 GETMET R5 R0 K31 - 0x581C0020, // 0085 LDCONST R7 K32 - 0x7C140400, // 0086 CALL R5 2 - 0x5C080800, // 0087 MOVE R2 R4 - 0x8C100121, // 0088 GETMET R4 R0 K33 - 0x7C100200, // 0089 CALL R4 1 - 0x8C100106, // 008A GETMET R4 R0 K6 - 0x60180018, // 008B GETGBL R6 G24 - 0x581C0022, // 008C LDCONST R7 K34 - 0x8C200107, // 008D GETMET R8 R0 K7 - 0x7C200200, // 008E CALL R8 1 - 0x5C240400, // 008F MOVE R9 R2 - 0x7C180600, // 0090 CALL R6 3 - 0x7C100400, // 0091 CALL R4 2 - 0x88100123, // 0092 GETMBR R4 R0 K35 - 0x00100924, // 0093 ADD R4 R4 K36 - 0x90024604, // 0094 SETMBR R0 K35 R4 - 0x8C100125, // 0095 GETMET R4 R0 K37 - 0x7C100200, // 0096 CALL R4 1 - 0x74120005, // 0097 JMPT R4 #009E - 0x8C100126, // 0098 GETMET R4 R0 K38 - 0x7C100200, // 0099 CALL R4 1 - 0x74120002, // 009A JMPT R4 #009E - 0x8C100127, // 009B GETMET R4 R0 K39 - 0x7C100200, // 009C CALL R4 1 - 0x7001FFF6, // 009D JMP #0095 - 0x8C100128, // 009E GETMET R4 R0 K40 - 0x7C100200, // 009F CALL R4 1 - 0x8C100106, // 00A0 GETMET R4 R0 K6 - 0x60180018, // 00A1 GETGBL R6 G24 - 0x581C0029, // 00A2 LDCONST R7 K41 - 0x8C200107, // 00A3 GETMET R8 R0 K7 - 0x7C200200, // 00A4 CALL R8 1 - 0x7C180400, // 00A5 CALL R6 2 - 0x7C100400, // 00A6 CALL R4 2 - 0x88100123, // 00A7 GETMBR R4 R0 K35 - 0x04100924, // 00A8 SUB R4 R4 K36 - 0x90024604, // 00A9 SETMBR R0 K35 R4 - 0x70020025, // 00AA JMP #00D1 - 0x88080301, // 00AB GETMBR R2 R1 K1 - 0xB80E0400, // 00AC GETNGBL R3 K2 - 0x880C0703, // 00AD GETMBR R3 R3 K3 - 0x880C0710, // 00AE GETMBR R3 R3 K16 - 0x1C080403, // 00AF EQ R2 R2 R3 - 0x780A0018, // 00B0 JMPF R2 #00CA - 0x8C08012A, // 00B1 GETMET R2 R0 K42 - 0x7C080200, // 00B2 CALL R2 1 - 0x4C0C0000, // 00B3 LDNIL R3 - 0x20080403, // 00B4 NE R2 R2 R3 - 0x780A000A, // 00B5 JMPF R2 #00C1 - 0x8C08012A, // 00B6 GETMET R2 R0 K42 - 0x7C080200, // 00B7 CALL R2 1 - 0x88080501, // 00B8 GETMBR R2 R2 K1 - 0xB80E0400, // 00B9 GETNGBL R3 K2 - 0x880C0703, // 00BA GETMBR R3 R3 K3 - 0x880C072B, // 00BB GETMBR R3 R3 K43 - 0x1C080403, // 00BC EQ R2 R2 R3 - 0x780A0002, // 00BD JMPF R2 #00C1 - 0x8C08012C, // 00BE GETMET R2 R0 K44 - 0x7C080200, // 00BF CALL R2 1 - 0x70020007, // 00C0 JMP #00C9 - 0x8C080116, // 00C1 GETMET R2 R0 K22 - 0x60100018, // 00C2 GETGBL R4 G24 - 0x5814002D, // 00C3 LDCONST R5 K45 - 0x88180308, // 00C4 GETMBR R6 R1 K8 - 0x7C100400, // 00C5 CALL R4 2 - 0x7C080400, // 00C6 CALL R2 2 - 0x8C080118, // 00C7 GETMET R2 R0 K24 - 0x7C080200, // 00C8 CALL R2 1 - 0x70020006, // 00C9 JMP #00D1 - 0x8C080116, // 00CA GETMET R2 R0 K22 - 0x60100018, // 00CB GETGBL R4 G24 - 0x5814002E, // 00CC LDCONST R5 K46 - 0x7C100200, // 00CD CALL R4 1 - 0x7C080400, // 00CE CALL R2 2 - 0x8C080118, // 00CF GETMET R2 R0 K24 - 0x7C080200, // 00D0 CALL R2 1 - 0x80000000, // 00D1 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_named_arguments_for_variable -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_process_named_arguments_unified), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(variable), - }), - be_str_weak(process_named_arguments_for_variable), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x58140001, // 0002 LDCONST R5 K1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C080800, // 0004 CALL R2 4 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_add, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(output), - /* K1 */ be_nested_str_weak(push), + /* K0 */ be_nested_str_weak(time_ms), + /* K1 */ be_const_int(0), }), - be_str_weak(add), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x90020101, // 0000 SETMBR R0 K0 K1 + 0x80000000, // 0001 RET 0 }) ) ); @@ -4172,9 +15968,9 @@ be_local_closure(class_SimpleDSLTranspiler_add, /* name */ /******************************************************************** -** Solidified function: get_errors +** Solidified function: get_strip_length ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ +be_local_closure(class_MockEngine_get_strip_length, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -4183,14 +15979,12 @@ be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(errors), - }), - be_str_weak(get_errors), + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(get_strip_length), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x5406001D, // 0000 LDINT R1 30 0x80040200, // 0001 RET 1 R1 }) ) @@ -4199,7782 +15993,18 @@ be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ /******************************************************************** -** Solidified function: process_nested_function_call +** Solidified class: MockEngine ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(IDENTIFIER), - /* K6 */ be_nested_str_weak(KEYWORD), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20function_X20name), - /* K11 */ be_nested_str_weak(nil), - /* K12 */ be_nested_str_weak(is_math_method), - /* K13 */ be_nested_str_weak(process_function_arguments), - /* K14 */ be_nested_str_weak(animation_X2E_math_X2E_X25s_X28_X25s_X29), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(process_log_call), - /* K17 */ be_nested_str_weak(expression), - /* K18 */ be_nested_str_weak(template_definitions), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K21 */ be_nested_str_weak(engine), - /* K22 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), - /* K23 */ be_nested_str_weak(_is_simple_function_call), - /* K24 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), - /* K25 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - /* K26 */ be_nested_str_weak(_validate_animation_factory_exists), - /* K27 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), - /* K28 */ be_nested_str_weak(skip_function_arguments), - /* K29 */ be_nested_str_weak(_generate_anonymous_function_call), - }), - be_str_weak(process_nested_function_call), - &be_const_str_solidified, - ( &(const binstruction[113]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58080001, // 0002 LDCONST R2 K1 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0203, // 0004 NE R3 R1 R3 - 0x780E000F, // 0005 JMPF R3 #0016 - 0x880C0302, // 0006 GETMBR R3 R1 K2 - 0xB8120600, // 0007 GETNGBL R4 K3 - 0x88100904, // 0008 GETMBR R4 R4 K4 - 0x88100905, // 0009 GETMBR R4 R4 K5 - 0x1C0C0604, // 000A EQ R3 R3 R4 - 0x740E0005, // 000B JMPT R3 #0012 - 0x880C0302, // 000C GETMBR R3 R1 K2 - 0xB8120600, // 000D GETNGBL R4 K3 - 0x88100904, // 000E GETMBR R4 R4 K4 - 0x88100906, // 000F GETMBR R4 R4 K6 - 0x1C0C0604, // 0010 EQ R3 R3 R4 - 0x780E0003, // 0011 JMPF R3 #0016 - 0x88080307, // 0012 GETMBR R2 R1 K7 - 0x8C0C0108, // 0013 GETMET R3 R0 K8 - 0x7C0C0200, // 0014 CALL R3 1 - 0x70020003, // 0015 JMP #001A - 0x8C0C0109, // 0016 GETMET R3 R0 K9 - 0x5814000A, // 0017 LDCONST R5 K10 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80061600, // 0019 RET 1 K11 - 0x8C0C010C, // 001A GETMET R3 R0 K12 - 0x5C140400, // 001B MOVE R5 R2 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E0008, // 001D JMPF R3 #0027 - 0x8C0C010D, // 001E GETMET R3 R0 K13 - 0x50140200, // 001F LDBOOL R5 1 0 - 0x7C0C0400, // 0020 CALL R3 2 - 0x60100018, // 0021 GETGBL R4 G24 - 0x5814000E, // 0022 LDCONST R5 K14 - 0x5C180400, // 0023 MOVE R6 R2 - 0x5C1C0600, // 0024 MOVE R7 R3 - 0x7C100600, // 0025 CALL R4 3 - 0x80040800, // 0026 RET 1 R4 - 0x1C0C050F, // 0027 EQ R3 R2 K15 - 0x780E0008, // 0028 JMPF R3 #0032 - 0x8C0C010D, // 0029 GETMET R3 R0 K13 - 0x50140200, // 002A LDBOOL R5 1 0 - 0x7C0C0400, // 002B CALL R3 2 - 0x8C100110, // 002C GETMET R4 R0 K16 - 0x5C180600, // 002D MOVE R6 R3 - 0x581C0011, // 002E LDCONST R7 K17 - 0x58200001, // 002F LDCONST R8 K1 - 0x7C100800, // 0030 CALL R4 4 - 0x80040800, // 0031 RET 1 R4 - 0x880C0112, // 0032 GETMBR R3 R0 K18 - 0x8C0C0713, // 0033 GETMET R3 R3 K19 - 0x5C140400, // 0034 MOVE R5 R2 - 0x7C0C0400, // 0035 CALL R3 2 - 0x780E0011, // 0036 JMPF R3 #0049 - 0x8C0C010D, // 0037 GETMET R3 R0 K13 - 0x50140200, // 0038 LDBOOL R5 1 0 - 0x7C0C0400, // 0039 CALL R3 2 - 0x20100701, // 003A NE R4 R3 K1 - 0x78120004, // 003B JMPF R4 #0041 - 0x60100018, // 003C GETGBL R4 G24 - 0x58140014, // 003D LDCONST R5 K20 - 0x5C180600, // 003E MOVE R6 R3 - 0x7C100400, // 003F CALL R4 2 - 0x70020000, // 0040 JMP #0042 - 0x58100015, // 0041 LDCONST R4 K21 - 0x60140018, // 0042 GETGBL R5 G24 - 0x58180016, // 0043 LDCONST R6 K22 - 0x5C1C0400, // 0044 MOVE R7 R2 - 0x5C200800, // 0045 MOVE R8 R4 - 0x7C140600, // 0046 CALL R5 3 - 0x80040A00, // 0047 RET 1 R5 - 0x70020026, // 0048 JMP #0070 - 0x8C0C0117, // 0049 GETMET R3 R0 K23 - 0x5C140400, // 004A MOVE R5 R2 - 0x7C0C0400, // 004B CALL R3 2 - 0x780E0011, // 004C JMPF R3 #005F - 0x8C0C010D, // 004D GETMET R3 R0 K13 - 0x50140000, // 004E LDBOOL R5 0 0 - 0x7C0C0400, // 004F CALL R3 2 - 0x20100701, // 0050 NE R4 R3 K1 - 0x78120006, // 0051 JMPF R4 #0059 - 0x60100018, // 0052 GETGBL R4 G24 - 0x58140018, // 0053 LDCONST R5 K24 - 0x5C180400, // 0054 MOVE R6 R2 - 0x5C1C0600, // 0055 MOVE R7 R3 - 0x7C100600, // 0056 CALL R4 3 - 0x80040800, // 0057 RET 1 R4 - 0x70020004, // 0058 JMP #005E - 0x60100018, // 0059 GETGBL R4 G24 - 0x58140019, // 005A LDCONST R5 K25 - 0x5C180400, // 005B MOVE R6 R2 - 0x7C100400, // 005C CALL R4 2 - 0x80040800, // 005D RET 1 R4 - 0x70020010, // 005E JMP #0070 - 0x8C0C011A, // 005F GETMET R3 R0 K26 - 0x5C140400, // 0060 MOVE R5 R2 - 0x7C0C0400, // 0061 CALL R3 2 - 0x740E0008, // 0062 JMPT R3 #006C - 0x8C0C0109, // 0063 GETMET R3 R0 K9 - 0x60140018, // 0064 GETGBL R5 G24 - 0x5818001B, // 0065 LDCONST R6 K27 - 0x5C1C0400, // 0066 MOVE R7 R2 - 0x7C140400, // 0067 CALL R5 2 - 0x7C0C0400, // 0068 CALL R3 2 - 0x8C0C011C, // 0069 GETMET R3 R0 K28 - 0x7C0C0200, // 006A CALL R3 1 - 0x80061600, // 006B RET 1 K11 - 0x8C0C011D, // 006C GETMET R3 R0 K29 - 0x5C140400, // 006D MOVE R5 R2 - 0x7C0C0400, // 006E CALL R3 2 - 0x80040600, // 006F RET 1 R3 - 0x80000000, // 0070 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_init, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(tokens), - /* K1 */ be_nested_str_weak(pos), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(output), - /* K4 */ be_nested_str_weak(errors), - /* K5 */ be_nested_str_weak(run_statements), - /* K6 */ be_nested_str_weak(first_statement), - /* K7 */ be_nested_str_weak(strip_initialized), - /* K8 */ be_nested_str_weak(sequence_names), - /* K9 */ be_nested_str_weak(symbol_table), - /* K10 */ be_nested_str_weak(indent_level), - /* K11 */ be_nested_str_weak(template_definitions), - /* K12 */ be_nested_str_weak(has_template_calls), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x5C080200, // 0003 MOVE R2 R1 - 0x70020001, // 0004 JMP #0007 - 0x60080012, // 0005 GETGBL R2 G18 - 0x7C080000, // 0006 CALL R2 0 - 0x90020002, // 0007 SETMBR R0 K0 R2 - 0x90020302, // 0008 SETMBR R0 K1 K2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90020602, // 000B SETMBR R0 K3 R2 - 0x60080012, // 000C GETGBL R2 G18 - 0x7C080000, // 000D CALL R2 0 - 0x90020802, // 000E SETMBR R0 K4 R2 - 0x60080012, // 000F GETGBL R2 G18 - 0x7C080000, // 0010 CALL R2 0 - 0x90020A02, // 0011 SETMBR R0 K5 R2 - 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90020C02, // 0013 SETMBR R0 K6 R2 - 0x50080000, // 0014 LDBOOL R2 0 0 - 0x90020E02, // 0015 SETMBR R0 K7 R2 - 0x60080013, // 0016 GETGBL R2 G19 - 0x7C080000, // 0017 CALL R2 0 - 0x90021002, // 0018 SETMBR R0 K8 R2 - 0x60080013, // 0019 GETGBL R2 G19 - 0x7C080000, // 001A CALL R2 0 - 0x90021202, // 001B SETMBR R0 K9 R2 - 0x90021502, // 001C SETMBR R0 K10 K2 - 0x60080013, // 001D GETGBL R2 G19 - 0x7C080000, // 001E CALL R2 0 - 0x90021602, // 001F SETMBR R0 K11 R2 - 0x50080000, // 0020 LDBOOL R2 0 0 - 0x90021802, // 0021 SETMBR R0 K12 R2 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_value_provider_reference -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_reference, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_exists), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X2E_X20Make_X20sure_X20the_X20value_X20provider_X20or_X20animation_X20is_X20defined_X20before_X20use_X2E), - /* K3 */ be_nested_str_weak(symbol_table), - /* K4 */ be_nested_str_weak(contains), - /* K5 */ be_nested_str_weak(string), - /* K6 */ be_nested_str_weak(value_provider), - /* K7 */ be_nested_str_weak(animation), - /* K8 */ be_nested_str_weak(_X27_X25s_X27_X20in_X20_X25s_X20statement_X20is_X20not_X20a_X20value_X20provider_X20or_X20animation_X2E_X20Only_X20value_X20providers_X20_X28like_X20oscillators_X29_X20and_X20animations_X20can_X20be_X20restarted_X2E), - /* K9 */ be_nested_str_weak(Could_X20not_X20validate_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X3A_X20_X25s), - }), - be_str_weak(_validate_value_provider_reference), - &be_const_str_solidified, - ( &(const binstruction[97]) { /* code */ - 0xA8020050, // 0000 EXBLK 0 #0052 - 0x8C0C0100, // 0001 GETMET R3 R0 K0 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x740E0009, // 0004 JMPT R3 #000F - 0x8C0C0101, // 0005 GETMET R3 R0 K1 - 0x60140018, // 0006 GETGBL R5 G24 - 0x58180002, // 0007 LDCONST R6 K2 - 0x5C1C0200, // 0008 MOVE R7 R1 - 0x5C200400, // 0009 MOVE R8 R2 - 0x7C140600, // 000A CALL R5 3 - 0x7C0C0400, // 000B CALL R3 2 - 0x500C0000, // 000C LDBOOL R3 0 0 - 0xA8040001, // 000D EXBLK 1 1 - 0x80040600, // 000E RET 1 R3 - 0x880C0103, // 000F GETMBR R3 R0 K3 - 0x8C0C0704, // 0010 GETMET R3 R3 K4 - 0x5C140200, // 0011 MOVE R5 R1 - 0x7C0C0400, // 0012 CALL R3 2 - 0x780E0038, // 0013 JMPF R3 #004D - 0x880C0103, // 0014 GETMBR R3 R0 K3 - 0x940C0601, // 0015 GETIDX R3 R3 R1 - 0x60100004, // 0016 GETGBL R4 G4 - 0x5C140600, // 0017 MOVE R5 R3 - 0x7C100200, // 0018 CALL R4 1 - 0x1C100905, // 0019 EQ R4 R4 K5 - 0x78120007, // 001A JMPF R4 #0023 - 0x1C100706, // 001B EQ R4 R3 K6 - 0x74120001, // 001C JMPT R4 #001F - 0x1C100707, // 001D EQ R4 R3 K7 - 0x78120003, // 001E JMPF R4 #0023 - 0x50100200, // 001F LDBOOL R4 1 0 - 0xA8040001, // 0020 EXBLK 1 1 - 0x80040800, // 0021 RET 1 R4 - 0x70020029, // 0022 JMP #004D - 0x60100004, // 0023 GETGBL R4 G4 - 0x5C140600, // 0024 MOVE R5 R3 - 0x7C100200, // 0025 CALL R4 1 - 0x1C100905, // 0026 EQ R4 R4 K5 - 0x7812000A, // 0027 JMPF R4 #0033 - 0x8C100101, // 0028 GETMET R4 R0 K1 - 0x60180018, // 0029 GETGBL R6 G24 - 0x581C0008, // 002A LDCONST R7 K8 - 0x5C200200, // 002B MOVE R8 R1 - 0x5C240400, // 002C MOVE R9 R2 - 0x7C180600, // 002D CALL R6 3 - 0x7C100400, // 002E CALL R4 2 - 0x50100000, // 002F LDBOOL R4 0 0 - 0xA8040001, // 0030 EXBLK 1 1 - 0x80040800, // 0031 RET 1 R4 - 0x70020019, // 0032 JMP #004D - 0x6010000F, // 0033 GETGBL R4 G15 - 0x5C140600, // 0034 MOVE R5 R3 - 0xB81A0E00, // 0035 GETNGBL R6 K7 - 0x88180D06, // 0036 GETMBR R6 R6 K6 - 0x7C100400, // 0037 CALL R4 2 - 0x74120005, // 0038 JMPT R4 #003F - 0x6010000F, // 0039 GETGBL R4 G15 - 0x5C140600, // 003A MOVE R5 R3 - 0xB81A0E00, // 003B GETNGBL R6 K7 - 0x88180D07, // 003C GETMBR R6 R6 K7 - 0x7C100400, // 003D CALL R4 2 - 0x78120003, // 003E JMPF R4 #0043 - 0x50100200, // 003F LDBOOL R4 1 0 - 0xA8040001, // 0040 EXBLK 1 1 - 0x80040800, // 0041 RET 1 R4 - 0x70020009, // 0042 JMP #004D - 0x8C100101, // 0043 GETMET R4 R0 K1 - 0x60180018, // 0044 GETGBL R6 G24 - 0x581C0008, // 0045 LDCONST R7 K8 - 0x5C200200, // 0046 MOVE R8 R1 - 0x5C240400, // 0047 MOVE R9 R2 - 0x7C180600, // 0048 CALL R6 3 - 0x7C100400, // 0049 CALL R4 2 - 0x50100000, // 004A LDBOOL R4 0 0 - 0xA8040001, // 004B EXBLK 1 1 - 0x80040800, // 004C RET 1 R4 - 0x500C0200, // 004D LDBOOL R3 1 0 - 0xA8040001, // 004E EXBLK 1 1 - 0x80040600, // 004F RET 1 R3 - 0xA8040001, // 0050 EXBLK 1 1 - 0x7002000D, // 0051 JMP #0060 - 0xAC0C0002, // 0052 CATCH R3 0 2 - 0x7002000A, // 0053 JMP #005F - 0x8C140101, // 0054 GETMET R5 R0 K1 - 0x601C0018, // 0055 GETGBL R7 G24 - 0x58200009, // 0056 LDCONST R8 K9 - 0x5C240200, // 0057 MOVE R9 R1 - 0x5C280400, // 0058 MOVE R10 R2 - 0x5C2C0800, // 0059 MOVE R11 R4 - 0x7C1C0800, // 005A CALL R7 4 - 0x7C140400, // 005B CALL R5 2 - 0x50140000, // 005C LDBOOL R5 0 0 - 0x80040A00, // 005D RET 1 R5 - 0x70020000, // 005E JMP #0060 - 0xB0080000, // 005F RAISE 2 R0 R0 - 0x80000000, // 0060 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_PAREN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X28_X27), - }), - be_str_weak(expect_left_paren), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_computed_expression_string -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_computed_expression_string, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X20_X2B_X20), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_X20_X2D_X20), - /* K5 */ be_nested_str_weak(_X20_X2A_X20), - /* K6 */ be_nested_str_weak(_X20_X2F_X20), - /* K7 */ be_nested_str_weak(_X28), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(is_identifier_char), - /* K10 */ be_nested_str_weak(_is_simple_function_call), - }), - be_str_weak(is_computed_expression_string), - &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x280C0703, // 0005 GE R3 R3 K3 - 0x740E0012, // 0006 JMPT R3 #001A - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x5C140200, // 0008 MOVE R5 R1 - 0x58180004, // 0009 LDCONST R6 K4 - 0x7C0C0600, // 000A CALL R3 3 - 0x280C0703, // 000B GE R3 R3 K3 - 0x740E000C, // 000C JMPT R3 #001A - 0x8C0C0501, // 000D GETMET R3 R2 K1 - 0x5C140200, // 000E MOVE R5 R1 - 0x58180005, // 000F LDCONST R6 K5 - 0x7C0C0600, // 0010 CALL R3 3 - 0x280C0703, // 0011 GE R3 R3 K3 - 0x740E0006, // 0012 JMPT R3 #001A - 0x8C0C0501, // 0013 GETMET R3 R2 K1 - 0x5C140200, // 0014 MOVE R5 R1 - 0x58180006, // 0015 LDCONST R6 K6 - 0x7C0C0600, // 0016 CALL R3 3 - 0x280C0703, // 0017 GE R3 R3 K3 - 0x740E0000, // 0018 JMPT R3 #001A - 0x500C0001, // 0019 LDBOOL R3 0 1 - 0x500C0200, // 001A LDBOOL R3 1 0 - 0x50100000, // 001B LDBOOL R4 0 0 - 0x8C140501, // 001C GETMET R5 R2 K1 - 0x5C1C0200, // 001D MOVE R7 R1 - 0x58200007, // 001E LDCONST R8 K7 - 0x7C140600, // 001F CALL R5 3 - 0x24180B03, // 0020 GT R6 R5 K3 - 0x781A0017, // 0021 JMPF R6 #003A - 0x04180B08, // 0022 SUB R6 R5 K8 - 0x94180206, // 0023 GETIDX R6 R1 R6 - 0x8C1C0109, // 0024 GETMET R7 R0 K9 - 0x5C240C00, // 0025 MOVE R9 R6 - 0x7C1C0400, // 0026 CALL R7 2 - 0x781E0011, // 0027 JMPF R7 #003A - 0x041C0B08, // 0028 SUB R7 R5 K8 - 0x28200F03, // 0029 GE R8 R7 K3 - 0x78220005, // 002A JMPF R8 #0031 - 0x8C200109, // 002B GETMET R8 R0 K9 - 0x94280207, // 002C GETIDX R10 R1 R7 - 0x7C200400, // 002D CALL R8 2 - 0x78220001, // 002E JMPF R8 #0031 - 0x041C0F08, // 002F SUB R7 R7 K8 - 0x7001FFF7, // 0030 JMP #0029 - 0x001C0F08, // 0031 ADD R7 R7 K8 - 0x04200B08, // 0032 SUB R8 R5 K8 - 0x40200E08, // 0033 CONNECT R8 R7 R8 - 0x94200208, // 0034 GETIDX R8 R1 R8 - 0x8C24010A, // 0035 GETMET R9 R0 K10 - 0x5C2C1000, // 0036 MOVE R11 R8 - 0x7C240400, // 0037 CALL R9 2 - 0x74260000, // 0038 JMPT R9 #003A - 0x50100200, // 0039 LDBOOL R4 1 0 - 0x740E0001, // 003A JMPT R3 #003D - 0x74120000, // 003B JMPT R4 #003D - 0x50180001, // 003C LDBOOL R6 0 1 - 0x50180200, // 003D LDBOOL R6 1 0 - 0x80040C00, // 003E RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: collect_inline_comment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(COMMENT), - /* K5 */ be_nested_str_weak(_X20_X20), - /* K6 */ be_nested_str_weak(value), - /* K7 */ be_nested_str_weak(next), - /* K8 */ be_nested_str_weak(), - }), - be_str_weak(collect_inline_comment), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A000A, // 0004 JMPF R2 #0010 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0004, // 000A JMPF R2 #0010 - 0x88080306, // 000B GETMBR R2 R1 K6 - 0x000A0A02, // 000C ADD R2 K5 R2 - 0x8C0C0107, // 000D GETMET R3 R0 K7 - 0x7C0C0200, // 000E CALL R3 1 - 0x80040400, // 000F RET 1 R2 - 0x80061000, // 0010 RET 1 K8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_right_brace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACE), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X7D_X27), - }), - be_str_weak(expect_right_brace), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(sequence), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(sequence_names), - /* K6 */ be_nested_str_weak(symbol_table), - /* K7 */ be_nested_str_weak(1), - /* K8 */ be_nested_str_weak(current), - /* K9 */ be_nested_str_weak(type), - /* K10 */ be_nested_str_weak(animation_dsl), - /* K11 */ be_nested_str_weak(Token), - /* K12 */ be_nested_str_weak(KEYWORD), - /* K13 */ be_nested_str_weak(value), - /* K14 */ be_nested_str_weak(repeat), - /* K15 */ be_nested_str_weak(forever), - /* K16 */ be_nested_str_weak(_X2D1), - /* K17 */ be_nested_str_weak(process_value), - /* K18 */ be_nested_str_weak(repeat_count), - /* K19 */ be_nested_str_weak(expect_keyword), - /* K20 */ be_nested_str_weak(times), - /* K21 */ be_nested_str_weak(NUMBER), - /* K22 */ be_nested_str_weak(expect_left_brace), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2ESequenceManager_X28engine_X2C_X20_X25s_X29), - /* K25 */ be_nested_str_weak(at_end), - /* K26 */ be_nested_str_weak(check_right_brace), - /* K27 */ be_nested_str_weak(process_sequence_statement), - /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2ESequenceManager_X28engine_X29), - /* K29 */ be_nested_str_weak(expect_right_brace), - }), - be_str_weak(process_sequence), - &be_const_str_solidified, - ( &(const binstruction[125]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x88080105, // 000C GETMBR R2 R0 K5 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x98080203, // 000E SETIDX R2 R1 R3 - 0x88080106, // 000F GETMBR R2 R0 K6 - 0x98080303, // 0010 SETIDX R2 R1 K3 - 0x50080000, // 0011 LDBOOL R2 0 0 - 0x580C0007, // 0012 LDCONST R3 K7 - 0x8C100108, // 0013 GETMET R4 R0 K8 - 0x7C100200, // 0014 CALL R4 1 - 0x4C140000, // 0015 LDNIL R5 - 0x20140805, // 0016 NE R5 R4 R5 - 0x7816002D, // 0017 JMPF R5 #0046 - 0x88140909, // 0018 GETMBR R5 R4 K9 - 0xB81A1400, // 0019 GETNGBL R6 K10 - 0x88180D0B, // 001A GETMBR R6 R6 K11 - 0x88180D0C, // 001B GETMBR R6 R6 K12 - 0x1C140A06, // 001C EQ R5 R5 R6 - 0x78160027, // 001D JMPF R5 #0046 - 0x8814090D, // 001E GETMBR R5 R4 K13 - 0x1C140B0E, // 001F EQ R5 R5 K14 - 0x7816001C, // 0020 JMPF R5 #003E - 0x50080200, // 0021 LDBOOL R2 1 0 - 0x8C140100, // 0022 GETMET R5 R0 K0 - 0x7C140200, // 0023 CALL R5 1 - 0x8C140108, // 0024 GETMET R5 R0 K8 - 0x7C140200, // 0025 CALL R5 1 - 0x4C180000, // 0026 LDNIL R6 - 0x20180A06, // 0027 NE R6 R5 R6 - 0x781A000C, // 0028 JMPF R6 #0036 - 0x88180B09, // 0029 GETMBR R6 R5 K9 - 0xB81E1400, // 002A GETNGBL R7 K10 - 0x881C0F0B, // 002B GETMBR R7 R7 K11 - 0x881C0F0C, // 002C GETMBR R7 R7 K12 - 0x1C180C07, // 002D EQ R6 R6 R7 - 0x781A0006, // 002E JMPF R6 #0036 - 0x88180B0D, // 002F GETMBR R6 R5 K13 - 0x1C180D0F, // 0030 EQ R6 R6 K15 - 0x781A0003, // 0031 JMPF R6 #0036 - 0x8C180100, // 0032 GETMET R6 R0 K0 - 0x7C180200, // 0033 CALL R6 1 - 0x580C0010, // 0034 LDCONST R3 K16 - 0x70020006, // 0035 JMP #003D - 0x8C180111, // 0036 GETMET R6 R0 K17 - 0x58200012, // 0037 LDCONST R8 K18 - 0x7C180400, // 0038 CALL R6 2 - 0x8C1C0113, // 0039 GETMET R7 R0 K19 - 0x58240014, // 003A LDCONST R9 K20 - 0x7C1C0400, // 003B CALL R7 2 - 0x5C0C0C00, // 003C MOVE R3 R6 - 0x70020006, // 003D JMP #0045 - 0x8814090D, // 003E GETMBR R5 R4 K13 - 0x1C140B0F, // 003F EQ R5 R5 K15 - 0x78160003, // 0040 JMPF R5 #0045 - 0x50080200, // 0041 LDBOOL R2 1 0 - 0x8C140100, // 0042 GETMET R5 R0 K0 - 0x7C140200, // 0043 CALL R5 1 - 0x580C0010, // 0044 LDCONST R3 K16 - 0x70020010, // 0045 JMP #0057 - 0x4C140000, // 0046 LDNIL R5 - 0x20140805, // 0047 NE R5 R4 R5 - 0x7816000D, // 0048 JMPF R5 #0057 - 0x88140909, // 0049 GETMBR R5 R4 K9 - 0xB81A1400, // 004A GETNGBL R6 K10 - 0x88180D0B, // 004B GETMBR R6 R6 K11 - 0x88180D15, // 004C GETMBR R6 R6 K21 - 0x1C140A06, // 004D EQ R5 R5 R6 - 0x78160007, // 004E JMPF R5 #0057 - 0x50080200, // 004F LDBOOL R2 1 0 - 0x8C140111, // 0050 GETMET R5 R0 K17 - 0x581C0012, // 0051 LDCONST R7 K18 - 0x7C140400, // 0052 CALL R5 2 - 0x8C180113, // 0053 GETMET R6 R0 K19 - 0x58200014, // 0054 LDCONST R8 K20 - 0x7C180400, // 0055 CALL R6 2 - 0x5C0C0A00, // 0056 MOVE R3 R5 - 0x8C140116, // 0057 GETMET R5 R0 K22 - 0x7C140200, // 0058 CALL R5 1 - 0x780A0010, // 0059 JMPF R2 #006B - 0x8C140117, // 005A GETMET R5 R0 K23 - 0x601C0018, // 005B GETGBL R7 G24 - 0x58200018, // 005C LDCONST R8 K24 - 0x5C240200, // 005D MOVE R9 R1 - 0x5C280600, // 005E MOVE R10 R3 - 0x7C1C0600, // 005F CALL R7 3 - 0x7C140400, // 0060 CALL R5 2 - 0x8C140119, // 0061 GETMET R5 R0 K25 - 0x7C140200, // 0062 CALL R5 1 - 0x74160005, // 0063 JMPT R5 #006A - 0x8C14011A, // 0064 GETMET R5 R0 K26 - 0x7C140200, // 0065 CALL R5 1 - 0x74160002, // 0066 JMPT R5 #006A - 0x8C14011B, // 0067 GETMET R5 R0 K27 - 0x7C140200, // 0068 CALL R5 1 - 0x7001FFF6, // 0069 JMP #0061 - 0x7002000E, // 006A JMP #007A - 0x8C140117, // 006B GETMET R5 R0 K23 - 0x601C0018, // 006C GETGBL R7 G24 - 0x5820001C, // 006D LDCONST R8 K28 - 0x5C240200, // 006E MOVE R9 R1 - 0x7C1C0400, // 006F CALL R7 2 - 0x7C140400, // 0070 CALL R5 2 - 0x8C140119, // 0071 GETMET R5 R0 K25 - 0x7C140200, // 0072 CALL R5 1 - 0x74160005, // 0073 JMPT R5 #007A - 0x8C14011A, // 0074 GETMET R5 R0 K26 - 0x7C140200, // 0075 CALL R5 1 - 0x74160002, // 0076 JMPT R5 #007A - 0x8C14011B, // 0077 GETMET R5 R0 K27 - 0x7C140200, // 0078 CALL R5 1 - 0x7001FFF6, // 0079 JMP #0071 - 0x8C14011D, // 007A GETMET R5 R0 K29 - 0x7C140200, // 007B CALL R5 1 - 0x80000000, // 007C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transpile_template_body -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile_template_body, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(process_statement), - /* K2 */ be_nested_str_weak(run_statements), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(name), - /* K5 */ be_nested_str_weak(comment), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), - /* K8 */ be_nested_str_weak(stop_iteration), - /* K9 */ be_nested_str_weak(errors), - /* K10 */ be_nested_str_weak(join_output), - /* K11 */ be_nested_str_weak(error), - /* K12 */ be_nested_str_weak(Template_X20body_X20transpilation_X20failed_X3A_X20_X25s), - }), - be_str_weak(transpile_template_body), - &be_const_str_solidified, - ( &(const binstruction[57]) { /* code */ - 0xA802002A, // 0000 EXBLK 0 #002C - 0x8C040100, // 0001 GETMET R1 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x74060002, // 0003 JMPT R1 #0007 - 0x8C040101, // 0004 GETMET R1 R0 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x7001FFF9, // 0006 JMP #0001 - 0x6004000C, // 0007 GETGBL R1 G12 - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x7C040200, // 0009 CALL R1 1 - 0x24040303, // 000A GT R1 R1 K3 - 0x78060012, // 000B JMPF R1 #001F - 0x60040010, // 000C GETGBL R1 G16 - 0x88080102, // 000D GETMBR R2 R0 K2 - 0x7C040200, // 000E CALL R1 1 - 0xA802000B, // 000F EXBLK 0 #001C - 0x5C080200, // 0010 MOVE R2 R1 - 0x7C080000, // 0011 CALL R2 0 - 0x940C0504, // 0012 GETIDX R3 R2 K4 - 0x94100505, // 0013 GETIDX R4 R2 K5 - 0x8C140106, // 0014 GETMET R5 R0 K6 - 0x601C0018, // 0015 GETGBL R7 G24 - 0x58200007, // 0016 LDCONST R8 K7 - 0x5C240600, // 0017 MOVE R9 R3 - 0x5C280800, // 0018 MOVE R10 R4 - 0x7C1C0600, // 0019 CALL R7 3 - 0x7C140400, // 001A CALL R5 2 - 0x7001FFF3, // 001B JMP #0010 - 0x58040008, // 001C LDCONST R1 K8 - 0xAC040200, // 001D CATCH R1 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x6004000C, // 001F GETGBL R1 G12 - 0x88080109, // 0020 GETMBR R2 R0 K9 - 0x7C040200, // 0021 CALL R1 1 - 0x1C040303, // 0022 EQ R1 R1 K3 - 0x78060002, // 0023 JMPF R1 #0027 - 0x8C04010A, // 0024 GETMET R1 R0 K10 - 0x7C040200, // 0025 CALL R1 1 - 0x70020000, // 0026 JMP #0028 - 0x4C040000, // 0027 LDNIL R1 - 0xA8040001, // 0028 EXBLK 1 1 - 0x80040200, // 0029 RET 1 R1 - 0xA8040001, // 002A EXBLK 1 1 - 0x7002000B, // 002B JMP #0038 - 0xAC040002, // 002C CATCH R1 0 2 - 0x70020008, // 002D JMP #0037 - 0x8C0C010B, // 002E GETMET R3 R0 K11 - 0x60140018, // 002F GETGBL R5 G24 - 0x5818000C, // 0030 LDCONST R6 K12 - 0x5C1C0400, // 0031 MOVE R7 R2 - 0x7C140400, // 0032 CALL R5 2 - 0x7C0C0400, // 0033 CALL R3 2 - 0x4C0C0000, // 0034 LDNIL R3 - 0x80040600, // 0035 RET 1 R3 - 0x70020000, // 0036 JMP #0038 - 0xB0080000, // 0037 RAISE 2 R0 R0 - 0x80000000, // 0038 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_animation_factory_creates_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), - }), - be_str_weak(_validate_animation_factory_creates_animation), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0xB8160200, // 0002 GETNGBL R5 K1 - 0x88140B01, // 0003 GETMBR R5 R5 K1 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_user_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_user_function_call, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_PAREN), - /* K5 */ be_nested_str_weak(process_function_arguments), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K8 */ be_nested_str_weak(engine), - /* K9 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), - /* K10 */ be_nested_str_weak(error), - /* K11 */ be_nested_str_weak(User_X20functions_X20must_X20be_X20called_X20with_X20parentheses_X3A_X20user_X2Efunction_name_X28_X29), - /* K12 */ be_nested_str_weak(nil), - }), - be_str_weak(_process_user_function_call), - &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0019, // 0004 JMPF R2 #001F - 0x8C080100, // 0005 GETMET R2 R0 K0 - 0x7C080200, // 0006 CALL R2 1 - 0x88080501, // 0007 GETMBR R2 R2 K1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x880C0703, // 0009 GETMBR R3 R3 K3 - 0x880C0704, // 000A GETMBR R3 R3 K4 - 0x1C080403, // 000B EQ R2 R2 R3 - 0x780A0011, // 000C JMPF R2 #001F - 0x8C080105, // 000D GETMET R2 R0 K5 - 0x50100200, // 000E LDBOOL R4 1 0 - 0x7C080400, // 000F CALL R2 2 - 0x200C0506, // 0010 NE R3 R2 K6 - 0x780E0004, // 0011 JMPF R3 #0017 - 0x600C0018, // 0012 GETGBL R3 G24 - 0x58100007, // 0013 LDCONST R4 K7 - 0x5C140400, // 0014 MOVE R5 R2 - 0x7C0C0400, // 0015 CALL R3 2 - 0x70020000, // 0016 JMP #0018 - 0x580C0008, // 0017 LDCONST R3 K8 - 0x60100018, // 0018 GETGBL R4 G24 - 0x58140009, // 0019 LDCONST R5 K9 - 0x5C180200, // 001A MOVE R6 R1 - 0x5C1C0600, // 001B MOVE R7 R3 - 0x7C100600, // 001C CALL R4 3 - 0x80040800, // 001D RET 1 R4 - 0x70020003, // 001E JMP #0023 - 0x8C08010A, // 001F GETMET R2 R0 K10 - 0x5810000B, // 0020 LDCONST R4 K11 - 0x7C080400, // 0021 CALL R2 2 - 0x80061800, // 0022 RET 1 K12 - 0x80000000, // 0023 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_right_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACKET), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), - }), - be_str_weak(expect_right_bracket), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_animation_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(is_math_method), - /* K1 */ be_nested_str_weak(_validate_factory_function), - }), - be_str_weak(_validate_animation_factory_exists), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x780A0001, // 0003 JMPF R2 #0006 - 0x50080200, // 0004 LDBOOL R2 1 0 - 0x80040400, // 0005 RET 1 R2 - 0x8C080101, // 0006 GETMET R2 R0 K1 - 0x5C100200, // 0007 MOVE R4 R1 - 0x4C140000, // 0008 LDNIL R5 - 0x7C080600, // 0009 CALL R2 3 - 0x80040400, // 000A RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_event_handler -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(line), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(_X7B_X7D), - /* K6 */ be_nested_str_weak(type), - /* K7 */ be_nested_str_weak(animation_dsl), - /* K8 */ be_nested_str_weak(Token), - /* K9 */ be_nested_str_weak(LEFT_PAREN), - /* K10 */ be_nested_str_weak(process_event_parameters), - /* K11 */ be_nested_str_weak(expect_colon), - /* K12 */ be_nested_str_weak(event_handler__X25s__X25s), - /* K13 */ be_nested_str_weak(add), - /* K14 */ be_nested_str_weak(def_X20_X25s_X28event_data_X29), - /* K15 */ be_nested_str_weak(KEYWORD), - /* K16 */ be_nested_str_weak(value), - /* K17 */ be_nested_str_weak(interrupt), - /* K18 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_current_X28_X29), - /* K19 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_animation_X28_X22_X25s_X22_X29), - /* K20 */ be_nested_str_weak(process_value), - /* K21 */ be_nested_str_weak(animation), - /* K22 */ be_nested_str_weak(_X20_X20var_X20temp_anim_X20_X3D_X20_X25s), - /* K23 */ be_nested_str_weak(_X20_X20engine_X2Eadd_X28temp_anim_X29), - /* K24 */ be_nested_str_weak(end), - /* K25 */ be_nested_str_weak(animation_X2Eregister_event_handler_X28_X22_X25s_X22_X2C_X20_X25s_X2C_X200_X2C_X20nil_X2C_X20_X25s_X29), - }), - be_str_weak(process_event_handler), - &be_const_str_solidified, - ( &(const binstruction[101]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x4C0C0000, // 0006 LDNIL R3 - 0x20080403, // 0007 NE R2 R2 R3 - 0x780A0003, // 0008 JMPF R2 #000D - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x88080503, // 000B GETMBR R2 R2 K3 - 0x70020000, // 000C JMP #000E - 0x58080004, // 000D LDCONST R2 K4 - 0x580C0005, // 000E LDCONST R3 K5 - 0x8C100102, // 000F GETMET R4 R0 K2 - 0x7C100200, // 0010 CALL R4 1 - 0x4C140000, // 0011 LDNIL R5 - 0x20100805, // 0012 NE R4 R4 R5 - 0x7812000A, // 0013 JMPF R4 #001F - 0x8C100102, // 0014 GETMET R4 R0 K2 - 0x7C100200, // 0015 CALL R4 1 - 0x88100906, // 0016 GETMBR R4 R4 K6 - 0xB8160E00, // 0017 GETNGBL R5 K7 - 0x88140B08, // 0018 GETMBR R5 R5 K8 - 0x88140B09, // 0019 GETMBR R5 R5 K9 - 0x1C100805, // 001A EQ R4 R4 R5 - 0x78120002, // 001B JMPF R4 #001F - 0x8C10010A, // 001C GETMET R4 R0 K10 - 0x7C100200, // 001D CALL R4 1 - 0x5C0C0800, // 001E MOVE R3 R4 - 0x8C10010B, // 001F GETMET R4 R0 K11 - 0x7C100200, // 0020 CALL R4 1 - 0x60100018, // 0021 GETGBL R4 G24 - 0x5814000C, // 0022 LDCONST R5 K12 - 0x5C180200, // 0023 MOVE R6 R1 - 0x5C1C0400, // 0024 MOVE R7 R2 - 0x7C100600, // 0025 CALL R4 3 - 0x8C14010D, // 0026 GETMET R5 R0 K13 - 0x601C0018, // 0027 GETGBL R7 G24 - 0x5820000E, // 0028 LDCONST R8 K14 - 0x5C240800, // 0029 MOVE R9 R4 - 0x7C1C0400, // 002A CALL R7 2 - 0x7C140400, // 002B CALL R5 2 - 0x8C140102, // 002C GETMET R5 R0 K2 - 0x7C140200, // 002D CALL R5 1 - 0x4C180000, // 002E LDNIL R6 - 0x20180A06, // 002F NE R6 R5 R6 - 0x781A0027, // 0030 JMPF R6 #0059 - 0x88180B06, // 0031 GETMBR R6 R5 K6 - 0xB81E0E00, // 0032 GETNGBL R7 K7 - 0x881C0F08, // 0033 GETMBR R7 R7 K8 - 0x881C0F0F, // 0034 GETMBR R7 R7 K15 - 0x1C180C07, // 0035 EQ R6 R6 R7 - 0x781A0013, // 0036 JMPF R6 #004B - 0x88180B10, // 0037 GETMBR R6 R5 K16 - 0x1C180D11, // 0038 EQ R6 R6 K17 - 0x781A0010, // 0039 JMPF R6 #004B - 0x8C180100, // 003A GETMET R6 R0 K0 - 0x7C180200, // 003B CALL R6 1 - 0x8C180101, // 003C GETMET R6 R0 K1 - 0x7C180200, // 003D CALL R6 1 - 0x1C1C0D02, // 003E EQ R7 R6 K2 - 0x781E0003, // 003F JMPF R7 #0044 - 0x8C1C010D, // 0040 GETMET R7 R0 K13 - 0x58240012, // 0041 LDCONST R9 K18 - 0x7C1C0400, // 0042 CALL R7 2 - 0x70020005, // 0043 JMP #004A - 0x8C1C010D, // 0044 GETMET R7 R0 K13 - 0x60240018, // 0045 GETGBL R9 G24 - 0x58280013, // 0046 LDCONST R10 K19 - 0x5C2C0C00, // 0047 MOVE R11 R6 - 0x7C240400, // 0048 CALL R9 2 - 0x7C1C0400, // 0049 CALL R7 2 - 0x7002000D, // 004A JMP #0059 - 0x8C180114, // 004B GETMET R6 R0 K20 - 0x58200015, // 004C LDCONST R8 K21 - 0x7C180400, // 004D CALL R6 2 - 0x8C1C010D, // 004E GETMET R7 R0 K13 - 0x60240018, // 004F GETGBL R9 G24 - 0x58280016, // 0050 LDCONST R10 K22 - 0x5C2C0C00, // 0051 MOVE R11 R6 - 0x7C240400, // 0052 CALL R9 2 - 0x7C1C0400, // 0053 CALL R7 2 - 0x8C1C010D, // 0054 GETMET R7 R0 K13 - 0x60240018, // 0055 GETGBL R9 G24 - 0x58280017, // 0056 LDCONST R10 K23 - 0x7C240200, // 0057 CALL R9 1 - 0x7C1C0400, // 0058 CALL R7 2 - 0x8C18010D, // 0059 GETMET R6 R0 K13 - 0x58200018, // 005A LDCONST R8 K24 - 0x7C180400, // 005B CALL R6 2 - 0x8C18010D, // 005C GETMET R6 R0 K13 - 0x60200018, // 005D GETGBL R8 G24 - 0x58240019, // 005E LDCONST R9 K25 - 0x5C280200, // 005F MOVE R10 R1 - 0x5C2C0800, // 0060 MOVE R11 R4 - 0x5C300600, // 0061 MOVE R12 R3 - 0x7C200800, // 0062 CALL R8 4 - 0x7C180400, // 0063 CALL R6 2 - 0x80000000, // 0064 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_number -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(NUMBER), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20number), - /* K9 */ be_nested_str_weak(0), - }), - be_str_weak(expect_number), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A000A, // 0004 JMPF R2 #0010 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0004, // 000A JMPF R2 #0010 - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x80040400, // 000E RET 1 R2 - 0x70020003, // 000F JMP #0014 - 0x8C080107, // 0010 GETMET R2 R0 K7 - 0x58100008, // 0011 LDCONST R4 K8 - 0x7C080400, // 0012 CALL R2 2 - 0x80061200, // 0013 RET 1 K9 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: validate_symbol_reference -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_validate_symbol_reference, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_exists), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X2E_X20Make_X20sure_X20the_X20object_X20is_X20defined_X20before_X20use_X2E), - }), - be_str_weak(validate_symbol_reference), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x740E0008, // 0003 JMPT R3 #000D - 0x8C0C0101, // 0004 GETMET R3 R0 K1 - 0x60140018, // 0005 GETGBL R5 G24 - 0x58180002, // 0006 LDCONST R6 K2 - 0x5C1C0200, // 0007 MOVE R7 R1 - 0x5C200400, // 0008 MOVE R8 R2 - 0x7C140600, // 0009 CALL R5 3 - 0x7C0C0400, // 000A CALL R3 2 - 0x500C0000, // 000B LDBOOL R3 0 0 - 0x80040600, // 000C RET 1 R3 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x80040600, // 000E RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_engine_run -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_engine_run, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(run_statements), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(has_template_calls), - /* K3 */ be_nested_str_weak(name), - /* K4 */ be_nested_str_weak(comment), - /* K5 */ be_nested_str_weak(add), - /* K6 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), - /* K7 */ be_nested_str_weak(stop_iteration), - /* K8 */ be_nested_str_weak(engine_X2Erun_X28_X29), - }), - be_str_weak(generate_engine_run), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 - 0x78060002, // 0004 JMPF R1 #0008 - 0x88040102, // 0005 GETMBR R1 R0 K2 - 0x74060000, // 0006 JMPT R1 #0008 - 0x80000200, // 0007 RET 0 - 0x60040010, // 0008 GETGBL R1 G16 - 0x88080100, // 0009 GETMBR R2 R0 K0 - 0x7C040200, // 000A CALL R1 1 - 0xA802000B, // 000B EXBLK 0 #0018 - 0x5C080200, // 000C MOVE R2 R1 - 0x7C080000, // 000D CALL R2 0 - 0x940C0503, // 000E GETIDX R3 R2 K3 - 0x94100504, // 000F GETIDX R4 R2 K4 - 0x8C140105, // 0010 GETMET R5 R0 K5 - 0x601C0018, // 0011 GETGBL R7 G24 - 0x58200006, // 0012 LDCONST R8 K6 - 0x5C240600, // 0013 MOVE R9 R3 - 0x5C280800, // 0014 MOVE R10 R4 - 0x7C1C0600, // 0015 CALL R7 3 - 0x7C140400, // 0016 CALL R5 2 - 0x7001FFF3, // 0017 JMP #000C - 0x58040007, // 0018 LDCONST R1 K7 - 0xAC040200, // 0019 CATCH R1 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x8C040105, // 001B GETMET R1 R0 K5 - 0x580C0008, // 001C LDCONST R3 K8 - 0x7C040400, // 001D CALL R1 2 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_whitespace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(NEWLINE), - /* K6 */ be_nested_str_weak(COMMENT), - /* K7 */ be_nested_str_weak(next), - }), - be_str_weak(skip_whitespace), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060015, // 0002 JMPT R1 #0019 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x4C080000, // 0005 LDNIL R2 - 0x20080202, // 0006 NE R2 R1 R2 - 0x780A000E, // 0007 JMPF R2 #0017 - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0xB80E0600, // 0009 GETNGBL R3 K3 - 0x880C0704, // 000A GETMBR R3 R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x1C080403, // 000C EQ R2 R2 R3 - 0x740A0005, // 000D JMPT R2 #0014 - 0x88080302, // 000E GETMBR R2 R1 K2 - 0xB80E0600, // 000F GETNGBL R3 K3 - 0x880C0704, // 0010 GETMBR R3 R3 K4 - 0x880C0706, // 0011 GETMBR R3 R3 K6 - 0x1C080403, // 0012 EQ R2 R2 R3 - 0x780A0002, // 0013 JMPF R2 #0017 - 0x8C080107, // 0014 GETMET R2 R0 K7 - 0x7C080200, // 0015 CALL R2 1 - 0x70020000, // 0016 JMP #0018 - 0x70020000, // 0017 JMP #0019 - 0x7001FFE6, // 0018 JMP #0000 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACKET), - }), - be_str_weak(check_right_bracket), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0005, // 0004 JMPF R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0000, // 000A JMPT R2 #000C - 0x50080001, // 000B LDBOOL R2 0 1 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x80040400, // 000D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_template -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_template, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(template), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_left_brace), - /* K6 */ be_nested_str_weak(at_end), - /* K7 */ be_nested_str_weak(check_right_brace), - /* K8 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K9 */ be_nested_str_weak(current), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_nested_str_weak(animation_dsl), - /* K12 */ be_nested_str_weak(Token), - /* K13 */ be_nested_str_weak(KEYWORD), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(param), - /* K16 */ be_nested_str_weak(push), - /* K17 */ be_nested_str_weak(NEWLINE), - /* K18 */ be_const_int(0), - /* K19 */ be_nested_str_weak(EOF), - /* K20 */ be_nested_str_weak(LEFT_BRACE), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str_weak(RIGHT_BRACE), - /* K23 */ be_nested_str_weak(expect_right_brace), - /* K24 */ be_nested_str_weak(template_definitions), - /* K25 */ be_nested_str_weak(params), - /* K26 */ be_nested_str_weak(param_types), - /* K27 */ be_nested_str_weak(body_tokens), - /* K28 */ be_nested_str_weak(generate_template_function), - /* K29 */ be_nested_str_weak(symbol_table), - }), - be_str_weak(process_template), - &be_const_str_solidified, - ( &(const binstruction[165]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x60080012, // 000E GETGBL R2 G18 - 0x7C080000, // 000F CALL R2 0 - 0x600C0013, // 0010 GETGBL R3 G19 - 0x7C0C0000, // 0011 CALL R3 0 - 0x8C100106, // 0012 GETMET R4 R0 K6 - 0x7C100200, // 0013 CALL R4 1 - 0x7412004B, // 0014 JMPT R4 #0061 - 0x8C100107, // 0015 GETMET R4 R0 K7 - 0x7C100200, // 0016 CALL R4 1 - 0x74120048, // 0017 JMPT R4 #0061 - 0x8C100108, // 0018 GETMET R4 R0 K8 - 0x7C100200, // 0019 CALL R4 1 - 0x8C100107, // 001A GETMET R4 R0 K7 - 0x7C100200, // 001B CALL R4 1 - 0x78120000, // 001C JMPF R4 #001E - 0x70020042, // 001D JMP #0061 - 0x8C100109, // 001E GETMET R4 R0 K9 - 0x7C100200, // 001F CALL R4 1 - 0x4C140000, // 0020 LDNIL R5 - 0x20140805, // 0021 NE R5 R4 R5 - 0x7816003B, // 0022 JMPF R5 #005F - 0x8814090A, // 0023 GETMBR R5 R4 K10 - 0xB81A1600, // 0024 GETNGBL R6 K11 - 0x88180D0C, // 0025 GETMBR R6 R6 K12 - 0x88180D0D, // 0026 GETMBR R6 R6 K13 - 0x1C140A06, // 0027 EQ R5 R5 R6 - 0x78160035, // 0028 JMPF R5 #005F - 0x8814090E, // 0029 GETMBR R5 R4 K14 - 0x1C140B0F, // 002A EQ R5 R5 K15 - 0x78160032, // 002B JMPF R5 #005F - 0x8C140100, // 002C GETMET R5 R0 K0 - 0x7C140200, // 002D CALL R5 1 - 0x8C140101, // 002E GETMET R5 R0 K1 - 0x7C140200, // 002F CALL R5 1 - 0x4C180000, // 0030 LDNIL R6 - 0x8C1C0109, // 0031 GETMET R7 R0 K9 - 0x7C1C0200, // 0032 CALL R7 1 - 0x4C200000, // 0033 LDNIL R8 - 0x201C0E08, // 0034 NE R7 R7 R8 - 0x781E0011, // 0035 JMPF R7 #0048 - 0x8C1C0109, // 0036 GETMET R7 R0 K9 - 0x7C1C0200, // 0037 CALL R7 1 - 0x881C0F0A, // 0038 GETMBR R7 R7 K10 - 0xB8221600, // 0039 GETNGBL R8 K11 - 0x8820110C, // 003A GETMBR R8 R8 K12 - 0x8820110D, // 003B GETMBR R8 R8 K13 - 0x1C1C0E08, // 003C EQ R7 R7 R8 - 0x781E0009, // 003D JMPF R7 #0048 - 0x8C1C0109, // 003E GETMET R7 R0 K9 - 0x7C1C0200, // 003F CALL R7 1 - 0x881C0F0E, // 0040 GETMBR R7 R7 K14 - 0x1C1C0F0A, // 0041 EQ R7 R7 K10 - 0x781E0004, // 0042 JMPF R7 #0048 - 0x8C1C0100, // 0043 GETMET R7 R0 K0 - 0x7C1C0200, // 0044 CALL R7 1 - 0x8C1C0101, // 0045 GETMET R7 R0 K1 - 0x7C1C0200, // 0046 CALL R7 1 - 0x5C180E00, // 0047 MOVE R6 R7 - 0x8C1C0510, // 0048 GETMET R7 R2 K16 - 0x5C240A00, // 0049 MOVE R9 R5 - 0x7C1C0400, // 004A CALL R7 2 - 0x4C1C0000, // 004B LDNIL R7 - 0x201C0C07, // 004C NE R7 R6 R7 - 0x781E0000, // 004D JMPF R7 #004F - 0x980C0A06, // 004E SETIDX R3 R5 R6 - 0x8C1C0109, // 004F GETMET R7 R0 K9 - 0x7C1C0200, // 0050 CALL R7 1 - 0x4C200000, // 0051 LDNIL R8 - 0x201C0E08, // 0052 NE R7 R7 R8 - 0x781E0009, // 0053 JMPF R7 #005E - 0x8C1C0109, // 0054 GETMET R7 R0 K9 - 0x7C1C0200, // 0055 CALL R7 1 - 0x881C0F0A, // 0056 GETMBR R7 R7 K10 - 0xB8221600, // 0057 GETNGBL R8 K11 - 0x8820110C, // 0058 GETMBR R8 R8 K12 - 0x88201111, // 0059 GETMBR R8 R8 K17 - 0x1C1C0E08, // 005A EQ R7 R7 R8 - 0x781E0001, // 005B JMPF R7 #005E - 0x8C1C0100, // 005C GETMET R7 R0 K0 - 0x7C1C0200, // 005D CALL R7 1 - 0x70020000, // 005E JMP #0060 - 0x70020000, // 005F JMP #0061 - 0x7001FFB0, // 0060 JMP #0012 - 0x60100012, // 0061 GETGBL R4 G18 - 0x7C100000, // 0062 CALL R4 0 - 0x58140012, // 0063 LDCONST R5 K18 - 0x8C180106, // 0064 GETMET R6 R0 K6 - 0x7C180200, // 0065 CALL R6 1 - 0x741A002B, // 0066 JMPT R6 #0093 - 0x8C180109, // 0067 GETMET R6 R0 K9 - 0x7C180200, // 0068 CALL R6 1 - 0x4C1C0000, // 0069 LDNIL R7 - 0x1C1C0C07, // 006A EQ R7 R6 R7 - 0x741E0005, // 006B JMPT R7 #0072 - 0x881C0D0A, // 006C GETMBR R7 R6 K10 - 0xB8221600, // 006D GETNGBL R8 K11 - 0x8820110C, // 006E GETMBR R8 R8 K12 - 0x88201113, // 006F GETMBR R8 R8 K19 - 0x1C1C0E08, // 0070 EQ R7 R7 R8 - 0x781E0000, // 0071 JMPF R7 #0073 - 0x7002001F, // 0072 JMP #0093 - 0x881C0D0A, // 0073 GETMBR R7 R6 K10 - 0xB8221600, // 0074 GETNGBL R8 K11 - 0x8820110C, // 0075 GETMBR R8 R8 K12 - 0x88201114, // 0076 GETMBR R8 R8 K20 - 0x1C1C0E08, // 0077 EQ R7 R7 R8 - 0x781E0004, // 0078 JMPF R7 #007E - 0x00140B15, // 0079 ADD R5 R5 K21 - 0x8C1C0910, // 007A GETMET R7 R4 K16 - 0x5C240C00, // 007B MOVE R9 R6 - 0x7C1C0400, // 007C CALL R7 2 - 0x70020011, // 007D JMP #0090 - 0x881C0D0A, // 007E GETMBR R7 R6 K10 - 0xB8221600, // 007F GETNGBL R8 K11 - 0x8820110C, // 0080 GETMBR R8 R8 K12 - 0x88201116, // 0081 GETMBR R8 R8 K22 - 0x1C1C0E08, // 0082 EQ R7 R7 R8 - 0x781E0008, // 0083 JMPF R7 #008D - 0x1C1C0B12, // 0084 EQ R7 R5 K18 - 0x781E0001, // 0085 JMPF R7 #0088 - 0x7002000B, // 0086 JMP #0093 - 0x70020003, // 0087 JMP #008C - 0x04140B15, // 0088 SUB R5 R5 K21 - 0x8C1C0910, // 0089 GETMET R7 R4 K16 - 0x5C240C00, // 008A MOVE R9 R6 - 0x7C1C0400, // 008B CALL R7 2 - 0x70020002, // 008C JMP #0090 - 0x8C1C0910, // 008D GETMET R7 R4 K16 - 0x5C240C00, // 008E MOVE R9 R6 - 0x7C1C0400, // 008F CALL R7 2 - 0x8C1C0100, // 0090 GETMET R7 R0 K0 - 0x7C1C0200, // 0091 CALL R7 1 - 0x7001FFD0, // 0092 JMP #0064 - 0x8C180117, // 0093 GETMET R6 R0 K23 - 0x7C180200, // 0094 CALL R6 1 - 0x88180118, // 0095 GETMBR R6 R0 K24 - 0x601C0013, // 0096 GETGBL R7 G19 - 0x7C1C0000, // 0097 CALL R7 0 - 0x981E3202, // 0098 SETIDX R7 K25 R2 - 0x981E3403, // 0099 SETIDX R7 K26 R3 - 0x981E3604, // 009A SETIDX R7 K27 R4 - 0x98180207, // 009B SETIDX R6 R1 R7 - 0x8C18011C, // 009C GETMET R6 R0 K28 - 0x5C200200, // 009D MOVE R8 R1 - 0x5C240400, // 009E MOVE R9 R2 - 0x5C280600, // 009F MOVE R10 R3 - 0x5C2C0800, // 00A0 MOVE R11 R4 - 0x7C180A00, // 00A1 CALL R6 5 - 0x8818011D, // 00A2 GETMBR R6 R0 K29 - 0x98180303, // 00A3 SETIDX R6 R1 K3 - 0x80000000, // 00A4 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(NEWLINE), - /* K6 */ be_nested_str_weak(EOF), - /* K7 */ be_nested_str_weak(next), - }), - be_str_weak(skip_statement), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060011, // 0002 JMPT R1 #0015 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x88080302, // 0005 GETMBR R2 R1 K2 - 0xB80E0600, // 0006 GETNGBL R3 K3 - 0x880C0704, // 0007 GETMBR R3 R3 K4 - 0x880C0705, // 0008 GETMBR R3 R3 K5 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0005, // 000A JMPT R2 #0011 - 0x88080302, // 000B GETMBR R2 R1 K2 - 0xB80E0600, // 000C GETNGBL R3 K3 - 0x880C0704, // 000D GETMBR R3 R3 K4 - 0x880C0706, // 000E GETMBR R3 R3 K6 - 0x1C080403, // 000F EQ R2 R2 R3 - 0x780A0000, // 0010 JMPF R2 #0012 - 0x70020002, // 0011 JMP #0015 - 0x8C080107, // 0012 GETMET R2 R0 K7 - 0x7C080200, // 0013 CALL R2 1 - 0x7001FFEA, // 0014 JMP #0000 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_anonymous_function -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X28def_X20), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_X29_X28engine_X29), - }), - be_str_weak(is_anonymous_function), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x1C0C0703, // 0005 EQ R3 R3 K3 - 0x780E0005, // 0006 JMPF R3 #000D - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x5C140200, // 0008 MOVE R5 R1 - 0x58180004, // 0009 LDCONST R6 K4 - 0x7C0C0600, // 000A CALL R3 3 - 0x280C0703, // 000B GE R3 R3 K3 - 0x740E0000, // 000C JMPT R3 #000E - 0x500C0001, // 000D LDBOOL R3 0 1 - 0x500C0200, // 000E LDBOOL R3 1 0 - 0x80040600, // 000F RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_factory_function -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_factory_function, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(animation), - /* K3 */ be_nested_str_weak(function), - /* K4 */ be_nested_str_weak(class), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(MockEngine), - }), - be_str_weak(_validate_factory_function), - &be_const_str_solidified, - ( &(const binstruction[59]) { /* code */ - 0xA8020032, // 0000 EXBLK 0 #0034 - 0xA40E0000, // 0001 IMPORT R3 K0 - 0x8C100701, // 0002 GETMET R4 R3 K1 - 0xB81A0400, // 0003 GETNGBL R6 K2 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x7C100600, // 0005 CALL R4 3 - 0x74120002, // 0006 JMPT R4 #000A - 0x50100000, // 0007 LDBOOL R4 0 0 - 0xA8040001, // 0008 EXBLK 1 1 - 0x80040800, // 0009 RET 1 R4 - 0xB8120400, // 000A GETNGBL R4 K2 - 0x88100801, // 000B GETMBR R4 R4 R1 - 0x60140004, // 000C GETGBL R5 G4 - 0x5C180800, // 000D MOVE R6 R4 - 0x7C140200, // 000E CALL R5 1 - 0x20180B03, // 000F NE R6 R5 K3 - 0x781A0004, // 0010 JMPF R6 #0016 - 0x20180B04, // 0011 NE R6 R5 K4 - 0x781A0002, // 0012 JMPF R6 #0016 - 0x50180000, // 0013 LDBOOL R6 0 0 - 0xA8040001, // 0014 EXBLK 1 1 - 0x80040C00, // 0015 RET 1 R6 - 0x4C180000, // 0016 LDNIL R6 - 0x1C180406, // 0017 EQ R6 R2 R6 - 0x781A0002, // 0018 JMPF R6 #001C - 0x50180200, // 0019 LDBOOL R6 1 0 - 0xA8040001, // 001A EXBLK 1 1 - 0x80040C00, // 001B RET 1 R6 - 0xB81A0A00, // 001C GETNGBL R6 K5 - 0x8C180D06, // 001D GETMET R6 R6 K6 - 0x7C180200, // 001E CALL R6 1 - 0xA802000A, // 001F EXBLK 0 #002B - 0x5C1C0800, // 0020 MOVE R7 R4 - 0x5C200C00, // 0021 MOVE R8 R6 - 0x7C1C0200, // 0022 CALL R7 1 - 0x6020000F, // 0023 GETGBL R8 G15 - 0x5C240E00, // 0024 MOVE R9 R7 - 0x5C280400, // 0025 MOVE R10 R2 - 0x7C200400, // 0026 CALL R8 2 - 0xA8040002, // 0027 EXBLK 1 2 - 0x80041000, // 0028 RET 1 R8 - 0xA8040001, // 0029 EXBLK 1 1 - 0x70020006, // 002A JMP #0032 - 0xAC1C0002, // 002B CATCH R7 0 2 - 0x70020003, // 002C JMP #0031 - 0x50240000, // 002D LDBOOL R9 0 0 - 0xA8040001, // 002E EXBLK 1 1 - 0x80041200, // 002F RET 1 R9 - 0x70020000, // 0030 JMP #0032 - 0xB0080000, // 0031 RAISE 2 R0 R0 - 0xA8040001, // 0032 EXBLK 1 1 - 0x70020005, // 0033 JMP #003A - 0xAC0C0002, // 0034 CATCH R3 0 2 - 0x70020002, // 0035 JMP #0039 - 0x50140000, // 0036 LDBOOL R5 0 0 - 0x80040A00, // 0037 RET 1 R5 - 0x70020000, // 0038 JMP #003A - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x80000000, // 003A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_restart_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(value), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(expect_identifier), - /* K4 */ be_nested_str_weak(_validate_value_provider_reference), - /* K5 */ be_nested_str_weak(skip_statement), - /* K6 */ be_nested_str_weak(collect_inline_comment), - /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2Estart_X28engine_X2Etime_ms_X29_X20end), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), - /* K10 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_restart_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x88040301, // 0002 GETMBR R1 R1 K1 - 0x8C080102, // 0003 GETMET R2 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x8C080103, // 0005 GETMET R2 R0 K3 - 0x7C080200, // 0006 CALL R2 1 - 0x8C0C0104, // 0007 GETMET R3 R0 K4 - 0x5C140400, // 0008 MOVE R5 R2 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C0C0600, // 000A CALL R3 3 - 0x740E0002, // 000B JMPT R3 #000F - 0x8C0C0105, // 000C GETMET R3 R0 K5 - 0x7C0C0200, // 000D CALL R3 1 - 0x80000600, // 000E RET 0 - 0x8C0C0106, // 000F GETMET R3 R0 K6 - 0x7C0C0200, // 0010 CALL R3 1 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140007, // 0012 LDCONST R5 K7 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x8C140108, // 0015 GETMET R5 R0 K8 - 0x601C0018, // 0016 GETGBL R7 G24 - 0x58200009, // 0017 LDCONST R8 K9 - 0x8C24010A, // 0018 GETMET R9 R0 K10 - 0x7C240200, // 0019 CALL R9 1 - 0x5C280800, // 001A MOVE R10 R4 - 0x5C2C0600, // 001B MOVE R11 R3 - 0x7C1C0800, // 001C CALL R7 4 - 0x7C140400, // 001D CALL R5 2 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: next -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_next, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_nested_str_weak(tokens), - /* K2 */ be_const_int(1), - }), - be_str_weak(next), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14040202, // 0004 LT R1 R1 R2 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040100, // 0006 GETMBR R1 R0 K0 - 0x00040302, // 0007 ADD R1 R1 K2 - 0x90020001, // 0008 SETMBR R0 K0 R1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_animation, /* name */ - be_nested_proto( - 15, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[37]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(animation), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(KEYWORD), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(peek), - /* K13 */ be_nested_str_weak(LEFT_PAREN), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(), - /* K16 */ be_nested_str_weak(COMMENT), - /* K17 */ be_nested_str_weak(_X20_X20), - /* K18 */ be_nested_str_weak(template_definitions), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(process_function_arguments), - /* K21 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K22 */ be_nested_str_weak(engine), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), - /* K25 */ be_nested_str_weak(_validate_animation_factory_creates_animation), - /* K26 */ be_nested_str_weak(error), - /* K27 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X20or_X20does_X20not_X20create_X20an_X20instance_X20of_X20animation_X2Eanimation_X20class_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X20returns_X20an_X20animation_X20object_X2E), - /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), - /* K29 */ be_nested_str_weak(_create_instance_for_validation), - /* K30 */ be_nested_str_weak(symbol_table), - /* K31 */ be_nested_str_weak(_process_named_arguments_for_animation), - /* K32 */ be_nested_str_weak(_X25s_), - /* K33 */ be_nested_str_weak(process_value), - /* K34 */ be_nested_str_weak(collect_inline_comment), - /* K35 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K36 */ be_nested_str_weak(string), - }), - be_str_weak(process_animation), - &be_const_str_solidified, - ( &(const binstruction[192]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x880C0507, // 0010 GETMBR R3 R2 K7 - 0xB8121000, // 0011 GETNGBL R4 K8 - 0x88100909, // 0012 GETMBR R4 R4 K9 - 0x8810090A, // 0013 GETMBR R4 R4 K10 - 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x740E0005, // 0015 JMPT R3 #001C - 0x880C0507, // 0016 GETMBR R3 R2 K7 - 0xB8121000, // 0017 GETNGBL R4 K8 - 0x88100909, // 0018 GETMBR R4 R4 K9 - 0x8810090B, // 0019 GETMBR R4 R4 K11 - 0x1C0C0604, // 001A EQ R3 R3 R4 - 0x780E0062, // 001B JMPF R3 #007F - 0x8C0C010C, // 001C GETMET R3 R0 K12 - 0x7C0C0200, // 001D CALL R3 1 - 0x4C100000, // 001E LDNIL R4 - 0x200C0604, // 001F NE R3 R3 R4 - 0x780E005D, // 0020 JMPF R3 #007F - 0x8C0C010C, // 0021 GETMET R3 R0 K12 - 0x7C0C0200, // 0022 CALL R3 1 - 0x880C0707, // 0023 GETMBR R3 R3 K7 - 0xB8121000, // 0024 GETNGBL R4 K8 - 0x88100909, // 0025 GETMBR R4 R4 K9 - 0x8810090D, // 0026 GETMBR R4 R4 K13 - 0x1C0C0604, // 0027 EQ R3 R3 R4 - 0x780E0055, // 0028 JMPF R3 #007F - 0x880C050E, // 0029 GETMBR R3 R2 K14 - 0x8C100100, // 002A GETMET R4 R0 K0 - 0x7C100200, // 002B CALL R4 1 - 0x5810000F, // 002C LDCONST R4 K15 - 0x8C140106, // 002D GETMET R5 R0 K6 - 0x7C140200, // 002E CALL R5 1 - 0x4C180000, // 002F LDNIL R6 - 0x20140A06, // 0030 NE R5 R5 R6 - 0x7816000E, // 0031 JMPF R5 #0041 - 0x8C140106, // 0032 GETMET R5 R0 K6 - 0x7C140200, // 0033 CALL R5 1 - 0x88140B07, // 0034 GETMBR R5 R5 K7 - 0xB81A1000, // 0035 GETNGBL R6 K8 - 0x88180D09, // 0036 GETMBR R6 R6 K9 - 0x88180D10, // 0037 GETMBR R6 R6 K16 - 0x1C140A06, // 0038 EQ R5 R5 R6 - 0x78160006, // 0039 JMPF R5 #0041 - 0x8C140106, // 003A GETMET R5 R0 K6 - 0x7C140200, // 003B CALL R5 1 - 0x88140B0E, // 003C GETMBR R5 R5 K14 - 0x00162205, // 003D ADD R5 K17 R5 - 0x5C100A00, // 003E MOVE R4 R5 - 0x8C140100, // 003F GETMET R5 R0 K0 - 0x7C140200, // 0040 CALL R5 1 - 0x88140112, // 0041 GETMBR R5 R0 K18 - 0x8C140B13, // 0042 GETMET R5 R5 K19 - 0x5C1C0600, // 0043 MOVE R7 R3 - 0x7C140400, // 0044 CALL R5 2 - 0x78160013, // 0045 JMPF R5 #005A - 0x8C140114, // 0046 GETMET R5 R0 K20 - 0x501C0000, // 0047 LDBOOL R7 0 0 - 0x7C140400, // 0048 CALL R5 2 - 0x20180B0F, // 0049 NE R6 R5 K15 - 0x781A0004, // 004A JMPF R6 #0050 - 0x60180018, // 004B GETGBL R6 G24 - 0x581C0015, // 004C LDCONST R7 K21 - 0x5C200A00, // 004D MOVE R8 R5 - 0x7C180400, // 004E CALL R6 2 - 0x70020000, // 004F JMP #0051 - 0x58180016, // 0050 LDCONST R6 K22 - 0x8C1C0117, // 0051 GETMET R7 R0 K23 - 0x60240018, // 0052 GETGBL R9 G24 - 0x58280018, // 0053 LDCONST R10 K24 - 0x5C2C0600, // 0054 MOVE R11 R3 - 0x5C300C00, // 0055 MOVE R12 R6 - 0x5C340800, // 0056 MOVE R13 R4 - 0x7C240800, // 0057 CALL R9 4 - 0x7C1C0400, // 0058 CALL R7 2 - 0x70020023, // 0059 JMP #007E - 0x8C140119, // 005A GETMET R5 R0 K25 - 0x5C1C0600, // 005B MOVE R7 R3 - 0x7C140400, // 005C CALL R5 2 - 0x74160008, // 005D JMPT R5 #0067 - 0x8C14011A, // 005E GETMET R5 R0 K26 - 0x601C0018, // 005F GETGBL R7 G24 - 0x5820001B, // 0060 LDCONST R8 K27 - 0x5C240600, // 0061 MOVE R9 R3 - 0x7C1C0400, // 0062 CALL R7 2 - 0x7C140400, // 0063 CALL R5 2 - 0x8C140104, // 0064 GETMET R5 R0 K4 - 0x7C140200, // 0065 CALL R5 1 - 0x80000A00, // 0066 RET 0 - 0x8C140117, // 0067 GETMET R5 R0 K23 - 0x601C0018, // 0068 GETGBL R7 G24 - 0x5820001C, // 0069 LDCONST R8 K28 - 0x5C240200, // 006A MOVE R9 R1 - 0x5C280600, // 006B MOVE R10 R3 - 0x5C2C0800, // 006C MOVE R11 R4 - 0x7C1C0800, // 006D CALL R7 4 - 0x7C140400, // 006E CALL R5 2 - 0x8C14011D, // 006F GETMET R5 R0 K29 - 0x5C1C0600, // 0070 MOVE R7 R3 - 0x7C140400, // 0071 CALL R5 2 - 0x4C180000, // 0072 LDNIL R6 - 0x20180A06, // 0073 NE R6 R5 R6 - 0x781A0001, // 0074 JMPF R6 #0077 - 0x8818011E, // 0075 GETMBR R6 R0 K30 - 0x98180205, // 0076 SETIDX R6 R1 R5 - 0x8C18011F, // 0077 GETMET R6 R0 K31 - 0x60200018, // 0078 GETGBL R8 G24 - 0x58240020, // 0079 LDCONST R9 K32 - 0x5C280200, // 007A MOVE R10 R1 - 0x7C200400, // 007B CALL R8 2 - 0x5C240600, // 007C MOVE R9 R3 - 0x7C180600, // 007D CALL R6 3 - 0x7002003F, // 007E JMP #00BF - 0x8C0C0106, // 007F GETMET R3 R0 K6 - 0x7C0C0200, // 0080 CALL R3 1 - 0x4C100000, // 0081 LDNIL R4 - 0x20100604, // 0082 NE R4 R3 R4 - 0x78120012, // 0083 JMPF R4 #0097 - 0x88100707, // 0084 GETMBR R4 R3 K7 - 0xB8161000, // 0085 GETNGBL R5 K8 - 0x88140B09, // 0086 GETMBR R5 R5 K9 - 0x88140B0B, // 0087 GETMBR R5 R5 K11 - 0x1C100805, // 0088 EQ R4 R4 R5 - 0x7812000C, // 0089 JMPF R4 #0097 - 0x8C10010C, // 008A GETMET R4 R0 K12 - 0x7C100200, // 008B CALL R4 1 - 0x4C140000, // 008C LDNIL R5 - 0x1C100805, // 008D EQ R4 R4 R5 - 0x74120008, // 008E JMPT R4 #0098 - 0x8C10010C, // 008F GETMET R4 R0 K12 - 0x7C100200, // 0090 CALL R4 1 - 0x88100907, // 0091 GETMBR R4 R4 K7 - 0xB8161000, // 0092 GETNGBL R5 K8 - 0x88140B09, // 0093 GETMBR R5 R5 K9 - 0x88140B0D, // 0094 GETMBR R5 R5 K13 - 0x20100805, // 0095 NE R4 R4 R5 - 0x74120000, // 0096 JMPT R4 #0098 - 0x50100001, // 0097 LDBOOL R4 0 1 - 0x50100200, // 0098 LDBOOL R4 1 0 - 0x78120001, // 0099 JMPF R4 #009C - 0x8814070E, // 009A GETMBR R5 R3 K14 - 0x70020000, // 009B JMP #009D - 0x4C140000, // 009C LDNIL R5 - 0x8C180121, // 009D GETMET R6 R0 K33 - 0x58200003, // 009E LDCONST R8 K3 - 0x7C180400, // 009F CALL R6 2 - 0x8C1C0122, // 00A0 GETMET R7 R0 K34 - 0x7C1C0200, // 00A1 CALL R7 1 - 0x8C200117, // 00A2 GETMET R8 R0 K23 - 0x60280018, // 00A3 GETGBL R10 G24 - 0x582C0023, // 00A4 LDCONST R11 K35 - 0x5C300200, // 00A5 MOVE R12 R1 - 0x5C340C00, // 00A6 MOVE R13 R6 - 0x5C380E00, // 00A7 MOVE R14 R7 - 0x7C280800, // 00A8 CALL R10 4 - 0x7C200400, // 00A9 CALL R8 2 - 0x78120011, // 00AA JMPF R4 #00BD - 0x4C200000, // 00AB LDNIL R8 - 0x20200A08, // 00AC NE R8 R5 R8 - 0x7822000E, // 00AD JMPF R8 #00BD - 0x8820011E, // 00AE GETMBR R8 R0 K30 - 0x8C201113, // 00AF GETMET R8 R8 K19 - 0x5C280A00, // 00B0 MOVE R10 R5 - 0x7C200400, // 00B1 CALL R8 2 - 0x78220009, // 00B2 JMPF R8 #00BD - 0x8820011E, // 00B3 GETMBR R8 R0 K30 - 0x94201005, // 00B4 GETIDX R8 R8 R5 - 0x60240004, // 00B5 GETGBL R9 G4 - 0x5C281000, // 00B6 MOVE R10 R8 - 0x7C240200, // 00B7 CALL R9 1 - 0x20241324, // 00B8 NE R9 R9 K36 - 0x78260001, // 00B9 JMPF R9 #00BC - 0x8824011E, // 00BA GETMBR R9 R0 K30 - 0x98240208, // 00BB SETIDX R9 R1 R8 - 0x70020001, // 00BC JMP #00BF - 0x8820011E, // 00BD GETMBR R8 R0 K30 - 0x98200303, // 00BE SETIDX R8 R1 K3 - 0x80000000, // 00BF RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_property_assignment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_property_assignment, /* name */ - be_nested_proto( - 14, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_identifier), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(LEFT_PAREN), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(process_function_arguments), - /* K8 */ be_nested_str_weak(collect_inline_comment), - /* K9 */ be_nested_str_weak(process_log_call), - /* K10 */ be_nested_str_weak(standalone), - /* K11 */ be_nested_str_weak(add), - /* K12 */ be_nested_str_weak(template_definitions), - /* K13 */ be_nested_str_weak(contains), - /* K14 */ be_nested_str_weak(), - /* K15 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K16 */ be_nested_str_weak(engine), - /* K17 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), - /* K18 */ be_nested_str_weak(has_template_calls), - /* K19 */ be_nested_str_weak(error), - /* K20 */ be_nested_str_weak(Standalone_X20function_X20calls_X20are_X20only_X20supported_X20for_X20templates_X2E_X20_X27_X25s_X27_X20is_X20not_X20a_X20template_X2E), - /* K21 */ be_nested_str_weak(skip_statement), - /* K22 */ be_nested_str_weak(DOT), - /* K23 */ be_nested_str_weak(next), - /* K24 */ be_nested_str_weak(symbol_table), - /* K25 */ be_nested_str_weak(string), - /* K26 */ be_nested_str_weak(_validate_single_parameter), - /* K27 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20assignments_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), - /* K28 */ be_nested_str_weak(expect_assign), - /* K29 */ be_nested_str_weak(process_value), - /* K30 */ be_nested_str_weak(property), - /* K31 */ be_nested_str_weak(resolve_symbol_reference), - /* K32 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K33 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), - }), - be_str_weak(process_property_assignment), - &be_const_str_solidified, - ( &(const binstruction[142]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x4C0C0000, // 0004 LDNIL R3 - 0x20080403, // 0005 NE R2 R2 R3 - 0x780A003D, // 0006 JMPF R2 #0045 - 0x8C080101, // 0007 GETMET R2 R0 K1 - 0x7C080200, // 0008 CALL R2 1 - 0x88080502, // 0009 GETMBR R2 R2 K2 - 0xB80E0600, // 000A GETNGBL R3 K3 - 0x880C0704, // 000B GETMBR R3 R3 K4 - 0x880C0705, // 000C GETMBR R3 R3 K5 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x780A0035, // 000E JMPF R2 #0045 - 0x1C080306, // 000F EQ R2 R1 K6 - 0x780A000D, // 0010 JMPF R2 #001F - 0x8C080107, // 0011 GETMET R2 R0 K7 - 0x50100000, // 0012 LDBOOL R4 0 0 - 0x7C080400, // 0013 CALL R2 2 - 0x8C0C0108, // 0014 GETMET R3 R0 K8 - 0x7C0C0200, // 0015 CALL R3 1 - 0x8C100109, // 0016 GETMET R4 R0 K9 - 0x5C180400, // 0017 MOVE R6 R2 - 0x581C000A, // 0018 LDCONST R7 K10 - 0x5C200600, // 0019 MOVE R8 R3 - 0x7C100800, // 001A CALL R4 4 - 0x8C14010B, // 001B GETMET R5 R0 K11 - 0x5C1C0800, // 001C MOVE R7 R4 - 0x7C140400, // 001D CALL R5 2 - 0x80000A00, // 001E RET 0 - 0x8808010C, // 001F GETMBR R2 R0 K12 - 0x8C08050D, // 0020 GETMET R2 R2 K13 - 0x5C100200, // 0021 MOVE R4 R1 - 0x7C080400, // 0022 CALL R2 2 - 0x780A0017, // 0023 JMPF R2 #003C - 0x8C080107, // 0024 GETMET R2 R0 K7 - 0x50100000, // 0025 LDBOOL R4 0 0 - 0x7C080400, // 0026 CALL R2 2 - 0x200C050E, // 0027 NE R3 R2 K14 - 0x780E0004, // 0028 JMPF R3 #002E - 0x600C0018, // 0029 GETGBL R3 G24 - 0x5810000F, // 002A LDCONST R4 K15 - 0x5C140400, // 002B MOVE R5 R2 - 0x7C0C0400, // 002C CALL R3 2 - 0x70020000, // 002D JMP #002F - 0x580C0010, // 002E LDCONST R3 K16 - 0x8C100108, // 002F GETMET R4 R0 K8 - 0x7C100200, // 0030 CALL R4 1 - 0x8C14010B, // 0031 GETMET R5 R0 K11 - 0x601C0018, // 0032 GETGBL R7 G24 - 0x58200011, // 0033 LDCONST R8 K17 - 0x5C240200, // 0034 MOVE R9 R1 - 0x5C280600, // 0035 MOVE R10 R3 - 0x5C2C0800, // 0036 MOVE R11 R4 - 0x7C1C0800, // 0037 CALL R7 4 - 0x7C140400, // 0038 CALL R5 2 - 0x50140200, // 0039 LDBOOL R5 1 0 - 0x90022405, // 003A SETMBR R0 K18 R5 - 0x70020007, // 003B JMP #0044 - 0x8C080113, // 003C GETMET R2 R0 K19 - 0x60100018, // 003D GETGBL R4 G24 - 0x58140014, // 003E LDCONST R5 K20 - 0x5C180200, // 003F MOVE R6 R1 - 0x7C100400, // 0040 CALL R4 2 - 0x7C080400, // 0041 CALL R2 2 - 0x8C080115, // 0042 GETMET R2 R0 K21 - 0x7C080200, // 0043 CALL R2 1 - 0x80000400, // 0044 RET 0 - 0x8C080101, // 0045 GETMET R2 R0 K1 - 0x7C080200, // 0046 CALL R2 1 - 0x4C0C0000, // 0047 LDNIL R3 - 0x20080403, // 0048 NE R2 R2 R3 - 0x780A003A, // 0049 JMPF R2 #0085 - 0x8C080101, // 004A GETMET R2 R0 K1 - 0x7C080200, // 004B CALL R2 1 - 0x88080502, // 004C GETMBR R2 R2 K2 - 0xB80E0600, // 004D GETNGBL R3 K3 - 0x880C0704, // 004E GETMBR R3 R3 K4 - 0x880C0716, // 004F GETMBR R3 R3 K22 - 0x1C080403, // 0050 EQ R2 R2 R3 - 0x780A0032, // 0051 JMPF R2 #0085 - 0x8C080117, // 0052 GETMET R2 R0 K23 - 0x7C080200, // 0053 CALL R2 1 - 0x8C080100, // 0054 GETMET R2 R0 K0 - 0x7C080200, // 0055 CALL R2 1 - 0x880C0118, // 0056 GETMBR R3 R0 K24 - 0x8C0C070D, // 0057 GETMET R3 R3 K13 - 0x5C140200, // 0058 MOVE R5 R1 - 0x7C0C0400, // 0059 CALL R3 2 - 0x780E0015, // 005A JMPF R3 #0071 - 0x880C0118, // 005B GETMBR R3 R0 K24 - 0x940C0601, // 005C GETIDX R3 R3 R1 - 0x60100004, // 005D GETGBL R4 G4 - 0x5C140600, // 005E MOVE R5 R3 - 0x7C100200, // 005F CALL R4 1 - 0x20100919, // 0060 NE R4 R4 K25 - 0x78120008, // 0061 JMPF R4 #006B - 0x60100005, // 0062 GETGBL R4 G5 - 0x5C140600, // 0063 MOVE R5 R3 - 0x7C100200, // 0064 CALL R4 1 - 0x8C14011A, // 0065 GETMET R5 R0 K26 - 0x5C1C0800, // 0066 MOVE R7 R4 - 0x5C200400, // 0067 MOVE R8 R2 - 0x5C240600, // 0068 MOVE R9 R3 - 0x7C140800, // 0069 CALL R5 4 - 0x70020005, // 006A JMP #0071 - 0x8C100113, // 006B GETMET R4 R0 K19 - 0x60180018, // 006C GETGBL R6 G24 - 0x581C001B, // 006D LDCONST R7 K27 - 0x5C200200, // 006E MOVE R8 R1 - 0x7C180400, // 006F CALL R6 2 - 0x7C100400, // 0070 CALL R4 2 - 0x8C0C011C, // 0071 GETMET R3 R0 K28 - 0x7C0C0200, // 0072 CALL R3 1 - 0x8C0C011D, // 0073 GETMET R3 R0 K29 - 0x5814001E, // 0074 LDCONST R5 K30 - 0x7C0C0400, // 0075 CALL R3 2 - 0x8C100108, // 0076 GETMET R4 R0 K8 - 0x7C100200, // 0077 CALL R4 1 - 0x8C14011F, // 0078 GETMET R5 R0 K31 - 0x5C1C0200, // 0079 MOVE R7 R1 - 0x7C140400, // 007A CALL R5 2 - 0x8C18010B, // 007B GETMET R6 R0 K11 - 0x60200018, // 007C GETGBL R8 G24 - 0x58240020, // 007D LDCONST R9 K32 - 0x5C280A00, // 007E MOVE R10 R5 - 0x5C2C0400, // 007F MOVE R11 R2 - 0x5C300600, // 0080 MOVE R12 R3 - 0x5C340800, // 0081 MOVE R13 R4 - 0x7C200A00, // 0082 CALL R8 5 - 0x7C180400, // 0083 CALL R6 2 - 0x70020007, // 0084 JMP #008D - 0x8C080113, // 0085 GETMET R2 R0 K19 - 0x60100018, // 0086 GETGBL R4 G24 - 0x58140021, // 0087 LDCONST R5 K33 - 0x5C180200, // 0088 MOVE R6 R1 - 0x7C100400, // 0089 CALL R4 2 - 0x7C080400, // 008A CALL R2 2 - 0x8C080115, // 008B GETMET R2 R0 K21 - 0x7C080200, // 008C CALL R2 1 - 0x80000000, // 008D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: validate_user_name -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ - be_nested_proto( - 13, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(Token), - /* K2 */ be_nested_str_weak(color_names), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Cannot_X20redefine_X20predefined_X20color_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), - /* K5 */ be_nested_str_weak(stop_iteration), - /* K6 */ be_nested_str_weak(statement_keywords), - /* K7 */ be_nested_str_weak(Cannot_X20use_X20DSL_X20keyword_X20_X27_X25s_X27_X20as_X20_X25s_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), - }), - be_str_weak(validate_user_name), - &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x600C0010, // 0000 GETGBL R3 G16 - 0xB8120000, // 0001 GETNGBL R4 K0 - 0x88100901, // 0002 GETMBR R4 R4 K1 - 0x88100902, // 0003 GETMBR R4 R4 K2 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA802000F, // 0005 EXBLK 0 #0016 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x1C140204, // 0008 EQ R5 R1 R4 - 0x7816000A, // 0009 JMPF R5 #0015 - 0x8C140103, // 000A GETMET R5 R0 K3 - 0x601C0018, // 000B GETGBL R7 G24 - 0x58200004, // 000C LDCONST R8 K4 - 0x5C240200, // 000D MOVE R9 R1 - 0x5C280200, // 000E MOVE R10 R1 - 0x5C2C0200, // 000F MOVE R11 R1 - 0x7C1C0800, // 0010 CALL R7 4 - 0x7C140400, // 0011 CALL R5 2 - 0x50140000, // 0012 LDBOOL R5 0 0 - 0xA8040001, // 0013 EXBLK 1 1 - 0x80040A00, // 0014 RET 1 R5 - 0x7001FFEF, // 0015 JMP #0006 - 0x580C0005, // 0016 LDCONST R3 K5 - 0xAC0C0200, // 0017 CATCH R3 1 0 - 0xB0080000, // 0018 RAISE 2 R0 R0 - 0x600C0010, // 0019 GETGBL R3 G16 - 0xB8120000, // 001A GETNGBL R4 K0 - 0x88100901, // 001B GETMBR R4 R4 K1 - 0x88100906, // 001C GETMBR R4 R4 K6 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x1C140204, // 0021 EQ R5 R1 R4 - 0x7816000B, // 0022 JMPF R5 #002F - 0x8C140103, // 0023 GETMET R5 R0 K3 - 0x601C0018, // 0024 GETGBL R7 G24 - 0x58200007, // 0025 LDCONST R8 K7 - 0x5C240200, // 0026 MOVE R9 R1 - 0x5C280400, // 0027 MOVE R10 R2 - 0x5C2C0200, // 0028 MOVE R11 R1 - 0x5C300200, // 0029 MOVE R12 R1 - 0x7C1C0A00, // 002A CALL R7 5 - 0x7C140400, // 002B CALL R5 2 - 0x50140000, // 002C LDBOOL R5 0 0 - 0xA8040001, // 002D EXBLK 1 1 - 0x80040A00, // 002E RET 1 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0005, // 0030 LDCONST R3 K5 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x500C0200, // 0033 LDBOOL R3 1 0 - 0x80040600, // 0034 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_right_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_PAREN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X29_X27), - }), - be_str_weak(expect_right_paren), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_set -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(variable), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(KEYWORD), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(peek), - /* K13 */ be_nested_str_weak(LEFT_PAREN), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(_validate_value_provider_factory_exists), - /* K16 */ be_nested_str_weak(process_value), - /* K17 */ be_nested_str_weak(collect_inline_comment), - /* K18 */ be_nested_str_weak(add), - /* K19 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K20 */ be_nested_str_weak(symbol_table), - /* K21 */ be_nested_str_weak(value_provider), - }), - be_str_weak(process_set), - &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x50080000, // 000E LDBOOL R2 0 0 - 0x8C0C0106, // 000F GETMET R3 R0 K6 - 0x7C0C0200, // 0010 CALL R3 1 - 0x88100707, // 0011 GETMBR R4 R3 K7 - 0xB8161000, // 0012 GETNGBL R5 K8 - 0x88140B09, // 0013 GETMBR R5 R5 K9 - 0x88140B0A, // 0014 GETMBR R5 R5 K10 - 0x1C100805, // 0015 EQ R4 R4 R5 - 0x74120005, // 0016 JMPT R4 #001D - 0x88100707, // 0017 GETMBR R4 R3 K7 - 0xB8161000, // 0018 GETNGBL R5 K8 - 0x88140B09, // 0019 GETMBR R5 R5 K9 - 0x88140B0B, // 001A GETMBR R5 R5 K11 - 0x1C100805, // 001B EQ R4 R4 R5 - 0x78120012, // 001C JMPF R4 #0030 - 0x8C10010C, // 001D GETMET R4 R0 K12 - 0x7C100200, // 001E CALL R4 1 - 0x4C140000, // 001F LDNIL R5 - 0x20100805, // 0020 NE R4 R4 R5 - 0x7812000D, // 0021 JMPF R4 #0030 - 0x8C10010C, // 0022 GETMET R4 R0 K12 - 0x7C100200, // 0023 CALL R4 1 - 0x88100907, // 0024 GETMBR R4 R4 K7 - 0xB8161000, // 0025 GETNGBL R5 K8 - 0x88140B09, // 0026 GETMBR R5 R5 K9 - 0x88140B0D, // 0027 GETMBR R5 R5 K13 - 0x1C100805, // 0028 EQ R4 R4 R5 - 0x78120005, // 0029 JMPF R4 #0030 - 0x8810070E, // 002A GETMBR R4 R3 K14 - 0x8C14010F, // 002B GETMET R5 R0 K15 - 0x5C1C0800, // 002C MOVE R7 R4 - 0x7C140400, // 002D CALL R5 2 - 0x78160000, // 002E JMPF R5 #0030 - 0x50080200, // 002F LDBOOL R2 1 0 - 0x8C100110, // 0030 GETMET R4 R0 K16 - 0x58180003, // 0031 LDCONST R6 K3 - 0x7C100400, // 0032 CALL R4 2 - 0x8C140111, // 0033 GETMET R5 R0 K17 - 0x7C140200, // 0034 CALL R5 1 - 0x8C180112, // 0035 GETMET R6 R0 K18 - 0x60200018, // 0036 GETGBL R8 G24 - 0x58240013, // 0037 LDCONST R9 K19 - 0x5C280200, // 0038 MOVE R10 R1 - 0x5C2C0800, // 0039 MOVE R11 R4 - 0x5C300A00, // 003A MOVE R12 R5 - 0x7C200800, // 003B CALL R8 4 - 0x7C180400, // 003C CALL R6 2 - 0x780A0002, // 003D JMPF R2 #0041 - 0x88180114, // 003E GETMBR R6 R0 K20 - 0x98180315, // 003F SETIDX R6 R1 K21 - 0x70020001, // 0040 JMP #0043 - 0x88180114, // 0041 GETMBR R6 R0 K20 - 0x98180303, // 0042 SETIDX R6 R1 K3 - 0x80000000, // 0043 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_assignment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(process_sequence_assignment_generic), - /* K1 */ be_nested_str_weak(steps), - }), - be_str_weak(process_sequence_assignment), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x58140001, // 0002 LDCONST R5 K1 - 0x7C080600, // 0003 CALL R2 3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _is_simple_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__is_simple_function_call, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(strip_length), - /* K1 */ be_nested_str_weak(static_value), - /* K2 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(_is_simple_function_call), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x400C0500, // 0002 CONNECT R3 R2 K0 - 0x400C0501, // 0003 CONNECT R3 R2 K1 - 0x600C0010, // 0004 GETGBL R3 G16 - 0x5C100400, // 0005 MOVE R4 R2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020007, // 0007 EXBLK 0 #0010 - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x1C140204, // 000A EQ R5 R1 R4 - 0x78160002, // 000B JMPF R5 #000F - 0x50140200, // 000C LDBOOL R5 1 0 - 0xA8040001, // 000D EXBLK 1 1 - 0x80040A00, // 000E RET 1 R5 - 0x7001FFF7, // 000F JMP #0008 - 0x580C0002, // 0010 LDCONST R3 K2 - 0xAC0C0200, // 0011 CATCH R3 1 0 - 0xB0080000, // 0012 RAISE 2 R0 R0 - 0x500C0000, // 0013 LDBOOL R3 0 0 - 0x80040600, // 0014 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_statement, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[42]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(EOF), - /* K5 */ be_nested_str_weak(COMMENT), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(NEWLINE), - /* K10 */ be_nested_str_weak(first_statement), - /* K11 */ be_nested_str_weak(KEYWORD), - /* K12 */ be_nested_str_weak(IDENTIFIER), - /* K13 */ be_nested_str_weak(strip), - /* K14 */ be_nested_str_weak(error), - /* K15 */ be_nested_str_weak(_X27strip_X27_X20directive_X20is_X20temporarily_X20disabled_X2E_X20Strip_X20configuration_X20is_X20handled_X20automatically_X2E), - /* K16 */ be_nested_str_weak(skip_statement), - /* K17 */ be_nested_str_weak(strip_initialized), - /* K18 */ be_nested_str_weak(generate_default_strip_initialization), - /* K19 */ be_nested_str_weak(color), - /* K20 */ be_nested_str_weak(process_color), - /* K21 */ be_nested_str_weak(palette), - /* K22 */ be_nested_str_weak(process_palette), - /* K23 */ be_nested_str_weak(animation), - /* K24 */ be_nested_str_weak(process_animation), - /* K25 */ be_nested_str_weak(set), - /* K26 */ be_nested_str_weak(process_set), - /* K27 */ be_nested_str_weak(sequence), - /* K28 */ be_nested_str_weak(process_sequence), - /* K29 */ be_nested_str_weak(template), - /* K30 */ be_nested_str_weak(process_template), - /* K31 */ be_nested_str_weak(run), - /* K32 */ be_nested_str_weak(process_run), - /* K33 */ be_nested_str_weak(import), - /* K34 */ be_nested_str_weak(process_import), - /* K35 */ be_nested_str_weak(on), - /* K36 */ be_nested_str_weak(process_event_handler), - /* K37 */ be_nested_str_weak(log), - /* K38 */ be_nested_str_weak(peek), - /* K39 */ be_nested_str_weak(LEFT_PAREN), - /* K40 */ be_nested_str_weak(process_standalone_log), - /* K41 */ be_nested_str_weak(process_property_assignment), - }), - be_str_weak(process_statement), - &be_const_str_solidified, - ( &(const binstruction[160]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x740A0005, // 0004 JMPT R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0000, // 000A JMPF R2 #000C - 0x80000400, // 000B RET 0 - 0x88080301, // 000C GETMBR R2 R1 K1 - 0xB80E0400, // 000D GETNGBL R3 K2 - 0x880C0703, // 000E GETMBR R3 R3 K3 - 0x880C0705, // 000F GETMBR R3 R3 K5 - 0x1C080403, // 0010 EQ R2 R2 R3 - 0x780A0005, // 0011 JMPF R2 #0018 - 0x8C080106, // 0012 GETMET R2 R0 K6 - 0x88100307, // 0013 GETMBR R4 R1 K7 - 0x7C080400, // 0014 CALL R2 2 - 0x8C080108, // 0015 GETMET R2 R0 K8 - 0x7C080200, // 0016 CALL R2 1 - 0x80000400, // 0017 RET 0 - 0x88080301, // 0018 GETMBR R2 R1 K1 - 0xB80E0400, // 0019 GETNGBL R3 K2 - 0x880C0703, // 001A GETMBR R3 R3 K3 - 0x880C0709, // 001B GETMBR R3 R3 K9 - 0x1C080403, // 001C EQ R2 R2 R3 - 0x780A0002, // 001D JMPF R2 #0021 - 0x8C080108, // 001E GETMET R2 R0 K8 - 0x7C080200, // 001F CALL R2 1 - 0x80000400, // 0020 RET 0 - 0x8808010A, // 0021 GETMBR R2 R0 K10 - 0x880C0301, // 0022 GETMBR R3 R1 K1 - 0xB8120400, // 0023 GETNGBL R4 K2 - 0x88100903, // 0024 GETMBR R4 R4 K3 - 0x8810090B, // 0025 GETMBR R4 R4 K11 - 0x1C0C0604, // 0026 EQ R3 R3 R4 - 0x740E0005, // 0027 JMPT R3 #002E - 0x880C0301, // 0028 GETMBR R3 R1 K1 - 0xB8120400, // 0029 GETNGBL R4 K2 - 0x88100903, // 002A GETMBR R4 R4 K3 - 0x8810090C, // 002B GETMBR R4 R4 K12 - 0x1C0C0604, // 002C EQ R3 R3 R4 - 0x780E0001, // 002D JMPF R3 #0030 - 0x500C0000, // 002E LDBOOL R3 0 0 - 0x90021403, // 002F SETMBR R0 K10 R3 - 0x880C0301, // 0030 GETMBR R3 R1 K1 - 0xB8120400, // 0031 GETNGBL R4 K2 - 0x88100903, // 0032 GETMBR R4 R4 K3 - 0x8810090B, // 0033 GETMBR R4 R4 K11 - 0x1C0C0604, // 0034 EQ R3 R3 R4 - 0x780E0046, // 0035 JMPF R3 #007D - 0x880C0307, // 0036 GETMBR R3 R1 K7 - 0x1C0C070D, // 0037 EQ R3 R3 K13 - 0x780E0006, // 0038 JMPF R3 #0040 - 0x8C0C010E, // 0039 GETMET R3 R0 K14 - 0x5814000F, // 003A LDCONST R5 K15 - 0x7C0C0400, // 003B CALL R3 2 - 0x8C0C0110, // 003C GETMET R3 R0 K16 - 0x7C0C0200, // 003D CALL R3 1 - 0x80000600, // 003E RET 0 - 0x7002003B, // 003F JMP #007C - 0x880C0111, // 0040 GETMBR R3 R0 K17 - 0x740E0001, // 0041 JMPT R3 #0044 - 0x8C0C0112, // 0042 GETMET R3 R0 K18 - 0x7C0C0200, // 0043 CALL R3 1 - 0x880C0307, // 0044 GETMBR R3 R1 K7 - 0x1C0C0713, // 0045 EQ R3 R3 K19 - 0x780E0002, // 0046 JMPF R3 #004A - 0x8C0C0114, // 0047 GETMET R3 R0 K20 - 0x7C0C0200, // 0048 CALL R3 1 - 0x70020031, // 0049 JMP #007C - 0x880C0307, // 004A GETMBR R3 R1 K7 - 0x1C0C0715, // 004B EQ R3 R3 K21 - 0x780E0002, // 004C JMPF R3 #0050 - 0x8C0C0116, // 004D GETMET R3 R0 K22 - 0x7C0C0200, // 004E CALL R3 1 - 0x7002002B, // 004F JMP #007C - 0x880C0307, // 0050 GETMBR R3 R1 K7 - 0x1C0C0717, // 0051 EQ R3 R3 K23 - 0x780E0002, // 0052 JMPF R3 #0056 - 0x8C0C0118, // 0053 GETMET R3 R0 K24 - 0x7C0C0200, // 0054 CALL R3 1 - 0x70020025, // 0055 JMP #007C - 0x880C0307, // 0056 GETMBR R3 R1 K7 - 0x1C0C0719, // 0057 EQ R3 R3 K25 - 0x780E0002, // 0058 JMPF R3 #005C - 0x8C0C011A, // 0059 GETMET R3 R0 K26 - 0x7C0C0200, // 005A CALL R3 1 - 0x7002001F, // 005B JMP #007C - 0x880C0307, // 005C GETMBR R3 R1 K7 - 0x1C0C071B, // 005D EQ R3 R3 K27 - 0x780E0002, // 005E JMPF R3 #0062 - 0x8C0C011C, // 005F GETMET R3 R0 K28 - 0x7C0C0200, // 0060 CALL R3 1 - 0x70020019, // 0061 JMP #007C - 0x880C0307, // 0062 GETMBR R3 R1 K7 - 0x1C0C071D, // 0063 EQ R3 R3 K29 - 0x780E0002, // 0064 JMPF R3 #0068 - 0x8C0C011E, // 0065 GETMET R3 R0 K30 - 0x7C0C0200, // 0066 CALL R3 1 - 0x70020013, // 0067 JMP #007C - 0x880C0307, // 0068 GETMBR R3 R1 K7 - 0x1C0C071F, // 0069 EQ R3 R3 K31 - 0x780E0002, // 006A JMPF R3 #006E - 0x8C0C0120, // 006B GETMET R3 R0 K32 - 0x7C0C0200, // 006C CALL R3 1 - 0x7002000D, // 006D JMP #007C - 0x880C0307, // 006E GETMBR R3 R1 K7 - 0x1C0C0721, // 006F EQ R3 R3 K33 - 0x780E0002, // 0070 JMPF R3 #0074 - 0x8C0C0122, // 0071 GETMET R3 R0 K34 - 0x7C0C0200, // 0072 CALL R3 1 - 0x70020007, // 0073 JMP #007C - 0x880C0307, // 0074 GETMBR R3 R1 K7 - 0x1C0C0723, // 0075 EQ R3 R3 K35 - 0x780E0002, // 0076 JMPF R3 #007A - 0x8C0C0124, // 0077 GETMET R3 R0 K36 - 0x7C0C0200, // 0078 CALL R3 1 - 0x70020001, // 0079 JMP #007C - 0x8C0C0110, // 007A GETMET R3 R0 K16 - 0x7C0C0200, // 007B CALL R3 1 - 0x70020021, // 007C JMP #009F - 0x880C0301, // 007D GETMBR R3 R1 K1 - 0xB8120400, // 007E GETNGBL R4 K2 - 0x88100903, // 007F GETMBR R4 R4 K3 - 0x8810090C, // 0080 GETMBR R4 R4 K12 - 0x1C0C0604, // 0081 EQ R3 R3 R4 - 0x780E0019, // 0082 JMPF R3 #009D - 0x880C0111, // 0083 GETMBR R3 R0 K17 - 0x740E0001, // 0084 JMPT R3 #0087 - 0x8C0C0112, // 0085 GETMET R3 R0 K18 - 0x7C0C0200, // 0086 CALL R3 1 - 0x880C0307, // 0087 GETMBR R3 R1 K7 - 0x1C0C0725, // 0088 EQ R3 R3 K37 - 0x780E000F, // 0089 JMPF R3 #009A - 0x8C0C0126, // 008A GETMET R3 R0 K38 - 0x7C0C0200, // 008B CALL R3 1 - 0x4C100000, // 008C LDNIL R4 - 0x200C0604, // 008D NE R3 R3 R4 - 0x780E000A, // 008E JMPF R3 #009A - 0x8C0C0126, // 008F GETMET R3 R0 K38 - 0x7C0C0200, // 0090 CALL R3 1 - 0x880C0701, // 0091 GETMBR R3 R3 K1 - 0xB8120400, // 0092 GETNGBL R4 K2 - 0x88100903, // 0093 GETMBR R4 R4 K3 - 0x88100927, // 0094 GETMBR R4 R4 K39 - 0x1C0C0604, // 0095 EQ R3 R3 R4 - 0x780E0002, // 0096 JMPF R3 #009A - 0x8C0C0128, // 0097 GETMET R3 R0 K40 - 0x7C0C0200, // 0098 CALL R3 1 - 0x70020001, // 0099 JMP #009C - 0x8C0C0129, // 009A GETMET R3 R0 K41 - 0x7C0C0200, // 009B CALL R3 1 - 0x70020001, // 009C JMP #009F - 0x8C0C0110, // 009D GETMET R3 R0 K16 - 0x7C0C0200, // 009E CALL R3 1 - 0x80000000, // 009F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_error_report -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(has_errors), - /* K1 */ be_nested_str_weak(No_X20compilation_X20errors), - /* K2 */ be_nested_str_weak(Compilation_X20errors_X3A_X0A), - /* K3 */ be_nested_str_weak(errors), - /* K4 */ be_nested_str_weak(_X20_X20), - /* K5 */ be_nested_str_weak(_X0A), - /* K6 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(get_error_report), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060000, // 0002 JMPT R1 #0004 - 0x80060200, // 0003 RET 1 K1 - 0x58040002, // 0004 LDCONST R1 K2 - 0x60080010, // 0005 GETGBL R2 G16 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020005, // 0008 EXBLK 0 #000F - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x00120803, // 000B ADD R4 K4 R3 - 0x00100905, // 000C ADD R4 R4 K5 - 0x00040204, // 000D ADD R1 R1 R4 - 0x7001FFF9, // 000E JMP #0009 - 0x58080006, // 000F LDCONST R2 K6 - 0xAC080200, // 0010 CATCH R2 1 0 - 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x80040200, // 0012 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: join_output -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_join_output, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(output), - /* K2 */ be_nested_str_weak(_X0A), - /* K3 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(join_output), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0xA8020004, // 0004 EXBLK 0 #000A - 0x5C0C0400, // 0005 MOVE R3 R2 - 0x7C0C0000, // 0006 CALL R3 0 - 0x00100702, // 0007 ADD R4 R3 K2 - 0x00040204, // 0008 ADD R1 R1 R4 - 0x7001FFFA, // 0009 JMP #0005 - 0x58080003, // 000A LDCONST R2 K3 - 0xAC080200, // 000B CATCH R2 1 0 - 0xB0080000, // 000C RAISE 2 R0 R0 - 0x80040200, // 000D RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: error -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_error, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(line), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(errors), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), - }), - be_str_weak(error), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080100, // 0005 GETMET R2 R0 K0 - 0x7C080200, // 0006 CALL R2 1 - 0x88080501, // 0007 GETMBR R2 R2 K1 - 0x70020000, // 0008 JMP #000A - 0x58080002, // 0009 LDCONST R2 K2 - 0x880C0103, // 000A GETMBR R3 R0 K3 - 0x8C0C0704, // 000B GETMET R3 R3 K4 - 0x60140018, // 000C GETGBL R5 G24 - 0x58180005, // 000D LDCONST R6 K5 - 0x5C1C0400, // 000E MOVE R7 R2 - 0x5C200200, // 000F MOVE R8 R1 - 0x7C140600, // 0010 CALL R5 3 - 0x7C0C0400, // 0011 CALL R3 2 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_assignment_generic -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic, /* name */ - be_nested_proto( - 17, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_identifier), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(DOT), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(symbol_table), - /* K8 */ be_nested_str_weak(contains), - /* K9 */ be_nested_str_weak(string), - /* K10 */ be_nested_str_weak(_validate_single_parameter), - /* K11 */ be_nested_str_weak(error), - /* K12 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20assignments_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), - /* K13 */ be_nested_str_weak(expect_assign), - /* K14 */ be_nested_str_weak(process_value), - /* K15 */ be_nested_str_weak(property), - /* K16 */ be_nested_str_weak(collect_inline_comment), - /* K17 */ be_nested_str_weak(resolve_symbol_reference), - /* K18 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s_X2E_X25s_X20_X3D_X20_X25s_X20end), - /* K19 */ be_nested_str_weak(add), - /* K20 */ be_nested_str_weak(_X25s_X25s_X2Epush_X28animation_X2Ecreate_assign_step_X28_X25s_X29_X29_X25s), - /* K21 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), - /* K22 */ be_nested_str_weak(skip_statement), - }), - be_str_weak(process_sequence_assignment_generic), - &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x8C100101, // 0002 GETMET R4 R0 K1 - 0x7C100200, // 0003 CALL R4 1 - 0x4C140000, // 0004 LDNIL R5 - 0x20100805, // 0005 NE R4 R4 R5 - 0x78120041, // 0006 JMPF R4 #0049 - 0x8C100101, // 0007 GETMET R4 R0 K1 - 0x7C100200, // 0008 CALL R4 1 - 0x88100902, // 0009 GETMBR R4 R4 K2 - 0xB8160600, // 000A GETNGBL R5 K3 - 0x88140B04, // 000B GETMBR R5 R5 K4 - 0x88140B05, // 000C GETMBR R5 R5 K5 - 0x1C100805, // 000D EQ R4 R4 R5 - 0x78120039, // 000E JMPF R4 #0049 - 0x8C100106, // 000F GETMET R4 R0 K6 - 0x7C100200, // 0010 CALL R4 1 - 0x8C100100, // 0011 GETMET R4 R0 K0 - 0x7C100200, // 0012 CALL R4 1 - 0x88140107, // 0013 GETMBR R5 R0 K7 - 0x8C140B08, // 0014 GETMET R5 R5 K8 - 0x5C1C0600, // 0015 MOVE R7 R3 - 0x7C140400, // 0016 CALL R5 2 - 0x78160016, // 0017 JMPF R5 #002F - 0x88140107, // 0018 GETMBR R5 R0 K7 - 0x94140A03, // 0019 GETIDX R5 R5 R3 - 0x60180004, // 001A GETGBL R6 G4 - 0x5C1C0A00, // 001B MOVE R7 R5 - 0x7C180200, // 001C CALL R6 1 - 0x20180D09, // 001D NE R6 R6 K9 - 0x781A0008, // 001E JMPF R6 #0028 - 0x60180005, // 001F GETGBL R6 G5 - 0x5C1C0A00, // 0020 MOVE R7 R5 - 0x7C180200, // 0021 CALL R6 1 - 0x8C1C010A, // 0022 GETMET R7 R0 K10 - 0x5C240C00, // 0023 MOVE R9 R6 - 0x5C280800, // 0024 MOVE R10 R4 - 0x5C2C0A00, // 0025 MOVE R11 R5 - 0x7C1C0800, // 0026 CALL R7 4 - 0x70020006, // 0027 JMP #002F - 0x8C18010B, // 0028 GETMET R6 R0 K11 - 0x60200018, // 0029 GETGBL R8 G24 - 0x5824000C, // 002A LDCONST R9 K12 - 0x5C280600, // 002B MOVE R10 R3 - 0x7C200400, // 002C CALL R8 2 - 0x7C180400, // 002D CALL R6 2 - 0x80000C00, // 002E RET 0 - 0x8C14010D, // 002F GETMET R5 R0 K13 - 0x7C140200, // 0030 CALL R5 1 - 0x8C14010E, // 0031 GETMET R5 R0 K14 - 0x581C000F, // 0032 LDCONST R7 K15 - 0x7C140400, // 0033 CALL R5 2 - 0x8C180110, // 0034 GETMET R6 R0 K16 - 0x7C180200, // 0035 CALL R6 1 - 0x8C1C0111, // 0036 GETMET R7 R0 K17 - 0x5C240600, // 0037 MOVE R9 R3 - 0x7C1C0400, // 0038 CALL R7 2 - 0x60200018, // 0039 GETGBL R8 G24 - 0x58240012, // 003A LDCONST R9 K18 - 0x5C280E00, // 003B MOVE R10 R7 - 0x5C2C0800, // 003C MOVE R11 R4 - 0x5C300A00, // 003D MOVE R12 R5 - 0x7C200800, // 003E CALL R8 4 - 0x8C240113, // 003F GETMET R9 R0 K19 - 0x602C0018, // 0040 GETGBL R11 G24 - 0x58300014, // 0041 LDCONST R12 K20 - 0x5C340200, // 0042 MOVE R13 R1 - 0x5C380400, // 0043 MOVE R14 R2 - 0x5C3C1000, // 0044 MOVE R15 R8 - 0x5C400C00, // 0045 MOVE R16 R6 - 0x7C2C0A00, // 0046 CALL R11 5 - 0x7C240400, // 0047 CALL R9 2 - 0x70020007, // 0048 JMP #0051 - 0x8C10010B, // 0049 GETMET R4 R0 K11 - 0x60180018, // 004A GETGBL R6 G24 - 0x581C0015, // 004B LDCONST R7 K21 - 0x5C200600, // 004C MOVE R8 R3 - 0x7C180400, // 004D CALL R6 2 - 0x7C100400, // 004E CALL R4 2 - 0x8C100116, // 004F GETMET R4 R0 K22 - 0x7C100200, // 0050 CALL R4 1 - 0x80000000, // 0051 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _generate_anonymous_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 2), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(push), - /* K1 */ be_nested_str_weak(_X20_X20provider_X2E_X25s_X20_X3D_X20_X25s_X25s), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x60140018, // 0002 GETGBL R5 G24 - 0x58180001, // 0003 LDCONST R6 K1 - 0x5C1C0000, // 0004 MOVE R7 R0 - 0x5C200200, // 0005 MOVE R8 R1 - 0x5C240400, // 0006 MOVE R9 R2 - 0x7C140800, // 0007 CALL R5 4 - 0x7C0C0400, // 0008 CALL R3 2 - 0x80000000, // 0009 RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(push), - /* K1 */ be_nested_str_weak(_X28def_X20_X28engine_X29), - /* K2 */ be_nested_str_weak(_X20_X20var_X20provider_X20_X3D_X20animation_X2E_X25s_X28engine_X29), - /* K3 */ be_nested_str_weak(expect_left_paren), - /* K4 */ be_nested_str_weak(_process_parameters_core), - /* K5 */ be_nested_str_weak(generic), - /* K6 */ be_nested_str_weak(expect_right_paren), - /* K7 */ be_nested_str_weak(_X20_X20return_X20provider), - /* K8 */ be_nested_str_weak(end_X29_X28engine_X29), - /* K9 */ be_nested_str_weak(), - /* K10 */ be_const_int(0), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(_X0A), - /* K13 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(_generate_anonymous_function_call), - &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x8C0C0500, // 0002 GETMET R3 R2 K0 - 0x58140001, // 0003 LDCONST R5 K1 - 0x7C0C0400, // 0004 CALL R3 2 - 0x8C0C0500, // 0005 GETMET R3 R2 K0 - 0x60140018, // 0006 GETGBL R5 G24 - 0x58180002, // 0007 LDCONST R6 K2 - 0x5C1C0200, // 0008 MOVE R7 R1 - 0x7C140400, // 0009 CALL R5 2 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x840C0000, // 000D CLOSURE R3 P0 - 0x8C100104, // 000E GETMET R4 R0 K4 - 0x5C180200, // 000F MOVE R6 R1 - 0x581C0005, // 0010 LDCONST R7 K5 - 0x5C200600, // 0011 MOVE R8 R3 - 0x7C100800, // 0012 CALL R4 4 - 0x8C100106, // 0013 GETMET R4 R0 K6 - 0x7C100200, // 0014 CALL R4 1 - 0x8C100500, // 0015 GETMET R4 R2 K0 - 0x58180007, // 0016 LDCONST R6 K7 - 0x7C100400, // 0017 CALL R4 2 - 0x8C100500, // 0018 GETMET R4 R2 K0 - 0x58180008, // 0019 LDCONST R6 K8 - 0x7C100400, // 001A CALL R4 2 - 0x58100009, // 001B LDCONST R4 K9 - 0x60140010, // 001C GETGBL R5 G16 - 0x6018000C, // 001D GETGBL R6 G12 - 0x5C1C0400, // 001E MOVE R7 R2 - 0x7C180200, // 001F CALL R6 1 - 0x04180D0B, // 0020 SUB R6 R6 K11 - 0x401A1406, // 0021 CONNECT R6 K10 R6 - 0x7C140200, // 0022 CALL R5 1 - 0xA8020007, // 0023 EXBLK 0 #002C - 0x5C180A00, // 0024 MOVE R6 R5 - 0x7C180000, // 0025 CALL R6 0 - 0x241C0D0A, // 0026 GT R7 R6 K10 - 0x781E0000, // 0027 JMPF R7 #0029 - 0x0010090C, // 0028 ADD R4 R4 K12 - 0x941C0406, // 0029 GETIDX R7 R2 R6 - 0x00100807, // 002A ADD R4 R4 R7 - 0x7001FFF7, // 002B JMP #0024 - 0x5814000D, // 002C LDCONST R5 K13 - 0xAC140200, // 002D CATCH R5 1 0 - 0xB0080000, // 002E RAISE 2 R0 R0 - 0xA0000000, // 002F CLOSE R0 - 0x80040800, // 0030 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_computation_closure_from_string -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(transform_expression_for_closure), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(_X20_X20), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(replace), - /* K6 */ be_nested_str_weak(_X20), - /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), - /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), - }), - be_str_weak(create_computation_closure_from_string), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0101, // 0001 GETMET R3 R0 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C100502, // 0004 GETMET R4 R2 K2 - 0x5C180600, // 0005 MOVE R6 R3 - 0x581C0003, // 0006 LDCONST R7 K3 - 0x7C100600, // 0007 CALL R4 3 - 0x28100904, // 0008 GE R4 R4 K4 - 0x78120006, // 0009 JMPF R4 #0011 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x5C180600, // 000B MOVE R6 R3 - 0x581C0003, // 000C LDCONST R7 K3 - 0x58200006, // 000D LDCONST R8 K6 - 0x7C100800, // 000E CALL R4 4 - 0x5C0C0800, // 000F MOVE R3 R4 - 0x7001FFF2, // 0010 JMP #0004 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140007, // 0012 LDCONST R5 K7 - 0x5C180600, // 0013 MOVE R6 R3 - 0x7C100400, // 0014 CALL R4 2 - 0x60140018, // 0015 GETGBL R5 G24 - 0x58180008, // 0016 LDCONST R6 K8 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x7C140400, // 0018 CALL R5 2 - 0x80040A00, // 0019 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_unary_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20value), - /* K3 */ be_nested_str_weak(nil), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(process_unary_expression), - /* K10 */ be_nested_str_weak(_X28_X2D_X25s_X29), - /* K11 */ be_nested_str_weak(PLUS), - /* K12 */ be_nested_str_weak(process_primary_expression), - }), - be_str_weak(process_unary_expression), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x7C100200, // 0001 CALL R4 1 - 0x4C140000, // 0002 LDNIL R5 - 0x1C140805, // 0003 EQ R5 R4 R5 - 0x78160003, // 0004 JMPF R5 #0009 - 0x8C140101, // 0005 GETMET R5 R0 K1 - 0x581C0002, // 0006 LDCONST R7 K2 - 0x7C140400, // 0007 CALL R5 2 - 0x80060600, // 0008 RET 1 K3 - 0x88140904, // 0009 GETMBR R5 R4 K4 - 0xB81A0A00, // 000A GETNGBL R6 K5 - 0x88180D06, // 000B GETMBR R6 R6 K6 - 0x88180D07, // 000C GETMBR R6 R6 K7 - 0x1C140A06, // 000D EQ R5 R5 R6 - 0x7816000B, // 000E JMPF R5 #001B - 0x8C140108, // 000F GETMET R5 R0 K8 - 0x7C140200, // 0010 CALL R5 1 - 0x8C140109, // 0011 GETMET R5 R0 K9 - 0x5C1C0200, // 0012 MOVE R7 R1 - 0x50200000, // 0013 LDBOOL R8 0 0 - 0x5C240600, // 0014 MOVE R9 R3 - 0x7C140800, // 0015 CALL R5 4 - 0x60180018, // 0016 GETGBL R6 G24 - 0x581C000A, // 0017 LDCONST R7 K10 - 0x5C200A00, // 0018 MOVE R8 R5 - 0x7C180400, // 0019 CALL R6 2 - 0x80040C00, // 001A RET 1 R6 - 0x88140904, // 001B GETMBR R5 R4 K4 - 0xB81A0A00, // 001C GETNGBL R6 K5 - 0x88180D06, // 001D GETMBR R6 R6 K6 - 0x88180D0B, // 001E GETMBR R6 R6 K11 - 0x1C140A06, // 001F EQ R5 R5 R6 - 0x78160007, // 0020 JMPF R5 #0029 - 0x8C140108, // 0021 GETMET R5 R0 K8 - 0x7C140200, // 0022 CALL R5 1 - 0x8C140109, // 0023 GETMET R5 R0 K9 - 0x5C1C0200, // 0024 MOVE R7 R1 - 0x50200000, // 0025 LDBOOL R8 0 0 - 0x5C240600, // 0026 MOVE R9 R3 - 0x7C140800, // 0027 CALL R5 4 - 0x80040A00, // 0028 RET 1 R5 - 0x8C14010C, // 0029 GETMET R5 R0 K12 - 0x5C1C0200, // 002A MOVE R7 R1 - 0x5C200400, // 002B MOVE R8 R2 - 0x5C240600, // 002C MOVE R9 R3 - 0x7C140800, // 002D CALL R5 4 - 0x80040A00, // 002E RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_primary_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name */ - be_nested_proto( - 14, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[62]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20value), - /* K3 */ be_nested_str_weak(nil), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(LEFT_PAREN), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(process_additive_expression), - /* K10 */ be_nested_str_weak(expect_right_paren), - /* K11 */ be_nested_str_weak(_X28_X25s_X29), - /* K12 */ be_nested_str_weak(KEYWORD), - /* K13 */ be_nested_str_weak(IDENTIFIER), - /* K14 */ be_nested_str_weak(peek), - /* K15 */ be_nested_str_weak(value), - /* K16 */ be_nested_str_weak(is_math_method), - /* K17 */ be_nested_str_weak(process_function_arguments), - /* K18 */ be_nested_str_weak(animation_X2E_math_X2E_X25s_X28_X25s_X29), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(process_log_call), - /* K21 */ be_nested_str_weak(expression), - /* K22 */ be_nested_str_weak(), - /* K23 */ be_nested_str_weak(template_definitions), - /* K24 */ be_nested_str_weak(contains), - /* K25 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K26 */ be_nested_str_weak(engine), - /* K27 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), - /* K28 */ be_nested_str_weak(Function_X20_X27_X25s_X27_X20not_X20supported_X20in_X20expression_X20context), - /* K29 */ be_nested_str_weak(_is_simple_function_call), - /* K30 */ be_nested_str_weak(process_function_call), - /* K31 */ be_nested_str_weak(argument), - /* K32 */ be_nested_str_weak(property), - /* K33 */ be_nested_str_weak(variable), - /* K34 */ be_nested_str_weak(process_nested_function_call), - /* K35 */ be_nested_str_weak(COLOR), - /* K36 */ be_nested_str_weak(convert_color), - /* K37 */ be_nested_str_weak(TIME), - /* K38 */ be_nested_str_weak(process_time_value), - /* K39 */ be_nested_str_weak(PERCENTAGE), - /* K40 */ be_nested_str_weak(process_percentage_value), - /* K41 */ be_nested_str_weak(NUMBER), - /* K42 */ be_nested_str_weak(STRING), - /* K43 */ be_nested_str_weak(_X22_X25s_X22), - /* K44 */ be_nested_str_weak(LEFT_BRACKET), - /* K45 */ be_nested_str_weak(process_array_literal), - /* K46 */ be_nested_str_weak(DOT), - /* K47 */ be_nested_str_weak(expect_identifier), - /* K48 */ be_nested_str_weak(user), - /* K49 */ be_nested_str_weak(_process_user_function_call), - /* K50 */ be_nested_str_weak(symbol_table), - /* K51 */ be_nested_str_weak(string), - /* K52 */ be_nested_str_weak(_validate_single_parameter), - /* K53 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20references_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), - /* K54 */ be_nested_str_weak(resolve_symbol_reference), - /* K55 */ be_nested_str_weak(repeat_count), - /* K56 */ be_nested_str_weak(_X25s_X2E_X25s), - /* K57 */ be_nested_str_weak(animation_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), - /* K58 */ be_nested_str_weak(true), - /* K59 */ be_nested_str_weak(false), - /* K60 */ be_nested_str_weak(animation_X2E_X25s), - /* K61 */ be_nested_str_weak(Unexpected_X20value_X3A_X20_X25s), - }), - be_str_weak(process_primary_expression), - &be_const_str_solidified, - ( &(const binstruction[328]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x7C100200, // 0001 CALL R4 1 - 0x4C140000, // 0002 LDNIL R5 - 0x1C140805, // 0003 EQ R5 R4 R5 - 0x78160003, // 0004 JMPF R5 #0009 - 0x8C140101, // 0005 GETMET R5 R0 K1 - 0x581C0002, // 0006 LDCONST R7 K2 - 0x7C140400, // 0007 CALL R5 2 - 0x80060600, // 0008 RET 1 K3 - 0x88140904, // 0009 GETMBR R5 R4 K4 - 0xB81A0A00, // 000A GETNGBL R6 K5 - 0x88180D06, // 000B GETMBR R6 R6 K6 - 0x88180D07, // 000C GETMBR R6 R6 K7 - 0x1C140A06, // 000D EQ R5 R5 R6 - 0x7816000D, // 000E JMPF R5 #001D - 0x8C140108, // 000F GETMET R5 R0 K8 - 0x7C140200, // 0010 CALL R5 1 - 0x8C140109, // 0011 GETMET R5 R0 K9 - 0x5C1C0200, // 0012 MOVE R7 R1 - 0x50200000, // 0013 LDBOOL R8 0 0 - 0x5C240600, // 0014 MOVE R9 R3 - 0x7C140800, // 0015 CALL R5 4 - 0x8C18010A, // 0016 GETMET R6 R0 K10 - 0x7C180200, // 0017 CALL R6 1 - 0x60180018, // 0018 GETGBL R6 G24 - 0x581C000B, // 0019 LDCONST R7 K11 - 0x5C200A00, // 001A MOVE R8 R5 - 0x7C180400, // 001B CALL R6 2 - 0x80040C00, // 001C RET 1 R6 - 0x88140904, // 001D GETMBR R5 R4 K4 - 0xB81A0A00, // 001E GETNGBL R6 K5 - 0x88180D06, // 001F GETMBR R6 R6 K6 - 0x88180D0C, // 0020 GETMBR R6 R6 K12 - 0x1C140A06, // 0021 EQ R5 R5 R6 - 0x74160005, // 0022 JMPT R5 #0029 - 0x88140904, // 0023 GETMBR R5 R4 K4 - 0xB81A0A00, // 0024 GETNGBL R6 K5 - 0x88180D06, // 0025 GETMBR R6 R6 K6 - 0x88180D0D, // 0026 GETMBR R6 R6 K13 - 0x1C140A06, // 0027 EQ R5 R5 R6 - 0x7816005D, // 0028 JMPF R5 #0087 - 0x8C14010E, // 0029 GETMET R5 R0 K14 - 0x7C140200, // 002A CALL R5 1 - 0x4C180000, // 002B LDNIL R6 - 0x20140A06, // 002C NE R5 R5 R6 - 0x78160058, // 002D JMPF R5 #0087 - 0x8C14010E, // 002E GETMET R5 R0 K14 - 0x7C140200, // 002F CALL R5 1 - 0x88140B04, // 0030 GETMBR R5 R5 K4 - 0xB81A0A00, // 0031 GETNGBL R6 K5 - 0x88180D06, // 0032 GETMBR R6 R6 K6 - 0x88180D07, // 0033 GETMBR R6 R6 K7 - 0x1C140A06, // 0034 EQ R5 R5 R6 - 0x78160050, // 0035 JMPF R5 #0087 - 0x8814090F, // 0036 GETMBR R5 R4 K15 - 0x780E0037, // 0037 JMPF R3 #0070 - 0x8C180108, // 0038 GETMET R6 R0 K8 - 0x7C180200, // 0039 CALL R6 1 - 0x8C180110, // 003A GETMET R6 R0 K16 - 0x5C200A00, // 003B MOVE R8 R5 - 0x7C180400, // 003C CALL R6 2 - 0x781A0008, // 003D JMPF R6 #0047 - 0x8C180111, // 003E GETMET R6 R0 K17 - 0x50200200, // 003F LDBOOL R8 1 0 - 0x7C180400, // 0040 CALL R6 2 - 0x601C0018, // 0041 GETGBL R7 G24 - 0x58200012, // 0042 LDCONST R8 K18 - 0x5C240A00, // 0043 MOVE R9 R5 - 0x5C280C00, // 0044 MOVE R10 R6 - 0x7C1C0600, // 0045 CALL R7 3 - 0x80040E00, // 0046 RET 1 R7 - 0x1C180B13, // 0047 EQ R6 R5 K19 - 0x781A0008, // 0048 JMPF R6 #0052 - 0x8C180111, // 0049 GETMET R6 R0 K17 - 0x50200200, // 004A LDBOOL R8 1 0 - 0x7C180400, // 004B CALL R6 2 - 0x8C1C0114, // 004C GETMET R7 R0 K20 - 0x5C240C00, // 004D MOVE R9 R6 - 0x58280015, // 004E LDCONST R10 K21 - 0x582C0016, // 004F LDCONST R11 K22 - 0x7C1C0800, // 0050 CALL R7 4 - 0x80040E00, // 0051 RET 1 R7 - 0x88180117, // 0052 GETMBR R6 R0 K23 - 0x8C180D18, // 0053 GETMET R6 R6 K24 - 0x5C200A00, // 0054 MOVE R8 R5 - 0x7C180400, // 0055 CALL R6 2 - 0x781A0010, // 0056 JMPF R6 #0068 - 0x8C180111, // 0057 GETMET R6 R0 K17 - 0x50200200, // 0058 LDBOOL R8 1 0 - 0x7C180400, // 0059 CALL R6 2 - 0x201C0D16, // 005A NE R7 R6 K22 - 0x781E0004, // 005B JMPF R7 #0061 - 0x601C0018, // 005C GETGBL R7 G24 - 0x58200019, // 005D LDCONST R8 K25 - 0x5C240C00, // 005E MOVE R9 R6 - 0x7C1C0400, // 005F CALL R7 2 - 0x70020000, // 0060 JMP #0062 - 0x581C001A, // 0061 LDCONST R7 K26 - 0x60200018, // 0062 GETGBL R8 G24 - 0x5824001B, // 0063 LDCONST R9 K27 - 0x5C280A00, // 0064 MOVE R10 R5 - 0x5C2C0E00, // 0065 MOVE R11 R7 - 0x7C200600, // 0066 CALL R8 3 - 0x80041000, // 0067 RET 1 R8 - 0x8C180101, // 0068 GETMET R6 R0 K1 - 0x60200018, // 0069 GETGBL R8 G24 - 0x5824001C, // 006A LDCONST R9 K28 - 0x5C280A00, // 006B MOVE R10 R5 - 0x7C200400, // 006C CALL R8 2 - 0x7C180400, // 006D CALL R6 2 - 0x80060600, // 006E RET 1 K3 - 0x70020016, // 006F JMP #0087 - 0x8C18011D, // 0070 GETMET R6 R0 K29 - 0x5C200A00, // 0071 MOVE R8 R5 - 0x7C180400, // 0072 CALL R6 2 - 0x781A0004, // 0073 JMPF R6 #0079 - 0x8C18011E, // 0074 GETMET R6 R0 K30 - 0x5C200200, // 0075 MOVE R8 R1 - 0x7C180400, // 0076 CALL R6 2 - 0x80040C00, // 0077 RET 1 R6 - 0x7002000D, // 0078 JMP #0087 - 0x1C18031F, // 0079 EQ R6 R1 K31 - 0x741A0003, // 007A JMPT R6 #007F - 0x1C180320, // 007B EQ R6 R1 K32 - 0x741A0001, // 007C JMPT R6 #007F - 0x1C180321, // 007D EQ R6 R1 K33 - 0x781A0003, // 007E JMPF R6 #0083 - 0x8C180122, // 007F GETMET R6 R0 K34 - 0x7C180200, // 0080 CALL R6 1 - 0x80040C00, // 0081 RET 1 R6 - 0x70020003, // 0082 JMP #0087 - 0x8C18011E, // 0083 GETMET R6 R0 K30 - 0x5C200200, // 0084 MOVE R8 R1 - 0x7C180400, // 0085 CALL R6 2 - 0x80040C00, // 0086 RET 1 R6 - 0x88140904, // 0087 GETMBR R5 R4 K4 - 0xB81A0A00, // 0088 GETNGBL R6 K5 - 0x88180D06, // 0089 GETMBR R6 R6 K6 - 0x88180D23, // 008A GETMBR R6 R6 K35 - 0x1C140A06, // 008B EQ R5 R5 R6 - 0x78160005, // 008C JMPF R5 #0093 - 0x8C140108, // 008D GETMET R5 R0 K8 - 0x7C140200, // 008E CALL R5 1 - 0x8C140124, // 008F GETMET R5 R0 K36 - 0x881C090F, // 0090 GETMBR R7 R4 K15 - 0x7C140400, // 0091 CALL R5 2 - 0x80040A00, // 0092 RET 1 R5 - 0x88140904, // 0093 GETMBR R5 R4 K4 - 0xB81A0A00, // 0094 GETNGBL R6 K5 - 0x88180D06, // 0095 GETMBR R6 R6 K6 - 0x88180D25, // 0096 GETMBR R6 R6 K37 - 0x1C140A06, // 0097 EQ R5 R5 R6 - 0x78160004, // 0098 JMPF R5 #009E - 0x60140008, // 0099 GETGBL R5 G8 - 0x8C180126, // 009A GETMET R6 R0 K38 - 0x7C180200, // 009B CALL R6 1 - 0x7C140200, // 009C CALL R5 1 - 0x80040A00, // 009D RET 1 R5 - 0x88140904, // 009E GETMBR R5 R4 K4 - 0xB81A0A00, // 009F GETNGBL R6 K5 - 0x88180D06, // 00A0 GETMBR R6 R6 K6 - 0x88180D27, // 00A1 GETMBR R6 R6 K39 - 0x1C140A06, // 00A2 EQ R5 R5 R6 - 0x78160004, // 00A3 JMPF R5 #00A9 - 0x60140008, // 00A4 GETGBL R5 G8 - 0x8C180128, // 00A5 GETMET R6 R0 K40 - 0x7C180200, // 00A6 CALL R6 1 - 0x7C140200, // 00A7 CALL R5 1 - 0x80040A00, // 00A8 RET 1 R5 - 0x88140904, // 00A9 GETMBR R5 R4 K4 - 0xB81A0A00, // 00AA GETNGBL R6 K5 - 0x88180D06, // 00AB GETMBR R6 R6 K6 - 0x88180D29, // 00AC GETMBR R6 R6 K41 - 0x1C140A06, // 00AD EQ R5 R5 R6 - 0x78160003, // 00AE JMPF R5 #00B3 - 0x8814090F, // 00AF GETMBR R5 R4 K15 - 0x8C180108, // 00B0 GETMET R6 R0 K8 - 0x7C180200, // 00B1 CALL R6 1 - 0x80040A00, // 00B2 RET 1 R5 - 0x88140904, // 00B3 GETMBR R5 R4 K4 - 0xB81A0A00, // 00B4 GETNGBL R6 K5 - 0x88180D06, // 00B5 GETMBR R6 R6 K6 - 0x88180D2A, // 00B6 GETMBR R6 R6 K42 - 0x1C140A06, // 00B7 EQ R5 R5 R6 - 0x78160007, // 00B8 JMPF R5 #00C1 - 0x8814090F, // 00B9 GETMBR R5 R4 K15 - 0x8C180108, // 00BA GETMET R6 R0 K8 - 0x7C180200, // 00BB CALL R6 1 - 0x60180018, // 00BC GETGBL R6 G24 - 0x581C002B, // 00BD LDCONST R7 K43 - 0x5C200A00, // 00BE MOVE R8 R5 - 0x7C180400, // 00BF CALL R6 2 - 0x80040C00, // 00C0 RET 1 R6 - 0x88140904, // 00C1 GETMBR R5 R4 K4 - 0xB81A0A00, // 00C2 GETNGBL R6 K5 - 0x88180D06, // 00C3 GETMBR R6 R6 K6 - 0x88180D2C, // 00C4 GETMBR R6 R6 K44 - 0x1C140A06, // 00C5 EQ R5 R5 R6 - 0x78160004, // 00C6 JMPF R5 #00CC - 0x5C140600, // 00C7 MOVE R5 R3 - 0x74160002, // 00C8 JMPT R5 #00CC - 0x8C14012D, // 00C9 GETMET R5 R0 K45 - 0x7C140200, // 00CA CALL R5 1 - 0x80040A00, // 00CB RET 1 R5 - 0x88140904, // 00CC GETMBR R5 R4 K4 - 0xB81A0A00, // 00CD GETNGBL R6 K5 - 0x88180D06, // 00CE GETMBR R6 R6 K6 - 0x88180D0D, // 00CF GETMBR R6 R6 K13 - 0x1C140A06, // 00D0 EQ R5 R5 R6 - 0x7816004E, // 00D1 JMPF R5 #0121 - 0x8814090F, // 00D2 GETMBR R5 R4 K15 - 0x8C180108, // 00D3 GETMET R6 R0 K8 - 0x7C180200, // 00D4 CALL R6 1 - 0x8C180100, // 00D5 GETMET R6 R0 K0 - 0x7C180200, // 00D6 CALL R6 1 - 0x4C1C0000, // 00D7 LDNIL R7 - 0x20180C07, // 00D8 NE R6 R6 R7 - 0x781A0042, // 00D9 JMPF R6 #011D - 0x8C180100, // 00DA GETMET R6 R0 K0 - 0x7C180200, // 00DB CALL R6 1 - 0x88180D04, // 00DC GETMBR R6 R6 K4 - 0xB81E0A00, // 00DD GETNGBL R7 K5 - 0x881C0F06, // 00DE GETMBR R7 R7 K6 - 0x881C0F2E, // 00DF GETMBR R7 R7 K46 - 0x1C180C07, // 00E0 EQ R6 R6 R7 - 0x781A003A, // 00E1 JMPF R6 #011D - 0x8C180108, // 00E2 GETMET R6 R0 K8 - 0x7C180200, // 00E3 CALL R6 1 - 0x8C18012F, // 00E4 GETMET R6 R0 K47 - 0x7C180200, // 00E5 CALL R6 1 - 0x1C1C0B30, // 00E6 EQ R7 R5 K48 - 0x781E0003, // 00E7 JMPF R7 #00EC - 0x8C1C0131, // 00E8 GETMET R7 R0 K49 - 0x5C240C00, // 00E9 MOVE R9 R6 - 0x7C1C0400, // 00EA CALL R7 2 - 0x80040E00, // 00EB RET 1 R7 - 0x5C1C0600, // 00EC MOVE R7 R3 - 0x741E001B, // 00ED JMPT R7 #010A - 0x881C0132, // 00EE GETMBR R7 R0 K50 - 0x8C1C0F18, // 00EF GETMET R7 R7 K24 - 0x5C240A00, // 00F0 MOVE R9 R5 - 0x7C1C0400, // 00F1 CALL R7 2 - 0x781E0016, // 00F2 JMPF R7 #010A - 0x881C0132, // 00F3 GETMBR R7 R0 K50 - 0x941C0E05, // 00F4 GETIDX R7 R7 R5 - 0x60200004, // 00F5 GETGBL R8 G4 - 0x5C240E00, // 00F6 MOVE R9 R7 - 0x7C200200, // 00F7 CALL R8 1 - 0x20201133, // 00F8 NE R8 R8 K51 - 0x78220008, // 00F9 JMPF R8 #0103 - 0x60200005, // 00FA GETGBL R8 G5 - 0x5C240E00, // 00FB MOVE R9 R7 - 0x7C200200, // 00FC CALL R8 1 - 0x8C240134, // 00FD GETMET R9 R0 K52 - 0x5C2C1000, // 00FE MOVE R11 R8 - 0x5C300C00, // 00FF MOVE R12 R6 - 0x5C340E00, // 0100 MOVE R13 R7 - 0x7C240800, // 0101 CALL R9 4 - 0x70020006, // 0102 JMP #010A - 0x8C200101, // 0103 GETMET R8 R0 K1 - 0x60280018, // 0104 GETGBL R10 G24 - 0x582C0035, // 0105 LDCONST R11 K53 - 0x5C300A00, // 0106 MOVE R12 R5 - 0x7C280400, // 0107 CALL R10 2 - 0x7C200400, // 0108 CALL R8 2 - 0x80060600, // 0109 RET 1 K3 - 0x8C1C0136, // 010A GETMET R7 R0 K54 - 0x5C240A00, // 010B MOVE R9 R5 - 0x7C1C0400, // 010C CALL R7 2 - 0x740E0001, // 010D JMPT R3 #0110 - 0x1C200337, // 010E EQ R8 R1 K55 - 0x78220006, // 010F JMPF R8 #0117 - 0x60200018, // 0110 GETGBL R8 G24 - 0x58240038, // 0111 LDCONST R9 K56 - 0x5C280E00, // 0112 MOVE R10 R7 - 0x5C2C0C00, // 0113 MOVE R11 R6 - 0x7C200600, // 0114 CALL R8 3 - 0x80041000, // 0115 RET 1 R8 - 0x70020005, // 0116 JMP #011D - 0x60200018, // 0117 GETGBL R8 G24 - 0x58240039, // 0118 LDCONST R9 K57 - 0x5C280E00, // 0119 MOVE R10 R7 - 0x5C2C0C00, // 011A MOVE R11 R6 - 0x7C200600, // 011B CALL R8 3 - 0x80041000, // 011C RET 1 R8 - 0x8C180136, // 011D GETMET R6 R0 K54 - 0x5C200A00, // 011E MOVE R8 R5 - 0x7C180400, // 011F CALL R6 2 - 0x80040C00, // 0120 RET 1 R6 - 0x88140904, // 0121 GETMBR R5 R4 K4 - 0xB81A0A00, // 0122 GETNGBL R6 K5 - 0x88180D06, // 0123 GETMBR R6 R6 K6 - 0x88180D0C, // 0124 GETMBR R6 R6 K12 - 0x1C140A06, // 0125 EQ R5 R5 R6 - 0x78160009, // 0126 JMPF R5 #0131 - 0x8814090F, // 0127 GETMBR R5 R4 K15 - 0x1C140B3A, // 0128 EQ R5 R5 K58 - 0x74160002, // 0129 JMPT R5 #012D - 0x8814090F, // 012A GETMBR R5 R4 K15 - 0x1C140B3B, // 012B EQ R5 R5 K59 - 0x78160003, // 012C JMPF R5 #0131 - 0x8814090F, // 012D GETMBR R5 R4 K15 - 0x8C180108, // 012E GETMET R6 R0 K8 - 0x7C180200, // 012F CALL R6 1 - 0x80040A00, // 0130 RET 1 R5 - 0x88140904, // 0131 GETMBR R5 R4 K4 - 0xB81A0A00, // 0132 GETNGBL R6 K5 - 0x88180D06, // 0133 GETMBR R6 R6 K6 - 0x88180D0C, // 0134 GETMBR R6 R6 K12 - 0x1C140A06, // 0135 EQ R5 R5 R6 - 0x78160007, // 0136 JMPF R5 #013F - 0x8814090F, // 0137 GETMBR R5 R4 K15 - 0x8C180108, // 0138 GETMET R6 R0 K8 - 0x7C180200, // 0139 CALL R6 1 - 0x60180018, // 013A GETGBL R6 G24 - 0x581C003C, // 013B LDCONST R7 K60 - 0x5C200A00, // 013C MOVE R8 R5 - 0x7C180400, // 013D CALL R6 2 - 0x80040C00, // 013E RET 1 R6 - 0x8C140101, // 013F GETMET R5 R0 K1 - 0x601C0018, // 0140 GETGBL R7 G24 - 0x5820003D, // 0141 LDCONST R8 K61 - 0x8824090F, // 0142 GETMBR R9 R4 K15 - 0x7C1C0400, // 0143 CALL R7 2 - 0x7C140400, // 0144 CALL R5 2 - 0x8C140108, // 0145 GETMET R5 R0 K8 - 0x7C140200, // 0146 CALL R5 1 - 0x80060600, // 0147 RET 1 K3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_dot -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_dot, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(DOT), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X2E_X27), - }), - be_str_weak(expect_dot), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_identifier_char -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(a), - /* K1 */ be_nested_str_weak(z), - /* K2 */ be_nested_str_weak(A), - /* K3 */ be_nested_str_weak(Z), - /* K4 */ be_nested_str_weak(0), - /* K5 */ be_nested_str_weak(9), - /* K6 */ be_nested_str_weak(_), - }), - be_str_weak(is_identifier_char), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x28080300, // 0000 GE R2 R1 K0 - 0x780A0001, // 0001 JMPF R2 #0004 - 0x18080301, // 0002 LE R2 R1 K1 - 0x740A000A, // 0003 JMPT R2 #000F - 0x28080302, // 0004 GE R2 R1 K2 - 0x780A0001, // 0005 JMPF R2 #0008 - 0x18080303, // 0006 LE R2 R1 K3 - 0x740A0006, // 0007 JMPT R2 #000F - 0x28080304, // 0008 GE R2 R1 K4 - 0x780A0001, // 0009 JMPF R2 #000C - 0x18080305, // 000A LE R2 R1 K5 - 0x740A0002, // 000B JMPT R2 #000F - 0x1C080306, // 000C EQ R2 R1 K6 - 0x740A0000, // 000D JMPT R2 #000F - 0x50080001, // 000E LDBOOL R2 0 1 - 0x50080200, // 000F LDBOOL R2 1 0 - 0x80040400, // 0010 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_template_function -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_template_function, /* name */ - be_nested_proto( - 17, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(_X2C_X20_X25s_), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(add), - /* K5 */ be_nested_str_weak(_X23_X20Template_X20function_X3A_X20_X25s), - /* K6 */ be_nested_str_weak(def_X20_X25s_template_X28_X25s_X29), - /* K7 */ be_nested_str_weak(animation_dsl), - /* K8 */ be_nested_str_weak(SimpleDSLTranspiler), - /* K9 */ be_nested_str_weak(symbol_table), - /* K10 */ be_nested_str_weak(strip_initialized), - /* K11 */ be_nested_str_weak(parameter), - /* K12 */ be_nested_str_weak(transpile_template_body), - /* K13 */ be_nested_str_weak(split), - /* K14 */ be_nested_str_weak(_X0A), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(_X20_X20_X25s), - /* K17 */ be_nested_str_weak(errors), - /* K18 */ be_nested_str_weak(error), - /* K19 */ be_nested_str_weak(Template_X20_X27_X25s_X27_X20body_X20error_X3A_X20_X25s), - /* K20 */ be_nested_str_weak(end), - /* K21 */ be_nested_str_weak(), - /* K22 */ be_nested_str_weak(animation_X2Eregister_user_function_X28_X27_X25s_X27_X2C_X20_X25s_template_X29), - }), - be_str_weak(generate_template_function), - &be_const_str_solidified, - ( &(const binstruction[116]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x58180001, // 0001 LDCONST R6 K1 - 0x601C0010, // 0002 GETGBL R7 G16 - 0x5C200400, // 0003 MOVE R8 R2 - 0x7C1C0200, // 0004 CALL R7 1 - 0xA8020007, // 0005 EXBLK 0 #000E - 0x5C200E00, // 0006 MOVE R8 R7 - 0x7C200000, // 0007 CALL R8 0 - 0x60240018, // 0008 GETGBL R9 G24 - 0x58280002, // 0009 LDCONST R10 K2 - 0x5C2C1000, // 000A MOVE R11 R8 - 0x7C240400, // 000B CALL R9 2 - 0x00180C09, // 000C ADD R6 R6 R9 - 0x7001FFF7, // 000D JMP #0006 - 0x581C0003, // 000E LDCONST R7 K3 - 0xAC1C0200, // 000F CATCH R7 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x8C1C0104, // 0011 GETMET R7 R0 K4 - 0x60240018, // 0012 GETGBL R9 G24 - 0x58280005, // 0013 LDCONST R10 K5 - 0x5C2C0200, // 0014 MOVE R11 R1 - 0x7C240400, // 0015 CALL R9 2 - 0x7C1C0400, // 0016 CALL R7 2 - 0x8C1C0104, // 0017 GETMET R7 R0 K4 - 0x60240018, // 0018 GETGBL R9 G24 - 0x58280006, // 0019 LDCONST R10 K6 - 0x5C2C0200, // 001A MOVE R11 R1 - 0x5C300C00, // 001B MOVE R12 R6 - 0x7C240600, // 001C CALL R9 3 - 0x7C1C0400, // 001D CALL R7 2 - 0xB81E0E00, // 001E GETNGBL R7 K7 - 0x8C1C0F08, // 001F GETMET R7 R7 K8 - 0x5C240800, // 0020 MOVE R9 R4 - 0x7C1C0400, // 0021 CALL R7 2 - 0x60200013, // 0022 GETGBL R8 G19 - 0x7C200000, // 0023 CALL R8 0 - 0x901E1208, // 0024 SETMBR R7 K9 R8 - 0x50200200, // 0025 LDBOOL R8 1 0 - 0x901E1408, // 0026 SETMBR R7 K10 R8 - 0x60200010, // 0027 GETGBL R8 G16 - 0x5C240400, // 0028 MOVE R9 R2 - 0x7C200200, // 0029 CALL R8 1 - 0xA8020004, // 002A EXBLK 0 #0030 - 0x5C241000, // 002B MOVE R9 R8 - 0x7C240000, // 002C CALL R9 0 - 0x88280F09, // 002D GETMBR R10 R7 K9 - 0x9828130B, // 002E SETIDX R10 R9 K11 - 0x7001FFFA, // 002F JMP #002B - 0x58200003, // 0030 LDCONST R8 K3 - 0xAC200200, // 0031 CATCH R8 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x8C200F0C, // 0033 GETMET R8 R7 K12 - 0x7C200200, // 0034 CALL R8 1 - 0x4C240000, // 0035 LDNIL R9 - 0x20241009, // 0036 NE R9 R8 R9 - 0x78260019, // 0037 JMPF R9 #0052 - 0x8C240B0D, // 0038 GETMET R9 R5 K13 - 0x5C2C1000, // 0039 MOVE R11 R8 - 0x5830000E, // 003A LDCONST R12 K14 - 0x7C240600, // 003B CALL R9 3 - 0x60280010, // 003C GETGBL R10 G16 - 0x5C2C1200, // 003D MOVE R11 R9 - 0x7C280200, // 003E CALL R10 1 - 0xA802000D, // 003F EXBLK 0 #004E - 0x5C2C1400, // 0040 MOVE R11 R10 - 0x7C2C0000, // 0041 CALL R11 0 - 0x6030000C, // 0042 GETGBL R12 G12 - 0x5C341600, // 0043 MOVE R13 R11 - 0x7C300200, // 0044 CALL R12 1 - 0x2430190F, // 0045 GT R12 R12 K15 - 0x78320005, // 0046 JMPF R12 #004D - 0x8C300104, // 0047 GETMET R12 R0 K4 - 0x60380018, // 0048 GETGBL R14 G24 - 0x583C0010, // 0049 LDCONST R15 K16 - 0x5C401600, // 004A MOVE R16 R11 - 0x7C380400, // 004B CALL R14 2 - 0x7C300400, // 004C CALL R12 2 - 0x7001FFF1, // 004D JMP #0040 - 0x58280003, // 004E LDCONST R10 K3 - 0xAC280200, // 004F CATCH R10 1 0 - 0xB0080000, // 0050 RAISE 2 R0 R0 - 0x70020010, // 0051 JMP #0063 - 0x60240010, // 0052 GETGBL R9 G16 - 0x88280F11, // 0053 GETMBR R10 R7 K17 - 0x7C240200, // 0054 CALL R9 1 - 0xA8020009, // 0055 EXBLK 0 #0060 - 0x5C281200, // 0056 MOVE R10 R9 - 0x7C280000, // 0057 CALL R10 0 - 0x8C2C0112, // 0058 GETMET R11 R0 K18 - 0x60340018, // 0059 GETGBL R13 G24 - 0x58380013, // 005A LDCONST R14 K19 - 0x5C3C0200, // 005B MOVE R15 R1 - 0x5C401400, // 005C MOVE R16 R10 - 0x7C340600, // 005D CALL R13 3 - 0x7C2C0400, // 005E CALL R11 2 - 0x7001FFF5, // 005F JMP #0056 - 0x58240003, // 0060 LDCONST R9 K3 - 0xAC240200, // 0061 CATCH R9 1 0 - 0xB0080000, // 0062 RAISE 2 R0 R0 - 0x8C240104, // 0063 GETMET R9 R0 K4 - 0x582C0014, // 0064 LDCONST R11 K20 - 0x7C240400, // 0065 CALL R9 2 - 0x8C240104, // 0066 GETMET R9 R0 K4 - 0x582C0015, // 0067 LDCONST R11 K21 - 0x7C240400, // 0068 CALL R9 2 - 0x8C240104, // 0069 GETMET R9 R0 K4 - 0x602C0018, // 006A GETGBL R11 G24 - 0x58300016, // 006B LDCONST R12 K22 - 0x5C340200, // 006C MOVE R13 R1 - 0x5C380200, // 006D MOVE R14 R1 - 0x7C2C0600, // 006E CALL R11 3 - 0x7C240400, // 006F CALL R9 2 - 0x8C240104, // 0070 GETMET R9 R0 K4 - 0x582C0015, // 0071 LDCONST R11 K21 - 0x7C240400, // 0072 CALL R9 2 - 0x80000000, // 0073 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: convert_to_vrgb -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_to_vrgb, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(format), - /* K3 */ be_nested_str_weak(_X2502X), - /* K4 */ be_nested_str_weak(FFFFFF), - /* K5 */ be_nested_str_weak(startswith), - /* K6 */ be_nested_str_weak(0x), - /* K7 */ be_const_int(2), - }), - be_str_weak(convert_to_vrgb), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x60100009, // 0001 GETGBL R4 G9 - 0x6014000A, // 0002 GETGBL R5 G10 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C140200, // 0004 CALL R5 1 - 0x7C100200, // 0005 CALL R4 1 - 0x14140901, // 0006 LT R5 R4 K1 - 0x78160001, // 0007 JMPF R5 #000A - 0x58100001, // 0008 LDCONST R4 K1 - 0x70020003, // 0009 JMP #000E - 0x541600FE, // 000A LDINT R5 255 - 0x24140805, // 000B GT R5 R4 R5 - 0x78160000, // 000C JMPF R5 #000E - 0x541200FE, // 000D LDINT R4 255 - 0x8C140702, // 000E GETMET R5 R3 K2 - 0x581C0003, // 000F LDCONST R7 K3 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x60180008, // 0012 GETGBL R6 G8 - 0x5C1C0400, // 0013 MOVE R7 R2 - 0x7C180200, // 0014 CALL R6 1 - 0x581C0004, // 0015 LDCONST R7 K4 - 0x8C200705, // 0016 GETMET R8 R3 K5 - 0x5C280C00, // 0017 MOVE R10 R6 - 0x582C0006, // 0018 LDCONST R11 K6 - 0x7C200600, // 0019 CALL R8 3 - 0x7822000A, // 001A JMPF R8 #0026 - 0x6020000C, // 001B GETGBL R8 G12 - 0x5C240C00, // 001C MOVE R9 R6 - 0x7C200200, // 001D CALL R8 1 - 0x54260009, // 001E LDINT R9 10 - 0x28201009, // 001F GE R8 R8 R9 - 0x78220004, // 0020 JMPF R8 #0026 - 0x54220003, // 0021 LDINT R8 4 - 0x54260008, // 0022 LDINT R9 9 - 0x40201009, // 0023 CONNECT R8 R8 R9 - 0x941C0C08, // 0024 GETIDX R7 R6 R8 - 0x7002000D, // 0025 JMP #0034 - 0x8C200705, // 0026 GETMET R8 R3 K5 - 0x5C280C00, // 0027 MOVE R10 R6 - 0x582C0006, // 0028 LDCONST R11 K6 - 0x7C200600, // 0029 CALL R8 3 - 0x78220008, // 002A JMPF R8 #0034 - 0x6020000C, // 002B GETGBL R8 G12 - 0x5C240C00, // 002C MOVE R9 R6 - 0x7C200200, // 002D CALL R8 1 - 0x54260007, // 002E LDINT R9 8 - 0x1C201009, // 002F EQ R8 R8 R9 - 0x78220002, // 0030 JMPF R8 #0034 - 0x54220006, // 0031 LDINT R8 7 - 0x40220E08, // 0032 CONNECT R8 K7 R8 - 0x941C0C08, // 0033 GETIDX R7 R6 R8 - 0x00200A07, // 0034 ADD R8 R5 R7 - 0x80041000, // 0035 RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transpile -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_nested_str_weak(import_X20animation), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(at_end), - /* K4 */ be_nested_str_weak(process_statement), - /* K5 */ be_nested_str_weak(generate_engine_run), - /* K6 */ be_nested_str_weak(errors), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(join_output), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Transpilation_X20failed_X3A_X20_X25s), - }), - be_str_weak(transpile), - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0xA802001A, // 0000 EXBLK 0 #001C - 0x8C040100, // 0001 GETMET R1 R0 K0 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x7C040400, // 0003 CALL R1 2 - 0x8C040100, // 0004 GETMET R1 R0 K0 - 0x580C0002, // 0005 LDCONST R3 K2 - 0x7C040400, // 0006 CALL R1 2 - 0x8C040103, // 0007 GETMET R1 R0 K3 - 0x7C040200, // 0008 CALL R1 1 - 0x74060002, // 0009 JMPT R1 #000D - 0x8C040104, // 000A GETMET R1 R0 K4 - 0x7C040200, // 000B CALL R1 1 - 0x7001FFF9, // 000C JMP #0007 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0x6004000C, // 000F GETGBL R1 G12 - 0x88080106, // 0010 GETMBR R2 R0 K6 - 0x7C040200, // 0011 CALL R1 1 - 0x1C040307, // 0012 EQ R1 R1 K7 - 0x78060002, // 0013 JMPF R1 #0017 - 0x8C040108, // 0014 GETMET R1 R0 K8 - 0x7C040200, // 0015 CALL R1 1 - 0x70020000, // 0016 JMP #0018 - 0x4C040000, // 0017 LDNIL R1 - 0xA8040001, // 0018 EXBLK 1 1 - 0x80040200, // 0019 RET 1 R1 - 0xA8040001, // 001A EXBLK 1 1 - 0x7002000B, // 001B JMP #0028 - 0xAC040002, // 001C CATCH R1 0 2 - 0x70020008, // 001D JMP #0027 - 0x8C0C0109, // 001E GETMET R3 R0 K9 - 0x60140018, // 001F GETGBL R5 G24 - 0x5818000A, // 0020 LDCONST R6 K10 - 0x5C1C0400, // 0021 MOVE R7 R2 - 0x7C140400, // 0022 CALL R5 2 - 0x7C0C0400, // 0023 CALL R3 2 - 0x4C0C0000, // 0024 LDNIL R3 - 0x80040600, // 0025 RET 1 R3 - 0x70020000, // 0026 JMP #0028 - 0xB0080000, // 0027 RAISE 2 R0 R0 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_color_provider_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(color_provider), - }), - be_str_weak(_validate_color_provider_factory_exists), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0xB8160200, // 0002 GETNGBL R5 K1 - 0x88140B02, // 0003 GETMBR R5 R5 K2 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_PAREN), - }), - be_str_weak(check_right_paren), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0005, // 0004 JMPF R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0000, // 000A JMPT R2 #000C - 0x50080001, // 000B LDBOOL R2 0 1 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x80040400, // 000D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_function_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_PAREN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(at_end), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(RIGHT_PAREN), - }), - be_str_weak(skip_function_arguments), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060023, // 0004 JMPF R1 #0029 - 0x8C040100, // 0005 GETMET R1 R0 K0 - 0x7C040200, // 0006 CALL R1 1 - 0x88040301, // 0007 GETMBR R1 R1 K1 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x88080503, // 0009 GETMBR R2 R2 K3 - 0x88080504, // 000A GETMBR R2 R2 K4 - 0x1C040202, // 000B EQ R1 R1 R2 - 0x7806001B, // 000C JMPF R1 #0029 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0x58040006, // 000F LDCONST R1 K6 - 0x8C080107, // 0010 GETMET R2 R0 K7 - 0x7C080200, // 0011 CALL R2 1 - 0x740A0015, // 0012 JMPT R2 #0029 - 0x24080308, // 0013 GT R2 R1 K8 - 0x780A0013, // 0014 JMPF R2 #0029 - 0x8C080100, // 0015 GETMET R2 R0 K0 - 0x7C080200, // 0016 CALL R2 1 - 0x880C0501, // 0017 GETMBR R3 R2 K1 - 0xB8120400, // 0018 GETNGBL R4 K2 - 0x88100903, // 0019 GETMBR R4 R4 K3 - 0x88100904, // 001A GETMBR R4 R4 K4 - 0x1C0C0604, // 001B EQ R3 R3 R4 - 0x780E0001, // 001C JMPF R3 #001F - 0x00040306, // 001D ADD R1 R1 K6 - 0x70020006, // 001E JMP #0026 - 0x880C0501, // 001F GETMBR R3 R2 K1 - 0xB8120400, // 0020 GETNGBL R4 K2 - 0x88100903, // 0021 GETMBR R4 R4 K3 - 0x88100909, // 0022 GETMBR R4 R4 K9 - 0x1C0C0604, // 0023 EQ R3 R3 R4 - 0x780E0000, // 0024 JMPF R3 #0026 - 0x04040306, // 0025 SUB R1 R1 K6 - 0x8C0C0105, // 0026 GETMET R3 R0 K5 - 0x7C0C0200, // 0027 CALL R3 1 - 0x7001FFE6, // 0028 JMP #0010 - 0x80000000, // 0029 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_generic -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_process_named_arguments_unified), - /* K1 */ be_nested_str_weak(generic), - }), - be_str_weak(_process_named_arguments_generic), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x581C0001, // 0003 LDCONST R7 K1 - 0x7C0C0800, // 0004 CALL R3 4 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_parameters_core -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_parameters_core, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(variable), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(temp_), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(split), - /* K6 */ be_nested_str_weak(_), - /* K7 */ be_const_int(2), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(), - /* K10 */ be_nested_str_weak(_create_instance_for_validation), - /* K11 */ be_nested_str_weak(at_end), - /* K12 */ be_nested_str_weak(check_right_paren), - /* K13 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K14 */ be_nested_str_weak(expect_identifier), - /* K15 */ be_nested_str_weak(_validate_single_parameter), - /* K16 */ be_nested_str_weak(expect_assign), - /* K17 */ be_nested_str_weak(process_value), - /* K18 */ be_nested_str_weak(argument), - /* K19 */ be_nested_str_weak(collect_inline_comment), - /* K20 */ be_nested_str_weak(current), - /* K21 */ be_nested_str_weak(type), - /* K22 */ be_nested_str_weak(animation_dsl), - /* K23 */ be_nested_str_weak(Token), - /* K24 */ be_nested_str_weak(COMMENT), - /* K25 */ be_nested_str_weak(next), - /* K26 */ be_nested_str_weak(COMMA), - /* K27 */ be_nested_str_weak(NEWLINE), - /* K28 */ be_nested_str_weak(error), - /* K29 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - }), - be_str_weak(_process_parameters_core), - &be_const_str_solidified, - ( &(const binstruction[127]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x5C140200, // 0001 MOVE R5 R1 - 0x1C180500, // 0002 EQ R6 R2 K0 - 0x781A0010, // 0003 JMPF R6 #0015 - 0xA41A0200, // 0004 IMPORT R6 K1 - 0x8C1C0D02, // 0005 GETMET R7 R6 K2 - 0x5C240200, // 0006 MOVE R9 R1 - 0x58280003, // 0007 LDCONST R10 K3 - 0x7C1C0600, // 0008 CALL R7 3 - 0x1C1C0F04, // 0009 EQ R7 R7 K4 - 0x781E0009, // 000A JMPF R7 #0015 - 0x8C1C0D05, // 000B GETMET R7 R6 K5 - 0x5C240200, // 000C MOVE R9 R1 - 0x58280006, // 000D LDCONST R10 K6 - 0x7C1C0600, // 000E CALL R7 3 - 0x6020000C, // 000F GETGBL R8 G12 - 0x5C240E00, // 0010 MOVE R9 R7 - 0x7C200200, // 0011 CALL R8 1 - 0x28201107, // 0012 GE R8 R8 K7 - 0x78220000, // 0013 JMPF R8 #0015 - 0x94140F08, // 0014 GETIDX R5 R7 K8 - 0x20180B09, // 0015 NE R6 R5 K9 - 0x781A0003, // 0016 JMPF R6 #001B - 0x8C18010A, // 0017 GETMET R6 R0 K10 - 0x5C200A00, // 0018 MOVE R8 R5 - 0x7C180400, // 0019 CALL R6 2 - 0x5C100C00, // 001A MOVE R4 R6 - 0x8C18010B, // 001B GETMET R6 R0 K11 - 0x7C180200, // 001C CALL R6 1 - 0x741A005F, // 001D JMPT R6 #007E - 0x8C18010C, // 001E GETMET R6 R0 K12 - 0x7C180200, // 001F CALL R6 1 - 0x741A005C, // 0020 JMPT R6 #007E - 0x8C18010D, // 0021 GETMET R6 R0 K13 - 0x7C180200, // 0022 CALL R6 1 - 0x8C18010C, // 0023 GETMET R6 R0 K12 - 0x7C180200, // 0024 CALL R6 1 - 0x781A0000, // 0025 JMPF R6 #0027 - 0x70020056, // 0026 JMP #007E - 0x8C18010E, // 0027 GETMET R6 R0 K14 - 0x7C180200, // 0028 CALL R6 1 - 0x4C1C0000, // 0029 LDNIL R7 - 0x201C0807, // 002A NE R7 R4 R7 - 0x781E0006, // 002B JMPF R7 #0033 - 0x201C0B09, // 002C NE R7 R5 K9 - 0x781E0004, // 002D JMPF R7 #0033 - 0x8C1C010F, // 002E GETMET R7 R0 K15 - 0x5C240A00, // 002F MOVE R9 R5 - 0x5C280C00, // 0030 MOVE R10 R6 - 0x5C2C0800, // 0031 MOVE R11 R4 - 0x7C1C0800, // 0032 CALL R7 4 - 0x8C1C0110, // 0033 GETMET R7 R0 K16 - 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0111, // 0035 GETMET R7 R0 K17 - 0x58240012, // 0036 LDCONST R9 K18 - 0x7C1C0400, // 0037 CALL R7 2 - 0x8C200113, // 0038 GETMET R8 R0 K19 - 0x7C200200, // 0039 CALL R8 1 - 0x5C240600, // 003A MOVE R9 R3 - 0x5C280C00, // 003B MOVE R10 R6 - 0x5C2C0E00, // 003C MOVE R11 R7 - 0x5C301000, // 003D MOVE R12 R8 - 0x7C240600, // 003E CALL R9 3 - 0x8C24010B, // 003F GETMET R9 R0 K11 - 0x7C240200, // 0040 CALL R9 1 - 0x7426000F, // 0041 JMPT R9 #0052 - 0x8C240114, // 0042 GETMET R9 R0 K20 - 0x7C240200, // 0043 CALL R9 1 - 0x4C280000, // 0044 LDNIL R10 - 0x2028120A, // 0045 NE R10 R9 R10 - 0x782A0008, // 0046 JMPF R10 #0050 - 0x88281315, // 0047 GETMBR R10 R9 K21 - 0xB82E2C00, // 0048 GETNGBL R11 K22 - 0x882C1717, // 0049 GETMBR R11 R11 K23 - 0x882C1718, // 004A GETMBR R11 R11 K24 - 0x1C28140B, // 004B EQ R10 R10 R11 - 0x782A0002, // 004C JMPF R10 #0050 - 0x8C280119, // 004D GETMET R10 R0 K25 - 0x7C280200, // 004E CALL R10 1 - 0x70020000, // 004F JMP #0051 - 0x70020000, // 0050 JMP #0052 - 0x7001FFEC, // 0051 JMP #003F - 0x8C240114, // 0052 GETMET R9 R0 K20 - 0x7C240200, // 0053 CALL R9 1 - 0x4C280000, // 0054 LDNIL R10 - 0x2024120A, // 0055 NE R9 R9 R10 - 0x7826000C, // 0056 JMPF R9 #0064 - 0x8C240114, // 0057 GETMET R9 R0 K20 - 0x7C240200, // 0058 CALL R9 1 - 0x88241315, // 0059 GETMBR R9 R9 K21 - 0xB82A2C00, // 005A GETNGBL R10 K22 - 0x88281517, // 005B GETMBR R10 R10 K23 - 0x8828151A, // 005C GETMBR R10 R10 K26 - 0x1C24120A, // 005D EQ R9 R9 R10 - 0x78260004, // 005E JMPF R9 #0064 - 0x8C240119, // 005F GETMET R9 R0 K25 - 0x7C240200, // 0060 CALL R9 1 - 0x8C24010D, // 0061 GETMET R9 R0 K13 - 0x7C240200, // 0062 CALL R9 1 - 0x70020018, // 0063 JMP #007D - 0x8C240114, // 0064 GETMET R9 R0 K20 - 0x7C240200, // 0065 CALL R9 1 - 0x4C280000, // 0066 LDNIL R10 - 0x2024120A, // 0067 NE R9 R9 R10 - 0x7826000C, // 0068 JMPF R9 #0076 - 0x8C240114, // 0069 GETMET R9 R0 K20 - 0x7C240200, // 006A CALL R9 1 - 0x88241315, // 006B GETMBR R9 R9 K21 - 0xB82A2C00, // 006C GETNGBL R10 K22 - 0x88281517, // 006D GETMBR R10 R10 K23 - 0x8828151B, // 006E GETMBR R10 R10 K27 - 0x1C24120A, // 006F EQ R9 R9 R10 - 0x78260004, // 0070 JMPF R9 #0076 - 0x8C240119, // 0071 GETMET R9 R0 K25 - 0x7C240200, // 0072 CALL R9 1 - 0x8C24010D, // 0073 GETMET R9 R0 K13 - 0x7C240200, // 0074 CALL R9 1 - 0x70020006, // 0075 JMP #007D - 0x8C24010C, // 0076 GETMET R9 R0 K12 - 0x7C240200, // 0077 CALL R9 1 - 0x74260003, // 0078 JMPT R9 #007D - 0x8C24011C, // 0079 GETMET R9 R0 K28 - 0x582C001D, // 007A LDCONST R11 K29 - 0x7C240400, // 007B CALL R9 2 - 0x70020000, // 007C JMP #007E - 0x7001FF9C, // 007D JMP #001B - 0x80000000, // 007E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_for_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_process_named_arguments_unified), - /* K1 */ be_nested_str_weak(animation), - }), - be_str_weak(_process_named_arguments_for_animation), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x581C0001, // 0003 LDCONST R7 K1 - 0x7C0C0800, // 0004 CALL R3 4 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_indent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_indent, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_X20_X20), - /* K1 */ be_nested_str_weak(indent_level), - /* K2 */ be_const_int(1), - }), - be_str_weak(get_indent), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x00040302, // 0001 ADD R1 R1 K2 - 0x08060001, // 0002 MUL R1 K0 R1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_object_reference -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_object_reference, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(validate_symbol_reference), - }), - be_str_weak(_validate_object_reference), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xA8020005, // 0000 EXBLK 0 #0007 - 0x8C0C0100, // 0001 GETMET R3 R0 K0 - 0x5C140200, // 0002 MOVE R5 R1 - 0x5C180400, // 0003 MOVE R6 R2 - 0x7C0C0600, // 0004 CALL R3 3 - 0xA8040001, // 0005 EXBLK 1 1 - 0x70020003, // 0006 JMP #000B - 0xAC0C0002, // 0007 CATCH R3 0 2 - 0x70020000, // 0008 JMP #000A - 0x70020000, // 0009 JMP #000B - 0xB0080000, // 000A RAISE 2 R0 R0 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: can_use_as_identifier -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_can_use_as_identifier, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(color), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(palette), - /* K3 */ be_nested_str_weak(startup), - /* K4 */ be_nested_str_weak(shutdown), - /* K5 */ be_nested_str_weak(button_press), - /* K6 */ be_nested_str_weak(button_hold), - /* K7 */ be_nested_str_weak(motion_detected), - /* K8 */ be_nested_str_weak(brightness_change), - /* K9 */ be_nested_str_weak(timer), - /* K10 */ be_nested_str_weak(time), - /* K11 */ be_nested_str_weak(sound_peak), - /* K12 */ be_nested_str_weak(network_message), - /* K13 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(can_use_as_identifier), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x400C0500, // 0002 CONNECT R3 R2 K0 - 0x400C0501, // 0003 CONNECT R3 R2 K1 - 0x400C0502, // 0004 CONNECT R3 R2 K2 - 0x400C0503, // 0005 CONNECT R3 R2 K3 - 0x400C0504, // 0006 CONNECT R3 R2 K4 - 0x400C0505, // 0007 CONNECT R3 R2 K5 - 0x400C0506, // 0008 CONNECT R3 R2 K6 - 0x400C0507, // 0009 CONNECT R3 R2 K7 - 0x400C0508, // 000A CONNECT R3 R2 K8 - 0x400C0509, // 000B CONNECT R3 R2 K9 - 0x400C050A, // 000C CONNECT R3 R2 K10 - 0x400C050B, // 000D CONNECT R3 R2 K11 - 0x400C050C, // 000E CONNECT R3 R2 K12 - 0x600C0010, // 000F GETGBL R3 G16 - 0x5C100400, // 0010 MOVE R4 R2 - 0x7C0C0200, // 0011 CALL R3 1 - 0xA8020007, // 0012 EXBLK 0 #001B - 0x5C100600, // 0013 MOVE R4 R3 - 0x7C100000, // 0014 CALL R4 0 - 0x1C140204, // 0015 EQ R5 R1 R4 - 0x78160002, // 0016 JMPF R5 #001A - 0x50140200, // 0017 LDBOOL R5 1 0 - 0xA8040001, // 0018 EXBLK 1 1 - 0x80040A00, // 0019 RET 1 R5 - 0x7001FFF7, // 001A JMP #0013 - 0x580C000D, // 001B LDCONST R3 K13 - 0xAC0C0200, // 001C CATCH R3 1 0 - 0xB0080000, // 001D RAISE 2 R0 R0 - 0x500C0000, // 001E LDBOOL R3 0 0 - 0x80040600, // 001F RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_unified -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_unified, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x60140018, // 0002 GETGBL R5 G24 - 0x58180001, // 0003 LDCONST R6 K1 - 0x681C0001, // 0004 GETUPV R7 U1 - 0x5C200000, // 0005 MOVE R8 R0 - 0x5C240200, // 0006 MOVE R9 R1 - 0x5C280400, // 0007 MOVE R10 R2 - 0x7C140A00, // 0008 CALL R5 5 - 0x7C0C0400, // 0009 CALL R3 2 - 0x80000000, // 000A RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_process_parameters_core), - /* K2 */ be_nested_str_weak(expect_right_paren), - }), - be_str_weak(_process_named_arguments_unified), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x7C100200, // 0001 CALL R4 1 - 0x84100000, // 0002 CLOSURE R4 P0 - 0x8C140101, // 0003 GETMET R5 R0 K1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x5C200600, // 0005 MOVE R8 R3 - 0x5C240800, // 0006 MOVE R9 R4 - 0x7C140800, // 0007 CALL R5 4 - 0x8C140102, // 0008 GETMET R5 R0 K2 - 0x7C140200, // 0009 CALL R5 1 - 0xA0000000, // 000A CLOSE R0 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_play_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_play_statement_fluent, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(IDENTIFIER), - /* K7 */ be_nested_str_weak(KEYWORD), - /* K8 */ be_nested_str_weak(peek), - /* K9 */ be_nested_str_weak(LEFT_PAREN), - /* K10 */ be_nested_str_weak(process_nested_function_call), - /* K11 */ be_nested_str_weak(expect_identifier), - /* K12 */ be_nested_str_weak(_validate_object_reference), - /* K13 */ be_nested_str_weak(sequence_X20play), - /* K14 */ be_nested_str_weak(_X25s_), - /* K15 */ be_nested_str_weak(nil), - /* K16 */ be_nested_str_weak(value), - /* K17 */ be_nested_str_weak(for), - /* K18 */ be_nested_str_weak(process_time_value), - /* K19 */ be_nested_str_weak(collect_inline_comment), - /* K20 */ be_nested_str_weak(add), - /* K21 */ be_nested_str_weak(_X25s_X2Epush_play_step_X28_X25s_X2C_X20_X25s_X29_X25s), - /* K22 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_play_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[87]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58040001, // 0002 LDCONST R1 K1 - 0x8C080102, // 0003 GETMET R2 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x4C0C0000, // 0005 LDNIL R3 - 0x200C0403, // 0006 NE R3 R2 R3 - 0x780E001C, // 0007 JMPF R3 #0025 - 0x880C0503, // 0008 GETMBR R3 R2 K3 - 0xB8120800, // 0009 GETNGBL R4 K4 - 0x88100905, // 000A GETMBR R4 R4 K5 - 0x88100906, // 000B GETMBR R4 R4 K6 - 0x1C0C0604, // 000C EQ R3 R3 R4 - 0x740E0005, // 000D JMPT R3 #0014 - 0x880C0503, // 000E GETMBR R3 R2 K3 - 0xB8120800, // 000F GETNGBL R4 K4 - 0x88100905, // 0010 GETMBR R4 R4 K5 - 0x88100907, // 0011 GETMBR R4 R4 K7 - 0x1C0C0604, // 0012 EQ R3 R3 R4 - 0x780E0010, // 0013 JMPF R3 #0025 - 0x8C0C0108, // 0014 GETMET R3 R0 K8 - 0x7C0C0200, // 0015 CALL R3 1 - 0x4C100000, // 0016 LDNIL R4 - 0x200C0604, // 0017 NE R3 R3 R4 - 0x780E000B, // 0018 JMPF R3 #0025 - 0x8C0C0108, // 0019 GETMET R3 R0 K8 - 0x7C0C0200, // 001A CALL R3 1 - 0x880C0703, // 001B GETMBR R3 R3 K3 - 0xB8120800, // 001C GETNGBL R4 K4 - 0x88100905, // 001D GETMBR R4 R4 K5 - 0x88100909, // 001E GETMBR R4 R4 K9 - 0x1C0C0604, // 001F EQ R3 R3 R4 - 0x780E0003, // 0020 JMPF R3 #0025 - 0x8C0C010A, // 0021 GETMET R3 R0 K10 - 0x7C0C0200, // 0022 CALL R3 1 - 0x5C040600, // 0023 MOVE R1 R3 - 0x7002000A, // 0024 JMP #0030 - 0x8C0C010B, // 0025 GETMET R3 R0 K11 - 0x7C0C0200, // 0026 CALL R3 1 - 0x8C10010C, // 0027 GETMET R4 R0 K12 - 0x5C180600, // 0028 MOVE R6 R3 - 0x581C000D, // 0029 LDCONST R7 K13 - 0x7C100600, // 002A CALL R4 3 - 0x60100018, // 002B GETGBL R4 G24 - 0x5814000E, // 002C LDCONST R5 K14 - 0x5C180600, // 002D MOVE R6 R3 - 0x7C100400, // 002E CALL R4 2 - 0x5C040800, // 002F MOVE R1 R4 - 0x580C000F, // 0030 LDCONST R3 K15 - 0x8C100102, // 0031 GETMET R4 R0 K2 - 0x7C100200, // 0032 CALL R4 1 - 0x4C140000, // 0033 LDNIL R5 - 0x20100805, // 0034 NE R4 R4 R5 - 0x78120013, // 0035 JMPF R4 #004A - 0x8C100102, // 0036 GETMET R4 R0 K2 - 0x7C100200, // 0037 CALL R4 1 - 0x88100903, // 0038 GETMBR R4 R4 K3 - 0xB8160800, // 0039 GETNGBL R5 K4 - 0x88140B05, // 003A GETMBR R5 R5 K5 - 0x88140B07, // 003B GETMBR R5 R5 K7 - 0x1C100805, // 003C EQ R4 R4 R5 - 0x7812000B, // 003D JMPF R4 #004A - 0x8C100102, // 003E GETMET R4 R0 K2 - 0x7C100200, // 003F CALL R4 1 - 0x88100910, // 0040 GETMBR R4 R4 K16 - 0x1C100911, // 0041 EQ R4 R4 K17 - 0x78120006, // 0042 JMPF R4 #004A - 0x8C100100, // 0043 GETMET R4 R0 K0 - 0x7C100200, // 0044 CALL R4 1 - 0x60100008, // 0045 GETGBL R4 G8 - 0x8C140112, // 0046 GETMET R5 R0 K18 - 0x7C140200, // 0047 CALL R5 1 - 0x7C100200, // 0048 CALL R4 1 - 0x5C0C0800, // 0049 MOVE R3 R4 - 0x8C100113, // 004A GETMET R4 R0 K19 - 0x7C100200, // 004B CALL R4 1 - 0x8C140114, // 004C GETMET R5 R0 K20 - 0x601C0018, // 004D GETGBL R7 G24 - 0x58200015, // 004E LDCONST R8 K21 - 0x8C240116, // 004F GETMET R9 R0 K22 - 0x7C240200, // 0050 CALL R9 1 - 0x5C280200, // 0051 MOVE R10 R1 - 0x5C2C0600, // 0052 MOVE R11 R3 - 0x5C300800, // 0053 MOVE R12 R4 - 0x7C1C0A00, // 0054 CALL R7 5 - 0x7C140400, // 0055 CALL R5 2 - 0x80000000, // 0056 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_palette -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_palette, /* name */ - be_nested_proto( - 18, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[47]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(palette), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(expect_left_bracket), - /* K7 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K8 */ be_nested_str_weak(check_right_bracket), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Empty_X20palettes_X20are_X20not_X20allowed_X2E_X20A_X20palette_X20must_X20contain_X20at_X20least_X20one_X20color_X20entry_X2E), - /* K11 */ be_nested_str_weak(current), - /* K12 */ be_nested_str_weak(type), - /* K13 */ be_nested_str_weak(animation_dsl), - /* K14 */ be_nested_str_weak(Token), - /* K15 */ be_nested_str_weak(LEFT_PAREN), - /* K16 */ be_nested_str_weak(at_end), - /* K17 */ be_nested_str_weak(Cannot_X20mix_X20alternative_X20syntax_X20_X5Bcolor1_X2C_X20color2_X2C_X20_X2E_X2E_X2E_X5D_X20with_X20tuple_X20syntax_X20_X28value_X2C_X20color_X29_X2E_X20Use_X20only_X20one_X20syntax_X20per_X20palette_X2E), - /* K18 */ be_nested_str_weak(expect_left_paren), - /* K19 */ be_nested_str_weak(expect_number), - /* K20 */ be_nested_str_weak(expect_comma), - /* K21 */ be_nested_str_weak(process_palette_color), - /* K22 */ be_nested_str_weak(expect_right_paren), - /* K23 */ be_nested_str_weak(convert_to_vrgb), - /* K24 */ be_nested_str_weak(0x_X25s), - /* K25 */ be_nested_str_weak(push), - /* K26 */ be_nested_str_weak(Cannot_X20mix_X20tuple_X20syntax_X20_X28value_X2C_X20color_X29_X20with_X20alternative_X20syntax_X20_X5Bcolor1_X2C_X20color2_X2C_X20_X2E_X2E_X2E_X5D_X2E_X20Use_X20only_X20one_X20syntax_X20per_X20palette_X2E), - /* K27 */ be_nested_str_weak(), - /* K28 */ be_nested_str_weak(COMMA), - /* K29 */ be_nested_str_weak(COMMENT), - /* K30 */ be_nested_str_weak(value), - /* K31 */ be_nested_str_weak(NEWLINE), - /* K32 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20palette_X20definition), - /* K33 */ be_nested_str_weak(expect_right_bracket), - /* K34 */ be_nested_str_weak(collect_inline_comment), - /* K35 */ be_nested_str_weak(stop_iteration), - /* K36 */ be_nested_str_weak(add), - /* K37 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20bytes_X28_X25s), - /* K38 */ be_const_int(0), - /* K39 */ be_const_int(1), - /* K40 */ be_nested_str_weak(_X2508X), - /* K41 */ be_nested_str_weak(_X20_X20_X25s), - /* K42 */ be_nested_str_weak(_X20_X20_X22_X25s_X22_X25s), - /* K43 */ be_nested_str_weak(_X29), - /* K44 */ be_nested_str_weak(_X20), - /* K45 */ be_nested_str_weak(_X22_X25s_X22), - /* K46 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20bytes_X28_X25s_X29_X25s), - }), - be_str_weak(process_palette), - &be_const_str_solidified, - ( &(const binstruction[344]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x60080012, // 0010 GETGBL R2 G18 - 0x7C080000, // 0011 CALL R2 0 - 0x600C0012, // 0012 GETGBL R3 G18 - 0x7C0C0000, // 0013 CALL R3 0 - 0x8C100107, // 0014 GETMET R4 R0 K7 - 0x7C100200, // 0015 CALL R4 1 - 0x8C100108, // 0016 GETMET R4 R0 K8 - 0x7C100200, // 0017 CALL R4 1 - 0x78120005, // 0018 JMPF R4 #001F - 0x8C100109, // 0019 GETMET R4 R0 K9 - 0x5818000A, // 001A LDCONST R6 K10 - 0x7C100400, // 001B CALL R4 2 - 0x8C100104, // 001C GETMET R4 R0 K4 - 0x7C100200, // 001D CALL R4 1 - 0x80000800, // 001E RET 0 - 0x8C10010B, // 001F GETMET R4 R0 K11 - 0x7C100200, // 0020 CALL R4 1 - 0x4C140000, // 0021 LDNIL R5 - 0x20100805, // 0022 NE R4 R4 R5 - 0x78120007, // 0023 JMPF R4 #002C - 0x8C10010B, // 0024 GETMET R4 R0 K11 - 0x7C100200, // 0025 CALL R4 1 - 0x8810090C, // 0026 GETMBR R4 R4 K12 - 0xB8161A00, // 0027 GETNGBL R5 K13 - 0x88140B0E, // 0028 GETMBR R5 R5 K14 - 0x88140B0F, // 0029 GETMBR R5 R5 K15 - 0x1C100805, // 002A EQ R4 R4 R5 - 0x74120000, // 002B JMPT R4 #002D - 0x50100001, // 002C LDBOOL R4 0 1 - 0x50100200, // 002D LDBOOL R4 1 0 - 0x8C140110, // 002E GETMET R5 R0 K16 - 0x7C140200, // 002F CALL R5 1 - 0x741600BF, // 0030 JMPT R5 #00F1 - 0x8C140108, // 0031 GETMET R5 R0 K8 - 0x7C140200, // 0032 CALL R5 1 - 0x741600BC, // 0033 JMPT R5 #00F1 - 0x8C140107, // 0034 GETMET R5 R0 K7 - 0x7C140200, // 0035 CALL R5 1 - 0x8C140108, // 0036 GETMET R5 R0 K8 - 0x7C140200, // 0037 CALL R5 1 - 0x78160000, // 0038 JMPF R5 #003A - 0x700200B6, // 0039 JMP #00F1 - 0x7812002A, // 003A JMPF R4 #0066 - 0x8C14010B, // 003B GETMET R5 R0 K11 - 0x7C140200, // 003C CALL R5 1 - 0x4C180000, // 003D LDNIL R6 - 0x20140A06, // 003E NE R5 R5 R6 - 0x7816000D, // 003F JMPF R5 #004E - 0x8C14010B, // 0040 GETMET R5 R0 K11 - 0x7C140200, // 0041 CALL R5 1 - 0x88140B0C, // 0042 GETMBR R5 R5 K12 - 0xB81A1A00, // 0043 GETNGBL R6 K13 - 0x88180D0E, // 0044 GETMBR R6 R6 K14 - 0x88180D0F, // 0045 GETMBR R6 R6 K15 - 0x20140A06, // 0046 NE R5 R5 R6 - 0x78160005, // 0047 JMPF R5 #004E - 0x8C140109, // 0048 GETMET R5 R0 K9 - 0x581C0011, // 0049 LDCONST R7 K17 - 0x7C140400, // 004A CALL R5 2 - 0x8C140104, // 004B GETMET R5 R0 K4 - 0x7C140200, // 004C CALL R5 1 - 0x80000A00, // 004D RET 0 - 0x8C140112, // 004E GETMET R5 R0 K18 - 0x7C140200, // 004F CALL R5 1 - 0x8C140113, // 0050 GETMET R5 R0 K19 - 0x7C140200, // 0051 CALL R5 1 - 0x8C180114, // 0052 GETMET R6 R0 K20 - 0x7C180200, // 0053 CALL R6 1 - 0x8C180115, // 0054 GETMET R6 R0 K21 - 0x7C180200, // 0055 CALL R6 1 - 0x8C1C0116, // 0056 GETMET R7 R0 K22 - 0x7C1C0200, // 0057 CALL R7 1 - 0x8C1C0117, // 0058 GETMET R7 R0 K23 - 0x5C240A00, // 0059 MOVE R9 R5 - 0x5C280C00, // 005A MOVE R10 R6 - 0x7C1C0600, // 005B CALL R7 3 - 0x60200009, // 005C GETGBL R8 G9 - 0x60240018, // 005D GETGBL R9 G24 - 0x58280018, // 005E LDCONST R10 K24 - 0x5C2C0E00, // 005F MOVE R11 R7 - 0x7C240400, // 0060 CALL R9 2 - 0x7C200200, // 0061 CALL R8 1 - 0x8C240519, // 0062 GETMET R9 R2 K25 - 0x5C2C1000, // 0063 MOVE R11 R8 - 0x7C240400, // 0064 CALL R9 2 - 0x70020021, // 0065 JMP #0088 - 0x8C14010B, // 0066 GETMET R5 R0 K11 - 0x7C140200, // 0067 CALL R5 1 - 0x4C180000, // 0068 LDNIL R6 - 0x20140A06, // 0069 NE R5 R5 R6 - 0x7816000D, // 006A JMPF R5 #0079 - 0x8C14010B, // 006B GETMET R5 R0 K11 - 0x7C140200, // 006C CALL R5 1 - 0x88140B0C, // 006D GETMBR R5 R5 K12 - 0xB81A1A00, // 006E GETNGBL R6 K13 - 0x88180D0E, // 006F GETMBR R6 R6 K14 - 0x88180D0F, // 0070 GETMBR R6 R6 K15 - 0x1C140A06, // 0071 EQ R5 R5 R6 - 0x78160005, // 0072 JMPF R5 #0079 - 0x8C140109, // 0073 GETMET R5 R0 K9 - 0x581C001A, // 0074 LDCONST R7 K26 - 0x7C140400, // 0075 CALL R5 2 - 0x8C140104, // 0076 GETMET R5 R0 K4 - 0x7C140200, // 0077 CALL R5 1 - 0x80000A00, // 0078 RET 0 - 0x8C140115, // 0079 GETMET R5 R0 K21 - 0x7C140200, // 007A CALL R5 1 - 0x8C180117, // 007B GETMET R6 R0 K23 - 0x542200FE, // 007C LDINT R8 255 - 0x5C240A00, // 007D MOVE R9 R5 - 0x7C180600, // 007E CALL R6 3 - 0x601C0009, // 007F GETGBL R7 G9 - 0x60200018, // 0080 GETGBL R8 G24 - 0x58240018, // 0081 LDCONST R9 K24 - 0x5C280C00, // 0082 MOVE R10 R6 - 0x7C200400, // 0083 CALL R8 2 - 0x7C1C0200, // 0084 CALL R7 1 - 0x8C200519, // 0085 GETMET R8 R2 K25 - 0x5C280E00, // 0086 MOVE R10 R7 - 0x7C200400, // 0087 CALL R8 2 - 0x5814001B, // 0088 LDCONST R5 K27 - 0x8C18010B, // 0089 GETMET R6 R0 K11 - 0x7C180200, // 008A CALL R6 1 - 0x4C1C0000, // 008B LDNIL R7 - 0x20180C07, // 008C NE R6 R6 R7 - 0x781A002F, // 008D JMPF R6 #00BE - 0x8C18010B, // 008E GETMET R6 R0 K11 - 0x7C180200, // 008F CALL R6 1 - 0x88180D0C, // 0090 GETMBR R6 R6 K12 - 0xB81E1A00, // 0091 GETNGBL R7 K13 - 0x881C0F0E, // 0092 GETMBR R7 R7 K14 - 0x881C0F1C, // 0093 GETMBR R7 R7 K28 - 0x1C180C07, // 0094 EQ R6 R6 R7 - 0x781A0027, // 0095 JMPF R6 #00BE - 0x8C180100, // 0096 GETMET R6 R0 K0 - 0x7C180200, // 0097 CALL R6 1 - 0x8C18010B, // 0098 GETMET R6 R0 K11 - 0x7C180200, // 0099 CALL R6 1 - 0x4C1C0000, // 009A LDNIL R7 - 0x20180C07, // 009B NE R6 R6 R7 - 0x781A000C, // 009C JMPF R6 #00AA - 0x8C18010B, // 009D GETMET R6 R0 K11 - 0x7C180200, // 009E CALL R6 1 - 0x88180D0C, // 009F GETMBR R6 R6 K12 - 0xB81E1A00, // 00A0 GETNGBL R7 K13 - 0x881C0F0E, // 00A1 GETMBR R7 R7 K14 - 0x881C0F1D, // 00A2 GETMBR R7 R7 K29 - 0x1C180C07, // 00A3 EQ R6 R6 R7 - 0x781A0004, // 00A4 JMPF R6 #00AA - 0x8C18010B, // 00A5 GETMET R6 R0 K11 - 0x7C180200, // 00A6 CALL R6 1 - 0x88140D1E, // 00A7 GETMBR R5 R6 K30 - 0x8C180100, // 00A8 GETMET R6 R0 K0 - 0x7C180200, // 00A9 CALL R6 1 - 0x8C180110, // 00AA GETMET R6 R0 K16 - 0x7C180200, // 00AB CALL R6 1 - 0x741A000F, // 00AC JMPT R6 #00BD - 0x8C18010B, // 00AD GETMET R6 R0 K11 - 0x7C180200, // 00AE CALL R6 1 - 0x4C1C0000, // 00AF LDNIL R7 - 0x201C0C07, // 00B0 NE R7 R6 R7 - 0x781E0008, // 00B1 JMPF R7 #00BB - 0x881C0D0C, // 00B2 GETMBR R7 R6 K12 - 0xB8221A00, // 00B3 GETNGBL R8 K13 - 0x8820110E, // 00B4 GETMBR R8 R8 K14 - 0x8820111F, // 00B5 GETMBR R8 R8 K31 - 0x1C1C0E08, // 00B6 EQ R7 R7 R8 - 0x781E0002, // 00B7 JMPF R7 #00BB - 0x8C1C0100, // 00B8 GETMET R7 R0 K0 - 0x7C1C0200, // 00B9 CALL R7 1 - 0x70020000, // 00BA JMP #00BC - 0x70020000, // 00BB JMP #00BD - 0x7001FFEC, // 00BC JMP #00AA - 0x7002002E, // 00BD JMP #00ED - 0x8C18010B, // 00BE GETMET R6 R0 K11 - 0x7C180200, // 00BF CALL R6 1 - 0x4C1C0000, // 00C0 LDNIL R7 - 0x20180C07, // 00C1 NE R6 R6 R7 - 0x781A000C, // 00C2 JMPF R6 #00D0 - 0x8C18010B, // 00C3 GETMET R6 R0 K11 - 0x7C180200, // 00C4 CALL R6 1 - 0x88180D0C, // 00C5 GETMBR R6 R6 K12 - 0xB81E1A00, // 00C6 GETNGBL R7 K13 - 0x881C0F0E, // 00C7 GETMBR R7 R7 K14 - 0x881C0F1F, // 00C8 GETMBR R7 R7 K31 - 0x1C180C07, // 00C9 EQ R6 R6 R7 - 0x781A0004, // 00CA JMPF R6 #00D0 - 0x8C180100, // 00CB GETMET R6 R0 K0 - 0x7C180200, // 00CC CALL R6 1 - 0x8C180107, // 00CD GETMET R6 R0 K7 - 0x7C180200, // 00CE CALL R6 1 - 0x7002001C, // 00CF JMP #00ED - 0x8C180108, // 00D0 GETMET R6 R0 K8 - 0x7C180200, // 00D1 CALL R6 1 - 0x741A0019, // 00D2 JMPT R6 #00ED - 0x8C18010B, // 00D3 GETMET R6 R0 K11 - 0x7C180200, // 00D4 CALL R6 1 - 0x4C1C0000, // 00D5 LDNIL R7 - 0x20180C07, // 00D6 NE R6 R6 R7 - 0x781A000D, // 00D7 JMPF R6 #00E6 - 0x8C18010B, // 00D8 GETMET R6 R0 K11 - 0x7C180200, // 00D9 CALL R6 1 - 0x88180D0C, // 00DA GETMBR R6 R6 K12 - 0xB81E1A00, // 00DB GETNGBL R7 K13 - 0x881C0F0E, // 00DC GETMBR R7 R7 K14 - 0x881C0F1D, // 00DD GETMBR R7 R7 K29 - 0x1C180C07, // 00DE EQ R6 R6 R7 - 0x781A0005, // 00DF JMPF R6 #00E6 - 0x8C18010B, // 00E0 GETMET R6 R0 K11 - 0x7C180200, // 00E1 CALL R6 1 - 0x88140D1E, // 00E2 GETMBR R5 R6 K30 - 0x8C180100, // 00E3 GETMET R6 R0 K0 - 0x7C180200, // 00E4 CALL R6 1 - 0x70020006, // 00E5 JMP #00ED - 0x8C180108, // 00E6 GETMET R6 R0 K8 - 0x7C180200, // 00E7 CALL R6 1 - 0x741A0003, // 00E8 JMPT R6 #00ED - 0x8C180109, // 00E9 GETMET R6 R0 K9 - 0x58200020, // 00EA LDCONST R8 K32 - 0x7C180400, // 00EB CALL R6 2 - 0x70020003, // 00EC JMP #00F1 - 0x8C180719, // 00ED GETMET R6 R3 K25 - 0x5C200A00, // 00EE MOVE R8 R5 - 0x7C180400, // 00EF CALL R6 2 - 0x7001FF3C, // 00F0 JMP #002E - 0x8C140121, // 00F1 GETMET R5 R0 K33 - 0x7C140200, // 00F2 CALL R5 1 - 0x8C140122, // 00F3 GETMET R5 R0 K34 - 0x7C140200, // 00F4 CALL R5 1 - 0x50180000, // 00F5 LDBOOL R6 0 0 - 0x601C0010, // 00F6 GETGBL R7 G16 - 0x5C200600, // 00F7 MOVE R8 R3 - 0x7C1C0200, // 00F8 CALL R7 1 - 0xA8020008, // 00F9 EXBLK 0 #0103 - 0x5C200E00, // 00FA MOVE R8 R7 - 0x7C200000, // 00FB CALL R8 0 - 0x2024111B, // 00FC NE R9 R8 K27 - 0x78260001, // 00FD JMPF R9 #0100 - 0x50180200, // 00FE LDBOOL R6 1 0 - 0x70020000, // 00FF JMP #0101 - 0x7001FFF8, // 0100 JMP #00FA - 0xA8040001, // 0101 EXBLK 1 1 - 0x70020002, // 0102 JMP #0106 - 0x581C0023, // 0103 LDCONST R7 K35 - 0xAC1C0200, // 0104 CATCH R7 1 0 - 0xB0080000, // 0105 RAISE 2 R0 R0 - 0x781A002C, // 0106 JMPF R6 #0134 - 0x8C1C0124, // 0107 GETMET R7 R0 K36 - 0x60240018, // 0108 GETGBL R9 G24 - 0x58280025, // 0109 LDCONST R10 K37 - 0x5C2C0200, // 010A MOVE R11 R1 - 0x5C300A00, // 010B MOVE R12 R5 - 0x7C240600, // 010C CALL R9 3 - 0x7C1C0400, // 010D CALL R7 2 - 0x601C0010, // 010E GETGBL R7 G16 - 0x6020000C, // 010F GETGBL R8 G12 - 0x5C240400, // 0110 MOVE R9 R2 - 0x7C200200, // 0111 CALL R8 1 - 0x04201127, // 0112 SUB R8 R8 K39 - 0x40224C08, // 0113 CONNECT R8 K38 R8 - 0x7C1C0200, // 0114 CALL R7 1 - 0xA8020016, // 0115 EXBLK 0 #012D - 0x5C200E00, // 0116 MOVE R8 R7 - 0x7C200000, // 0117 CALL R8 0 - 0x60240018, // 0118 GETGBL R9 G24 - 0x58280028, // 0119 LDCONST R10 K40 - 0x942C0408, // 011A GETIDX R11 R2 R8 - 0x7C240400, // 011B CALL R9 2 - 0x94280608, // 011C GETIDX R10 R3 R8 - 0x202C151B, // 011D NE R11 R10 K27 - 0x782E0004, // 011E JMPF R11 #0124 - 0x602C0018, // 011F GETGBL R11 G24 - 0x58300029, // 0120 LDCONST R12 K41 - 0x5C341400, // 0121 MOVE R13 R10 - 0x7C2C0400, // 0122 CALL R11 2 - 0x70020000, // 0123 JMP #0125 - 0x582C001B, // 0124 LDCONST R11 K27 - 0x8C300124, // 0125 GETMET R12 R0 K36 - 0x60380018, // 0126 GETGBL R14 G24 - 0x583C002A, // 0127 LDCONST R15 K42 - 0x5C401200, // 0128 MOVE R16 R9 - 0x5C441600, // 0129 MOVE R17 R11 - 0x7C380600, // 012A CALL R14 3 - 0x7C300400, // 012B CALL R12 2 - 0x7001FFE8, // 012C JMP #0116 - 0x581C0023, // 012D LDCONST R7 K35 - 0xAC1C0200, // 012E CATCH R7 1 0 - 0xB0080000, // 012F RAISE 2 R0 R0 - 0x8C1C0124, // 0130 GETMET R7 R0 K36 - 0x5824002B, // 0131 LDCONST R9 K43 - 0x7C1C0400, // 0132 CALL R7 2 - 0x70020022, // 0133 JMP #0157 - 0x581C001B, // 0134 LDCONST R7 K27 - 0x60200010, // 0135 GETGBL R8 G16 - 0x6024000C, // 0136 GETGBL R9 G12 - 0x5C280400, // 0137 MOVE R10 R2 - 0x7C240200, // 0138 CALL R9 1 - 0x04241327, // 0139 SUB R9 R9 K39 - 0x40264C09, // 013A CONNECT R9 K38 R9 - 0x7C200200, // 013B CALL R8 1 - 0xA802000E, // 013C EXBLK 0 #014C - 0x5C241000, // 013D MOVE R9 R8 - 0x7C240000, // 013E CALL R9 0 - 0x24281326, // 013F GT R10 R9 K38 - 0x782A0000, // 0140 JMPF R10 #0142 - 0x001C0F2C, // 0141 ADD R7 R7 K44 - 0x60280018, // 0142 GETGBL R10 G24 - 0x582C0028, // 0143 LDCONST R11 K40 - 0x94300409, // 0144 GETIDX R12 R2 R9 - 0x7C280400, // 0145 CALL R10 2 - 0x602C0018, // 0146 GETGBL R11 G24 - 0x5830002D, // 0147 LDCONST R12 K45 - 0x5C341400, // 0148 MOVE R13 R10 - 0x7C2C0400, // 0149 CALL R11 2 - 0x001C0E0B, // 014A ADD R7 R7 R11 - 0x7001FFF0, // 014B JMP #013D - 0x58200023, // 014C LDCONST R8 K35 - 0xAC200200, // 014D CATCH R8 1 0 - 0xB0080000, // 014E RAISE 2 R0 R0 - 0x8C200124, // 014F GETMET R8 R0 K36 - 0x60280018, // 0150 GETGBL R10 G24 - 0x582C002E, // 0151 LDCONST R11 K46 - 0x5C300200, // 0152 MOVE R12 R1 - 0x5C340E00, // 0153 MOVE R13 R7 - 0x5C380A00, // 0154 MOVE R14 R5 - 0x7C280800, // 0155 CALL R10 4 - 0x7C200400, // 0156 CALL R8 2 - 0x80000000, // 0157 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_value_provider_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(value_provider), - }), - be_str_weak(_validate_value_provider_factory_exists), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0xB8160200, // 0002 GETNGBL R5 K1 - 0x88140B02, // 0003 GETMBR R5 R5 K2 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_log_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_log_statement_fluent, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_left_paren), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(STRING), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), - /* K9 */ be_nested_str_weak(skip_statement), - /* K10 */ be_nested_str_weak(value), - /* K11 */ be_nested_str_weak(expect_right_paren), - /* K12 */ be_nested_str_weak(collect_inline_comment), - /* K13 */ be_nested_str_weak(process_log_call), - /* K14 */ be_nested_str_weak(fluent), - /* K15 */ be_nested_str_weak(add), - }), - be_str_weak(process_log_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C040102, // 0004 GETMET R1 R0 K2 - 0x7C040200, // 0005 CALL R1 1 - 0x4C080000, // 0006 LDNIL R2 - 0x1C080202, // 0007 EQ R2 R1 R2 - 0x740A0005, // 0008 JMPT R2 #000F - 0x88080303, // 0009 GETMBR R2 R1 K3 - 0xB80E0800, // 000A GETNGBL R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x880C0706, // 000C GETMBR R3 R3 K6 - 0x20080403, // 000D NE R2 R2 R3 - 0x780A0005, // 000E JMPF R2 #0015 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x58100008, // 0010 LDCONST R4 K8 - 0x7C080400, // 0011 CALL R2 2 - 0x8C080109, // 0012 GETMET R2 R0 K9 - 0x7C080200, // 0013 CALL R2 1 - 0x80000400, // 0014 RET 0 - 0x8808030A, // 0015 GETMBR R2 R1 K10 - 0x8C0C0100, // 0016 GETMET R3 R0 K0 - 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C010B, // 0018 GETMET R3 R0 K11 - 0x7C0C0200, // 0019 CALL R3 1 - 0x8C0C010C, // 001A GETMET R3 R0 K12 - 0x7C0C0200, // 001B CALL R3 1 - 0x8C10010D, // 001C GETMET R4 R0 K13 - 0x5C180400, // 001D MOVE R6 R2 - 0x581C000E, // 001E LDCONST R7 K14 - 0x5C200600, // 001F MOVE R8 R3 - 0x7C100800, // 0020 CALL R4 4 - 0x8C14010F, // 0021 GETMET R5 R0 K15 - 0x5C1C0800, // 0022 MOVE R7 R4 - 0x7C140400, // 0023 CALL R5 2 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(process_additive_expression), - }), - be_str_weak(process_value), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x50140200, // 0002 LDBOOL R5 1 0 - 0x50180000, // 0003 LDBOOL R6 0 0 - 0x7C080800, // 0004 CALL R2 4 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_assign -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(ASSIGN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X3D_X27), - }), - be_str_weak(expect_assign), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: convert_color -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ - be_nested_proto( - 17, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(startswith), - /* K2 */ be_nested_str_weak(0x), - /* K3 */ be_nested_str_weak(0xFF_X25s), - /* K4 */ be_const_int(2), - /* K5 */ be_const_int(2147483647), - /* K6 */ be_nested_str_weak(_X23), - /* K7 */ be_nested_str_weak(0x_X25s), - /* K8 */ be_const_int(1), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(0x_X25s_X25s_X25s_X25s_X25s_X25s_X25s_X25s), - /* K11 */ be_nested_str_weak(0xFF_X25s_X25s_X25s_X25s_X25s_X25s), - /* K12 */ be_nested_str_weak(animation_dsl), - /* K13 */ be_nested_str_weak(is_color_name), - /* K14 */ be_nested_str_weak(get_named_color_value), - /* K15 */ be_nested_str_weak(0xFFFFFFFF), - }), - be_str_weak(convert_color), - &be_const_str_solidified, - ( &(const binstruction[110]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x780E0013, // 0005 JMPF R3 #001A - 0x600C000C, // 0006 GETGBL R3 G12 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x54120009, // 0009 LDINT R4 10 - 0x1C0C0604, // 000A EQ R3 R3 R4 - 0x780E0001, // 000B JMPF R3 #000E - 0x80040200, // 000C RET 1 R1 - 0x7002000B, // 000D JMP #001A - 0x600C000C, // 000E GETGBL R3 G12 - 0x5C100200, // 000F MOVE R4 R1 - 0x7C0C0200, // 0010 CALL R3 1 - 0x54120007, // 0011 LDINT R4 8 - 0x1C0C0604, // 0012 EQ R3 R3 R4 - 0x780E0005, // 0013 JMPF R3 #001A - 0x600C0018, // 0014 GETGBL R3 G24 - 0x58100003, // 0015 LDCONST R4 K3 - 0x40160905, // 0016 CONNECT R5 K4 K5 - 0x94140205, // 0017 GETIDX R5 R1 R5 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80040600, // 0019 RET 1 R3 - 0x8C0C0501, // 001A GETMET R3 R2 K1 - 0x5C140200, // 001B MOVE R5 R1 - 0x58180006, // 001C LDCONST R6 K6 - 0x7C0C0600, // 001D CALL R3 3 - 0x780E0044, // 001E JMPF R3 #0064 - 0x600C000C, // 001F GETGBL R3 G12 - 0x5C100200, // 0020 MOVE R4 R1 - 0x7C0C0200, // 0021 CALL R3 1 - 0x54120008, // 0022 LDINT R4 9 - 0x1C0C0604, // 0023 EQ R3 R3 R4 - 0x780E0006, // 0024 JMPF R3 #002C - 0x600C0018, // 0025 GETGBL R3 G24 - 0x58100007, // 0026 LDCONST R4 K7 - 0x40161105, // 0027 CONNECT R5 K8 K5 - 0x94140205, // 0028 GETIDX R5 R1 R5 - 0x7C0C0400, // 0029 CALL R3 2 - 0x80040600, // 002A RET 1 R3 - 0x70020037, // 002B JMP #0064 - 0x600C000C, // 002C GETGBL R3 G12 - 0x5C100200, // 002D MOVE R4 R1 - 0x7C0C0200, // 002E CALL R3 1 - 0x54120006, // 002F LDINT R4 7 - 0x1C0C0604, // 0030 EQ R3 R3 R4 - 0x780E0006, // 0031 JMPF R3 #0039 - 0x600C0018, // 0032 GETGBL R3 G24 - 0x58100003, // 0033 LDCONST R4 K3 - 0x40161105, // 0034 CONNECT R5 K8 K5 - 0x94140205, // 0035 GETIDX R5 R1 R5 - 0x7C0C0400, // 0036 CALL R3 2 - 0x80040600, // 0037 RET 1 R3 - 0x7002002A, // 0038 JMP #0064 - 0x600C000C, // 0039 GETGBL R3 G12 - 0x5C100200, // 003A MOVE R4 R1 - 0x7C0C0200, // 003B CALL R3 1 - 0x54120004, // 003C LDINT R4 5 - 0x1C0C0604, // 003D EQ R3 R3 R4 - 0x780E0011, // 003E JMPF R3 #0051 - 0x940C0308, // 003F GETIDX R3 R1 K8 - 0x94100304, // 0040 GETIDX R4 R1 K4 - 0x94140309, // 0041 GETIDX R5 R1 K9 - 0x541A0003, // 0042 LDINT R6 4 - 0x94180206, // 0043 GETIDX R6 R1 R6 - 0x601C0018, // 0044 GETGBL R7 G24 - 0x5820000A, // 0045 LDCONST R8 K10 - 0x5C240600, // 0046 MOVE R9 R3 - 0x5C280600, // 0047 MOVE R10 R3 - 0x5C2C0800, // 0048 MOVE R11 R4 - 0x5C300800, // 0049 MOVE R12 R4 - 0x5C340A00, // 004A MOVE R13 R5 - 0x5C380A00, // 004B MOVE R14 R5 - 0x5C3C0C00, // 004C MOVE R15 R6 - 0x5C400C00, // 004D MOVE R16 R6 - 0x7C1C1200, // 004E CALL R7 9 - 0x80040E00, // 004F RET 1 R7 - 0x70020012, // 0050 JMP #0064 - 0x600C000C, // 0051 GETGBL R3 G12 - 0x5C100200, // 0052 MOVE R4 R1 - 0x7C0C0200, // 0053 CALL R3 1 - 0x54120003, // 0054 LDINT R4 4 - 0x1C0C0604, // 0055 EQ R3 R3 R4 - 0x780E000C, // 0056 JMPF R3 #0064 - 0x940C0308, // 0057 GETIDX R3 R1 K8 - 0x94100304, // 0058 GETIDX R4 R1 K4 - 0x94140309, // 0059 GETIDX R5 R1 K9 - 0x60180018, // 005A GETGBL R6 G24 - 0x581C000B, // 005B LDCONST R7 K11 - 0x5C200600, // 005C MOVE R8 R3 - 0x5C240600, // 005D MOVE R9 R3 - 0x5C280800, // 005E MOVE R10 R4 - 0x5C2C0800, // 005F MOVE R11 R4 - 0x5C300A00, // 0060 MOVE R12 R5 - 0x5C340A00, // 0061 MOVE R13 R5 - 0x7C180E00, // 0062 CALL R6 7 - 0x80040C00, // 0063 RET 1 R6 - 0xB80E1800, // 0064 GETNGBL R3 K12 - 0x8C0C070D, // 0065 GETMET R3 R3 K13 - 0x5C140200, // 0066 MOVE R5 R1 - 0x7C0C0400, // 0067 CALL R3 2 - 0x780E0003, // 0068 JMPF R3 #006D - 0x8C0C010E, // 0069 GETMET R3 R0 K14 - 0x5C140200, // 006A MOVE R5 R1 - 0x7C0C0400, // 006B CALL R3 2 - 0x80040600, // 006C RET 1 R3 - 0x80061E00, // 006D RET 1 K15 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transform_expression_for_closure -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transform_expression_for_closure, /* name */ - be_nested_proto( - 17, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(strip_length), - /* K3 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - /* K4 */ be_nested_str_weak(animation_X2Eresolve_X28animation_X2E_X25s_X28engine_X29_X29), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(animation_X2Eresolve_X28), - /* K8 */ be_nested_str_weak(), - /* K9 */ be_const_int(2147483647), - /* K10 */ be_nested_str_weak(stop_iteration), - /* K11 */ be_nested_str_weak(_), - /* K12 */ be_nested_str_weak(is_identifier_char), - /* K13 */ be_nested_str_weak(animation_X2E), - /* K14 */ be_nested_str_weak(animation_X2Eresolve_X28_X25s_X29), - }), - be_str_weak(transform_expression_for_closure), - &be_const_str_solidified, - ( &(const binstruction[210]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x58100001, // 0002 LDCONST R4 K1 - 0x60140012, // 0003 GETGBL R5 G18 - 0x7C140000, // 0004 CALL R5 0 - 0x40180B02, // 0005 CONNECT R6 R5 K2 - 0x60180010, // 0006 GETGBL R6 G16 - 0x5C1C0A00, // 0007 MOVE R7 R5 - 0x7C180200, // 0008 CALL R6 1 - 0xA802004F, // 0009 EXBLK 0 #005A - 0x5C1C0C00, // 000A MOVE R7 R6 - 0x7C1C0000, // 000B CALL R7 0 - 0x60200018, // 000C GETGBL R8 G24 - 0x58240003, // 000D LDCONST R9 K3 - 0x5C280E00, // 000E MOVE R10 R7 - 0x7C200400, // 000F CALL R8 2 - 0x60240018, // 0010 GETGBL R9 G24 - 0x58280004, // 0011 LDCONST R10 K4 - 0x5C2C0E00, // 0012 MOVE R11 R7 - 0x7C240400, // 0013 CALL R9 2 - 0x58100001, // 0014 LDCONST R4 K1 - 0x6028000C, // 0015 GETGBL R10 G12 - 0x5C2C0600, // 0016 MOVE R11 R3 - 0x7C280200, // 0017 CALL R10 1 - 0x1428080A, // 0018 LT R10 R4 R10 - 0x782A003E, // 0019 JMPF R10 #0059 - 0x8C280505, // 001A GETMET R10 R2 K5 - 0x5C300600, // 001B MOVE R12 R3 - 0x5C341000, // 001C MOVE R13 R8 - 0x5C380800, // 001D MOVE R14 R4 - 0x7C280800, // 001E CALL R10 4 - 0x142C1501, // 001F LT R11 R10 K1 - 0x782E0000, // 0020 JMPF R11 #0022 - 0x70020036, // 0021 JMP #0059 - 0x542E0011, // 0022 LDINT R11 18 - 0x282C140B, // 0023 GE R11 R10 R11 - 0x782E0002, // 0024 JMPF R11 #0028 - 0x542E0011, // 0025 LDINT R11 18 - 0x042C140B, // 0026 SUB R11 R10 R11 - 0x70020000, // 0027 JMP #0029 - 0x582C0001, // 0028 LDCONST R11 K1 - 0x04301506, // 0029 SUB R12 R10 K6 - 0x4030160C, // 002A CONNECT R12 R11 R12 - 0x9430060C, // 002B GETIDX R12 R3 R12 - 0x8C340505, // 002C GETMET R13 R2 K5 - 0x5C3C1800, // 002D MOVE R15 R12 - 0x58400007, // 002E LDCONST R16 K7 - 0x7C340600, // 002F CALL R13 3 - 0x28341B01, // 0030 GE R13 R13 K1 - 0x78360005, // 0031 JMPF R13 #0038 - 0x6034000C, // 0032 GETGBL R13 G12 - 0x5C381000, // 0033 MOVE R14 R8 - 0x7C340200, // 0034 CALL R13 1 - 0x0034140D, // 0035 ADD R13 R10 R13 - 0x5C101A00, // 0036 MOVE R4 R13 - 0x7001FFDC, // 0037 JMP #0015 - 0x24341501, // 0038 GT R13 R10 K1 - 0x78360003, // 0039 JMPF R13 #003E - 0x04341506, // 003A SUB R13 R10 K6 - 0x4036020D, // 003B CONNECT R13 K1 R13 - 0x9434060D, // 003C GETIDX R13 R3 R13 - 0x70020000, // 003D JMP #003F - 0x58340008, // 003E LDCONST R13 K8 - 0x6038000C, // 003F GETGBL R14 G12 - 0x5C3C1000, // 0040 MOVE R15 R8 - 0x7C380200, // 0041 CALL R14 1 - 0x0038140E, // 0042 ADD R14 R10 R14 - 0x603C000C, // 0043 GETGBL R15 G12 - 0x5C400600, // 0044 MOVE R16 R3 - 0x7C3C0200, // 0045 CALL R15 1 - 0x14381C0F, // 0046 LT R14 R14 R15 - 0x783A0006, // 0047 JMPF R14 #004F - 0x6038000C, // 0048 GETGBL R14 G12 - 0x5C3C1000, // 0049 MOVE R15 R8 - 0x7C380200, // 004A CALL R14 1 - 0x0038140E, // 004B ADD R14 R10 R14 - 0x40381D09, // 004C CONNECT R14 R14 K9 - 0x9438060E, // 004D GETIDX R14 R3 R14 - 0x70020000, // 004E JMP #0050 - 0x58380008, // 004F LDCONST R14 K8 - 0x003C1A09, // 0050 ADD R15 R13 R9 - 0x003C1E0E, // 0051 ADD R15 R15 R14 - 0x5C0C1E00, // 0052 MOVE R3 R15 - 0x603C000C, // 0053 GETGBL R15 G12 - 0x5C401200, // 0054 MOVE R16 R9 - 0x7C3C0200, // 0055 CALL R15 1 - 0x003C140F, // 0056 ADD R15 R10 R15 - 0x5C101E00, // 0057 MOVE R4 R15 - 0x7001FFBB, // 0058 JMP #0015 - 0x7001FFAF, // 0059 JMP #000A - 0x5818000A, // 005A LDCONST R6 K10 - 0xAC180200, // 005B CATCH R6 1 0 - 0xB0080000, // 005C RAISE 2 R0 R0 - 0x58100001, // 005D LDCONST R4 K1 - 0x6018000C, // 005E GETGBL R6 G12 - 0x5C1C0600, // 005F MOVE R7 R3 - 0x7C180200, // 0060 CALL R6 1 - 0x14180806, // 0061 LT R6 R4 R6 - 0x781A006D, // 0062 JMPF R6 #00D1 - 0x8C180505, // 0063 GETMET R6 R2 K5 - 0x5C200600, // 0064 MOVE R8 R3 - 0x5824000B, // 0065 LDCONST R9 K11 - 0x5C280800, // 0066 MOVE R10 R4 - 0x7C180800, // 0067 CALL R6 4 - 0x141C0D01, // 0068 LT R7 R6 K1 - 0x781E0000, // 0069 JMPF R7 #006B - 0x70020065, // 006A JMP #00D1 - 0x5C1C0C00, // 006B MOVE R7 R6 - 0x24200F01, // 006C GT R8 R7 K1 - 0x78220006, // 006D JMPF R8 #0075 - 0x8C20010C, // 006E GETMET R8 R0 K12 - 0x04280F06, // 006F SUB R10 R7 K6 - 0x9428060A, // 0070 GETIDX R10 R3 R10 - 0x7C200400, // 0071 CALL R8 2 - 0x78220001, // 0072 JMPF R8 #0075 - 0x041C0F06, // 0073 SUB R7 R7 K6 - 0x7001FFF6, // 0074 JMP #006C - 0x50200200, // 0075 LDBOOL R8 1 0 - 0x54260011, // 0076 LDINT R9 18 - 0x28240E09, // 0077 GE R9 R7 R9 - 0x78260010, // 0078 JMPF R9 #008A - 0x54260011, // 0079 LDINT R9 18 - 0x28240E09, // 007A GE R9 R7 R9 - 0x78260002, // 007B JMPF R9 #007F - 0x54260011, // 007C LDINT R9 18 - 0x04240E09, // 007D SUB R9 R7 R9 - 0x70020000, // 007E JMP #0080 - 0x58240001, // 007F LDCONST R9 K1 - 0x04280F06, // 0080 SUB R10 R7 K6 - 0x4028120A, // 0081 CONNECT R10 R9 R10 - 0x9428060A, // 0082 GETIDX R10 R3 R10 - 0x8C2C0505, // 0083 GETMET R11 R2 K5 - 0x5C341400, // 0084 MOVE R13 R10 - 0x58380007, // 0085 LDCONST R14 K7 - 0x7C2C0600, // 0086 CALL R11 3 - 0x282C1701, // 0087 GE R11 R11 K1 - 0x782E0000, // 0088 JMPF R11 #008A - 0x50200000, // 0089 LDBOOL R8 0 0 - 0x78220013, // 008A JMPF R8 #009F - 0x54260009, // 008B LDINT R9 10 - 0x28240E09, // 008C GE R9 R7 R9 - 0x78260010, // 008D JMPF R9 #009F - 0x54260009, // 008E LDINT R9 10 - 0x28240E09, // 008F GE R9 R7 R9 - 0x78260002, // 0090 JMPF R9 #0094 - 0x54260009, // 0091 LDINT R9 10 - 0x04240E09, // 0092 SUB R9 R7 R9 - 0x70020000, // 0093 JMP #0095 - 0x58240001, // 0094 LDCONST R9 K1 - 0x04280F06, // 0095 SUB R10 R7 K6 - 0x4028120A, // 0096 CONNECT R10 R9 R10 - 0x9428060A, // 0097 GETIDX R10 R3 R10 - 0x8C2C0505, // 0098 GETMET R11 R2 K5 - 0x5C341400, // 0099 MOVE R13 R10 - 0x5838000D, // 009A LDCONST R14 K13 - 0x7C2C0600, // 009B CALL R11 3 - 0x282C1701, // 009C GE R11 R11 K1 - 0x782E0000, // 009D JMPF R11 #009F - 0x50200000, // 009E LDBOOL R8 0 0 - 0x7822002D, // 009F JMPF R8 #00CE - 0x14240E06, // 00A0 LT R9 R7 R6 - 0x7826002B, // 00A1 JMPF R9 #00CE - 0x40240E06, // 00A2 CONNECT R9 R7 R6 - 0x94240609, // 00A3 GETIDX R9 R3 R9 - 0x00280D06, // 00A4 ADD R10 R6 K6 - 0x602C000C, // 00A5 GETGBL R11 G12 - 0x5C300600, // 00A6 MOVE R12 R3 - 0x7C2C0200, // 00A7 CALL R11 1 - 0x282C140B, // 00A8 GE R11 R10 R11 - 0x742E0003, // 00A9 JMPT R11 #00AE - 0x8C2C010C, // 00AA GETMET R11 R0 K12 - 0x9434060A, // 00AB GETIDX R13 R3 R10 - 0x7C2C0400, // 00AC CALL R11 2 - 0x742E001C, // 00AD JMPT R11 #00CB - 0x602C0018, // 00AE GETGBL R11 G24 - 0x5830000E, // 00AF LDCONST R12 K14 - 0x5C341200, // 00B0 MOVE R13 R9 - 0x7C2C0400, // 00B1 CALL R11 2 - 0x24300F01, // 00B2 GT R12 R7 K1 - 0x78320003, // 00B3 JMPF R12 #00B8 - 0x04300F06, // 00B4 SUB R12 R7 K6 - 0x4032020C, // 00B5 CONNECT R12 K1 R12 - 0x9430060C, // 00B6 GETIDX R12 R3 R12 - 0x70020000, // 00B7 JMP #00B9 - 0x58300008, // 00B8 LDCONST R12 K8 - 0x6034000C, // 00B9 GETGBL R13 G12 - 0x5C380600, // 00BA MOVE R14 R3 - 0x7C340200, // 00BB CALL R13 1 - 0x1434140D, // 00BC LT R13 R10 R13 - 0x78360002, // 00BD JMPF R13 #00C1 - 0x40341509, // 00BE CONNECT R13 R10 K9 - 0x9434060D, // 00BF GETIDX R13 R3 R13 - 0x70020000, // 00C0 JMP #00C2 - 0x58340008, // 00C1 LDCONST R13 K8 - 0x0038180B, // 00C2 ADD R14 R12 R11 - 0x00381C0D, // 00C3 ADD R14 R14 R13 - 0x5C0C1C00, // 00C4 MOVE R3 R14 - 0x6038000C, // 00C5 GETGBL R14 G12 - 0x5C3C1600, // 00C6 MOVE R15 R11 - 0x7C380200, // 00C7 CALL R14 1 - 0x00380E0E, // 00C8 ADD R14 R7 R14 - 0x5C101C00, // 00C9 MOVE R4 R14 - 0x70020001, // 00CA JMP #00CD - 0x002C0D06, // 00CB ADD R11 R6 K6 - 0x5C101600, // 00CC MOVE R4 R11 - 0x70020001, // 00CD JMP #00D0 - 0x00240D06, // 00CE ADD R9 R6 K6 - 0x5C101200, // 00CF MOVE R4 R9 - 0x7001FF8C, // 00D0 JMP #005E - 0x80040600, // 00D1 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_palette_color -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_palette_color, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20color_X20value_X20in_X20palette), - /* K3 */ be_nested_str_weak(0xFFFFFFFF), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(COLOR), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(convert_color), - /* K10 */ be_nested_str_weak(value), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(is_color_name), - /* K13 */ be_nested_str_weak(get_named_color_value), - /* K14 */ be_nested_str_weak(Unknown_X20color_X20_X27_X25s_X27_X2E_X20Palettes_X20only_X20accept_X20hex_X20colors_X20_X280xRRGGBB_X29_X20or_X20predefined_X20color_X20names_X20_X28like_X20_X27red_X27_X2C_X20_X27blue_X27_X2C_X20_X27green_X27_X29_X2C_X20but_X20not_X20custom_X20colors_X20defined_X20previously_X2E_X20For_X20dynamic_X20palettes_X20with_X20custom_X20colors_X2C_X20use_X20user_X20functions_X20instead_X2E), - /* K15 */ be_nested_str_weak(Expected_X20color_X20value_X20in_X20palette_X2E_X20Use_X20hex_X20colors_X20_X280xRRGGBB_X29_X20or_X20predefined_X20color_X20names_X20_X28like_X20_X27red_X27_X2C_X20_X27blue_X27_X2C_X20_X27green_X27_X29_X2E), - }), - be_str_weak(process_palette_color), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080101, // 0005 GETMET R2 R0 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x7C080400, // 0007 CALL R2 2 - 0x80060600, // 0008 RET 1 K3 - 0x88080304, // 0009 GETMBR R2 R1 K4 - 0xB80E0A00, // 000A GETNGBL R3 K5 - 0x880C0706, // 000B GETMBR R3 R3 K6 - 0x880C0707, // 000C GETMBR R3 R3 K7 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x780A0005, // 000E JMPF R2 #0015 - 0x8C080108, // 000F GETMET R2 R0 K8 - 0x7C080200, // 0010 CALL R2 1 - 0x8C080109, // 0011 GETMET R2 R0 K9 - 0x8810030A, // 0012 GETMBR R4 R1 K10 - 0x7C080400, // 0013 CALL R2 2 - 0x80040400, // 0014 RET 1 R2 - 0x88080304, // 0015 GETMBR R2 R1 K4 - 0xB80E0A00, // 0016 GETNGBL R3 K5 - 0x880C0706, // 0017 GETMBR R3 R3 K6 - 0x880C070B, // 0018 GETMBR R3 R3 K11 - 0x1C080403, // 0019 EQ R2 R2 R3 - 0x780A0012, // 001A JMPF R2 #002E - 0x8808030A, // 001B GETMBR R2 R1 K10 - 0x8C0C0108, // 001C GETMET R3 R0 K8 - 0x7C0C0200, // 001D CALL R3 1 - 0xB80E0A00, // 001E GETNGBL R3 K5 - 0x8C0C070C, // 001F GETMET R3 R3 K12 - 0x5C140400, // 0020 MOVE R5 R2 - 0x7C0C0400, // 0021 CALL R3 2 - 0x780E0003, // 0022 JMPF R3 #0027 - 0x8C0C010D, // 0023 GETMET R3 R0 K13 - 0x5C140400, // 0024 MOVE R5 R2 - 0x7C0C0400, // 0025 CALL R3 2 - 0x80040600, // 0026 RET 1 R3 - 0x8C0C0101, // 0027 GETMET R3 R0 K1 - 0x60140018, // 0028 GETGBL R5 G24 - 0x5818000E, // 0029 LDCONST R6 K14 - 0x5C1C0400, // 002A MOVE R7 R2 - 0x7C140400, // 002B CALL R5 2 - 0x7C0C0400, // 002C CALL R3 2 - 0x80060600, // 002D RET 1 K3 - 0x8C080101, // 002E GETMET R2 R0 K1 - 0x5810000F, // 002F LDCONST R4 K15 - 0x7C080400, // 0030 CALL R2 2 - 0x80060600, // 0031 RET 1 K3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_time_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(TIME), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(convert_time_to_ms), - /* K8 */ be_nested_str_weak(NUMBER), - /* K9 */ be_nested_str_weak(IDENTIFIER), - /* K10 */ be_nested_str_weak(_validate_object_reference), - /* K11 */ be_nested_str_weak(duration), - /* K12 */ be_nested_str_weak(process_primary_expression), - /* K13 */ be_nested_str_weak(time), - /* K14 */ be_nested_str_weak(error), - /* K15 */ be_nested_str_weak(Expected_X20time_X20value), - }), - be_str_weak(process_time_value), - &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A000D, // 0004 JMPF R2 #0013 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0007, // 000A JMPF R2 #0013 - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C0107, // 000E GETMET R3 R0 K7 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80040600, // 0011 RET 1 R3 - 0x7002002E, // 0012 JMP #0042 - 0x4C080000, // 0013 LDNIL R2 - 0x20080202, // 0014 NE R2 R1 R2 - 0x780A0011, // 0015 JMPF R2 #0028 - 0x88080301, // 0016 GETMBR R2 R1 K1 - 0xB80E0400, // 0017 GETNGBL R3 K2 - 0x880C0703, // 0018 GETMBR R3 R3 K3 - 0x880C0708, // 0019 GETMBR R3 R3 K8 - 0x1C080403, // 001A EQ R2 R2 R3 - 0x780A000B, // 001B JMPF R2 #0028 - 0x88080305, // 001C GETMBR R2 R1 K5 - 0x8C0C0106, // 001D GETMET R3 R0 K6 - 0x7C0C0200, // 001E CALL R3 1 - 0x600C0009, // 001F GETGBL R3 G9 - 0x6010000A, // 0020 GETGBL R4 G10 - 0x5C140400, // 0021 MOVE R5 R2 - 0x7C100200, // 0022 CALL R4 1 - 0x7C0C0200, // 0023 CALL R3 1 - 0x541203E7, // 0024 LDINT R4 1000 - 0x080C0604, // 0025 MUL R3 R3 R4 - 0x80040600, // 0026 RET 1 R3 - 0x70020019, // 0027 JMP #0042 - 0x4C080000, // 0028 LDNIL R2 - 0x20080202, // 0029 NE R2 R1 R2 - 0x780A0011, // 002A JMPF R2 #003D - 0x88080301, // 002B GETMBR R2 R1 K1 - 0xB80E0400, // 002C GETNGBL R3 K2 - 0x880C0703, // 002D GETMBR R3 R3 K3 - 0x880C0709, // 002E GETMBR R3 R3 K9 - 0x1C080403, // 002F EQ R2 R2 R3 - 0x780A000B, // 0030 JMPF R2 #003D - 0x88080305, // 0031 GETMBR R2 R1 K5 - 0x8C0C010A, // 0032 GETMET R3 R0 K10 - 0x5C140400, // 0033 MOVE R5 R2 - 0x5818000B, // 0034 LDCONST R6 K11 - 0x7C0C0600, // 0035 CALL R3 3 - 0x8C0C010C, // 0036 GETMET R3 R0 K12 - 0x5814000D, // 0037 LDCONST R5 K13 - 0x50180200, // 0038 LDBOOL R6 1 0 - 0x501C0000, // 0039 LDBOOL R7 0 0 - 0x7C0C0800, // 003A CALL R3 4 - 0x80040600, // 003B RET 1 R3 - 0x70020004, // 003C JMP #0042 - 0x8C08010E, // 003D GETMET R2 R0 K14 - 0x5810000F, // 003E LDCONST R4 K15 - 0x7C080400, // 003F CALL R2 2 - 0x540A03E7, // 0040 LDINT R2 1000 - 0x80040400, // 0041 RET 1 R2 - 0x80000000, // 0042 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_simple_function_from_string -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_create_simple_function_from_string, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), - }), - be_str_weak(create_simple_function_from_string), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x60080018, // 0000 GETGBL R2 G24 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_assignment_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_identifier), - /* K1 */ be_nested_str_weak(expect_dot), - /* K2 */ be_nested_str_weak(expect_assign), - /* K3 */ be_nested_str_weak(process_value), - /* K4 */ be_nested_str_weak(property), - /* K5 */ be_nested_str_weak(collect_inline_comment), - /* K6 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2E_X25s_X20_X3D_X20_X25s_X20end), - /* K7 */ be_nested_str_weak(add), - /* K8 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), - /* K9 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_sequence_assignment_fluent), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x8C080100, // 0004 GETMET R2 R0 K0 - 0x7C080200, // 0005 CALL R2 1 - 0x8C0C0102, // 0006 GETMET R3 R0 K2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0103, // 0008 GETMET R3 R0 K3 - 0x58140004, // 0009 LDCONST R5 K4 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C100105, // 000B GETMET R4 R0 K5 - 0x7C100200, // 000C CALL R4 1 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180006, // 000E LDCONST R6 K6 - 0x5C1C0200, // 000F MOVE R7 R1 - 0x5C200400, // 0010 MOVE R8 R2 - 0x5C240600, // 0011 MOVE R9 R3 - 0x7C140800, // 0012 CALL R5 4 - 0x8C180107, // 0013 GETMET R6 R0 K7 - 0x60200018, // 0014 GETGBL R8 G24 - 0x58240008, // 0015 LDCONST R9 K8 - 0x8C280109, // 0016 GETMET R10 R0 K9 - 0x7C280200, // 0017 CALL R10 1 - 0x5C2C0A00, // 0018 MOVE R11 R5 - 0x5C300800, // 0019 MOVE R12 R4 - 0x7C200800, // 001A CALL R8 4 - 0x7C180400, // 001B CALL R6 2 - 0x80000000, // 001C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: peek -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(tokens), - }), - be_str_weak(peek), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x00040301, // 0001 ADD R1 R1 K1 - 0x6008000C, // 0002 GETGBL R2 G12 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x14040202, // 0005 LT R1 R1 R2 - 0x78060004, // 0006 JMPF R1 #000C - 0x88040100, // 0007 GETMBR R1 R0 K0 - 0x00040301, // 0008 ADD R1 R1 K1 - 0x88080102, // 0009 GETMBR R2 R0 K2 - 0x94040401, // 000A GETIDX R1 R2 R1 - 0x70020000, // 000B JMP #000D - 0x4C040000, // 000C LDNIL R1 - 0x80040200, // 000D RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_computation_closure -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_create_computation_closure, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(transform_operand_for_closure), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(_X20_X20), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(replace), - /* K6 */ be_nested_str_weak(_X20), - /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20_X25s_X20_X25s_X20end), - /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), - }), - be_str_weak(create_computation_closure), - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140101, // 0001 GETMET R5 R0 K1 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x7C140400, // 0003 CALL R5 2 - 0x8C180101, // 0004 GETMET R6 R0 K1 - 0x5C200600, // 0005 MOVE R8 R3 - 0x7C180400, // 0006 CALL R6 2 - 0x8C1C0902, // 0007 GETMET R7 R4 K2 - 0x5C240A00, // 0008 MOVE R9 R5 - 0x58280003, // 0009 LDCONST R10 K3 - 0x7C1C0600, // 000A CALL R7 3 - 0x281C0F04, // 000B GE R7 R7 K4 - 0x781E0006, // 000C JMPF R7 #0014 - 0x8C1C0905, // 000D GETMET R7 R4 K5 - 0x5C240A00, // 000E MOVE R9 R5 - 0x58280003, // 000F LDCONST R10 K3 - 0x582C0006, // 0010 LDCONST R11 K6 - 0x7C1C0800, // 0011 CALL R7 4 - 0x5C140E00, // 0012 MOVE R5 R7 - 0x7001FFF2, // 0013 JMP #0007 - 0x8C1C0902, // 0014 GETMET R7 R4 K2 - 0x5C240C00, // 0015 MOVE R9 R6 - 0x58280003, // 0016 LDCONST R10 K3 - 0x7C1C0600, // 0017 CALL R7 3 - 0x281C0F04, // 0018 GE R7 R7 K4 - 0x781E0006, // 0019 JMPF R7 #0021 - 0x8C1C0905, // 001A GETMET R7 R4 K5 - 0x5C240C00, // 001B MOVE R9 R6 - 0x58280003, // 001C LDCONST R10 K3 - 0x582C0006, // 001D LDCONST R11 K6 - 0x7C1C0800, // 001E CALL R7 4 - 0x5C180E00, // 001F MOVE R6 R7 - 0x7001FFF2, // 0020 JMP #0014 - 0x601C0018, // 0021 GETGBL R7 G24 - 0x58200007, // 0022 LDCONST R8 K7 - 0x5C240A00, // 0023 MOVE R9 R5 - 0x5C280400, // 0024 MOVE R10 R2 - 0x5C2C0C00, // 0025 MOVE R11 R6 - 0x7C1C0800, // 0026 CALL R7 4 - 0x60200018, // 0027 GETGBL R8 G24 - 0x58240008, // 0028 LDCONST R9 K8 - 0x5C280E00, // 0029 MOVE R10 R7 - 0x7C200400, // 002A CALL R8 2 - 0x80041000, // 002B RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(IDENTIFIER), - /* K6 */ be_nested_str_weak(KEYWORD), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20function_X20name), - /* K11 */ be_nested_str_weak(nil), - /* K12 */ be_nested_str_weak(is_math_method), - /* K13 */ be_nested_str_weak(process_function_arguments), - /* K14 */ be_nested_str_weak(_X25s_X28_X25s_X29), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(process_log_call), - /* K17 */ be_nested_str_weak(expression), - /* K18 */ be_nested_str_weak(template_definitions), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K21 */ be_nested_str_weak(engine), - /* K22 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), - /* K23 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), - /* K24 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - }), - be_str_weak(process_function_call), - &be_const_str_solidified, - ( &(const binstruction[88]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x4C100000, // 0003 LDNIL R4 - 0x20100404, // 0004 NE R4 R2 R4 - 0x7812000F, // 0005 JMPF R4 #0016 - 0x88100502, // 0006 GETMBR R4 R2 K2 - 0xB8160600, // 0007 GETNGBL R5 K3 - 0x88140B04, // 0008 GETMBR R5 R5 K4 - 0x88140B05, // 0009 GETMBR R5 R5 K5 - 0x1C100805, // 000A EQ R4 R4 R5 - 0x74120005, // 000B JMPT R4 #0012 - 0x88100502, // 000C GETMBR R4 R2 K2 - 0xB8160600, // 000D GETNGBL R5 K3 - 0x88140B04, // 000E GETMBR R5 R5 K4 - 0x88140B06, // 000F GETMBR R5 R5 K6 - 0x1C100805, // 0010 EQ R4 R4 R5 - 0x78120003, // 0011 JMPF R4 #0016 - 0x880C0507, // 0012 GETMBR R3 R2 K7 - 0x8C100108, // 0013 GETMET R4 R0 K8 - 0x7C100200, // 0014 CALL R4 1 - 0x70020003, // 0015 JMP #001A - 0x8C100109, // 0016 GETMET R4 R0 K9 - 0x5818000A, // 0017 LDCONST R6 K10 - 0x7C100400, // 0018 CALL R4 2 - 0x80061600, // 0019 RET 1 K11 - 0x8C10010C, // 001A GETMET R4 R0 K12 - 0x5C180600, // 001B MOVE R6 R3 - 0x7C100400, // 001C CALL R4 2 - 0x78120008, // 001D JMPF R4 #0027 - 0x8C10010D, // 001E GETMET R4 R0 K13 - 0x50180000, // 001F LDBOOL R6 0 0 - 0x7C100400, // 0020 CALL R4 2 - 0x60140018, // 0021 GETGBL R5 G24 - 0x5818000E, // 0022 LDCONST R6 K14 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x5C200800, // 0024 MOVE R8 R4 - 0x7C140600, // 0025 CALL R5 3 - 0x80040A00, // 0026 RET 1 R5 - 0x1C10070F, // 0027 EQ R4 R3 K15 - 0x78120008, // 0028 JMPF R4 #0032 - 0x8C10010D, // 0029 GETMET R4 R0 K13 - 0x50180000, // 002A LDBOOL R6 0 0 - 0x7C100400, // 002B CALL R4 2 - 0x8C140110, // 002C GETMET R5 R0 K16 - 0x5C1C0800, // 002D MOVE R7 R4 - 0x58200011, // 002E LDCONST R8 K17 - 0x58240001, // 002F LDCONST R9 K1 - 0x7C140800, // 0030 CALL R5 4 - 0x80040A00, // 0031 RET 1 R5 - 0x8C10010D, // 0032 GETMET R4 R0 K13 - 0x50180000, // 0033 LDBOOL R6 0 0 - 0x7C100400, // 0034 CALL R4 2 - 0x88140112, // 0035 GETMBR R5 R0 K18 - 0x8C140B13, // 0036 GETMET R5 R5 K19 - 0x5C1C0600, // 0037 MOVE R7 R3 - 0x7C140400, // 0038 CALL R5 2 - 0x7816000E, // 0039 JMPF R5 #0049 - 0x20140901, // 003A NE R5 R4 K1 - 0x78160004, // 003B JMPF R5 #0041 - 0x60140018, // 003C GETGBL R5 G24 - 0x58180014, // 003D LDCONST R6 K20 - 0x5C1C0800, // 003E MOVE R7 R4 - 0x7C140400, // 003F CALL R5 2 - 0x70020000, // 0040 JMP #0042 - 0x58140015, // 0041 LDCONST R5 K21 - 0x60180018, // 0042 GETGBL R6 G24 - 0x581C0016, // 0043 LDCONST R7 K22 - 0x5C200600, // 0044 MOVE R8 R3 - 0x5C240A00, // 0045 MOVE R9 R5 - 0x7C180600, // 0046 CALL R6 3 - 0x80040C00, // 0047 RET 1 R6 - 0x7002000D, // 0048 JMP #0057 - 0x20140901, // 0049 NE R5 R4 K1 - 0x78160006, // 004A JMPF R5 #0052 - 0x60140018, // 004B GETGBL R5 G24 - 0x58180017, // 004C LDCONST R6 K23 - 0x5C1C0600, // 004D MOVE R7 R3 - 0x5C200800, // 004E MOVE R8 R4 - 0x7C140600, // 004F CALL R5 3 - 0x80040A00, // 0050 RET 1 R5 - 0x70020004, // 0051 JMP #0057 - 0x60140018, // 0052 GETGBL R5 G24 - 0x58180018, // 0053 LDCONST R6 K24 - 0x5C1C0600, // 0054 MOVE R7 R3 - 0x7C140400, // 0055 CALL R5 2 - 0x80040A00, // 0056 RET 1 R5 - 0x80000000, // 0057 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_event_parameters -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_event_parameters, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_X7B), - /* K2 */ be_nested_str_weak(at_end), - /* K3 */ be_nested_str_weak(check_right_paren), - /* K4 */ be_nested_str_weak(current), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(animation_dsl), - /* K7 */ be_nested_str_weak(Token), - /* K8 */ be_nested_str_weak(TIME), - /* K9 */ be_nested_str_weak(process_time_value), - /* K10 */ be_nested_str_weak(_X22interval_X22_X3A_X20_X25s), - /* K11 */ be_nested_str_weak(process_value), - /* K12 */ be_nested_str_weak(event_param), - /* K13 */ be_nested_str_weak(_X22value_X22_X3A_X20_X25s), - /* K14 */ be_nested_str_weak(expect_right_paren), - /* K15 */ be_nested_str_weak(_X7D), - }), - be_str_weak(process_event_parameters), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58040001, // 0002 LDCONST R1 K1 - 0x8C080102, // 0003 GETMET R2 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x740A001D, // 0005 JMPT R2 #0024 - 0x8C080103, // 0006 GETMET R2 R0 K3 - 0x7C080200, // 0007 CALL R2 1 - 0x740A001A, // 0008 JMPT R2 #0024 - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x4C0C0000, // 000B LDNIL R3 - 0x200C0403, // 000C NE R3 R2 R3 - 0x780E000D, // 000D JMPF R3 #001C - 0x880C0505, // 000E GETMBR R3 R2 K5 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x88100907, // 0010 GETMBR R4 R4 K7 - 0x88100908, // 0011 GETMBR R4 R4 K8 - 0x1C0C0604, // 0012 EQ R3 R3 R4 - 0x780E0007, // 0013 JMPF R3 #001C - 0x8C0C0109, // 0014 GETMET R3 R0 K9 - 0x7C0C0200, // 0015 CALL R3 1 - 0x60100018, // 0016 GETGBL R4 G24 - 0x5814000A, // 0017 LDCONST R5 K10 - 0x5C180600, // 0018 MOVE R6 R3 - 0x7C100400, // 0019 CALL R4 2 - 0x00040204, // 001A ADD R1 R1 R4 - 0x70020007, // 001B JMP #0024 - 0x8C0C010B, // 001C GETMET R3 R0 K11 - 0x5814000C, // 001D LDCONST R5 K12 - 0x7C0C0400, // 001E CALL R3 2 - 0x60100018, // 001F GETGBL R4 G24 - 0x5814000D, // 0020 LDCONST R5 K13 - 0x5C180600, // 0021 MOVE R6 R3 - 0x7C100400, // 0022 CALL R4 2 - 0x00040204, // 0023 ADD R1 R1 R4 - 0x8C08010E, // 0024 GETMET R2 R0 K14 - 0x7C080200, // 0025 CALL R2 1 - 0x0004030F, // 0026 ADD R1 R1 K15 - 0x80040200, // 0027 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_log_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_log_call, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(fluent), - /* K1 */ be_nested_str_weak(def_X20_X28engine_X29_X20log_X28f_X22_X25s_X22_X2C_X203_X29_X20end), - /* K2 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), - /* K3 */ be_nested_str_weak(get_indent), - /* K4 */ be_nested_str_weak(expression), - /* K5 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29), - /* K6 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29_X25s), - }), - be_str_weak(process_log_call), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x1C100500, // 0000 EQ R4 R2 K0 - 0x7812000C, // 0001 JMPF R4 #000F - 0x60100018, // 0002 GETGBL R4 G24 - 0x58140001, // 0003 LDCONST R5 K1 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x60140018, // 0006 GETGBL R5 G24 - 0x58180002, // 0007 LDCONST R6 K2 - 0x8C1C0103, // 0008 GETMET R7 R0 K3 - 0x7C1C0200, // 0009 CALL R7 1 - 0x5C200800, // 000A MOVE R8 R4 - 0x5C240600, // 000B MOVE R9 R3 - 0x7C140800, // 000C CALL R5 4 - 0x80040A00, // 000D RET 1 R5 - 0x7002000D, // 000E JMP #001D - 0x1C100504, // 000F EQ R4 R2 K4 - 0x78120005, // 0010 JMPF R4 #0017 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140005, // 0012 LDCONST R5 K5 - 0x5C180200, // 0013 MOVE R6 R1 - 0x7C100400, // 0014 CALL R4 2 - 0x80040800, // 0015 RET 1 R4 - 0x70020005, // 0016 JMP #001D - 0x60100018, // 0017 GETGBL R4 G24 - 0x58140006, // 0018 LDCONST R5 K6 - 0x5C180200, // 0019 MOVE R6 R1 - 0x5C1C0600, // 001A MOVE R7 R3 - 0x7C100600, // 001B CALL R4 3 - 0x80040800, // 001C RET 1 R4 - 0x80000000, // 001D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_single_parameter -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(_has_param), - /* K3 */ be_nested_str_weak(current), - /* K4 */ be_nested_str_weak(line), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Animation_X20_X27_X25s_X27_X20does_X20not_X20have_X20parameter_X20_X27_X25s_X27_X2E_X20Check_X20the_X20animation_X20documentation_X20for_X20valid_X20parameters_X2E), - }), - be_str_weak(_validate_single_parameter), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0xA802001F, // 0000 EXBLK 0 #0021 - 0xA4120000, // 0001 IMPORT R4 K0 - 0x4C140000, // 0002 LDNIL R5 - 0x20140605, // 0003 NE R5 R3 R5 - 0x78160019, // 0004 JMPF R5 #001F - 0x8C140901, // 0005 GETMET R5 R4 K1 - 0x5C1C0600, // 0006 MOVE R7 R3 - 0x58200002, // 0007 LDCONST R8 K2 - 0x7C140600, // 0008 CALL R5 3 - 0x78160014, // 0009 JMPF R5 #001F - 0x8C140702, // 000A GETMET R5 R3 K2 - 0x5C1C0400, // 000B MOVE R7 R2 - 0x7C140400, // 000C CALL R5 2 - 0x74160010, // 000D JMPT R5 #001F - 0x8C140103, // 000E GETMET R5 R0 K3 - 0x7C140200, // 000F CALL R5 1 - 0x4C180000, // 0010 LDNIL R6 - 0x20140A06, // 0011 NE R5 R5 R6 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140103, // 0013 GETMET R5 R0 K3 - 0x7C140200, // 0014 CALL R5 1 - 0x88140B04, // 0015 GETMBR R5 R5 K4 - 0x70020000, // 0016 JMP #0018 - 0x58140005, // 0017 LDCONST R5 K5 - 0x8C180106, // 0018 GETMET R6 R0 K6 - 0x60200018, // 0019 GETGBL R8 G24 - 0x58240007, // 001A LDCONST R9 K7 - 0x5C280200, // 001B MOVE R10 R1 - 0x5C2C0400, // 001C MOVE R11 R2 - 0x7C200600, // 001D CALL R8 3 - 0x7C180400, // 001E CALL R6 2 - 0xA8040001, // 001F EXBLK 1 1 - 0x70020003, // 0020 JMP #0025 - 0xAC100002, // 0021 CATCH R4 0 2 - 0x70020000, // 0022 JMP #0024 - 0x70020000, // 0023 JMP #0025 - 0xB0080000, // 0024 RAISE 2 R0 R0 - 0x80000000, // 0025 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transform_operand_for_closure -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transform_operand_for_closure, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(animation_X2Ecreate_closure_value), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(return_X20_X28), - /* K5 */ be_nested_str_weak(_X20_X20), - /* K6 */ be_nested_str_weak(replace), - /* K7 */ be_nested_str_weak(_X20), - /* K8 */ be_nested_str_weak(_), - /* K9 */ be_nested_str_weak(_X28), - /* K10 */ be_nested_str_weak(animation_X2E), - /* K11 */ be_nested_str_weak(animation_X2Eresolve_X28_X25s_X29), - }), - be_str_weak(transform_operand_for_closure), - &be_const_str_solidified, - ( &(const binstruction[69]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x280C0703, // 0005 GE R3 R3 K3 - 0x780E001A, // 0006 JMPF R3 #0022 - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x5C140200, // 0008 MOVE R5 R1 - 0x58180004, // 0009 LDCONST R6 K4 - 0x7C0C0600, // 000A CALL R3 3 - 0x54120007, // 000B LDINT R4 8 - 0x000C0604, // 000C ADD R3 R3 R4 - 0x6010000C, // 000D GETGBL R4 G12 - 0x5C140200, // 000E MOVE R5 R1 - 0x7C100200, // 000F CALL R4 1 - 0x54160004, // 0010 LDINT R5 5 - 0x04100805, // 0011 SUB R4 R4 R5 - 0x40140604, // 0012 CONNECT R5 R3 R4 - 0x94140205, // 0013 GETIDX R5 R1 R5 - 0x8C180501, // 0014 GETMET R6 R2 K1 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x58240005, // 0016 LDCONST R9 K5 - 0x7C180600, // 0017 CALL R6 3 - 0x28180D03, // 0018 GE R6 R6 K3 - 0x781A0006, // 0019 JMPF R6 #0021 - 0x8C180506, // 001A GETMET R6 R2 K6 - 0x5C200A00, // 001B MOVE R8 R5 - 0x58240005, // 001C LDCONST R9 K5 - 0x58280007, // 001D LDCONST R10 K7 - 0x7C180800, // 001E CALL R6 4 - 0x5C140C00, // 001F MOVE R5 R6 - 0x7001FFF2, // 0020 JMP #0014 - 0x80040A00, // 0021 RET 1 R5 - 0x8C0C0501, // 0022 GETMET R3 R2 K1 - 0x5C140200, // 0023 MOVE R5 R1 - 0x58180008, // 0024 LDCONST R6 K8 - 0x7C0C0600, // 0025 CALL R3 3 - 0x280C0703, // 0026 GE R3 R3 K3 - 0x8C100501, // 0027 GETMET R4 R2 K1 - 0x5C180200, // 0028 MOVE R6 R1 - 0x581C0007, // 0029 LDCONST R7 K7 - 0x7C100600, // 002A CALL R4 3 - 0x28100903, // 002B GE R4 R4 K3 - 0x8C140501, // 002C GETMET R5 R2 K1 - 0x5C1C0200, // 002D MOVE R7 R1 - 0x58200009, // 002E LDCONST R8 K9 - 0x7C140600, // 002F CALL R5 3 - 0x28140B03, // 0030 GE R5 R5 K3 - 0x8C180501, // 0031 GETMET R6 R2 K1 - 0x5C200200, // 0032 MOVE R8 R1 - 0x5824000A, // 0033 LDCONST R9 K10 - 0x7C180600, // 0034 CALL R6 3 - 0x28180D03, // 0035 GE R6 R6 K3 - 0x780E000B, // 0036 JMPF R3 #0043 - 0x5C1C0800, // 0037 MOVE R7 R4 - 0x741E0009, // 0038 JMPT R7 #0043 - 0x5C1C0A00, // 0039 MOVE R7 R5 - 0x741E0007, // 003A JMPT R7 #0043 - 0x5C1C0C00, // 003B MOVE R7 R6 - 0x741E0005, // 003C JMPT R7 #0043 - 0x601C0018, // 003D GETGBL R7 G24 - 0x5820000B, // 003E LDCONST R8 K11 - 0x5C240200, // 003F MOVE R9 R1 - 0x7C1C0400, // 0040 CALL R7 2 - 0x80040E00, // 0041 RET 1 R7 - 0x70020000, // 0042 JMP #0044 - 0x80040200, // 0043 RET 1 R1 - 0x80000000, // 0044 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_run -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(_validate_object_reference), - /* K3 */ be_nested_str_weak(run), - /* K4 */ be_nested_str_weak(collect_inline_comment), - /* K5 */ be_nested_str_weak(run_statements), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(comment), - }), - be_str_weak(process_run), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x8C080104, // 0008 GETMET R2 R0 K4 - 0x7C080200, // 0009 CALL R2 1 - 0x880C0105, // 000A GETMBR R3 R0 K5 - 0x8C0C0706, // 000B GETMET R3 R3 K6 - 0x60140013, // 000C GETGBL R5 G19 - 0x7C140000, // 000D CALL R5 0 - 0x98160E01, // 000E SETIDX R5 K7 R1 - 0x98161002, // 000F SETIDX R5 K8 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: has_errors -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_has_errors, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(errors), - /* K1 */ be_const_int(0), - }), - be_str_weak(has_errors), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x24040301, // 0003 GT R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _create_instance_for_validation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__create_instance_for_validation, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(MockEngine), - /* K2 */ be_nested_str_weak(introspect), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(animation), - /* K5 */ be_nested_str_weak(class), - /* K6 */ be_nested_str_weak(function), - }), - be_str_weak(_create_instance_for_validation), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0xA802001E, // 0000 EXBLK 0 #0020 - 0xB80A0000, // 0001 GETNGBL R2 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0xA40E0400, // 0004 IMPORT R3 K2 - 0x8C100703, // 0005 GETMET R4 R3 K3 - 0xB81A0800, // 0006 GETNGBL R6 K4 - 0x5C1C0200, // 0007 MOVE R7 R1 - 0x7C100600, // 0008 CALL R4 3 - 0x78120010, // 0009 JMPF R4 #001B - 0xB8120800, // 000A GETNGBL R4 K4 - 0x88100801, // 000B GETMBR R4 R4 R1 - 0x60140004, // 000C GETGBL R5 G4 - 0x5C180800, // 000D MOVE R6 R4 - 0x7C140200, // 000E CALL R5 1 - 0x1C140B05, // 000F EQ R5 R5 K5 - 0x74160004, // 0010 JMPT R5 #0016 - 0x60140004, // 0011 GETGBL R5 G4 - 0x5C180800, // 0012 MOVE R6 R4 - 0x7C140200, // 0013 CALL R5 1 - 0x1C140B06, // 0014 EQ R5 R5 K6 - 0x78160004, // 0015 JMPF R5 #001B - 0x5C140800, // 0016 MOVE R5 R4 - 0x5C180400, // 0017 MOVE R6 R2 - 0x7C140200, // 0018 CALL R5 1 - 0xA8040001, // 0019 EXBLK 1 1 - 0x80040A00, // 001A RET 1 R5 - 0x4C100000, // 001B LDNIL R4 - 0xA8040001, // 001C EXBLK 1 1 - 0x80040800, // 001D RET 1 R4 - 0xA8040001, // 001E EXBLK 1 1 - 0x70020005, // 001F JMP #0026 - 0xAC080002, // 0020 CATCH R2 0 2 - 0x70020002, // 0021 JMP #0025 - 0x4C100000, // 0022 LDNIL R4 - 0x80040800, // 0023 RET 1 R4 - 0x70020000, // 0024 JMP #0026 - 0xB0080000, // 0025 RAISE 2 R0 R0 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_default_strip_initialization -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(strip_initialized), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_nested_str_weak(_X23_X20Auto_X2Dgenerated_X20strip_X20initialization_X20_X28using_X20Tasmota_X20configuration_X29), - /* K3 */ be_nested_str_weak(var_X20engine_X20_X3D_X20animation_X2Einit_strip_X28_X29), - /* K4 */ be_nested_str_weak(), - }), - be_str_weak(generate_default_strip_initialization), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x7C040400, // 0005 CALL R1 2 - 0x8C040101, // 0006 GETMET R1 R0 K1 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x7C040400, // 0008 CALL R1 2 - 0x8C040101, // 0009 GETMET R1 R0 K1 - 0x580C0004, // 000A LDCONST R3 K4 - 0x7C040400, // 000B CALL R1 2 - 0x50040200, // 000C LDBOOL R1 1 0 - 0x90020001, // 000D SETMBR R0 K0 R1 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_array_literal -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_bracket), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_bracket), - /* K3 */ be_nested_str_weak(process_value), - /* K4 */ be_nested_str_weak(array_element), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(COMMA), - /* K11 */ be_nested_str_weak(next), - /* K12 */ be_nested_str_weak(error), - /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20array_X20literal), - /* K14 */ be_nested_str_weak(expect_right_bracket), - /* K15 */ be_nested_str_weak(_X5B), - /* K16 */ be_const_int(0), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(_X2C_X20), - /* K19 */ be_nested_str_weak(stop_iteration), - /* K20 */ be_nested_str_weak(_X5D), - }), - be_str_weak(process_array_literal), - &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x740A0020, // 0006 JMPT R2 #0028 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x740A001D, // 0009 JMPT R2 #0028 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 - 0x7C080400, // 000C CALL R2 2 - 0x8C0C0305, // 000D GETMET R3 R1 K5 - 0x5C140400, // 000E MOVE R5 R2 - 0x7C0C0400, // 000F CALL R3 2 - 0x8C0C0106, // 0010 GETMET R3 R0 K6 - 0x7C0C0200, // 0011 CALL R3 1 - 0x4C100000, // 0012 LDNIL R4 - 0x200C0604, // 0013 NE R3 R3 R4 - 0x780E000A, // 0014 JMPF R3 #0020 - 0x8C0C0106, // 0015 GETMET R3 R0 K6 - 0x7C0C0200, // 0016 CALL R3 1 - 0x880C0707, // 0017 GETMBR R3 R3 K7 - 0xB8121000, // 0018 GETNGBL R4 K8 - 0x88100909, // 0019 GETMBR R4 R4 K9 - 0x8810090A, // 001A GETMBR R4 R4 K10 - 0x1C0C0604, // 001B EQ R3 R3 R4 - 0x780E0002, // 001C JMPF R3 #0020 - 0x8C0C010B, // 001D GETMET R3 R0 K11 - 0x7C0C0200, // 001E CALL R3 1 - 0x70020006, // 001F JMP #0027 - 0x8C0C0102, // 0020 GETMET R3 R0 K2 - 0x7C0C0200, // 0021 CALL R3 1 - 0x740E0003, // 0022 JMPT R3 #0027 - 0x8C0C010C, // 0023 GETMET R3 R0 K12 - 0x5814000D, // 0024 LDCONST R5 K13 - 0x7C0C0400, // 0025 CALL R3 2 - 0x70020000, // 0026 JMP #0028 - 0x7001FFDB, // 0027 JMP #0004 - 0x8C08010E, // 0028 GETMET R2 R0 K14 - 0x7C080200, // 0029 CALL R2 1 - 0x5808000F, // 002A LDCONST R2 K15 - 0x600C0010, // 002B GETGBL R3 G16 - 0x6010000C, // 002C GETGBL R4 G12 - 0x5C140200, // 002D MOVE R5 R1 - 0x7C100200, // 002E CALL R4 1 - 0x04100911, // 002F SUB R4 R4 K17 - 0x40122004, // 0030 CONNECT R4 K16 R4 - 0x7C0C0200, // 0031 CALL R3 1 - 0xA8020007, // 0032 EXBLK 0 #003B - 0x5C100600, // 0033 MOVE R4 R3 - 0x7C100000, // 0034 CALL R4 0 - 0x24140910, // 0035 GT R5 R4 K16 - 0x78160000, // 0036 JMPF R5 #0038 - 0x00080512, // 0037 ADD R2 R2 K18 - 0x94140204, // 0038 GETIDX R5 R1 R4 - 0x00080405, // 0039 ADD R2 R2 R5 - 0x7001FFF7, // 003A JMP #0033 - 0x580C0013, // 003B LDCONST R3 K19 - 0xAC0C0200, // 003C CATCH R3 1 0 - 0xB0080000, // 003D RAISE 2 R0 R0 - 0x00080514, // 003E ADD R2 R2 K20 - 0x80040400, // 003F RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: convert_time_to_ms -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(endswith), - /* K2 */ be_nested_str_weak(ms), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(s), - /* K5 */ be_nested_str_weak(m), - /* K6 */ be_nested_str_weak(h), - /* K7 */ be_const_int(3600000), - }), - be_str_weak(convert_time_to_ms), - &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x600C0009, // 0006 GETGBL R3 G9 - 0x6010000A, // 0007 GETGBL R4 G10 - 0x5415FFFC, // 0008 LDINT R5 -3 - 0x40160605, // 0009 CONNECT R5 K3 R5 - 0x94140205, // 000A GETIDX R5 R1 R5 - 0x7C100200, // 000B CALL R4 1 - 0x7C0C0200, // 000C CALL R3 1 - 0x80040600, // 000D RET 1 R3 - 0x7002002D, // 000E JMP #003D - 0x8C0C0501, // 000F GETMET R3 R2 K1 - 0x5C140200, // 0010 MOVE R5 R1 - 0x58180004, // 0011 LDCONST R6 K4 - 0x7C0C0600, // 0012 CALL R3 3 - 0x780E000A, // 0013 JMPF R3 #001F - 0x600C0009, // 0014 GETGBL R3 G9 - 0x6010000A, // 0015 GETGBL R4 G10 - 0x5415FFFD, // 0016 LDINT R5 -2 - 0x40160605, // 0017 CONNECT R5 K3 R5 - 0x94140205, // 0018 GETIDX R5 R1 R5 - 0x7C100200, // 0019 CALL R4 1 - 0x541603E7, // 001A LDINT R5 1000 - 0x08100805, // 001B MUL R4 R4 R5 - 0x7C0C0200, // 001C CALL R3 1 - 0x80040600, // 001D RET 1 R3 - 0x7002001D, // 001E JMP #003D - 0x8C0C0501, // 001F GETMET R3 R2 K1 - 0x5C140200, // 0020 MOVE R5 R1 - 0x58180005, // 0021 LDCONST R6 K5 - 0x7C0C0600, // 0022 CALL R3 3 - 0x780E000A, // 0023 JMPF R3 #002F - 0x600C0009, // 0024 GETGBL R3 G9 - 0x6010000A, // 0025 GETGBL R4 G10 - 0x5415FFFD, // 0026 LDINT R5 -2 - 0x40160605, // 0027 CONNECT R5 K3 R5 - 0x94140205, // 0028 GETIDX R5 R1 R5 - 0x7C100200, // 0029 CALL R4 1 - 0x5416EA5F, // 002A LDINT R5 60000 - 0x08100805, // 002B MUL R4 R4 R5 - 0x7C0C0200, // 002C CALL R3 1 - 0x80040600, // 002D RET 1 R3 - 0x7002000D, // 002E JMP #003D - 0x8C0C0501, // 002F GETMET R3 R2 K1 - 0x5C140200, // 0030 MOVE R5 R1 - 0x58180006, // 0031 LDCONST R6 K6 - 0x7C0C0600, // 0032 CALL R3 3 - 0x780E0008, // 0033 JMPF R3 #003D - 0x600C0009, // 0034 GETGBL R3 G9 - 0x6010000A, // 0035 GETGBL R4 G10 - 0x5415FFFD, // 0036 LDINT R5 -2 - 0x40160605, // 0037 CONNECT R5 K3 R5 - 0x94140205, // 0038 GETIDX R5 R1 R5 - 0x7C100200, // 0039 CALL R4 1 - 0x08100907, // 003A MUL R4 R4 K7 - 0x7C0C0200, // 003B CALL R3 1 - 0x80040600, // 003C RET 1 R3 - 0x540E03E7, // 003D LDINT R3 1000 - 0x80040600, // 003E RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_for_color_provider -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_process_named_arguments_unified), - /* K1 */ be_nested_str_weak(color_provider), - }), - be_str_weak(_process_named_arguments_for_color_provider), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x581C0001, // 0003 LDCONST R7 K1 - 0x7C0C0800, // 0004 CALL R3 4 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: current -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_current, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_nested_str_weak(tokens), - }), - be_str_weak(current), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14040202, // 0004 LT R1 R1 R2 - 0x78060003, // 0005 JMPF R1 #000A - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x94040202, // 0008 GETIDX R1 R1 R2 - 0x70020000, // 0009 JMP #000B - 0x4C040000, // 000A LDNIL R1 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_math_method -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_math_method, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(animation), - /* K3 */ be_nested_str_weak(_math), - }), - be_str_weak(is_math_method), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0xA8020009, // 0000 EXBLK 0 #000B - 0xA40A0000, // 0001 IMPORT R2 K0 - 0x8C0C0501, // 0002 GETMET R3 R2 K1 - 0xB8160400, // 0003 GETNGBL R5 K2 - 0x88140B03, // 0004 GETMBR R5 R5 K3 - 0x5C180200, // 0005 MOVE R6 R1 - 0x7C0C0600, // 0006 CALL R3 3 - 0xA8040001, // 0007 EXBLK 1 1 - 0x80040600, // 0008 RET 1 R3 - 0xA8040001, // 0009 EXBLK 1 1 - 0x70020005, // 000A JMP #0011 - 0xAC080002, // 000B CATCH R2 0 2 - 0x70020002, // 000C JMP #0010 - 0x50100000, // 000D LDBOOL R4 0 0 - 0x80040800, // 000E RET 1 R4 - 0x70020000, // 000F JMP #0011 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_comma -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(COMMA), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), - }), - be_str_weak(expect_comma), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_BRACKET), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X5B_X27), - }), - be_str_weak(expect_left_bracket), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: SimpleDSLTranspiler -********************************************************************/ -be_local_class(SimpleDSLTranspiler, - 12, +be_local_class(MockEngine, + 1, NULL, - be_nested_map(122, + be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, - { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, - { be_const_key_weak(symbol_exists, -1), be_const_closure(class_SimpleDSLTranspiler_symbol_exists_closure) }, - { be_const_key_weak(is_math_method, 81), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, - { be_const_key_weak(at_end, 85), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, - { be_const_key_weak(process_wait_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_closure) }, - { be_const_key_weak(is_computed_expression, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, - { be_const_key_weak(_process_user_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, - { be_const_key_weak(expect_identifier, 121), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, - { be_const_key_weak(_process_named_arguments_for_color_provider, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider_closure) }, - { be_const_key_weak(process_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, - { be_const_key_weak(process_standalone_log, -1), be_const_closure(class_SimpleDSLTranspiler_process_standalone_log_closure) }, - { be_const_key_weak(resolve_symbol_reference, 57), be_const_closure(class_SimpleDSLTranspiler_resolve_symbol_reference_closure) }, - { be_const_key_weak(named_colors, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(37, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(brown, -1), be_nested_str_weak(0xFFA52A2A) }, - { be_const_key_weak(silver, -1), be_nested_str_weak(0xFFC0C0C0) }, - { be_const_key_weak(salmon, -1), be_nested_str_weak(0xFFFA8072) }, - { be_const_key_weak(transparent, -1), be_nested_str_weak(0x00000000) }, - { be_const_key_weak(lime, 30), be_nested_str_weak(0xFF00FF00) }, - { be_const_key_weak(coral, 18), be_nested_str_weak(0xFFFF7F50) }, - { be_const_key_weak(cyan, -1), be_nested_str_weak(0xFF00FFFF) }, - { be_const_key_weak(olive, -1), be_nested_str_weak(0xFF808000) }, - { be_const_key_weak(snow, 16), be_nested_str_weak(0xFFFFFAFA) }, - { be_const_key_weak(violet, -1), be_nested_str_weak(0xFFEE82EE) }, - { be_const_key_weak(green, 19), be_nested_str_weak(0xFF008000) }, - { be_const_key_weak(turquoise, -1), be_nested_str_weak(0xFF40E0D0) }, - { be_const_key_weak(grey, -1), be_nested_str_weak(0xFF808080) }, - { be_const_key_weak(indigo, -1), be_nested_str_weak(0xFF4B0082) }, - { be_const_key_weak(gray, 20), be_nested_str_weak(0xFF808080) }, - { be_const_key_weak(white, 21), be_nested_str_weak(0xFFFFFFFF) }, - { be_const_key_weak(red, -1), be_nested_str_weak(0xFFFF0000) }, - { be_const_key_weak(orange, -1), be_nested_str_weak(0xFFFFA500) }, - { be_const_key_weak(gold, 35), be_nested_str_weak(0xFFFFD700) }, - { be_const_key_weak(beige, -1), be_nested_str_weak(0xFFF5F5DC) }, - { be_const_key_weak(black, 26), be_nested_str_weak(0xFF000000) }, - { be_const_key_weak(teal, 27), be_nested_str_weak(0xFF008080) }, - { be_const_key_weak(crimson, 12), be_nested_str_weak(0xFFDC143C) }, - { be_const_key_weak(fuchsia, -1), be_nested_str_weak(0xFFFF00FF) }, - { be_const_key_weak(magenta, 2), be_nested_str_weak(0xFFFF00FF) }, - { be_const_key_weak(yellow, 15), be_nested_str_weak(0xFFFFFF00) }, - { be_const_key_weak(navy, -1), be_nested_str_weak(0xFF000080) }, - { be_const_key_weak(khaki, -1), be_nested_str_weak(0xFFF0E68C) }, - { be_const_key_weak(pink, -1), be_nested_str_weak(0xFFFFC0CB) }, - { be_const_key_weak(ivory, -1), be_nested_str_weak(0xFFFFFFF0) }, - { be_const_key_weak(purple, -1), be_nested_str_weak(0xFF800080) }, - { be_const_key_weak(aqua, -1), be_nested_str_weak(0xFF00FFFF) }, - { be_const_key_weak(blue, -1), be_nested_str_weak(0xFF0000FF) }, - { be_const_key_weak(plum, 23), be_nested_str_weak(0xFFDDA0DD) }, - { be_const_key_weak(orchid, -1), be_nested_str_weak(0xFFDA70D6) }, - { be_const_key_weak(tan, -1), be_nested_str_weak(0xFFD2B48C) }, - { be_const_key_weak(maroon, -1), be_nested_str_weak(0xFF800000) }, - })) ) } )) }, - { be_const_key_weak(output, -1), be_const_var(2) }, - { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, - { be_const_key_weak(process_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, - { be_const_key_weak(process_percentage_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, - { be_const_key_weak(next, -1), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, - { be_const_key_weak(pos, -1), be_const_var(1) }, - { be_const_key_weak(generate_default_strip_initialization, 62), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, - { be_const_key_weak(sequence_names, 13), be_const_var(7) }, - { be_const_key_weak(process_named_arguments_for_variable, 60), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, - { be_const_key_weak(first_statement, 7), be_const_var(5) }, - { be_const_key_weak(indent_level, -1), be_const_var(9) }, - { be_const_key_weak(get_errors, 73), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, - { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, - { be_const_key_weak(process_import, 119), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, - { be_const_key_weak(expect_left_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, - { be_const_key_weak(is_computed_expression_string, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_string_closure) }, - { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, - { be_const_key_weak(has_template_calls, 20), be_const_var(11) }, - { be_const_key_weak(_create_instance_for_validation, 89), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, - { be_const_key_weak(process_sequence, 95), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, - { be_const_key_weak(errors, -1), be_const_var(3) }, - { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, - { be_const_key_weak(transpile_template_body, 23), be_const_closure(class_SimpleDSLTranspiler_transpile_template_body_closure) }, - { be_const_key_weak(process_sequence_assignment_generic, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic_closure) }, - { be_const_key_weak(_validate_animation_factory_exists, 0), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, - { be_const_key_weak(process_additive_expression, 93), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, - { be_const_key_weak(strip_initialized, 80), be_const_var(6) }, - { be_const_key_weak(validate_symbol_reference, -1), be_const_closure(class_SimpleDSLTranspiler_validate_symbol_reference_closure) }, - { be_const_key_weak(generate_engine_run, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_run_closure) }, - { be_const_key_weak(skip_whitespace, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, - { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, - { be_const_key_weak(template_definitions, -1), be_const_var(10) }, - { be_const_key_weak(process_template, -1), be_const_closure(class_SimpleDSLTranspiler_process_template_closure) }, - { be_const_key_weak(skip_statement, -1), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, - { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, - { be_const_key_weak(check_right_brace, 3), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, - { be_const_key_weak(process_log_call, 91), be_const_closure(class_SimpleDSLTranspiler_process_log_call_closure) }, - { be_const_key_weak(process_event_parameters, 35), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, - { be_const_key_weak(process_animation, -1), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, - { be_const_key_weak(process_property_assignment, -1), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, - { be_const_key_weak(validate_user_name, -1), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, - { be_const_key_weak(expect_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, - { be_const_key_weak(is_identifier_char, 1), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, - { be_const_key_weak(process_sequence_assignment, 111), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_closure) }, - { be_const_key_weak(expect_right_brace, 112), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, - { be_const_key_weak(generate_template_function, -1), be_const_closure(class_SimpleDSLTranspiler_generate_template_function_closure) }, - { be_const_key_weak(get_error_report, 36), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, - { be_const_key_weak(convert_to_vrgb, -1), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, - { be_const_key_weak(join_output, -1), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, - { be_const_key_weak(symbol_table, 52), be_const_var(8) }, - { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, - { be_const_key_weak(expect_colon, 38), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, - { be_const_key_weak(_generate_anonymous_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call_closure) }, - { be_const_key_weak(create_computation_closure_from_string, 9), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string_closure) }, - { be_const_key_weak(_validate_animation_factory_creates_animation, 103), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, - { be_const_key_weak(process_primary_expression, 74), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, - { be_const_key_weak(create_simple_function_from_string, -1), be_const_closure(class_SimpleDSLTranspiler_create_simple_function_from_string_closure) }, - { be_const_key_weak(process_time_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, - { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, - { be_const_key_weak(transform_expression_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, - { be_const_key_weak(convert_color, -1), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, - { be_const_key_weak(expect_number, 97), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, - { be_const_key_weak(run_statements, -1), be_const_var(4) }, - { be_const_key_weak(expect_assign, 92), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, - { be_const_key_weak(tokens, -1), be_const_var(0) }, - { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, - { be_const_key_weak(process_log_statement_fluent, 116), be_const_closure(class_SimpleDSLTranspiler_process_log_statement_fluent_closure) }, - { be_const_key_weak(add, 78), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, - { be_const_key_weak(_process_named_arguments_for_animation, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation_closure) }, - { be_const_key_weak(_validate_value_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists_closure) }, - { be_const_key_weak(process_palette, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, - { be_const_key_weak(can_use_as_identifier, 72), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, - { be_const_key_weak(_process_named_arguments_unified, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_unified_closure) }, - { be_const_key_weak(process_play_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, - { be_const_key_weak(_validate_object_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_object_reference_closure) }, - { be_const_key_weak(is_anonymous_function, 84), be_const_closure(class_SimpleDSLTranspiler_is_anonymous_function_closure) }, - { be_const_key_weak(get_indent, -1), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, - { be_const_key_weak(_process_parameters_core, 18), be_const_closure(class_SimpleDSLTranspiler__process_parameters_core_closure) }, - { be_const_key_weak(_process_named_arguments_generic, 117), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, - { be_const_key_weak(skip_whitespace_including_newlines, 75), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, - { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, - { be_const_key_weak(process_palette_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_color_closure) }, - { be_const_key_weak(_validate_color_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, - { be_const_key_weak(expect_keyword, 71), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, - { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, - { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, - { be_const_key_weak(create_computation_closure, -1), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_closure) }, - { be_const_key_weak(process_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, - { be_const_key_weak(process_unary_expression, 65), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, - { be_const_key_weak(expect_dot, 51), be_const_closure(class_SimpleDSLTranspiler_expect_dot_closure) }, - { be_const_key_weak(get_named_color_value, 49), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, - { be_const_key_weak(expect_right_bracket, 41), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, - { be_const_key_weak(transform_operand_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_operand_for_closure_closure) }, - { be_const_key_weak(process_run, -1), be_const_closure(class_SimpleDSLTranspiler_process_run_closure) }, - { be_const_key_weak(has_errors, -1), be_const_closure(class_SimpleDSLTranspiler_has_errors_closure) }, - { be_const_key_weak(process_sequence_statement, 33), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, - { be_const_key_weak(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, - { be_const_key_weak(_is_simple_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__is_simple_function_call_closure) }, - { be_const_key_weak(transpile, 19), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, - { be_const_key_weak(process_array_literal, -1), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, - { be_const_key_weak(process_restart_statement_fluent, 15), be_const_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent_closure) }, - { be_const_key_weak(_validate_factory_function, -1), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, - { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, - { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, - { be_const_key_weak(_validate_value_provider_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_reference_closure) }, - { be_const_key_weak(expect_comma, -1), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, - { be_const_key_weak(process_multiplicative_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, + { be_const_key_weak(time_ms, 1), be_const_var(0) }, + { be_const_key_weak(init, -1), be_const_closure(class_MockEngine_init_closure) }, + { be_const_key_weak(get_strip_length, -1), be_const_closure(class_MockEngine_get_strip_length_closure) }, })), - be_str_weak(SimpleDSLTranspiler) + be_str_weak(MockEngine) ); /******************************************************************** @@ -12095,44 +16125,6 @@ be_local_closure(create_error_token, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: create_dsl_runtime -********************************************************************/ -be_local_closure(create_dsl_runtime, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(create_engine), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(DSLRuntime), - }), - be_str_weak(create_dsl_runtime), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C080400, // 0003 CALL R2 2 - 0xB80E0400, // 0004 GETNGBL R3 K2 - 0x8C0C0703, // 0005 GETMET R3 R3 K3 - 0x5C140400, // 0006 MOVE R5 R2 - 0x5C180200, // 0007 MOVE R6 R1 - 0x7C0C0600, // 0008 CALL R3 3 - 0x80040600, // 0009 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: load_file ********************************************************************/ @@ -12218,132 +16210,135 @@ be_local_closure(tokenize_dsl_with_errors, /* name */ ); /*******************************************************************/ -// compact class 'DSLLexer' ktab size: 113, total: 273 (saved 1280 bytes) -static const bvalue be_ktab_class_DSLLexer[113] = { - /* K0 */ be_nested_str_weak(errors), - /* K1 */ be_nested_str_weak(has_errors), - /* K2 */ be_nested_str_weak(No_X20lexical_X20errors), - /* K3 */ be_nested_str_weak(Lexical_X20errors_X20_X28), - /* K4 */ be_nested_str_weak(_X29_X3A_X0A), - /* K5 */ be_nested_str_weak(_X20_X20Line_X20), - /* K6 */ be_nested_str_weak(line), - /* K7 */ be_nested_str_weak(_X3A), - /* K8 */ be_nested_str_weak(column), - /* K9 */ be_nested_str_weak(_X3A_X20), - /* K10 */ be_nested_str_weak(message), - /* K11 */ be_nested_str_weak(_X0A), - /* K12 */ be_nested_str_weak(stop_iteration), - /* K13 */ be_nested_str_weak(position), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(source), - /* K16 */ be_nested_str_weak(), - /* K17 */ be_nested_str_weak(at_end), +// compact class 'DSLLexer' ktab size: 116, total: 294 (saved 1424 bytes) +static const bvalue be_ktab_class_DSLLexer[116] = { + /* K0 */ be_nested_str_weak(column), + /* K1 */ be_nested_str_weak(advance), + /* K2 */ be_nested_str_weak(_X20), + /* K3 */ be_nested_str_weak(_X09), + /* K4 */ be_nested_str_weak(_X0D), + /* K5 */ be_nested_str_weak(_X0A), + /* K6 */ be_nested_str_weak(add_token), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(line), + /* K9 */ be_nested_str_weak(_X23), + /* K10 */ be_nested_str_weak(scan_comment), + /* K11 */ be_nested_str_weak(0), + /* K12 */ be_nested_str_weak(peek), + /* K13 */ be_nested_str_weak(x), + /* K14 */ be_nested_str_weak(scan_hex_color_0x), + /* K15 */ be_nested_str_weak(is_alpha), + /* K16 */ be_nested_str_weak(_), + /* K17 */ be_nested_str_weak(scan_identifier_or_keyword), /* K18 */ be_nested_str_weak(is_digit), - /* K19 */ be_nested_str_weak(peek), - /* K20 */ be_nested_str_weak(advance), - /* K21 */ be_nested_str_weak(_X2E), - /* K22 */ be_nested_str_weak(check_time_suffix), - /* K23 */ be_nested_str_weak(scan_time_suffix), - /* K24 */ be_nested_str_weak(add_token), - /* K25 */ be_nested_str_weak(_X25), - /* K26 */ be_nested_str_weak(x), - /* K27 */ be_const_int(2), - /* K28 */ be_nested_str_weak(_X5C), - /* K29 */ be_nested_str_weak(n), - /* K30 */ be_nested_str_weak(t), - /* K31 */ be_nested_str_weak(_X09), - /* K32 */ be_nested_str_weak(r), - /* K33 */ be_nested_str_weak(_X0D), - /* K34 */ be_nested_str_weak(add_error), - /* K35 */ be_nested_str_weak(Unterminated_X20string_X20literal), - /* K36 */ be_const_int(3), - /* K37 */ be_const_int(0), - /* K38 */ be_nested_str_weak(is_hex_digit), - /* K39 */ be_nested_str_weak(Invalid_X20hex_X20color_X20format_X3A_X20), - /* K40 */ be_nested_str_weak(_X20_X28expected_X200xRRGGBB_X20or_X200xAARRGGBB_X29), - /* K41 */ be_nested_str_weak(animation_dsl), - /* K42 */ be_nested_str_weak(Token), - /* K43 */ be_nested_str_weak(tokens), - /* K44 */ be_nested_str_weak(push), - /* K45 */ be_nested_str_weak(string), - /* K46 */ be_nested_str_weak(startswith), - /* K47 */ be_const_int(2147483647), - /* K48 */ be_nested_str_weak(ms), - /* K49 */ be_nested_str_weak(s), - /* K50 */ be_nested_str_weak(m), - /* K51 */ be_nested_str_weak(h), - /* K52 */ be_nested_str_weak(is_alpha), - /* K53 */ be_nested_str_weak(_), - /* K54 */ be_nested_str_weak(Invalid_X20variable_X20reference_X3A_X20_X24_X20must_X20be_X20followed_X20by_X20identifier), - /* K55 */ be_nested_str_weak(_X24), - /* K56 */ be_nested_str_weak(is_alnum), - /* K57 */ be_nested_str_weak(0), - /* K58 */ be_nested_str_weak(9), - /* K59 */ be_nested_str_weak(a), - /* K60 */ be_nested_str_weak(z), - /* K61 */ be_nested_str_weak(A), - /* K62 */ be_nested_str_weak(Z), - /* K63 */ be_nested_str_weak(is_color_name), - /* K64 */ be_nested_str_weak(is_keyword), - /* K65 */ be_nested_str_weak(f), - /* K66 */ be_nested_str_weak(F), - /* K67 */ be_nested_str_weak(_X3D), - /* K68 */ be_nested_str_weak(match), - /* K69 */ be_nested_str_weak(_X3D_X3D), - /* K70 */ be_nested_str_weak(_X21), - /* K71 */ be_nested_str_weak(_X21_X3D), - /* K72 */ be_nested_str_weak(_X3C), - /* K73 */ be_nested_str_weak(_X3C_X3D), - /* K74 */ be_nested_str_weak(_X3C_X3C), - /* K75 */ be_nested_str_weak(_X3E), - /* K76 */ be_nested_str_weak(_X3E_X3D), - /* K77 */ be_nested_str_weak(_X3E_X3E), - /* K78 */ be_nested_str_weak(_X26), - /* K79 */ be_nested_str_weak(_X26_X26), - /* K80 */ be_nested_str_weak(Single_X20_X27_X26_X27_X20not_X20supported_X20in_X20DSL), - /* K81 */ be_nested_str_weak(_X7C), - /* K82 */ be_nested_str_weak(_X7C_X7C), - /* K83 */ be_nested_str_weak(Single_X20_X27_X7C_X27_X20not_X20supported_X20in_X20DSL), - /* K84 */ be_nested_str_weak(_X2D), - /* K85 */ be_nested_str_weak(_X2D_X3E), - /* K86 */ be_nested_str_weak(_X2B), - /* K87 */ be_nested_str_weak(_X2A), - /* K88 */ be_nested_str_weak(_X2F), - /* K89 */ be_nested_str_weak(_X5E), - /* K90 */ be_nested_str_weak(_X28), - /* K91 */ be_nested_str_weak(_X29), - /* K92 */ be_nested_str_weak(_X7B), - /* K93 */ be_nested_str_weak(_X7D), - /* K94 */ be_nested_str_weak(_X5B), - /* K95 */ be_nested_str_weak(_X5D), - /* K96 */ be_nested_str_weak(_X2C), - /* K97 */ be_nested_str_weak(_X3B), - /* K98 */ be_nested_str_weak(Unexpected_X20character_X3A_X20_X27), - /* K99 */ be_nested_str_weak(_X27), - /* K100 */ be_nested_str_weak(scan_token), - /* K101 */ be_nested_str_weak(_X20), - /* K102 */ be_nested_str_weak(_X23), - /* K103 */ be_nested_str_weak(scan_comment), - /* K104 */ be_nested_str_weak(scan_hex_color_0x), - /* K105 */ be_nested_str_weak(scan_identifier_or_keyword), - /* K106 */ be_nested_str_weak(scan_number), - /* K107 */ be_nested_str_weak(_X22), - /* K108 */ be_nested_str_weak(scan_string), - /* K109 */ be_nested_str_weak(scan_variable_reference), - /* K110 */ be_nested_str_weak(scan_operator_or_delimiter), - /* K111 */ be_nested_str_weak(tokenize), - /* K112 */ be_nested_str_weak(success), + /* K19 */ be_nested_str_weak(scan_number), + /* K20 */ be_nested_str_weak(_X22), + /* K21 */ be_nested_str_weak(_X27), + /* K22 */ be_nested_str_weak(peek_ahead), + /* K23 */ be_nested_str_weak(scan_triple_quoted_string), + /* K24 */ be_nested_str_weak(scan_string), + /* K25 */ be_nested_str_weak(_X24), + /* K26 */ be_nested_str_weak(scan_variable_reference), + /* K27 */ be_nested_str_weak(scan_operator_or_delimiter), + /* K28 */ be_nested_str_weak(position), + /* K29 */ be_nested_str_weak(source), + /* K30 */ be_nested_str_weak(), + /* K31 */ be_nested_str_weak(at_end), + /* K32 */ be_nested_str_weak(_X5C), + /* K33 */ be_nested_str_weak(n), + /* K34 */ be_nested_str_weak(t), + /* K35 */ be_nested_str_weak(r), + /* K36 */ be_nested_str_weak(add_error), + /* K37 */ be_nested_str_weak(Unterminated_X20string_X20literal), + /* K38 */ be_const_int(3), + /* K39 */ be_nested_str_weak(animation_dsl), + /* K40 */ be_nested_str_weak(Token), + /* K41 */ be_nested_str_weak(tokens), + /* K42 */ be_nested_str_weak(push), + /* K43 */ be_nested_str_weak(has_errors), + /* K44 */ be_nested_str_weak(No_X20lexical_X20errors), + /* K45 */ be_nested_str_weak(Lexical_X20errors_X20_X28), + /* K46 */ be_nested_str_weak(errors), + /* K47 */ be_nested_str_weak(_X29_X3A_X0A), + /* K48 */ be_nested_str_weak(_X20_X20Line_X20), + /* K49 */ be_nested_str_weak(_X3A), + /* K50 */ be_nested_str_weak(_X3A_X20), + /* K51 */ be_nested_str_weak(message), + /* K52 */ be_nested_str_weak(stop_iteration), + /* K53 */ be_nested_str_weak(a), + /* K54 */ be_nested_str_weak(f), + /* K55 */ be_nested_str_weak(A), + /* K56 */ be_nested_str_weak(F), + /* K57 */ be_const_int(0), + /* K58 */ be_nested_str_weak(_X3D), + /* K59 */ be_nested_str_weak(match), + /* K60 */ be_nested_str_weak(_X3D_X3D), + /* K61 */ be_const_int(2), + /* K62 */ be_nested_str_weak(_X21), + /* K63 */ be_nested_str_weak(_X21_X3D), + /* K64 */ be_nested_str_weak(_X3C), + /* K65 */ be_nested_str_weak(_X3C_X3D), + /* K66 */ be_nested_str_weak(_X3C_X3C), + /* K67 */ be_nested_str_weak(_X3E), + /* K68 */ be_nested_str_weak(_X3E_X3D), + /* K69 */ be_nested_str_weak(_X3E_X3E), + /* K70 */ be_nested_str_weak(_X26), + /* K71 */ be_nested_str_weak(_X26_X26), + /* K72 */ be_nested_str_weak(Single_X20_X27_X26_X27_X20not_X20supported_X20in_X20DSL), + /* K73 */ be_nested_str_weak(_X7C), + /* K74 */ be_nested_str_weak(_X7C_X7C), + /* K75 */ be_nested_str_weak(Single_X20_X27_X7C_X27_X20not_X20supported_X20in_X20DSL), + /* K76 */ be_nested_str_weak(_X2D), + /* K77 */ be_nested_str_weak(_X2D_X3E), + /* K78 */ be_nested_str_weak(_X2B), + /* K79 */ be_nested_str_weak(_X2A), + /* K80 */ be_nested_str_weak(_X2F), + /* K81 */ be_nested_str_weak(_X25), + /* K82 */ be_nested_str_weak(_X5E), + /* K83 */ be_nested_str_weak(_X28), + /* K84 */ be_nested_str_weak(_X29), + /* K85 */ be_nested_str_weak(_X7B), + /* K86 */ be_nested_str_weak(_X7D), + /* K87 */ be_nested_str_weak(_X5B), + /* K88 */ be_nested_str_weak(_X5D), + /* K89 */ be_nested_str_weak(_X2C), + /* K90 */ be_nested_str_weak(_X3B), + /* K91 */ be_nested_str_weak(_X2E), + /* K92 */ be_nested_str_weak(Unexpected_X20character_X3A_X20_X27), + /* K93 */ be_nested_str_weak(9), + /* K94 */ be_nested_str_weak(tokenize), + /* K95 */ be_nested_str_weak(success), + /* K96 */ be_nested_str_weak(Invalid_X20variable_X20reference_X3A_X20_X24_X20must_X20be_X20followed_X20by_X20identifier), + /* K97 */ be_nested_str_weak(is_alnum), + /* K98 */ be_nested_str_weak(string), + /* K99 */ be_const_int(2147483647), + /* K100 */ be_nested_str_weak(startswith), + /* K101 */ be_nested_str_weak(ms), + /* K102 */ be_nested_str_weak(s), + /* K103 */ be_nested_str_weak(m), + /* K104 */ be_nested_str_weak(h), + /* K105 */ be_nested_str_weak(check_time_suffix), + /* K106 */ be_nested_str_weak(scan_time_suffix), + /* K107 */ be_nested_str_weak(is_color_name), + /* K108 */ be_nested_str_weak(is_keyword), + /* K109 */ be_nested_str_weak(is_hex_digit), + /* K110 */ be_nested_str_weak(Invalid_X20hex_X20color_X20format_X3A_X20), + /* K111 */ be_nested_str_weak(_X20_X28expected_X200xRRGGBB_X20or_X200xAARRGGBB_X29), + /* K112 */ be_nested_str_weak(z), + /* K113 */ be_nested_str_weak(Z), + /* K114 */ be_nested_str_weak(Unterminated_X20triple_X2Dquoted_X20string_X20literal), + /* K115 */ be_nested_str_weak(scan_token), }; extern const bclass be_class_DSLLexer; /******************************************************************** -** Solidified function: get_errors +** Solidified function: scan_token ********************************************************************/ -be_local_closure(class_DSLLexer_get_errors, /* name */ +be_local_closure(class_DSLLexer_scan_token, /* name */ be_nested_proto( - 2, /* nstack */ + 8, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -12352,11 +16347,106 @@ be_local_closure(class_DSLLexer_get_errors, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(get_errors), + be_str_weak(scan_token), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ + ( &(const binstruction[97]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x1C0C0502, // 0003 EQ R3 R2 K2 + 0x740E0003, // 0004 JMPT R3 #0009 + 0x1C0C0503, // 0005 EQ R3 R2 K3 + 0x740E0001, // 0006 JMPT R3 #0009 + 0x1C0C0504, // 0007 EQ R3 R2 K4 + 0x780E0001, // 0008 JMPF R3 #000B + 0x80000600, // 0009 RET 0 + 0x70020054, // 000A JMP #0060 + 0x1C0C0505, // 000B EQ R3 R2 K5 + 0x780E000A, // 000C JMPF R3 #0018 + 0x8C0C0106, // 000D GETMET R3 R0 K6 + 0x54160022, // 000E LDINT R5 35 + 0x58180005, // 000F LDCONST R6 K5 + 0x581C0007, // 0010 LDCONST R7 K7 + 0x7C0C0800, // 0011 CALL R3 4 + 0x880C0108, // 0012 GETMBR R3 R0 K8 + 0x000C0707, // 0013 ADD R3 R3 K7 + 0x90021003, // 0014 SETMBR R0 K8 R3 + 0x90020107, // 0015 SETMBR R0 K0 K7 + 0x80000600, // 0016 RET 0 + 0x70020047, // 0017 JMP #0060 + 0x1C0C0509, // 0018 EQ R3 R2 K9 + 0x780E0002, // 0019 JMPF R3 #001D + 0x8C0C010A, // 001A GETMET R3 R0 K10 + 0x7C0C0200, // 001B CALL R3 1 + 0x70020042, // 001C JMP #0060 + 0x1C0C050B, // 001D EQ R3 R2 K11 + 0x780E0006, // 001E JMPF R3 #0026 + 0x8C0C010C, // 001F GETMET R3 R0 K12 + 0x7C0C0200, // 0020 CALL R3 1 + 0x1C0C070D, // 0021 EQ R3 R3 K13 + 0x780E0002, // 0022 JMPF R3 #0026 + 0x8C0C010E, // 0023 GETMET R3 R0 K14 + 0x7C0C0200, // 0024 CALL R3 1 + 0x70020039, // 0025 JMP #0060 + 0x8C0C010F, // 0026 GETMET R3 R0 K15 + 0x5C140400, // 0027 MOVE R5 R2 + 0x7C0C0400, // 0028 CALL R3 2 + 0x740E0001, // 0029 JMPT R3 #002C + 0x1C0C0510, // 002A EQ R3 R2 K16 + 0x780E0002, // 002B JMPF R3 #002F + 0x8C0C0111, // 002C GETMET R3 R0 K17 + 0x7C0C0200, // 002D CALL R3 1 + 0x70020030, // 002E JMP #0060 + 0x8C0C0112, // 002F GETMET R3 R0 K18 + 0x5C140400, // 0030 MOVE R5 R2 + 0x7C0C0400, // 0031 CALL R3 2 + 0x780E0002, // 0032 JMPF R3 #0036 + 0x8C0C0113, // 0033 GETMET R3 R0 K19 + 0x7C0C0200, // 0034 CALL R3 1 + 0x70020029, // 0035 JMP #0060 + 0x1C0C0514, // 0036 EQ R3 R2 K20 + 0x740E0001, // 0037 JMPT R3 #003A + 0x1C0C0515, // 0038 EQ R3 R2 K21 + 0x780E001D, // 0039 JMPF R3 #0058 + 0x1C0C0514, // 003A EQ R3 R2 K20 + 0x780E0008, // 003B JMPF R3 #0045 + 0x8C0C010C, // 003C GETMET R3 R0 K12 + 0x7C0C0200, // 003D CALL R3 1 + 0x1C0C0714, // 003E EQ R3 R3 K20 + 0x780E0004, // 003F JMPF R3 #0045 + 0x8C0C0116, // 0040 GETMET R3 R0 K22 + 0x58140007, // 0041 LDCONST R5 K7 + 0x7C0C0400, // 0042 CALL R3 2 + 0x1C0C0714, // 0043 EQ R3 R3 K20 + 0x740E000A, // 0044 JMPT R3 #0050 + 0x1C0C0515, // 0045 EQ R3 R2 K21 + 0x780E000C, // 0046 JMPF R3 #0054 + 0x8C0C010C, // 0047 GETMET R3 R0 K12 + 0x7C0C0200, // 0048 CALL R3 1 + 0x1C0C0715, // 0049 EQ R3 R3 K21 + 0x780E0008, // 004A JMPF R3 #0054 + 0x8C0C0116, // 004B GETMET R3 R0 K22 + 0x58140007, // 004C LDCONST R5 K7 + 0x7C0C0400, // 004D CALL R3 2 + 0x1C0C0715, // 004E EQ R3 R3 K21 + 0x780E0003, // 004F JMPF R3 #0054 + 0x8C0C0117, // 0050 GETMET R3 R0 K23 + 0x5C140400, // 0051 MOVE R5 R2 + 0x7C0C0400, // 0052 CALL R3 2 + 0x70020002, // 0053 JMP #0057 + 0x8C0C0118, // 0054 GETMET R3 R0 K24 + 0x5C140400, // 0055 MOVE R5 R2 + 0x7C0C0400, // 0056 CALL R3 2 + 0x70020007, // 0057 JMP #0060 + 0x1C0C0519, // 0058 EQ R3 R2 K25 + 0x780E0002, // 0059 JMPF R3 #005D + 0x8C0C011A, // 005A GETMET R3 R0 K26 + 0x7C0C0200, // 005B CALL R3 1 + 0x70020002, // 005C JMP #0060 + 0x8C0C011B, // 005D GETMET R3 R0 K27 + 0x5C140400, // 005E MOVE R5 R2 + 0x7C0C0400, // 005F CALL R3 2 + 0x80000000, // 0060 RET 0 }) ) ); @@ -12364,12 +16454,12 @@ be_local_closure(class_DSLLexer_get_errors, /* name */ /******************************************************************** -** Solidified function: get_error_report +** Solidified function: peek_ahead ********************************************************************/ -be_local_closure(class_DSLLexer_get_error_report, /* name */ +be_local_closure(class_DSLLexer_peek_ahead, /* name */ be_nested_proto( - 7, /* nstack */ - 1, /* argc */ + 5, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -12377,254 +16467,22 @@ be_local_closure(class_DSLLexer_get_error_report, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(get_error_report), - &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0x8C040101, // 0000 GETMET R1 R0 K1 - 0x7C040200, // 0001 CALL R1 1 - 0x74060000, // 0002 JMPT R1 #0004 - 0x80060400, // 0003 RET 1 K2 - 0x60040008, // 0004 GETGBL R1 G8 - 0x6008000C, // 0005 GETGBL R2 G12 - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x7C080200, // 0007 CALL R2 1 - 0x7C040200, // 0008 CALL R1 1 - 0x00060601, // 0009 ADD R1 K3 R1 - 0x00040304, // 000A ADD R1 R1 K4 - 0x60080010, // 000B GETGBL R2 G16 - 0x880C0100, // 000C GETMBR R3 R0 K0 - 0x7C080200, // 000D CALL R2 1 - 0xA8020010, // 000E EXBLK 0 #0020 - 0x5C0C0400, // 000F MOVE R3 R2 - 0x7C0C0000, // 0010 CALL R3 0 - 0x60100008, // 0011 GETGBL R4 G8 - 0x94140706, // 0012 GETIDX R5 R3 K6 - 0x7C100200, // 0013 CALL R4 1 - 0x00120A04, // 0014 ADD R4 K5 R4 - 0x00100907, // 0015 ADD R4 R4 K7 - 0x60140008, // 0016 GETGBL R5 G8 - 0x94180708, // 0017 GETIDX R6 R3 K8 - 0x7C140200, // 0018 CALL R5 1 - 0x00100805, // 0019 ADD R4 R4 R5 - 0x00100909, // 001A ADD R4 R4 K9 - 0x9414070A, // 001B GETIDX R5 R3 K10 - 0x00100805, // 001C ADD R4 R4 R5 - 0x0010090B, // 001D ADD R4 R4 K11 - 0x00040204, // 001E ADD R1 R1 R4 - 0x7001FFEE, // 001F JMP #000F - 0x5808000C, // 0020 LDCONST R2 K12 - 0xAC080200, // 0021 CATCH R2 1 0 - 0xB0080000, // 0022 RAISE 2 R0 R0 - 0x80040200, // 0023 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: peek_next -********************************************************************/ -be_local_closure(class_DSLLexer_peek_next, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(peek_next), + be_str_weak(peek_ahead), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x0004030E, // 0001 ADD R1 R1 K14 - 0x6008000C, // 0002 GETGBL R2 G12 - 0x880C010F, // 0003 GETMBR R3 R0 K15 - 0x7C080200, // 0004 CALL R2 1 - 0x28040202, // 0005 GE R1 R1 R2 - 0x78060000, // 0006 JMPF R1 #0008 - 0x80062000, // 0007 RET 1 K16 - 0x8804010D, // 0008 GETMBR R1 R0 K13 - 0x0004030E, // 0009 ADD R1 R1 K14 - 0x8808010F, // 000A GETMBR R2 R0 K15 - 0x94040401, // 000B GETIDX R1 R2 R1 - 0x80040200, // 000C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: advance -********************************************************************/ -be_local_closure(class_DSLLexer_advance, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(advance), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040111, // 0000 GETMET R1 R0 K17 - 0x7C040200, // 0001 CALL R1 1 - 0x78060000, // 0002 JMPF R1 #0004 - 0x80062000, // 0003 RET 1 K16 - 0x8804010F, // 0004 GETMBR R1 R0 K15 - 0x8808010D, // 0005 GETMBR R2 R0 K13 - 0x94040202, // 0006 GETIDX R1 R1 R2 - 0x8808010D, // 0007 GETMBR R2 R0 K13 - 0x0008050E, // 0008 ADD R2 R2 K14 - 0x90021A02, // 0009 SETMBR R0 K13 R2 - 0x88080108, // 000A GETMBR R2 R0 K8 - 0x0008050E, // 000B ADD R2 R2 K14 - 0x90021002, // 000C SETMBR R0 K8 R2 - 0x80040200, // 000D RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: scan_number -********************************************************************/ -be_local_closure(class_DSLLexer_scan_number, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(scan_number), - &be_const_str_solidified, - ( &(const binstruction[113]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x0404030E, // 0001 SUB R1 R1 K14 - 0x88080108, // 0002 GETMBR R2 R0 K8 - 0x0408050E, // 0003 SUB R2 R2 K14 - 0x500C0000, // 0004 LDBOOL R3 0 0 - 0x8C100111, // 0005 GETMET R4 R0 K17 - 0x7C100200, // 0006 CALL R4 1 - 0x74120007, // 0007 JMPT R4 #0010 - 0x8C100112, // 0008 GETMET R4 R0 K18 - 0x8C180113, // 0009 GETMET R6 R0 K19 - 0x7C180200, // 000A CALL R6 1 - 0x7C100400, // 000B CALL R4 2 - 0x78120002, // 000C JMPF R4 #0010 - 0x8C100114, // 000D GETMET R4 R0 K20 - 0x7C100200, // 000E CALL R4 1 - 0x7001FFF4, // 000F JMP #0005 - 0x8C100111, // 0010 GETMET R4 R0 K17 - 0x7C100200, // 0011 CALL R4 1 - 0x7412001F, // 0012 JMPT R4 #0033 - 0x8C100113, // 0013 GETMET R4 R0 K19 - 0x7C100200, // 0014 CALL R4 1 - 0x1C100915, // 0015 EQ R4 R4 K21 - 0x7812001B, // 0016 JMPF R4 #0033 - 0x8810010D, // 0017 GETMBR R4 R0 K13 - 0x0010090E, // 0018 ADD R4 R4 K14 - 0x6014000C, // 0019 GETGBL R5 G12 - 0x8818010F, // 001A GETMBR R6 R0 K15 - 0x7C140200, // 001B CALL R5 1 - 0x14100805, // 001C LT R4 R4 R5 - 0x78120014, // 001D JMPF R4 #0033 - 0x8C100112, // 001E GETMET R4 R0 K18 - 0x8818010D, // 001F GETMBR R6 R0 K13 - 0x00180D0E, // 0020 ADD R6 R6 K14 - 0x881C010F, // 0021 GETMBR R7 R0 K15 - 0x94180E06, // 0022 GETIDX R6 R7 R6 - 0x7C100400, // 0023 CALL R4 2 - 0x7812000D, // 0024 JMPF R4 #0033 - 0x500C0200, // 0025 LDBOOL R3 1 0 - 0x8C100114, // 0026 GETMET R4 R0 K20 - 0x7C100200, // 0027 CALL R4 1 - 0x8C100111, // 0028 GETMET R4 R0 K17 - 0x7C100200, // 0029 CALL R4 1 - 0x74120007, // 002A JMPT R4 #0033 - 0x8C100112, // 002B GETMET R4 R0 K18 - 0x8C180113, // 002C GETMET R6 R0 K19 - 0x7C180200, // 002D CALL R6 1 - 0x7C100400, // 002E CALL R4 2 - 0x78120002, // 002F JMPF R4 #0033 - 0x8C100114, // 0030 GETMET R4 R0 K20 - 0x7C100200, // 0031 CALL R4 1 - 0x7001FFF4, // 0032 JMP #0028 - 0x8810010D, // 0033 GETMBR R4 R0 K13 - 0x0410090E, // 0034 SUB R4 R4 K14 - 0x40100204, // 0035 CONNECT R4 R1 R4 - 0x8814010F, // 0036 GETMBR R5 R0 K15 - 0x94100A04, // 0037 GETIDX R4 R5 R4 - 0x8C140116, // 0038 GETMET R5 R0 K22 - 0x7C140200, // 0039 CALL R5 1 - 0x78160009, // 003A JMPF R5 #0045 - 0x8C140117, // 003B GETMET R5 R0 K23 - 0x7C140200, // 003C CALL R5 1 - 0x8C180118, // 003D GETMET R6 R0 K24 - 0x54220004, // 003E LDINT R8 5 - 0x00240805, // 003F ADD R9 R4 R5 - 0x6028000C, // 0040 GETGBL R10 G12 - 0x002C0805, // 0041 ADD R11 R4 R5 - 0x7C280200, // 0042 CALL R10 1 - 0x7C180800, // 0043 CALL R6 4 - 0x7002002A, // 0044 JMP #0070 - 0x8C140111, // 0045 GETMET R5 R0 K17 - 0x7C140200, // 0046 CALL R5 1 - 0x7416000E, // 0047 JMPT R5 #0057 - 0x8C140113, // 0048 GETMET R5 R0 K19 - 0x7C140200, // 0049 CALL R5 1 - 0x1C140B19, // 004A EQ R5 R5 K25 - 0x7816000A, // 004B JMPF R5 #0057 - 0x8C140114, // 004C GETMET R5 R0 K20 - 0x7C140200, // 004D CALL R5 1 - 0x8C140118, // 004E GETMET R5 R0 K24 - 0x541E0005, // 004F LDINT R7 6 - 0x00200919, // 0050 ADD R8 R4 K25 - 0x6024000C, // 0051 GETGBL R9 G12 - 0x5C280800, // 0052 MOVE R10 R4 - 0x7C240200, // 0053 CALL R9 1 - 0x0024130E, // 0054 ADD R9 R9 K14 - 0x7C140800, // 0055 CALL R5 4 - 0x70020018, // 0056 JMP #0070 - 0x8C140111, // 0057 GETMET R5 R0 K17 - 0x7C140200, // 0058 CALL R5 1 - 0x7416000E, // 0059 JMPT R5 #0069 - 0x8C140113, // 005A GETMET R5 R0 K19 - 0x7C140200, // 005B CALL R5 1 - 0x1C140B1A, // 005C EQ R5 R5 K26 - 0x7816000A, // 005D JMPF R5 #0069 - 0x8C140114, // 005E GETMET R5 R0 K20 - 0x7C140200, // 005F CALL R5 1 - 0x8C140118, // 0060 GETMET R5 R0 K24 - 0x541E0006, // 0061 LDINT R7 7 - 0x0020091A, // 0062 ADD R8 R4 K26 - 0x6024000C, // 0063 GETGBL R9 G12 - 0x5C280800, // 0064 MOVE R10 R4 - 0x7C240200, // 0065 CALL R9 1 - 0x0024130E, // 0066 ADD R9 R9 K14 - 0x7C140800, // 0067 CALL R5 4 - 0x70020006, // 0068 JMP #0070 - 0x8C140118, // 0069 GETMET R5 R0 K24 - 0x581C001B, // 006A LDCONST R7 K27 - 0x5C200800, // 006B MOVE R8 R4 - 0x6024000C, // 006C GETGBL R9 G12 - 0x5C280800, // 006D MOVE R10 R4 - 0x7C240200, // 006E CALL R9 1 - 0x7C140800, // 006F CALL R5 4 - 0x80000000, // 0070 RET 0 + 0x8808011C, // 0000 GETMBR R2 R0 K28 + 0x00080401, // 0001 ADD R2 R2 R1 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x8810011D, // 0003 GETMBR R4 R0 K29 + 0x7C0C0200, // 0004 CALL R3 1 + 0x28080403, // 0005 GE R2 R2 R3 + 0x780A0000, // 0006 JMPF R2 #0008 + 0x80063C00, // 0007 RET 1 K30 + 0x8808011C, // 0008 GETMBR R2 R0 K28 + 0x00080401, // 0009 ADD R2 R2 R1 + 0x880C011D, // 000A GETMBR R3 R0 K29 + 0x94080602, // 000B GETIDX R2 R3 R2 + 0x80040400, // 000C RET 1 R2 }) ) ); @@ -12648,81 +16506,81 @@ be_local_closure(class_DSLLexer_scan_string, /* name */ be_str_weak(scan_string), &be_const_str_solidified, ( &(const binstruction[78]) { /* code */ - 0x8808010D, // 0000 GETMBR R2 R0 K13 - 0x0408050E, // 0001 SUB R2 R2 K14 - 0x880C0108, // 0002 GETMBR R3 R0 K8 - 0x040C070E, // 0003 SUB R3 R3 K14 - 0x58100010, // 0004 LDCONST R4 K16 - 0x8C140111, // 0005 GETMET R5 R0 K17 + 0x8808011C, // 0000 GETMBR R2 R0 K28 + 0x04080507, // 0001 SUB R2 R2 K7 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x040C0707, // 0003 SUB R3 R3 K7 + 0x5810001E, // 0004 LDCONST R4 K30 + 0x8C14011F, // 0005 GETMET R5 R0 K31 0x7C140200, // 0006 CALL R5 1 0x7416002F, // 0007 JMPT R5 #0038 - 0x8C140113, // 0008 GETMET R5 R0 K19 + 0x8C14010C, // 0008 GETMET R5 R0 K12 0x7C140200, // 0009 CALL R5 1 0x20140A01, // 000A NE R5 R5 R1 0x7816002B, // 000B JMPF R5 #0038 - 0x8C140114, // 000C GETMET R5 R0 K20 + 0x8C140101, // 000C GETMET R5 R0 K1 0x7C140200, // 000D CALL R5 1 - 0x1C180B1C, // 000E EQ R6 R5 K28 + 0x1C180B20, // 000E EQ R6 R5 K32 0x781A001D, // 000F JMPF R6 #002E - 0x8C180111, // 0010 GETMET R6 R0 K17 + 0x8C18011F, // 0010 GETMET R6 R0 K31 0x7C180200, // 0011 CALL R6 1 0x741A0018, // 0012 JMPT R6 #002C - 0x8C180114, // 0013 GETMET R6 R0 K20 + 0x8C180101, // 0013 GETMET R6 R0 K1 0x7C180200, // 0014 CALL R6 1 - 0x1C1C0D1D, // 0015 EQ R7 R6 K29 + 0x1C1C0D21, // 0015 EQ R7 R6 K33 0x781E0001, // 0016 JMPF R7 #0019 - 0x0010090B, // 0017 ADD R4 R4 K11 + 0x00100905, // 0017 ADD R4 R4 K5 0x70020011, // 0018 JMP #002B - 0x1C1C0D1E, // 0019 EQ R7 R6 K30 + 0x1C1C0D22, // 0019 EQ R7 R6 K34 0x781E0001, // 001A JMPF R7 #001D - 0x0010091F, // 001B ADD R4 R4 K31 + 0x00100903, // 001B ADD R4 R4 K3 0x7002000D, // 001C JMP #002B - 0x1C1C0D20, // 001D EQ R7 R6 K32 + 0x1C1C0D23, // 001D EQ R7 R6 K35 0x781E0001, // 001E JMPF R7 #0021 - 0x00100921, // 001F ADD R4 R4 K33 + 0x00100904, // 001F ADD R4 R4 K4 0x70020009, // 0020 JMP #002B - 0x1C1C0D1C, // 0021 EQ R7 R6 K28 + 0x1C1C0D20, // 0021 EQ R7 R6 K32 0x781E0001, // 0022 JMPF R7 #0025 - 0x0010091C, // 0023 ADD R4 R4 K28 + 0x00100920, // 0023 ADD R4 R4 K32 0x70020005, // 0024 JMP #002B 0x1C1C0C01, // 0025 EQ R7 R6 R1 0x781E0001, // 0026 JMPF R7 #0029 0x00100801, // 0027 ADD R4 R4 R1 0x70020001, // 0028 JMP #002B - 0x0010091C, // 0029 ADD R4 R4 K28 + 0x00100920, // 0029 ADD R4 R4 K32 0x00100806, // 002A ADD R4 R4 R6 0x70020000, // 002B JMP #002D - 0x0010091C, // 002C ADD R4 R4 K28 + 0x00100920, // 002C ADD R4 R4 K32 0x70020008, // 002D JMP #0037 - 0x1C180B0B, // 002E EQ R6 R5 K11 + 0x1C180B05, // 002E EQ R6 R5 K5 0x781A0005, // 002F JMPF R6 #0036 - 0x88180106, // 0030 GETMBR R6 R0 K6 - 0x00180D0E, // 0031 ADD R6 R6 K14 - 0x90020C06, // 0032 SETMBR R0 K6 R6 - 0x9002110E, // 0033 SETMBR R0 K8 K14 + 0x88180108, // 0030 GETMBR R6 R0 K8 + 0x00180D07, // 0031 ADD R6 R6 K7 + 0x90021006, // 0032 SETMBR R0 K8 R6 + 0x90020107, // 0033 SETMBR R0 K0 K7 0x00100805, // 0034 ADD R4 R4 R5 0x70020000, // 0035 JMP #0037 0x00100805, // 0036 ADD R4 R4 R5 0x7001FFCC, // 0037 JMP #0005 - 0x8C140111, // 0038 GETMET R5 R0 K17 + 0x8C14011F, // 0038 GETMET R5 R0 K31 0x7C140200, // 0039 CALL R5 1 0x78160009, // 003A JMPF R5 #0045 - 0x8C140122, // 003B GETMET R5 R0 K34 - 0x581C0023, // 003C LDCONST R7 K35 + 0x8C140124, // 003B GETMET R5 R0 K36 + 0x581C0025, // 003C LDCONST R7 K37 0x7C140400, // 003D CALL R5 2 - 0x8C140118, // 003E GETMET R5 R0 K24 + 0x8C140106, // 003E GETMET R5 R0 K6 0x541E0026, // 003F LDINT R7 39 0x5C200800, // 0040 MOVE R8 R4 - 0x8824010D, // 0041 GETMBR R9 R0 K13 + 0x8824011C, // 0041 GETMBR R9 R0 K28 0x04241202, // 0042 SUB R9 R9 R2 0x7C140800, // 0043 CALL R5 4 0x70020007, // 0044 JMP #004D - 0x8C140114, // 0045 GETMET R5 R0 K20 + 0x8C140101, // 0045 GETMET R5 R0 K1 0x7C140200, // 0046 CALL R5 1 - 0x8C140118, // 0047 GETMET R5 R0 K24 - 0x581C0024, // 0048 LDCONST R7 K36 + 0x8C140106, // 0047 GETMET R5 R0 K6 + 0x581C0026, // 0048 LDCONST R7 K38 0x5C200800, // 0049 MOVE R8 R4 - 0x8824010D, // 004A GETMBR R9 R0 K13 + 0x8824011C, // 004A GETMBR R9 R0 K28 0x04241202, // 004B SUB R9 R9 R2 0x7C140800, // 004C CALL R5 4 0x80000000, // 004D RET 0 @@ -12732,79 +16590,6 @@ be_local_closure(class_DSLLexer_scan_string, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: scan_hex_color_0x -********************************************************************/ -be_local_closure(class_DSLLexer_scan_hex_color_0x, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(scan_hex_color_0x), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x0404030E, // 0001 SUB R1 R1 K14 - 0x88080108, // 0002 GETMBR R2 R0 K8 - 0x0408050E, // 0003 SUB R2 R2 K14 - 0x8C0C0114, // 0004 GETMET R3 R0 K20 - 0x7C0C0200, // 0005 CALL R3 1 - 0x580C0025, // 0006 LDCONST R3 K37 - 0x8C100111, // 0007 GETMET R4 R0 K17 - 0x7C100200, // 0008 CALL R4 1 - 0x74120008, // 0009 JMPT R4 #0013 - 0x8C100126, // 000A GETMET R4 R0 K38 - 0x8C180113, // 000B GETMET R6 R0 K19 - 0x7C180200, // 000C CALL R6 1 - 0x7C100400, // 000D CALL R4 2 - 0x78120003, // 000E JMPF R4 #0013 - 0x8C100114, // 000F GETMET R4 R0 K20 - 0x7C100200, // 0010 CALL R4 1 - 0x000C070E, // 0011 ADD R3 R3 K14 - 0x7001FFF3, // 0012 JMP #0007 - 0x8810010D, // 0013 GETMBR R4 R0 K13 - 0x0410090E, // 0014 SUB R4 R4 K14 - 0x40100204, // 0015 CONNECT R4 R1 R4 - 0x8814010F, // 0016 GETMBR R5 R0 K15 - 0x94100A04, // 0017 GETIDX R4 R5 R4 - 0x54160005, // 0018 LDINT R5 6 - 0x1C140605, // 0019 EQ R5 R3 R5 - 0x74160002, // 001A JMPT R5 #001E - 0x54160007, // 001B LDINT R5 8 - 0x1C140605, // 001C EQ R5 R3 R5 - 0x78160007, // 001D JMPF R5 #0026 - 0x8C140118, // 001E GETMET R5 R0 K24 - 0x541E0003, // 001F LDINT R7 4 - 0x5C200800, // 0020 MOVE R8 R4 - 0x6024000C, // 0021 GETGBL R9 G12 - 0x5C280800, // 0022 MOVE R10 R4 - 0x7C240200, // 0023 CALL R9 1 - 0x7C140800, // 0024 CALL R5 4 - 0x7002000A, // 0025 JMP #0031 - 0x8C140122, // 0026 GETMET R5 R0 K34 - 0x001E4E04, // 0027 ADD R7 K39 R4 - 0x001C0F28, // 0028 ADD R7 R7 K40 - 0x7C140400, // 0029 CALL R5 2 - 0x8C140118, // 002A GETMET R5 R0 K24 - 0x541E0026, // 002B LDINT R7 39 - 0x5C200800, // 002C MOVE R8 R4 - 0x6024000C, // 002D GETGBL R9 G12 - 0x5C280800, // 002E MOVE R10 R4 - 0x7C240200, // 002F CALL R9 1 - 0x7C140800, // 0030 CALL R5 4 - 0x80000000, // 0031 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: add_token ********************************************************************/ @@ -12822,17 +16607,17 @@ be_local_closure(class_DSLLexer_add_token, /* name */ be_str_weak(add_token), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0xB8125200, // 0000 GETNGBL R4 K41 - 0x8C10092A, // 0001 GETMET R4 R4 K42 + 0xB8124E00, // 0000 GETNGBL R4 K39 + 0x8C100928, // 0001 GETMET R4 R4 K40 0x5C180200, // 0002 MOVE R6 R1 0x5C1C0400, // 0003 MOVE R7 R2 - 0x88200106, // 0004 GETMBR R8 R0 K6 - 0x88240108, // 0005 GETMBR R9 R0 K8 + 0x88200108, // 0004 GETMBR R8 R0 K8 + 0x88240100, // 0005 GETMBR R9 R0 K0 0x04241203, // 0006 SUB R9 R9 R3 0x5C280600, // 0007 MOVE R10 R3 0x7C100C00, // 0008 CALL R4 6 - 0x8814012B, // 0009 GETMBR R5 R0 K43 - 0x8C140B2C, // 000A GETMET R5 R5 K44 + 0x88140129, // 0009 GETMBR R5 R0 K41 + 0x8C140B2A, // 000A GETMET R5 R5 K42 0x5C1C0800, // 000B MOVE R7 R4 0x7C140400, // 000C CALL R5 2 0x80000000, // 000D RET 0 @@ -12843,11 +16628,11 @@ be_local_closure(class_DSLLexer_add_token, /* name */ /******************************************************************** -** Solidified function: scan_time_suffix +** Solidified function: peek ********************************************************************/ -be_local_closure(class_DSLLexer_scan_time_suffix, /* name */ +be_local_closure(class_DSLLexer_peek, /* name */ be_nested_proto( - 6, /* nstack */ + 3, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -12856,48 +16641,17 @@ be_local_closure(class_DSLLexer_scan_time_suffix, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(scan_time_suffix), + be_str_weak(peek), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0xA4065A00, // 0000 IMPORT R1 K45 - 0x8C08032E, // 0001 GETMET R2 R1 K46 - 0x8810010D, // 0002 GETMBR R4 R0 K13 - 0x4010092F, // 0003 CONNECT R4 R4 K47 - 0x8814010F, // 0004 GETMBR R5 R0 K15 - 0x94100A04, // 0005 GETIDX R4 R5 R4 - 0x58140030, // 0006 LDCONST R5 K48 - 0x7C080600, // 0007 CALL R2 3 - 0x780A0005, // 0008 JMPF R2 #000F - 0x8C080114, // 0009 GETMET R2 R0 K20 - 0x7C080200, // 000A CALL R2 1 - 0x8C080114, // 000B GETMET R2 R0 K20 - 0x7C080200, // 000C CALL R2 1 - 0x80066000, // 000D RET 1 K48 - 0x70020016, // 000E JMP #0026 - 0x8C080113, // 000F GETMET R2 R0 K19 - 0x7C080200, // 0010 CALL R2 1 - 0x1C080531, // 0011 EQ R2 R2 K49 - 0x780A0003, // 0012 JMPF R2 #0017 - 0x8C080114, // 0013 GETMET R2 R0 K20 - 0x7C080200, // 0014 CALL R2 1 - 0x80066200, // 0015 RET 1 K49 - 0x7002000E, // 0016 JMP #0026 - 0x8C080113, // 0017 GETMET R2 R0 K19 - 0x7C080200, // 0018 CALL R2 1 - 0x1C080532, // 0019 EQ R2 R2 K50 - 0x780A0003, // 001A JMPF R2 #001F - 0x8C080114, // 001B GETMET R2 R0 K20 - 0x7C080200, // 001C CALL R2 1 - 0x80066400, // 001D RET 1 K50 - 0x70020006, // 001E JMP #0026 - 0x8C080113, // 001F GETMET R2 R0 K19 - 0x7C080200, // 0020 CALL R2 1 - 0x1C080533, // 0021 EQ R2 R2 K51 - 0x780A0002, // 0022 JMPF R2 #0026 - 0x8C080114, // 0023 GETMET R2 R0 K20 - 0x7C080200, // 0024 CALL R2 1 - 0x80066600, // 0025 RET 1 K51 - 0x80062000, // 0026 RET 1 K16 + ( &(const binstruction[ 8]) { /* code */ + 0x8C04011F, // 0000 GETMET R1 R0 K31 + 0x7C040200, // 0001 CALL R1 1 + 0x78060000, // 0002 JMPF R1 #0004 + 0x80063C00, // 0003 RET 1 K30 + 0x8804011D, // 0004 GETMBR R1 R0 K29 + 0x8808011C, // 0005 GETMBR R2 R0 K28 + 0x94040202, // 0006 GETIDX R1 R1 R2 + 0x80040200, // 0007 RET 1 R1 }) ) ); @@ -12905,79 +16659,9 @@ be_local_closure(class_DSLLexer_scan_time_suffix, /* name */ /******************************************************************** -** Solidified function: at_end +** Solidified function: get_error_report ********************************************************************/ -be_local_closure(class_DSLLexer_at_end, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(at_end), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C010F, // 0002 GETMBR R3 R0 K15 - 0x7C080200, // 0003 CALL R2 1 - 0x28040202, // 0004 GE R1 R1 R2 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: match -********************************************************************/ -be_local_closure(class_DSLLexer_match, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(match), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C080111, // 0000 GETMET R2 R0 K17 - 0x7C080200, // 0001 CALL R2 1 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x8808010F, // 0003 GETMBR R2 R0 K15 - 0x880C010D, // 0004 GETMBR R3 R0 K13 - 0x94080403, // 0005 GETIDX R2 R2 R3 - 0x20080401, // 0006 NE R2 R2 R1 - 0x780A0001, // 0007 JMPF R2 #000A - 0x50080000, // 0008 LDBOOL R2 0 0 - 0x80040400, // 0009 RET 1 R2 - 0x8808010D, // 000A GETMBR R2 R0 K13 - 0x0008050E, // 000B ADD R2 R2 K14 - 0x90021A02, // 000C SETMBR R0 K13 R2 - 0x88080108, // 000D GETMBR R2 R0 K8 - 0x0008050E, // 000E ADD R2 R2 K14 - 0x90021002, // 000F SETMBR R0 K8 R2 - 0x50080200, // 0010 LDBOOL R2 1 0 - 0x80040400, // 0011 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_time_suffix -********************************************************************/ -be_local_closure(class_DSLLexer_check_time_suffix, /* name */ +be_local_closure(class_DSLLexer_get_error_report, /* name */ be_nested_proto( 7, /* nstack */ 1, /* argc */ @@ -12988,42 +16672,45 @@ be_local_closure(class_DSLLexer_check_time_suffix, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(check_time_suffix), + be_str_weak(get_error_report), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0xA4065A00, // 0000 IMPORT R1 K45 - 0x8C080111, // 0001 GETMET R2 R0 K17 - 0x7C080200, // 0002 CALL R2 1 - 0x780A0001, // 0003 JMPF R2 #0006 - 0x50080000, // 0004 LDBOOL R2 0 0 - 0x80040400, // 0005 RET 1 R2 - 0x8808010D, // 0006 GETMBR R2 R0 K13 - 0x4008052F, // 0007 CONNECT R2 R2 K47 - 0x880C010F, // 0008 GETMBR R3 R0 K15 - 0x94080602, // 0009 GETIDX R2 R3 R2 - 0x8C0C032E, // 000A GETMET R3 R1 K46 - 0x5C140400, // 000B MOVE R5 R2 - 0x58180030, // 000C LDCONST R6 K48 - 0x7C0C0600, // 000D CALL R3 3 - 0x740E000F, // 000E JMPT R3 #001F - 0x8C0C032E, // 000F GETMET R3 R1 K46 - 0x5C140400, // 0010 MOVE R5 R2 - 0x58180031, // 0011 LDCONST R6 K49 - 0x7C0C0600, // 0012 CALL R3 3 - 0x740E000A, // 0013 JMPT R3 #001F - 0x8C0C032E, // 0014 GETMET R3 R1 K46 - 0x5C140400, // 0015 MOVE R5 R2 - 0x58180032, // 0016 LDCONST R6 K50 - 0x7C0C0600, // 0017 CALL R3 3 - 0x740E0005, // 0018 JMPT R3 #001F - 0x8C0C032E, // 0019 GETMET R3 R1 K46 - 0x5C140400, // 001A MOVE R5 R2 - 0x58180033, // 001B LDCONST R6 K51 - 0x7C0C0600, // 001C CALL R3 3 - 0x740E0000, // 001D JMPT R3 #001F - 0x500C0001, // 001E LDBOOL R3 0 1 - 0x500C0200, // 001F LDBOOL R3 1 0 - 0x80040600, // 0020 RET 1 R3 + ( &(const binstruction[36]) { /* code */ + 0x8C04012B, // 0000 GETMET R1 R0 K43 + 0x7C040200, // 0001 CALL R1 1 + 0x74060000, // 0002 JMPT R1 #0004 + 0x80065800, // 0003 RET 1 K44 + 0x60040008, // 0004 GETGBL R1 G8 + 0x6008000C, // 0005 GETGBL R2 G12 + 0x880C012E, // 0006 GETMBR R3 R0 K46 + 0x7C080200, // 0007 CALL R2 1 + 0x7C040200, // 0008 CALL R1 1 + 0x00065A01, // 0009 ADD R1 K45 R1 + 0x0004032F, // 000A ADD R1 R1 K47 + 0x60080010, // 000B GETGBL R2 G16 + 0x880C012E, // 000C GETMBR R3 R0 K46 + 0x7C080200, // 000D CALL R2 1 + 0xA8020010, // 000E EXBLK 0 #0020 + 0x5C0C0400, // 000F MOVE R3 R2 + 0x7C0C0000, // 0010 CALL R3 0 + 0x60100008, // 0011 GETGBL R4 G8 + 0x94140708, // 0012 GETIDX R5 R3 K8 + 0x7C100200, // 0013 CALL R4 1 + 0x00126004, // 0014 ADD R4 K48 R4 + 0x00100931, // 0015 ADD R4 R4 K49 + 0x60140008, // 0016 GETGBL R5 G8 + 0x94180700, // 0017 GETIDX R6 R3 K0 + 0x7C140200, // 0018 CALL R5 1 + 0x00100805, // 0019 ADD R4 R4 R5 + 0x00100932, // 001A ADD R4 R4 K50 + 0x94140733, // 001B GETIDX R5 R3 K51 + 0x00100805, // 001C ADD R4 R4 R5 + 0x00100905, // 001D ADD R4 R4 K5 + 0x00040204, // 001E ADD R1 R1 R4 + 0x7001FFEE, // 001F JMP #000F + 0x58080034, // 0020 LDCONST R2 K52 + 0xAC080200, // 0021 CATCH R2 1 0 + 0xB0080000, // 0022 RAISE 2 R0 R0 + 0x80040200, // 0023 RET 1 R1 }) ) ); @@ -13031,51 +16718,11 @@ be_local_closure(class_DSLLexer_check_time_suffix, /* name */ /******************************************************************** -** Solidified function: reset +** Solidified function: advance ********************************************************************/ -be_local_closure(class_DSLLexer_reset, /* name */ +be_local_closure(class_DSLLexer_advance, /* name */ be_nested_proto( 3, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(reset), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x5C080200, // 0003 MOVE R2 R1 - 0x70020000, // 0004 JMP #0006 - 0x58080010, // 0005 LDCONST R2 K16 - 0x90021E02, // 0006 SETMBR R0 K15 R2 - 0x90021B25, // 0007 SETMBR R0 K13 K37 - 0x90020D0E, // 0008 SETMBR R0 K6 K14 - 0x9002110E, // 0009 SETMBR R0 K8 K14 - 0x60080012, // 000A GETGBL R2 G18 - 0x7C080000, // 000B CALL R2 0 - 0x90025602, // 000C SETMBR R0 K43 R2 - 0x60080012, // 000D GETGBL R2 G18 - 0x7C080000, // 000E CALL R2 0 - 0x90020002, // 000F SETMBR R0 K0 R2 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: scan_variable_reference -********************************************************************/ -be_local_closure(class_DSLLexer_scan_variable_reference, /* name */ - be_nested_proto( - 10, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -13084,65 +16731,23 @@ be_local_closure(class_DSLLexer_scan_variable_reference, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(scan_variable_reference), + be_str_weak(advance), &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x0404030E, // 0001 SUB R1 R1 K14 - 0x88080108, // 0002 GETMBR R2 R0 K8 - 0x0408050E, // 0003 SUB R2 R2 K14 - 0x8C0C0111, // 0004 GETMET R3 R0 K17 - 0x7C0C0200, // 0005 CALL R3 1 - 0x740E000B, // 0006 JMPT R3 #0013 - 0x8C0C0134, // 0007 GETMET R3 R0 K52 - 0x8C140113, // 0008 GETMET R5 R0 K19 - 0x7C140200, // 0009 CALL R5 1 - 0x7C0C0400, // 000A CALL R3 2 - 0x740E0004, // 000B JMPT R3 #0011 - 0x8C0C0113, // 000C GETMET R3 R0 K19 - 0x7C0C0200, // 000D CALL R3 1 - 0x1C0C0735, // 000E EQ R3 R3 K53 - 0x740E0000, // 000F JMPT R3 #0011 - 0x500C0001, // 0010 LDBOOL R3 0 1 - 0x500C0200, // 0011 LDBOOL R3 1 0 - 0x740E0008, // 0012 JMPT R3 #001C - 0x8C0C0122, // 0013 GETMET R3 R0 K34 - 0x58140036, // 0014 LDCONST R5 K54 - 0x7C0C0400, // 0015 CALL R3 2 - 0x8C0C0118, // 0016 GETMET R3 R0 K24 - 0x54160026, // 0017 LDINT R5 39 - 0x58180037, // 0018 LDCONST R6 K55 - 0x581C000E, // 0019 LDCONST R7 K14 - 0x7C0C0800, // 001A CALL R3 4 - 0x80000600, // 001B RET 0 - 0x8C0C0111, // 001C GETMET R3 R0 K17 - 0x7C0C0200, // 001D CALL R3 1 - 0x740E000B, // 001E JMPT R3 #002B - 0x8C0C0138, // 001F GETMET R3 R0 K56 - 0x8C140113, // 0020 GETMET R5 R0 K19 - 0x7C140200, // 0021 CALL R5 1 - 0x7C0C0400, // 0022 CALL R3 2 - 0x740E0003, // 0023 JMPT R3 #0028 - 0x8C0C0113, // 0024 GETMET R3 R0 K19 - 0x7C0C0200, // 0025 CALL R3 1 - 0x1C0C0735, // 0026 EQ R3 R3 K53 - 0x780E0002, // 0027 JMPF R3 #002B - 0x8C0C0114, // 0028 GETMET R3 R0 K20 - 0x7C0C0200, // 0029 CALL R3 1 - 0x7001FFF0, // 002A JMP #001C - 0x880C010D, // 002B GETMBR R3 R0 K13 - 0x040C070E, // 002C SUB R3 R3 K14 - 0x400C0203, // 002D CONNECT R3 R1 R3 - 0x8810010F, // 002E GETMBR R4 R0 K15 - 0x940C0803, // 002F GETIDX R3 R4 R3 - 0x8C100118, // 0030 GETMET R4 R0 K24 - 0x541A0023, // 0031 LDINT R6 36 - 0x5C1C0600, // 0032 MOVE R7 R3 - 0x6020000C, // 0033 GETGBL R8 G12 - 0x5C240600, // 0034 MOVE R9 R3 - 0x7C200200, // 0035 CALL R8 1 - 0x7C100800, // 0036 CALL R4 4 - 0x80000000, // 0037 RET 0 + ( &(const binstruction[14]) { /* code */ + 0x8C04011F, // 0000 GETMET R1 R0 K31 + 0x7C040200, // 0001 CALL R1 1 + 0x78060000, // 0002 JMPF R1 #0004 + 0x80063C00, // 0003 RET 1 K30 + 0x8804011D, // 0004 GETMBR R1 R0 K29 + 0x8808011C, // 0005 GETMBR R2 R0 K28 + 0x94040202, // 0006 GETIDX R1 R1 R2 + 0x8808011C, // 0007 GETMBR R2 R0 K28 + 0x00080507, // 0008 ADD R2 R2 K7 + 0x90023802, // 0009 SETMBR R0 K28 R2 + 0x88080100, // 000A GETMBR R2 R0 K0 + 0x00080507, // 000B ADD R2 R2 K7 + 0x90020002, // 000C SETMBR R0 K0 R2 + 0x80040200, // 000D RET 1 R1 }) ) ); @@ -13150,11 +16755,11 @@ be_local_closure(class_DSLLexer_scan_variable_reference, /* name */ /******************************************************************** -** Solidified function: is_digit +** Solidified function: is_hex_digit ********************************************************************/ -be_local_closure(class_DSLLexer_is_digit, /* name */ +be_local_closure(class_DSLLexer_is_hex_digit, /* name */ be_nested_proto( - 3, /* nstack */ + 5, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -13163,16 +16768,24 @@ be_local_closure(class_DSLLexer_is_digit, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(is_digit), + be_str_weak(is_hex_digit), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x28080339, // 0000 GE R2 R1 K57 - 0x780A0001, // 0001 JMPF R2 #0004 - 0x1808033A, // 0002 LE R2 R1 K58 - 0x740A0000, // 0003 JMPT R2 #0005 - 0x50080001, // 0004 LDBOOL R2 0 1 - 0x50080200, // 0005 LDBOOL R2 1 0 - 0x80040400, // 0006 RET 1 R2 + ( &(const binstruction[15]) { /* code */ + 0x8C080112, // 0000 GETMET R2 R0 K18 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x740A0008, // 0003 JMPT R2 #000D + 0x28080335, // 0004 GE R2 R1 K53 + 0x780A0001, // 0005 JMPF R2 #0008 + 0x18080336, // 0006 LE R2 R1 K54 + 0x740A0004, // 0007 JMPT R2 #000D + 0x28080337, // 0008 GE R2 R1 K55 + 0x780A0001, // 0009 JMPF R2 #000C + 0x18080338, // 000A LE R2 R1 K56 + 0x740A0000, // 000B JMPT R2 #000D + 0x50080001, // 000C LDBOOL R2 0 1 + 0x50080200, // 000D LDBOOL R2 1 0 + 0x80040400, // 000E RET 1 R2 }) ) ); @@ -13201,17 +16814,17 @@ be_local_closure(class_DSLLexer_init, /* name */ 0x780A0001, // 0002 JMPF R2 #0005 0x5C080200, // 0003 MOVE R2 R1 0x70020000, // 0004 JMP #0006 - 0x58080010, // 0005 LDCONST R2 K16 - 0x90021E02, // 0006 SETMBR R0 K15 R2 - 0x90021B25, // 0007 SETMBR R0 K13 K37 - 0x90020D0E, // 0008 SETMBR R0 K6 K14 - 0x9002110E, // 0009 SETMBR R0 K8 K14 + 0x5808001E, // 0005 LDCONST R2 K30 + 0x90023A02, // 0006 SETMBR R0 K29 R2 + 0x90023939, // 0007 SETMBR R0 K28 K57 + 0x90021107, // 0008 SETMBR R0 K8 K7 + 0x90020107, // 0009 SETMBR R0 K0 K7 0x60080012, // 000A GETGBL R2 G18 0x7C080000, // 000B CALL R2 0 - 0x90025602, // 000C SETMBR R0 K43 R2 + 0x90025202, // 000C SETMBR R0 K41 R2 0x60080012, // 000D GETGBL R2 G18 0x7C080000, // 000E CALL R2 0 - 0x90020002, // 000F SETMBR R0 K0 R2 + 0x90025C02, // 000F SETMBR R0 K46 R2 0x80000000, // 0010 RET 0 }) ) @@ -13219,299 +16832,6 @@ be_local_closure(class_DSLLexer_init, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: is_alpha -********************************************************************/ -be_local_closure(class_DSLLexer_is_alpha, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(is_alpha), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x2808033B, // 0000 GE R2 R1 K59 - 0x780A0001, // 0001 JMPF R2 #0004 - 0x1808033C, // 0002 LE R2 R1 K60 - 0x740A0004, // 0003 JMPT R2 #0009 - 0x2808033D, // 0004 GE R2 R1 K61 - 0x780A0001, // 0005 JMPF R2 #0008 - 0x1808033E, // 0006 LE R2 R1 K62 - 0x740A0000, // 0007 JMPT R2 #0009 - 0x50080001, // 0008 LDBOOL R2 0 1 - 0x50080200, // 0009 LDBOOL R2 1 0 - 0x80040400, // 000A RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: scan_comment -********************************************************************/ -be_local_closure(class_DSLLexer_scan_comment, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(scan_comment), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x0404030E, // 0001 SUB R1 R1 K14 - 0x88080108, // 0002 GETMBR R2 R0 K8 - 0x0408050E, // 0003 SUB R2 R2 K14 - 0x8C0C0111, // 0004 GETMET R3 R0 K17 - 0x7C0C0200, // 0005 CALL R3 1 - 0x740E0006, // 0006 JMPT R3 #000E - 0x8C0C0113, // 0007 GETMET R3 R0 K19 - 0x7C0C0200, // 0008 CALL R3 1 - 0x200C070B, // 0009 NE R3 R3 K11 - 0x780E0002, // 000A JMPF R3 #000E - 0x8C0C0114, // 000B GETMET R3 R0 K20 - 0x7C0C0200, // 000C CALL R3 1 - 0x7001FFF5, // 000D JMP #0004 - 0x880C010D, // 000E GETMBR R3 R0 K13 - 0x040C070E, // 000F SUB R3 R3 K14 - 0x400C0203, // 0010 CONNECT R3 R1 R3 - 0x8810010F, // 0011 GETMBR R4 R0 K15 - 0x940C0803, // 0012 GETIDX R3 R4 R3 - 0x8C100118, // 0013 GETMET R4 R0 K24 - 0x541A0024, // 0014 LDINT R6 37 - 0x5C1C0600, // 0015 MOVE R7 R3 - 0x8820010D, // 0016 GETMBR R8 R0 K13 - 0x04201001, // 0017 SUB R8 R8 R1 - 0x7C100800, // 0018 CALL R4 4 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_error -********************************************************************/ -be_local_closure(class_DSLLexer_add_error, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(add_error), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C08052C, // 0001 GETMET R2 R2 K44 - 0x60100013, // 0002 GETGBL R4 G19 - 0x7C100000, // 0003 CALL R4 0 - 0x98121401, // 0004 SETIDX R4 K10 R1 - 0x88140106, // 0005 GETMBR R5 R0 K6 - 0x98120C05, // 0006 SETIDX R4 K6 R5 - 0x88140108, // 0007 GETMBR R5 R0 K8 - 0x98121005, // 0008 SETIDX R4 K8 R5 - 0x8814010D, // 0009 GETMBR R5 R0 K13 - 0x98121A05, // 000A SETIDX R4 K13 R5 - 0x7C080400, // 000B CALL R2 2 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_alnum -********************************************************************/ -be_local_closure(class_DSLLexer_is_alnum, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(is_alnum), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x8C080134, // 0000 GETMET R2 R0 K52 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x740A0004, // 0003 JMPT R2 #0009 - 0x8C080112, // 0004 GETMET R2 R0 K18 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x740A0000, // 0007 JMPT R2 #0009 - 0x50080001, // 0008 LDBOOL R2 0 1 - 0x50080200, // 0009 LDBOOL R2 1 0 - 0x80040400, // 000A RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: scan_identifier_or_keyword -********************************************************************/ -be_local_closure(class_DSLLexer_scan_identifier_or_keyword, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(scan_identifier_or_keyword), - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x0404030E, // 0001 SUB R1 R1 K14 - 0x88080108, // 0002 GETMBR R2 R0 K8 - 0x0408050E, // 0003 SUB R2 R2 K14 - 0x8C0C0111, // 0004 GETMET R3 R0 K17 - 0x7C0C0200, // 0005 CALL R3 1 - 0x740E000B, // 0006 JMPT R3 #0013 - 0x8C0C0138, // 0007 GETMET R3 R0 K56 - 0x8C140113, // 0008 GETMET R5 R0 K19 - 0x7C140200, // 0009 CALL R5 1 - 0x7C0C0400, // 000A CALL R3 2 - 0x740E0003, // 000B JMPT R3 #0010 - 0x8C0C0113, // 000C GETMET R3 R0 K19 - 0x7C0C0200, // 000D CALL R3 1 - 0x1C0C0735, // 000E EQ R3 R3 K53 - 0x780E0002, // 000F JMPF R3 #0013 - 0x8C0C0114, // 0010 GETMET R3 R0 K20 - 0x7C0C0200, // 0011 CALL R3 1 - 0x7001FFF0, // 0012 JMP #0004 - 0x880C010D, // 0013 GETMBR R3 R0 K13 - 0x040C070E, // 0014 SUB R3 R3 K14 - 0x400C0203, // 0015 CONNECT R3 R1 R3 - 0x8810010F, // 0016 GETMBR R4 R0 K15 - 0x940C0803, // 0017 GETIDX R3 R4 R3 - 0x4C100000, // 0018 LDNIL R4 - 0xB8165200, // 0019 GETNGBL R5 K41 - 0x8C140B3F, // 001A GETMET R5 R5 K63 - 0x5C1C0600, // 001B MOVE R7 R3 - 0x7C140400, // 001C CALL R5 2 - 0x78160001, // 001D JMPF R5 #0020 - 0x54120003, // 001E LDINT R4 4 - 0x70020007, // 001F JMP #0028 - 0xB8165200, // 0020 GETNGBL R5 K41 - 0x8C140B40, // 0021 GETMET R5 R5 K64 - 0x5C1C0600, // 0022 MOVE R7 R3 - 0x7C140400, // 0023 CALL R5 2 - 0x78160001, // 0024 JMPF R5 #0027 - 0x58100025, // 0025 LDCONST R4 K37 - 0x70020000, // 0026 JMP #0028 - 0x5810000E, // 0027 LDCONST R4 K14 - 0x8C140118, // 0028 GETMET R5 R0 K24 - 0x5C1C0800, // 0029 MOVE R7 R4 - 0x5C200600, // 002A MOVE R8 R3 - 0x6024000C, // 002B GETGBL R9 G12 - 0x5C280600, // 002C MOVE R10 R3 - 0x7C240200, // 002D CALL R9 1 - 0x7C140800, // 002E CALL R5 4 - 0x80000000, // 002F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_hex_digit -********************************************************************/ -be_local_closure(class_DSLLexer_is_hex_digit, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(is_hex_digit), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8C080112, // 0000 GETMET R2 R0 K18 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x740A0008, // 0003 JMPT R2 #000D - 0x2808033B, // 0004 GE R2 R1 K59 - 0x780A0001, // 0005 JMPF R2 #0008 - 0x18080341, // 0006 LE R2 R1 K65 - 0x740A0004, // 0007 JMPT R2 #000D - 0x2808033D, // 0008 GE R2 R1 K61 - 0x780A0001, // 0009 JMPF R2 #000C - 0x18080342, // 000A LE R2 R1 K66 - 0x740A0000, // 000B JMPT R2 #000D - 0x50080001, // 000C LDBOOL R2 0 1 - 0x50080200, // 000D LDBOOL R2 1 0 - 0x80040400, // 000E RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: peek -********************************************************************/ -be_local_closure(class_DSLLexer_peek, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(peek), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x8C040111, // 0000 GETMET R1 R0 K17 - 0x7C040200, // 0001 CALL R1 1 - 0x78060000, // 0002 JMPF R1 #0004 - 0x80062000, // 0003 RET 1 K16 - 0x8804010F, // 0004 GETMBR R1 R0 K15 - 0x8808010D, // 0005 GETMBR R2 R0 K13 - 0x94040202, // 0006 GETIDX R1 R1 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: scan_operator_or_delimiter ********************************************************************/ @@ -13529,303 +16849,303 @@ be_local_closure(class_DSLLexer_scan_operator_or_delimiter, /* name */ be_str_weak(scan_operator_or_delimiter), &be_const_str_solidified, ( &(const binstruction[299]) { /* code */ - 0x88080108, // 0000 GETMBR R2 R0 K8 - 0x0408050E, // 0001 SUB R2 R2 K14 - 0x1C0C0343, // 0002 EQ R3 R1 K67 + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x04080507, // 0001 SUB R2 R2 K7 + 0x1C0C033A, // 0002 EQ R3 R1 K58 0x780E000F, // 0003 JMPF R3 #0014 - 0x8C0C0144, // 0004 GETMET R3 R0 K68 - 0x58140043, // 0005 LDCONST R5 K67 + 0x8C0C013B, // 0004 GETMET R3 R0 K59 + 0x5814003A, // 0005 LDCONST R5 K58 0x7C0C0400, // 0006 CALL R3 2 0x780E0005, // 0007 JMPF R3 #000E - 0x8C0C0118, // 0008 GETMET R3 R0 K24 + 0x8C0C0106, // 0008 GETMET R3 R0 K6 0x5416000E, // 0009 LDINT R5 15 - 0x58180045, // 000A LDCONST R6 K69 - 0x581C001B, // 000B LDCONST R7 K27 + 0x5818003C, // 000A LDCONST R6 K60 + 0x581C003D, // 000B LDCONST R7 K61 0x7C0C0800, // 000C CALL R3 4 0x70020004, // 000D JMP #0013 - 0x8C0C0118, // 000E GETMET R3 R0 K24 + 0x8C0C0106, // 000E GETMET R3 R0 K6 0x54160007, // 000F LDINT R5 8 - 0x58180043, // 0010 LDCONST R6 K67 - 0x581C000E, // 0011 LDCONST R7 K14 + 0x5818003A, // 0010 LDCONST R6 K58 + 0x581C0007, // 0011 LDCONST R7 K7 0x7C0C0800, // 0012 CALL R3 4 0x70020115, // 0013 JMP #012A - 0x1C0C0346, // 0014 EQ R3 R1 K70 + 0x1C0C033E, // 0014 EQ R3 R1 K62 0x780E000F, // 0015 JMPF R3 #0026 - 0x8C0C0144, // 0016 GETMET R3 R0 K68 - 0x58140043, // 0017 LDCONST R5 K67 + 0x8C0C013B, // 0016 GETMET R3 R0 K59 + 0x5814003A, // 0017 LDCONST R5 K58 0x7C0C0400, // 0018 CALL R3 2 0x780E0005, // 0019 JMPF R3 #0020 - 0x8C0C0118, // 001A GETMET R3 R0 K24 + 0x8C0C0106, // 001A GETMET R3 R0 K6 0x5416000F, // 001B LDINT R5 16 - 0x58180047, // 001C LDCONST R6 K71 - 0x581C001B, // 001D LDCONST R7 K27 + 0x5818003F, // 001C LDCONST R6 K63 + 0x581C003D, // 001D LDCONST R7 K61 0x7C0C0800, // 001E CALL R3 4 0x70020004, // 001F JMP #0025 - 0x8C0C0118, // 0020 GETMET R3 R0 K24 + 0x8C0C0106, // 0020 GETMET R3 R0 K6 0x54160016, // 0021 LDINT R5 23 - 0x58180046, // 0022 LDCONST R6 K70 - 0x581C000E, // 0023 LDCONST R7 K14 + 0x5818003E, // 0022 LDCONST R6 K62 + 0x581C0007, // 0023 LDCONST R7 K7 0x7C0C0800, // 0024 CALL R3 4 0x70020103, // 0025 JMP #012A - 0x1C0C0348, // 0026 EQ R3 R1 K72 + 0x1C0C0340, // 0026 EQ R3 R1 K64 0x780E0019, // 0027 JMPF R3 #0042 - 0x8C0C0144, // 0028 GETMET R3 R0 K68 - 0x58140043, // 0029 LDCONST R5 K67 + 0x8C0C013B, // 0028 GETMET R3 R0 K59 + 0x5814003A, // 0029 LDCONST R5 K58 0x7C0C0400, // 002A CALL R3 2 0x780E0005, // 002B JMPF R3 #0032 - 0x8C0C0118, // 002C GETMET R3 R0 K24 + 0x8C0C0106, // 002C GETMET R3 R0 K6 0x54160011, // 002D LDINT R5 18 - 0x58180049, // 002E LDCONST R6 K73 - 0x581C001B, // 002F LDCONST R7 K27 + 0x58180041, // 002E LDCONST R6 K65 + 0x581C003D, // 002F LDCONST R7 K61 0x7C0C0800, // 0030 CALL R3 4 0x7002000E, // 0031 JMP #0041 - 0x8C0C0144, // 0032 GETMET R3 R0 K68 - 0x58140048, // 0033 LDCONST R5 K72 + 0x8C0C013B, // 0032 GETMET R3 R0 K59 + 0x58140040, // 0033 LDCONST R5 K64 0x7C0C0400, // 0034 CALL R3 2 0x780E0005, // 0035 JMPF R3 #003C - 0x8C0C0118, // 0036 GETMET R3 R0 K24 + 0x8C0C0106, // 0036 GETMET R3 R0 K6 0x54160026, // 0037 LDINT R5 39 - 0x5818004A, // 0038 LDCONST R6 K74 - 0x581C001B, // 0039 LDCONST R7 K27 + 0x58180042, // 0038 LDCONST R6 K66 + 0x581C003D, // 0039 LDCONST R7 K61 0x7C0C0800, // 003A CALL R3 4 0x70020004, // 003B JMP #0041 - 0x8C0C0118, // 003C GETMET R3 R0 K24 + 0x8C0C0106, // 003C GETMET R3 R0 K6 0x54160010, // 003D LDINT R5 17 - 0x58180048, // 003E LDCONST R6 K72 - 0x581C000E, // 003F LDCONST R7 K14 + 0x58180040, // 003E LDCONST R6 K64 + 0x581C0007, // 003F LDCONST R7 K7 0x7C0C0800, // 0040 CALL R3 4 0x700200E7, // 0041 JMP #012A - 0x1C0C034B, // 0042 EQ R3 R1 K75 + 0x1C0C0343, // 0042 EQ R3 R1 K67 0x780E0019, // 0043 JMPF R3 #005E - 0x8C0C0144, // 0044 GETMET R3 R0 K68 - 0x58140043, // 0045 LDCONST R5 K67 + 0x8C0C013B, // 0044 GETMET R3 R0 K59 + 0x5814003A, // 0045 LDCONST R5 K58 0x7C0C0400, // 0046 CALL R3 2 0x780E0005, // 0047 JMPF R3 #004E - 0x8C0C0118, // 0048 GETMET R3 R0 K24 + 0x8C0C0106, // 0048 GETMET R3 R0 K6 0x54160013, // 0049 LDINT R5 20 - 0x5818004C, // 004A LDCONST R6 K76 - 0x581C001B, // 004B LDCONST R7 K27 + 0x58180044, // 004A LDCONST R6 K68 + 0x581C003D, // 004B LDCONST R7 K61 0x7C0C0800, // 004C CALL R3 4 0x7002000E, // 004D JMP #005D - 0x8C0C0144, // 004E GETMET R3 R0 K68 - 0x5814004B, // 004F LDCONST R5 K75 + 0x8C0C013B, // 004E GETMET R3 R0 K59 + 0x58140043, // 004F LDCONST R5 K67 0x7C0C0400, // 0050 CALL R3 2 0x780E0005, // 0051 JMPF R3 #0058 - 0x8C0C0118, // 0052 GETMET R3 R0 K24 + 0x8C0C0106, // 0052 GETMET R3 R0 K6 0x54160026, // 0053 LDINT R5 39 - 0x5818004D, // 0054 LDCONST R6 K77 - 0x581C001B, // 0055 LDCONST R7 K27 + 0x58180045, // 0054 LDCONST R6 K69 + 0x581C003D, // 0055 LDCONST R7 K61 0x7C0C0800, // 0056 CALL R3 4 0x70020004, // 0057 JMP #005D - 0x8C0C0118, // 0058 GETMET R3 R0 K24 + 0x8C0C0106, // 0058 GETMET R3 R0 K6 0x54160012, // 0059 LDINT R5 19 - 0x5818004B, // 005A LDCONST R6 K75 - 0x581C000E, // 005B LDCONST R7 K14 + 0x58180043, // 005A LDCONST R6 K67 + 0x581C0007, // 005B LDCONST R7 K7 0x7C0C0800, // 005C CALL R3 4 0x700200CB, // 005D JMP #012A - 0x1C0C034E, // 005E EQ R3 R1 K78 + 0x1C0C0346, // 005E EQ R3 R1 K70 0x780E0012, // 005F JMPF R3 #0073 - 0x8C0C0144, // 0060 GETMET R3 R0 K68 - 0x5814004E, // 0061 LDCONST R5 K78 + 0x8C0C013B, // 0060 GETMET R3 R0 K59 + 0x58140046, // 0061 LDCONST R5 K70 0x7C0C0400, // 0062 CALL R3 2 0x780E0005, // 0063 JMPF R3 #006A - 0x8C0C0118, // 0064 GETMET R3 R0 K24 + 0x8C0C0106, // 0064 GETMET R3 R0 K6 0x54160014, // 0065 LDINT R5 21 - 0x5818004F, // 0066 LDCONST R6 K79 - 0x581C001B, // 0067 LDCONST R7 K27 + 0x58180047, // 0066 LDCONST R6 K71 + 0x581C003D, // 0067 LDCONST R7 K61 0x7C0C0800, // 0068 CALL R3 4 0x70020007, // 0069 JMP #0072 - 0x8C0C0122, // 006A GETMET R3 R0 K34 - 0x58140050, // 006B LDCONST R5 K80 + 0x8C0C0124, // 006A GETMET R3 R0 K36 + 0x58140048, // 006B LDCONST R5 K72 0x7C0C0400, // 006C CALL R3 2 - 0x8C0C0118, // 006D GETMET R3 R0 K24 + 0x8C0C0106, // 006D GETMET R3 R0 K6 0x54160026, // 006E LDINT R5 39 - 0x5818004E, // 006F LDCONST R6 K78 - 0x581C000E, // 0070 LDCONST R7 K14 + 0x58180046, // 006F LDCONST R6 K70 + 0x581C0007, // 0070 LDCONST R7 K7 0x7C0C0800, // 0071 CALL R3 4 0x700200B6, // 0072 JMP #012A - 0x1C0C0351, // 0073 EQ R3 R1 K81 + 0x1C0C0349, // 0073 EQ R3 R1 K73 0x780E0012, // 0074 JMPF R3 #0088 - 0x8C0C0144, // 0075 GETMET R3 R0 K68 - 0x58140051, // 0076 LDCONST R5 K81 + 0x8C0C013B, // 0075 GETMET R3 R0 K59 + 0x58140049, // 0076 LDCONST R5 K73 0x7C0C0400, // 0077 CALL R3 2 0x780E0005, // 0078 JMPF R3 #007F - 0x8C0C0118, // 0079 GETMET R3 R0 K24 + 0x8C0C0106, // 0079 GETMET R3 R0 K6 0x54160015, // 007A LDINT R5 22 - 0x58180052, // 007B LDCONST R6 K82 - 0x581C001B, // 007C LDCONST R7 K27 + 0x5818004A, // 007B LDCONST R6 K74 + 0x581C003D, // 007C LDCONST R7 K61 0x7C0C0800, // 007D CALL R3 4 0x70020007, // 007E JMP #0087 - 0x8C0C0122, // 007F GETMET R3 R0 K34 - 0x58140053, // 0080 LDCONST R5 K83 + 0x8C0C0124, // 007F GETMET R3 R0 K36 + 0x5814004B, // 0080 LDCONST R5 K75 0x7C0C0400, // 0081 CALL R3 2 - 0x8C0C0118, // 0082 GETMET R3 R0 K24 + 0x8C0C0106, // 0082 GETMET R3 R0 K6 0x54160026, // 0083 LDINT R5 39 - 0x58180051, // 0084 LDCONST R6 K81 - 0x581C000E, // 0085 LDCONST R7 K14 + 0x58180049, // 0084 LDCONST R6 K73 + 0x581C0007, // 0085 LDCONST R7 K7 0x7C0C0800, // 0086 CALL R3 4 0x700200A1, // 0087 JMP #012A - 0x1C0C0354, // 0088 EQ R3 R1 K84 + 0x1C0C034C, // 0088 EQ R3 R1 K76 0x780E000F, // 0089 JMPF R3 #009A - 0x8C0C0144, // 008A GETMET R3 R0 K68 - 0x5814004B, // 008B LDCONST R5 K75 + 0x8C0C013B, // 008A GETMET R3 R0 K59 + 0x58140043, // 008B LDCONST R5 K67 0x7C0C0400, // 008C CALL R3 2 0x780E0005, // 008D JMPF R3 #0094 - 0x8C0C0118, // 008E GETMET R3 R0 K24 + 0x8C0C0106, // 008E GETMET R3 R0 K6 0x54160021, // 008F LDINT R5 34 - 0x58180055, // 0090 LDCONST R6 K85 - 0x581C001B, // 0091 LDCONST R7 K27 + 0x5818004D, // 0090 LDCONST R6 K77 + 0x581C003D, // 0091 LDCONST R7 K61 0x7C0C0800, // 0092 CALL R3 4 0x70020004, // 0093 JMP #0099 - 0x8C0C0118, // 0094 GETMET R3 R0 K24 + 0x8C0C0106, // 0094 GETMET R3 R0 K6 0x54160009, // 0095 LDINT R5 10 - 0x58180054, // 0096 LDCONST R6 K84 - 0x581C000E, // 0097 LDCONST R7 K14 + 0x5818004C, // 0096 LDCONST R6 K76 + 0x581C0007, // 0097 LDCONST R7 K7 0x7C0C0800, // 0098 CALL R3 4 0x7002008F, // 0099 JMP #012A - 0x1C0C0356, // 009A EQ R3 R1 K86 + 0x1C0C034E, // 009A EQ R3 R1 K78 0x780E0005, // 009B JMPF R3 #00A2 - 0x8C0C0118, // 009C GETMET R3 R0 K24 + 0x8C0C0106, // 009C GETMET R3 R0 K6 0x54160008, // 009D LDINT R5 9 - 0x58180056, // 009E LDCONST R6 K86 - 0x581C000E, // 009F LDCONST R7 K14 + 0x5818004E, // 009E LDCONST R6 K78 + 0x581C0007, // 009F LDCONST R7 K7 0x7C0C0800, // 00A0 CALL R3 4 0x70020087, // 00A1 JMP #012A - 0x1C0C0357, // 00A2 EQ R3 R1 K87 + 0x1C0C034F, // 00A2 EQ R3 R1 K79 0x780E0005, // 00A3 JMPF R3 #00AA - 0x8C0C0118, // 00A4 GETMET R3 R0 K24 + 0x8C0C0106, // 00A4 GETMET R3 R0 K6 0x5416000A, // 00A5 LDINT R5 11 - 0x58180057, // 00A6 LDCONST R6 K87 - 0x581C000E, // 00A7 LDCONST R7 K14 + 0x5818004F, // 00A6 LDCONST R6 K79 + 0x581C0007, // 00A7 LDCONST R7 K7 0x7C0C0800, // 00A8 CALL R3 4 0x7002007F, // 00A9 JMP #012A - 0x1C0C0358, // 00AA EQ R3 R1 K88 + 0x1C0C0350, // 00AA EQ R3 R1 K80 0x780E0005, // 00AB JMPF R3 #00B2 - 0x8C0C0118, // 00AC GETMET R3 R0 K24 + 0x8C0C0106, // 00AC GETMET R3 R0 K6 0x5416000B, // 00AD LDINT R5 12 - 0x58180058, // 00AE LDCONST R6 K88 - 0x581C000E, // 00AF LDCONST R7 K14 + 0x58180050, // 00AE LDCONST R6 K80 + 0x581C0007, // 00AF LDCONST R7 K7 0x7C0C0800, // 00B0 CALL R3 4 0x70020077, // 00B1 JMP #012A - 0x1C0C0319, // 00B2 EQ R3 R1 K25 + 0x1C0C0351, // 00B2 EQ R3 R1 K81 0x780E0005, // 00B3 JMPF R3 #00BA - 0x8C0C0118, // 00B4 GETMET R3 R0 K24 + 0x8C0C0106, // 00B4 GETMET R3 R0 K6 0x5416000C, // 00B5 LDINT R5 13 - 0x58180019, // 00B6 LDCONST R6 K25 - 0x581C000E, // 00B7 LDCONST R7 K14 + 0x58180051, // 00B6 LDCONST R6 K81 + 0x581C0007, // 00B7 LDCONST R7 K7 0x7C0C0800, // 00B8 CALL R3 4 0x7002006F, // 00B9 JMP #012A - 0x1C0C0359, // 00BA EQ R3 R1 K89 + 0x1C0C0352, // 00BA EQ R3 R1 K82 0x780E0005, // 00BB JMPF R3 #00C2 - 0x8C0C0118, // 00BC GETMET R3 R0 K24 + 0x8C0C0106, // 00BC GETMET R3 R0 K6 0x5416000D, // 00BD LDINT R5 14 - 0x58180059, // 00BE LDCONST R6 K89 - 0x581C000E, // 00BF LDCONST R7 K14 + 0x58180052, // 00BE LDCONST R6 K82 + 0x581C0007, // 00BF LDCONST R7 K7 0x7C0C0800, // 00C0 CALL R3 4 0x70020067, // 00C1 JMP #012A - 0x1C0C035A, // 00C2 EQ R3 R1 K90 + 0x1C0C0353, // 00C2 EQ R3 R1 K83 0x780E0005, // 00C3 JMPF R3 #00CA - 0x8C0C0118, // 00C4 GETMET R3 R0 K24 + 0x8C0C0106, // 00C4 GETMET R3 R0 K6 0x54160017, // 00C5 LDINT R5 24 - 0x5818005A, // 00C6 LDCONST R6 K90 - 0x581C000E, // 00C7 LDCONST R7 K14 + 0x58180053, // 00C6 LDCONST R6 K83 + 0x581C0007, // 00C7 LDCONST R7 K7 0x7C0C0800, // 00C8 CALL R3 4 0x7002005F, // 00C9 JMP #012A - 0x1C0C035B, // 00CA EQ R3 R1 K91 + 0x1C0C0354, // 00CA EQ R3 R1 K84 0x780E0005, // 00CB JMPF R3 #00D2 - 0x8C0C0118, // 00CC GETMET R3 R0 K24 + 0x8C0C0106, // 00CC GETMET R3 R0 K6 0x54160018, // 00CD LDINT R5 25 - 0x5818005B, // 00CE LDCONST R6 K91 - 0x581C000E, // 00CF LDCONST R7 K14 + 0x58180054, // 00CE LDCONST R6 K84 + 0x581C0007, // 00CF LDCONST R7 K7 0x7C0C0800, // 00D0 CALL R3 4 0x70020057, // 00D1 JMP #012A - 0x1C0C035C, // 00D2 EQ R3 R1 K92 + 0x1C0C0355, // 00D2 EQ R3 R1 K85 0x780E0005, // 00D3 JMPF R3 #00DA - 0x8C0C0118, // 00D4 GETMET R3 R0 K24 + 0x8C0C0106, // 00D4 GETMET R3 R0 K6 0x54160019, // 00D5 LDINT R5 26 - 0x5818005C, // 00D6 LDCONST R6 K92 - 0x581C000E, // 00D7 LDCONST R7 K14 + 0x58180055, // 00D6 LDCONST R6 K85 + 0x581C0007, // 00D7 LDCONST R7 K7 0x7C0C0800, // 00D8 CALL R3 4 0x7002004F, // 00D9 JMP #012A - 0x1C0C035D, // 00DA EQ R3 R1 K93 + 0x1C0C0356, // 00DA EQ R3 R1 K86 0x780E0005, // 00DB JMPF R3 #00E2 - 0x8C0C0118, // 00DC GETMET R3 R0 K24 + 0x8C0C0106, // 00DC GETMET R3 R0 K6 0x5416001A, // 00DD LDINT R5 27 - 0x5818005D, // 00DE LDCONST R6 K93 - 0x581C000E, // 00DF LDCONST R7 K14 + 0x58180056, // 00DE LDCONST R6 K86 + 0x581C0007, // 00DF LDCONST R7 K7 0x7C0C0800, // 00E0 CALL R3 4 0x70020047, // 00E1 JMP #012A - 0x1C0C035E, // 00E2 EQ R3 R1 K94 + 0x1C0C0357, // 00E2 EQ R3 R1 K87 0x780E0005, // 00E3 JMPF R3 #00EA - 0x8C0C0118, // 00E4 GETMET R3 R0 K24 + 0x8C0C0106, // 00E4 GETMET R3 R0 K6 0x5416001B, // 00E5 LDINT R5 28 - 0x5818005E, // 00E6 LDCONST R6 K94 - 0x581C000E, // 00E7 LDCONST R7 K14 + 0x58180057, // 00E6 LDCONST R6 K87 + 0x581C0007, // 00E7 LDCONST R7 K7 0x7C0C0800, // 00E8 CALL R3 4 0x7002003F, // 00E9 JMP #012A - 0x1C0C035F, // 00EA EQ R3 R1 K95 + 0x1C0C0358, // 00EA EQ R3 R1 K88 0x780E0005, // 00EB JMPF R3 #00F2 - 0x8C0C0118, // 00EC GETMET R3 R0 K24 + 0x8C0C0106, // 00EC GETMET R3 R0 K6 0x5416001C, // 00ED LDINT R5 29 - 0x5818005F, // 00EE LDCONST R6 K95 - 0x581C000E, // 00EF LDCONST R7 K14 + 0x58180058, // 00EE LDCONST R6 K88 + 0x581C0007, // 00EF LDCONST R7 K7 0x7C0C0800, // 00F0 CALL R3 4 0x70020037, // 00F1 JMP #012A - 0x1C0C0360, // 00F2 EQ R3 R1 K96 + 0x1C0C0359, // 00F2 EQ R3 R1 K89 0x780E0005, // 00F3 JMPF R3 #00FA - 0x8C0C0118, // 00F4 GETMET R3 R0 K24 + 0x8C0C0106, // 00F4 GETMET R3 R0 K6 0x5416001D, // 00F5 LDINT R5 30 - 0x58180060, // 00F6 LDCONST R6 K96 - 0x581C000E, // 00F7 LDCONST R7 K14 + 0x58180059, // 00F6 LDCONST R6 K89 + 0x581C0007, // 00F7 LDCONST R7 K7 0x7C0C0800, // 00F8 CALL R3 4 0x7002002F, // 00F9 JMP #012A - 0x1C0C0361, // 00FA EQ R3 R1 K97 + 0x1C0C035A, // 00FA EQ R3 R1 K90 0x780E0005, // 00FB JMPF R3 #0102 - 0x8C0C0118, // 00FC GETMET R3 R0 K24 + 0x8C0C0106, // 00FC GETMET R3 R0 K6 0x5416001E, // 00FD LDINT R5 31 - 0x58180061, // 00FE LDCONST R6 K97 - 0x581C000E, // 00FF LDCONST R7 K14 + 0x5818005A, // 00FE LDCONST R6 K90 + 0x581C0007, // 00FF LDCONST R7 K7 0x7C0C0800, // 0100 CALL R3 4 0x70020027, // 0101 JMP #012A - 0x1C0C0307, // 0102 EQ R3 R1 K7 + 0x1C0C0331, // 0102 EQ R3 R1 K49 0x780E0005, // 0103 JMPF R3 #010A - 0x8C0C0118, // 0104 GETMET R3 R0 K24 + 0x8C0C0106, // 0104 GETMET R3 R0 K6 0x5416001F, // 0105 LDINT R5 32 - 0x58180007, // 0106 LDCONST R6 K7 - 0x581C000E, // 0107 LDCONST R7 K14 + 0x58180031, // 0106 LDCONST R6 K49 + 0x581C0007, // 0107 LDCONST R7 K7 0x7C0C0800, // 0108 CALL R3 4 0x7002001F, // 0109 JMP #012A - 0x1C0C0315, // 010A EQ R3 R1 K21 + 0x1C0C035B, // 010A EQ R3 R1 K91 0x780E0014, // 010B JMPF R3 #0121 - 0x8C0C0144, // 010C GETMET R3 R0 K68 - 0x58140015, // 010D LDCONST R5 K21 + 0x8C0C013B, // 010C GETMET R3 R0 K59 + 0x5814005B, // 010D LDCONST R5 K91 0x7C0C0400, // 010E CALL R3 2 0x780E000A, // 010F JMPF R3 #011B - 0x8C0C0118, // 0110 GETMET R3 R0 K24 + 0x8C0C0106, // 0110 GETMET R3 R0 K6 0x54160020, // 0111 LDINT R5 33 - 0x58180015, // 0112 LDCONST R6 K21 - 0x581C000E, // 0113 LDCONST R7 K14 + 0x5818005B, // 0112 LDCONST R6 K91 + 0x581C0007, // 0113 LDCONST R7 K7 0x7C0C0800, // 0114 CALL R3 4 - 0x8C0C0118, // 0115 GETMET R3 R0 K24 + 0x8C0C0106, // 0115 GETMET R3 R0 K6 0x54160020, // 0116 LDINT R5 33 - 0x58180015, // 0117 LDCONST R6 K21 - 0x581C000E, // 0118 LDCONST R7 K14 + 0x5818005B, // 0117 LDCONST R6 K91 + 0x581C0007, // 0118 LDCONST R7 K7 0x7C0C0800, // 0119 CALL R3 4 0x70020004, // 011A JMP #0120 - 0x8C0C0118, // 011B GETMET R3 R0 K24 + 0x8C0C0106, // 011B GETMET R3 R0 K6 0x54160020, // 011C LDINT R5 33 - 0x58180015, // 011D LDCONST R6 K21 - 0x581C000E, // 011E LDCONST R7 K14 + 0x5818005B, // 011D LDCONST R6 K91 + 0x581C0007, // 011E LDCONST R7 K7 0x7C0C0800, // 011F CALL R3 4 0x70020008, // 0120 JMP #012A - 0x8C0C0122, // 0121 GETMET R3 R0 K34 - 0x0016C401, // 0122 ADD R5 K98 R1 - 0x00140B63, // 0123 ADD R5 R5 K99 + 0x8C0C0124, // 0121 GETMET R3 R0 K36 + 0x0016B801, // 0122 ADD R5 K92 R1 + 0x00140B15, // 0123 ADD R5 R5 K21 0x7C0C0400, // 0124 CALL R3 2 - 0x8C0C0118, // 0125 GETMET R3 R0 K24 + 0x8C0C0106, // 0125 GETMET R3 R0 K6 0x54160026, // 0126 LDINT R5 39 0x5C180200, // 0127 MOVE R6 R1 - 0x581C000E, // 0128 LDCONST R7 K14 + 0x581C0007, // 0128 LDCONST R7 K7 0x7C0C0800, // 0129 CALL R3 4 0x80000000, // 012A RET 0 }) @@ -13835,11 +17155,52 @@ be_local_closure(class_DSLLexer_scan_operator_or_delimiter, /* name */ /******************************************************************** -** Solidified function: tokenize +** Solidified function: match ********************************************************************/ -be_local_closure(class_DSLLexer_tokenize, /* name */ +be_local_closure(class_DSLLexer_match, /* name */ be_nested_proto( - 6, /* nstack */ + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(match), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C08011F, // 0000 GETMET R2 R0 K31 + 0x7C080200, // 0001 CALL R2 1 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x8808011D, // 0003 GETMBR R2 R0 K29 + 0x880C011C, // 0004 GETMBR R3 R0 K28 + 0x94080403, // 0005 GETIDX R2 R2 R3 + 0x20080401, // 0006 NE R2 R2 R1 + 0x780A0001, // 0007 JMPF R2 #000A + 0x50080000, // 0008 LDBOOL R2 0 0 + 0x80040400, // 0009 RET 1 R2 + 0x8808011C, // 000A GETMBR R2 R0 K28 + 0x00080507, // 000B ADD R2 R2 K7 + 0x90023802, // 000C SETMBR R0 K28 R2 + 0x88080100, // 000D GETMBR R2 R0 K0 + 0x00080507, // 000E ADD R2 R2 K7 + 0x90020002, // 000F SETMBR R0 K0 R2 + 0x50080200, // 0010 LDBOOL R2 1 0 + 0x80040400, // 0011 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: peek_next +********************************************************************/ +be_local_closure(class_DSLLexer_peek_next, /* name */ + be_nested_proto( + 4, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -13848,31 +17209,463 @@ be_local_closure(class_DSLLexer_tokenize, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(tokenize), + be_str_weak(peek_next), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x90025601, // 0002 SETMBR R0 K43 R1 - 0x60040012, // 0003 GETGBL R1 G18 - 0x7C040000, // 0004 CALL R1 0 - 0x90020001, // 0005 SETMBR R0 K0 R1 - 0x90021B25, // 0006 SETMBR R0 K13 K37 - 0x90020D0E, // 0007 SETMBR R0 K6 K14 - 0x9002110E, // 0008 SETMBR R0 K8 K14 - 0x8C040111, // 0009 GETMET R1 R0 K17 - 0x7C040200, // 000A CALL R1 1 - 0x74060002, // 000B JMPT R1 #000F - 0x8C040164, // 000C GETMET R1 R0 K100 - 0x7C040200, // 000D CALL R1 1 - 0x7001FFF9, // 000E JMP #0009 - 0x8C040118, // 000F GETMET R1 R0 K24 - 0x540E0025, // 0010 LDINT R3 38 - 0x58100010, // 0011 LDCONST R4 K16 - 0x58140025, // 0012 LDCONST R5 K37 - 0x7C040800, // 0013 CALL R1 4 - 0x8804012B, // 0014 GETMBR R1 R0 K43 - 0x80040200, // 0015 RET 1 R1 + ( &(const binstruction[13]) { /* code */ + 0x8804011C, // 0000 GETMBR R1 R0 K28 + 0x00040307, // 0001 ADD R1 R1 K7 + 0x6008000C, // 0002 GETGBL R2 G12 + 0x880C011D, // 0003 GETMBR R3 R0 K29 + 0x7C080200, // 0004 CALL R2 1 + 0x28040202, // 0005 GE R1 R1 R2 + 0x78060000, // 0006 JMPF R1 #0008 + 0x80063C00, // 0007 RET 1 K30 + 0x8804011C, // 0008 GETMBR R1 R0 K28 + 0x00040307, // 0009 ADD R1 R1 K7 + 0x8808011D, // 000A GETMBR R2 R0 K29 + 0x94040401, // 000B GETIDX R1 R2 R1 + 0x80040200, // 000C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_digit +********************************************************************/ +be_local_closure(class_DSLLexer_is_digit, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(is_digit), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x2808030B, // 0000 GE R2 R1 K11 + 0x780A0001, // 0001 JMPF R2 #0004 + 0x1808035D, // 0002 LE R2 R1 K93 + 0x740A0000, // 0003 JMPT R2 #0005 + 0x50080001, // 0004 LDBOOL R2 0 1 + 0x50080200, // 0005 LDBOOL R2 1 0 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tokenize_with_errors +********************************************************************/ +be_local_closure(class_DSLLexer_tokenize_with_errors, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(tokenize_with_errors), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C04015E, // 0000 GETMET R1 R0 K94 + 0x7C040200, // 0001 CALL R1 1 + 0x60080013, // 0002 GETGBL R2 G19 + 0x7C080000, // 0003 CALL R2 0 + 0x980A5201, // 0004 SETIDX R2 K41 R1 + 0x880C012E, // 0005 GETMBR R3 R0 K46 + 0x980A5C03, // 0006 SETIDX R2 K46 R3 + 0x8C0C012B, // 0007 GETMET R3 R0 K43 + 0x7C0C0200, // 0008 CALL R3 1 + 0x780E0000, // 0009 JMPF R3 #000B + 0x500C0001, // 000A LDBOOL R3 0 1 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0x980ABE03, // 000C SETIDX R2 K95 R3 + 0x80040400, // 000D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: at_end +********************************************************************/ +be_local_closure(class_DSLLexer_at_end, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(at_end), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8804011C, // 0000 GETMBR R1 R0 K28 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C011D, // 0002 GETMBR R3 R0 K29 + 0x7C080200, // 0003 CALL R2 1 + 0x28040202, // 0004 GE R1 R1 R2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: reset +********************************************************************/ +be_local_closure(class_DSLLexer_reset, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(reset), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x5C080200, // 0003 MOVE R2 R1 + 0x70020000, // 0004 JMP #0006 + 0x5808001E, // 0005 LDCONST R2 K30 + 0x90023A02, // 0006 SETMBR R0 K29 R2 + 0x90023939, // 0007 SETMBR R0 K28 K57 + 0x90021107, // 0008 SETMBR R0 K8 K7 + 0x90020107, // 0009 SETMBR R0 K0 K7 + 0x60080012, // 000A GETGBL R2 G18 + 0x7C080000, // 000B CALL R2 0 + 0x90025202, // 000C SETMBR R0 K41 R2 + 0x60080012, // 000D GETGBL R2 G18 + 0x7C080000, // 000E CALL R2 0 + 0x90025C02, // 000F SETMBR R0 K46 R2 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: scan_variable_reference +********************************************************************/ +be_local_closure(class_DSLLexer_scan_variable_reference, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(scan_variable_reference), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0x8804011C, // 0000 GETMBR R1 R0 K28 + 0x04040307, // 0001 SUB R1 R1 K7 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x04080507, // 0003 SUB R2 R2 K7 + 0x8C0C011F, // 0004 GETMET R3 R0 K31 + 0x7C0C0200, // 0005 CALL R3 1 + 0x740E000B, // 0006 JMPT R3 #0013 + 0x8C0C010F, // 0007 GETMET R3 R0 K15 + 0x8C14010C, // 0008 GETMET R5 R0 K12 + 0x7C140200, // 0009 CALL R5 1 + 0x7C0C0400, // 000A CALL R3 2 + 0x740E0004, // 000B JMPT R3 #0011 + 0x8C0C010C, // 000C GETMET R3 R0 K12 + 0x7C0C0200, // 000D CALL R3 1 + 0x1C0C0710, // 000E EQ R3 R3 K16 + 0x740E0000, // 000F JMPT R3 #0011 + 0x500C0001, // 0010 LDBOOL R3 0 1 + 0x500C0200, // 0011 LDBOOL R3 1 0 + 0x740E0008, // 0012 JMPT R3 #001C + 0x8C0C0124, // 0013 GETMET R3 R0 K36 + 0x58140060, // 0014 LDCONST R5 K96 + 0x7C0C0400, // 0015 CALL R3 2 + 0x8C0C0106, // 0016 GETMET R3 R0 K6 + 0x54160026, // 0017 LDINT R5 39 + 0x58180019, // 0018 LDCONST R6 K25 + 0x581C0007, // 0019 LDCONST R7 K7 + 0x7C0C0800, // 001A CALL R3 4 + 0x80000600, // 001B RET 0 + 0x8C0C011F, // 001C GETMET R3 R0 K31 + 0x7C0C0200, // 001D CALL R3 1 + 0x740E000B, // 001E JMPT R3 #002B + 0x8C0C0161, // 001F GETMET R3 R0 K97 + 0x8C14010C, // 0020 GETMET R5 R0 K12 + 0x7C140200, // 0021 CALL R5 1 + 0x7C0C0400, // 0022 CALL R3 2 + 0x740E0003, // 0023 JMPT R3 #0028 + 0x8C0C010C, // 0024 GETMET R3 R0 K12 + 0x7C0C0200, // 0025 CALL R3 1 + 0x1C0C0710, // 0026 EQ R3 R3 K16 + 0x780E0002, // 0027 JMPF R3 #002B + 0x8C0C0101, // 0028 GETMET R3 R0 K1 + 0x7C0C0200, // 0029 CALL R3 1 + 0x7001FFF0, // 002A JMP #001C + 0x880C011C, // 002B GETMBR R3 R0 K28 + 0x040C0707, // 002C SUB R3 R3 K7 + 0x400C0203, // 002D CONNECT R3 R1 R3 + 0x8810011D, // 002E GETMBR R4 R0 K29 + 0x940C0803, // 002F GETIDX R3 R4 R3 + 0x8C100106, // 0030 GETMET R4 R0 K6 + 0x541A0023, // 0031 LDINT R6 36 + 0x5C1C0600, // 0032 MOVE R7 R3 + 0x6020000C, // 0033 GETGBL R8 G12 + 0x5C240600, // 0034 MOVE R9 R3 + 0x7C200200, // 0035 CALL R8 1 + 0x7C100800, // 0036 CALL R4 4 + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_time_suffix +********************************************************************/ +be_local_closure(class_DSLLexer_check_time_suffix, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(check_time_suffix), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0xA406C400, // 0000 IMPORT R1 K98 + 0x8C08011F, // 0001 GETMET R2 R0 K31 + 0x7C080200, // 0002 CALL R2 1 + 0x780A0001, // 0003 JMPF R2 #0006 + 0x50080000, // 0004 LDBOOL R2 0 0 + 0x80040400, // 0005 RET 1 R2 + 0x8808011C, // 0006 GETMBR R2 R0 K28 + 0x40080563, // 0007 CONNECT R2 R2 K99 + 0x880C011D, // 0008 GETMBR R3 R0 K29 + 0x94080602, // 0009 GETIDX R2 R3 R2 + 0x8C0C0364, // 000A GETMET R3 R1 K100 + 0x5C140400, // 000B MOVE R5 R2 + 0x58180065, // 000C LDCONST R6 K101 + 0x7C0C0600, // 000D CALL R3 3 + 0x740E000F, // 000E JMPT R3 #001F + 0x8C0C0364, // 000F GETMET R3 R1 K100 + 0x5C140400, // 0010 MOVE R5 R2 + 0x58180066, // 0011 LDCONST R6 K102 + 0x7C0C0600, // 0012 CALL R3 3 + 0x740E000A, // 0013 JMPT R3 #001F + 0x8C0C0364, // 0014 GETMET R3 R1 K100 + 0x5C140400, // 0015 MOVE R5 R2 + 0x58180067, // 0016 LDCONST R6 K103 + 0x7C0C0600, // 0017 CALL R3 3 + 0x740E0005, // 0018 JMPT R3 #001F + 0x8C0C0364, // 0019 GETMET R3 R1 K100 + 0x5C140400, // 001A MOVE R5 R2 + 0x58180068, // 001B LDCONST R6 K104 + 0x7C0C0600, // 001C CALL R3 3 + 0x740E0000, // 001D JMPT R3 #001F + 0x500C0001, // 001E LDBOOL R3 0 1 + 0x500C0200, // 001F LDBOOL R3 1 0 + 0x80040600, // 0020 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: scan_number +********************************************************************/ +be_local_closure(class_DSLLexer_scan_number, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(scan_number), + &be_const_str_solidified, + ( &(const binstruction[113]) { /* code */ + 0x8804011C, // 0000 GETMBR R1 R0 K28 + 0x04040307, // 0001 SUB R1 R1 K7 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x04080507, // 0003 SUB R2 R2 K7 + 0x500C0000, // 0004 LDBOOL R3 0 0 + 0x8C10011F, // 0005 GETMET R4 R0 K31 + 0x7C100200, // 0006 CALL R4 1 + 0x74120007, // 0007 JMPT R4 #0010 + 0x8C100112, // 0008 GETMET R4 R0 K18 + 0x8C18010C, // 0009 GETMET R6 R0 K12 + 0x7C180200, // 000A CALL R6 1 + 0x7C100400, // 000B CALL R4 2 + 0x78120002, // 000C JMPF R4 #0010 + 0x8C100101, // 000D GETMET R4 R0 K1 + 0x7C100200, // 000E CALL R4 1 + 0x7001FFF4, // 000F JMP #0005 + 0x8C10011F, // 0010 GETMET R4 R0 K31 + 0x7C100200, // 0011 CALL R4 1 + 0x7412001F, // 0012 JMPT R4 #0033 + 0x8C10010C, // 0013 GETMET R4 R0 K12 + 0x7C100200, // 0014 CALL R4 1 + 0x1C10095B, // 0015 EQ R4 R4 K91 + 0x7812001B, // 0016 JMPF R4 #0033 + 0x8810011C, // 0017 GETMBR R4 R0 K28 + 0x00100907, // 0018 ADD R4 R4 K7 + 0x6014000C, // 0019 GETGBL R5 G12 + 0x8818011D, // 001A GETMBR R6 R0 K29 + 0x7C140200, // 001B CALL R5 1 + 0x14100805, // 001C LT R4 R4 R5 + 0x78120014, // 001D JMPF R4 #0033 + 0x8C100112, // 001E GETMET R4 R0 K18 + 0x8818011C, // 001F GETMBR R6 R0 K28 + 0x00180D07, // 0020 ADD R6 R6 K7 + 0x881C011D, // 0021 GETMBR R7 R0 K29 + 0x94180E06, // 0022 GETIDX R6 R7 R6 + 0x7C100400, // 0023 CALL R4 2 + 0x7812000D, // 0024 JMPF R4 #0033 + 0x500C0200, // 0025 LDBOOL R3 1 0 + 0x8C100101, // 0026 GETMET R4 R0 K1 + 0x7C100200, // 0027 CALL R4 1 + 0x8C10011F, // 0028 GETMET R4 R0 K31 + 0x7C100200, // 0029 CALL R4 1 + 0x74120007, // 002A JMPT R4 #0033 + 0x8C100112, // 002B GETMET R4 R0 K18 + 0x8C18010C, // 002C GETMET R6 R0 K12 + 0x7C180200, // 002D CALL R6 1 + 0x7C100400, // 002E CALL R4 2 + 0x78120002, // 002F JMPF R4 #0033 + 0x8C100101, // 0030 GETMET R4 R0 K1 + 0x7C100200, // 0031 CALL R4 1 + 0x7001FFF4, // 0032 JMP #0028 + 0x8810011C, // 0033 GETMBR R4 R0 K28 + 0x04100907, // 0034 SUB R4 R4 K7 + 0x40100204, // 0035 CONNECT R4 R1 R4 + 0x8814011D, // 0036 GETMBR R5 R0 K29 + 0x94100A04, // 0037 GETIDX R4 R5 R4 + 0x8C140169, // 0038 GETMET R5 R0 K105 + 0x7C140200, // 0039 CALL R5 1 + 0x78160009, // 003A JMPF R5 #0045 + 0x8C14016A, // 003B GETMET R5 R0 K106 + 0x7C140200, // 003C CALL R5 1 + 0x8C180106, // 003D GETMET R6 R0 K6 + 0x54220004, // 003E LDINT R8 5 + 0x00240805, // 003F ADD R9 R4 R5 + 0x6028000C, // 0040 GETGBL R10 G12 + 0x002C0805, // 0041 ADD R11 R4 R5 + 0x7C280200, // 0042 CALL R10 1 + 0x7C180800, // 0043 CALL R6 4 + 0x7002002A, // 0044 JMP #0070 + 0x8C14011F, // 0045 GETMET R5 R0 K31 + 0x7C140200, // 0046 CALL R5 1 + 0x7416000E, // 0047 JMPT R5 #0057 + 0x8C14010C, // 0048 GETMET R5 R0 K12 + 0x7C140200, // 0049 CALL R5 1 + 0x1C140B51, // 004A EQ R5 R5 K81 + 0x7816000A, // 004B JMPF R5 #0057 + 0x8C140101, // 004C GETMET R5 R0 K1 + 0x7C140200, // 004D CALL R5 1 + 0x8C140106, // 004E GETMET R5 R0 K6 + 0x541E0005, // 004F LDINT R7 6 + 0x00200951, // 0050 ADD R8 R4 K81 + 0x6024000C, // 0051 GETGBL R9 G12 + 0x5C280800, // 0052 MOVE R10 R4 + 0x7C240200, // 0053 CALL R9 1 + 0x00241307, // 0054 ADD R9 R9 K7 + 0x7C140800, // 0055 CALL R5 4 + 0x70020018, // 0056 JMP #0070 + 0x8C14011F, // 0057 GETMET R5 R0 K31 + 0x7C140200, // 0058 CALL R5 1 + 0x7416000E, // 0059 JMPT R5 #0069 + 0x8C14010C, // 005A GETMET R5 R0 K12 + 0x7C140200, // 005B CALL R5 1 + 0x1C140B0D, // 005C EQ R5 R5 K13 + 0x7816000A, // 005D JMPF R5 #0069 + 0x8C140101, // 005E GETMET R5 R0 K1 + 0x7C140200, // 005F CALL R5 1 + 0x8C140106, // 0060 GETMET R5 R0 K6 + 0x541E0006, // 0061 LDINT R7 7 + 0x0020090D, // 0062 ADD R8 R4 K13 + 0x6024000C, // 0063 GETGBL R9 G12 + 0x5C280800, // 0064 MOVE R10 R4 + 0x7C240200, // 0065 CALL R9 1 + 0x00241307, // 0066 ADD R9 R9 K7 + 0x7C140800, // 0067 CALL R5 4 + 0x70020006, // 0068 JMP #0070 + 0x8C140106, // 0069 GETMET R5 R0 K6 + 0x581C003D, // 006A LDCONST R7 K61 + 0x5C200800, // 006B MOVE R8 R4 + 0x6024000C, // 006C GETGBL R9 G12 + 0x5C280800, // 006D MOVE R10 R4 + 0x7C240200, // 006E CALL R9 1 + 0x7C140800, // 006F CALL R5 4 + 0x80000000, // 0070 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_alnum +********************************************************************/ +be_local_closure(class_DSLLexer_is_alnum, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(is_alnum), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C08010F, // 0000 GETMET R2 R0 K15 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x740A0004, // 0003 JMPT R2 #0009 + 0x8C080112, // 0004 GETMET R2 R0 K18 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x740A0000, // 0007 JMPT R2 #0009 + 0x50080001, // 0008 LDBOOL R2 0 1 + 0x50080200, // 0009 LDBOOL R2 1 0 + 0x80040400, // 000A RET 1 R2 }) ) ); @@ -13897,9 +17690,9 @@ be_local_closure(class_DSLLexer_has_errors, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x8808012E, // 0001 GETMBR R2 R0 K46 0x7C040200, // 0002 CALL R1 1 - 0x24040325, // 0003 GT R1 R1 K37 + 0x24040339, // 0003 GT R1 R1 K57 0x80040200, // 0004 RET 1 R1 }) ) @@ -13908,11 +17701,11 @@ be_local_closure(class_DSLLexer_has_errors, /* name */ /******************************************************************** -** Solidified function: scan_token +** Solidified function: scan_identifier_or_keyword ********************************************************************/ -be_local_closure(class_DSLLexer_scan_token, /* name */ +be_local_closure(class_DSLLexer_scan_identifier_or_keyword, /* name */ be_nested_proto( - 8, /* nstack */ + 11, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -13921,80 +17714,57 @@ be_local_closure(class_DSLLexer_scan_token, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(scan_token), + be_str_weak(scan_identifier_or_keyword), &be_const_str_solidified, - ( &(const binstruction[71]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 0x8C080114, // 0001 GETMET R2 R0 K20 - 0x7C080200, // 0002 CALL R2 1 - 0x1C0C0565, // 0003 EQ R3 R2 K101 - 0x740E0003, // 0004 JMPT R3 #0009 - 0x1C0C051F, // 0005 EQ R3 R2 K31 - 0x740E0001, // 0006 JMPT R3 #0009 - 0x1C0C0521, // 0007 EQ R3 R2 K33 - 0x780E0001, // 0008 JMPF R3 #000B - 0x80000600, // 0009 RET 0 - 0x7002003A, // 000A JMP #0046 - 0x1C0C050B, // 000B EQ R3 R2 K11 - 0x780E000A, // 000C JMPF R3 #0018 - 0x8C0C0118, // 000D GETMET R3 R0 K24 - 0x54160022, // 000E LDINT R5 35 - 0x5818000B, // 000F LDCONST R6 K11 - 0x581C000E, // 0010 LDCONST R7 K14 - 0x7C0C0800, // 0011 CALL R3 4 - 0x880C0106, // 0012 GETMBR R3 R0 K6 - 0x000C070E, // 0013 ADD R3 R3 K14 - 0x90020C03, // 0014 SETMBR R0 K6 R3 - 0x9002110E, // 0015 SETMBR R0 K8 K14 - 0x80000600, // 0016 RET 0 - 0x7002002D, // 0017 JMP #0046 - 0x1C0C0566, // 0018 EQ R3 R2 K102 - 0x780E0002, // 0019 JMPF R3 #001D - 0x8C0C0167, // 001A GETMET R3 R0 K103 - 0x7C0C0200, // 001B CALL R3 1 - 0x70020028, // 001C JMP #0046 - 0x1C0C0539, // 001D EQ R3 R2 K57 - 0x780E0006, // 001E JMPF R3 #0026 - 0x8C0C0113, // 001F GETMET R3 R0 K19 - 0x7C0C0200, // 0020 CALL R3 1 - 0x1C0C071A, // 0021 EQ R3 R3 K26 - 0x780E0002, // 0022 JMPF R3 #0026 - 0x8C0C0168, // 0023 GETMET R3 R0 K104 - 0x7C0C0200, // 0024 CALL R3 1 - 0x7002001F, // 0025 JMP #0046 - 0x8C0C0134, // 0026 GETMET R3 R0 K52 - 0x5C140400, // 0027 MOVE R5 R2 - 0x7C0C0400, // 0028 CALL R3 2 - 0x740E0001, // 0029 JMPT R3 #002C - 0x1C0C0535, // 002A EQ R3 R2 K53 - 0x780E0002, // 002B JMPF R3 #002F - 0x8C0C0169, // 002C GETMET R3 R0 K105 - 0x7C0C0200, // 002D CALL R3 1 - 0x70020016, // 002E JMP #0046 - 0x8C0C0112, // 002F GETMET R3 R0 K18 - 0x5C140400, // 0030 MOVE R5 R2 - 0x7C0C0400, // 0031 CALL R3 2 - 0x780E0002, // 0032 JMPF R3 #0036 - 0x8C0C016A, // 0033 GETMET R3 R0 K106 - 0x7C0C0200, // 0034 CALL R3 1 - 0x7002000F, // 0035 JMP #0046 - 0x1C0C056B, // 0036 EQ R3 R2 K107 - 0x740E0001, // 0037 JMPT R3 #003A - 0x1C0C0563, // 0038 EQ R3 R2 K99 - 0x780E0003, // 0039 JMPF R3 #003E - 0x8C0C016C, // 003A GETMET R3 R0 K108 - 0x5C140400, // 003B MOVE R5 R2 - 0x7C0C0400, // 003C CALL R3 2 - 0x70020007, // 003D JMP #0046 - 0x1C0C0537, // 003E EQ R3 R2 K55 - 0x780E0002, // 003F JMPF R3 #0043 - 0x8C0C016D, // 0040 GETMET R3 R0 K109 - 0x7C0C0200, // 0041 CALL R3 1 - 0x70020002, // 0042 JMP #0046 - 0x8C0C016E, // 0043 GETMET R3 R0 K110 - 0x5C140400, // 0044 MOVE R5 R2 - 0x7C0C0400, // 0045 CALL R3 2 - 0x80000000, // 0046 RET 0 + ( &(const binstruction[48]) { /* code */ + 0x8804011C, // 0000 GETMBR R1 R0 K28 + 0x04040307, // 0001 SUB R1 R1 K7 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x04080507, // 0003 SUB R2 R2 K7 + 0x8C0C011F, // 0004 GETMET R3 R0 K31 + 0x7C0C0200, // 0005 CALL R3 1 + 0x740E000B, // 0006 JMPT R3 #0013 + 0x8C0C0161, // 0007 GETMET R3 R0 K97 + 0x8C14010C, // 0008 GETMET R5 R0 K12 + 0x7C140200, // 0009 CALL R5 1 + 0x7C0C0400, // 000A CALL R3 2 + 0x740E0003, // 000B JMPT R3 #0010 + 0x8C0C010C, // 000C GETMET R3 R0 K12 + 0x7C0C0200, // 000D CALL R3 1 + 0x1C0C0710, // 000E EQ R3 R3 K16 + 0x780E0002, // 000F JMPF R3 #0013 + 0x8C0C0101, // 0010 GETMET R3 R0 K1 + 0x7C0C0200, // 0011 CALL R3 1 + 0x7001FFF0, // 0012 JMP #0004 + 0x880C011C, // 0013 GETMBR R3 R0 K28 + 0x040C0707, // 0014 SUB R3 R3 K7 + 0x400C0203, // 0015 CONNECT R3 R1 R3 + 0x8810011D, // 0016 GETMBR R4 R0 K29 + 0x940C0803, // 0017 GETIDX R3 R4 R3 + 0x4C100000, // 0018 LDNIL R4 + 0xB8164E00, // 0019 GETNGBL R5 K39 + 0x8C140B6B, // 001A GETMET R5 R5 K107 + 0x5C1C0600, // 001B MOVE R7 R3 + 0x7C140400, // 001C CALL R5 2 + 0x78160001, // 001D JMPF R5 #0020 + 0x54120003, // 001E LDINT R4 4 + 0x70020007, // 001F JMP #0028 + 0xB8164E00, // 0020 GETNGBL R5 K39 + 0x8C140B6C, // 0021 GETMET R5 R5 K108 + 0x5C1C0600, // 0022 MOVE R7 R3 + 0x7C140400, // 0023 CALL R5 2 + 0x78160001, // 0024 JMPF R5 #0027 + 0x58100039, // 0025 LDCONST R4 K57 + 0x70020000, // 0026 JMP #0028 + 0x58100007, // 0027 LDCONST R4 K7 + 0x8C140106, // 0028 GETMET R5 R0 K6 + 0x5C1C0800, // 0029 MOVE R7 R4 + 0x5C200600, // 002A MOVE R8 R3 + 0x6024000C, // 002B GETGBL R9 G12 + 0x5C280600, // 002C MOVE R10 R3 + 0x7C240200, // 002D CALL R9 1 + 0x7C140800, // 002E CALL R5 4 + 0x80000000, // 002F RET 0 }) ) ); @@ -14002,11 +17772,11 @@ be_local_closure(class_DSLLexer_scan_token, /* name */ /******************************************************************** -** Solidified function: tokenize_with_errors +** Solidified function: scan_hex_color_0x ********************************************************************/ -be_local_closure(class_DSLLexer_tokenize_with_errors, /* name */ +be_local_closure(class_DSLLexer_scan_hex_color_0x, /* name */ be_nested_proto( - 5, /* nstack */ + 11, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -14015,23 +17785,121 @@ be_local_closure(class_DSLLexer_tokenize_with_errors, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_DSLLexer, /* shared constants */ - be_str_weak(tokenize_with_errors), + be_str_weak(scan_hex_color_0x), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C04016F, // 0000 GETMET R1 R0 K111 - 0x7C040200, // 0001 CALL R1 1 - 0x60080013, // 0002 GETGBL R2 G19 - 0x7C080000, // 0003 CALL R2 0 - 0x980A5601, // 0004 SETIDX R2 K43 R1 - 0x880C0100, // 0005 GETMBR R3 R0 K0 - 0x980A0003, // 0006 SETIDX R2 K0 R3 - 0x8C0C0101, // 0007 GETMET R3 R0 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x780E0000, // 0009 JMPF R3 #000B - 0x500C0001, // 000A LDBOOL R3 0 1 - 0x500C0200, // 000B LDBOOL R3 1 0 - 0x980AE003, // 000C SETIDX R2 K112 R3 - 0x80040400, // 000D RET 1 R2 + ( &(const binstruction[50]) { /* code */ + 0x8804011C, // 0000 GETMBR R1 R0 K28 + 0x04040307, // 0001 SUB R1 R1 K7 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x04080507, // 0003 SUB R2 R2 K7 + 0x8C0C0101, // 0004 GETMET R3 R0 K1 + 0x7C0C0200, // 0005 CALL R3 1 + 0x580C0039, // 0006 LDCONST R3 K57 + 0x8C10011F, // 0007 GETMET R4 R0 K31 + 0x7C100200, // 0008 CALL R4 1 + 0x74120008, // 0009 JMPT R4 #0013 + 0x8C10016D, // 000A GETMET R4 R0 K109 + 0x8C18010C, // 000B GETMET R6 R0 K12 + 0x7C180200, // 000C CALL R6 1 + 0x7C100400, // 000D CALL R4 2 + 0x78120003, // 000E JMPF R4 #0013 + 0x8C100101, // 000F GETMET R4 R0 K1 + 0x7C100200, // 0010 CALL R4 1 + 0x000C0707, // 0011 ADD R3 R3 K7 + 0x7001FFF3, // 0012 JMP #0007 + 0x8810011C, // 0013 GETMBR R4 R0 K28 + 0x04100907, // 0014 SUB R4 R4 K7 + 0x40100204, // 0015 CONNECT R4 R1 R4 + 0x8814011D, // 0016 GETMBR R5 R0 K29 + 0x94100A04, // 0017 GETIDX R4 R5 R4 + 0x54160005, // 0018 LDINT R5 6 + 0x1C140605, // 0019 EQ R5 R3 R5 + 0x74160002, // 001A JMPT R5 #001E + 0x54160007, // 001B LDINT R5 8 + 0x1C140605, // 001C EQ R5 R3 R5 + 0x78160007, // 001D JMPF R5 #0026 + 0x8C140106, // 001E GETMET R5 R0 K6 + 0x541E0003, // 001F LDINT R7 4 + 0x5C200800, // 0020 MOVE R8 R4 + 0x6024000C, // 0021 GETGBL R9 G12 + 0x5C280800, // 0022 MOVE R10 R4 + 0x7C240200, // 0023 CALL R9 1 + 0x7C140800, // 0024 CALL R5 4 + 0x7002000A, // 0025 JMP #0031 + 0x8C140124, // 0026 GETMET R5 R0 K36 + 0x001EDC04, // 0027 ADD R7 K110 R4 + 0x001C0F6F, // 0028 ADD R7 R7 K111 + 0x7C140400, // 0029 CALL R5 2 + 0x8C140106, // 002A GETMET R5 R0 K6 + 0x541E0026, // 002B LDINT R7 39 + 0x5C200800, // 002C MOVE R8 R4 + 0x6024000C, // 002D GETGBL R9 G12 + 0x5C280800, // 002E MOVE R10 R4 + 0x7C240200, // 002F CALL R9 1 + 0x7C140800, // 0030 CALL R5 4 + 0x80000000, // 0031 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: scan_time_suffix +********************************************************************/ +be_local_closure(class_DSLLexer_scan_time_suffix, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(scan_time_suffix), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0xA406C400, // 0000 IMPORT R1 K98 + 0x8C080364, // 0001 GETMET R2 R1 K100 + 0x8810011C, // 0002 GETMBR R4 R0 K28 + 0x40100963, // 0003 CONNECT R4 R4 K99 + 0x8814011D, // 0004 GETMBR R5 R0 K29 + 0x94100A04, // 0005 GETIDX R4 R5 R4 + 0x58140065, // 0006 LDCONST R5 K101 + 0x7C080600, // 0007 CALL R2 3 + 0x780A0005, // 0008 JMPF R2 #000F + 0x8C080101, // 0009 GETMET R2 R0 K1 + 0x7C080200, // 000A CALL R2 1 + 0x8C080101, // 000B GETMET R2 R0 K1 + 0x7C080200, // 000C CALL R2 1 + 0x8006CA00, // 000D RET 1 K101 + 0x70020016, // 000E JMP #0026 + 0x8C08010C, // 000F GETMET R2 R0 K12 + 0x7C080200, // 0010 CALL R2 1 + 0x1C080566, // 0011 EQ R2 R2 K102 + 0x780A0003, // 0012 JMPF R2 #0017 + 0x8C080101, // 0013 GETMET R2 R0 K1 + 0x7C080200, // 0014 CALL R2 1 + 0x8006CC00, // 0015 RET 1 K102 + 0x7002000E, // 0016 JMP #0026 + 0x8C08010C, // 0017 GETMET R2 R0 K12 + 0x7C080200, // 0018 CALL R2 1 + 0x1C080567, // 0019 EQ R2 R2 K103 + 0x780A0003, // 001A JMPF R2 #001F + 0x8C080101, // 001B GETMET R2 R0 K1 + 0x7C080200, // 001C CALL R2 1 + 0x8006CE00, // 001D RET 1 K103 + 0x70020006, // 001E JMP #0026 + 0x8C08010C, // 001F GETMET R2 R0 K12 + 0x7C080200, // 0020 CALL R2 1 + 0x1C080568, // 0021 EQ R2 R2 K104 + 0x780A0002, // 0022 JMPF R2 #0026 + 0x8C080101, // 0023 GETMET R2 R0 K1 + 0x7C080200, // 0024 CALL R2 1 + 0x8006D000, // 0025 RET 1 K104 + 0x80063C00, // 0026 RET 1 K30 }) ) ); @@ -14057,15 +17925,15 @@ be_local_closure(class_DSLLexer_get_position_info, /* name */ ( &(const binstruction[12]) { /* code */ 0x60040013, // 0000 GETGBL R1 G19 0x7C040000, // 0001 CALL R1 0 - 0x8808010D, // 0002 GETMBR R2 R0 K13 - 0x98061A02, // 0003 SETIDX R1 K13 R2 - 0x88080106, // 0004 GETMBR R2 R0 K6 - 0x98060C02, // 0005 SETIDX R1 K6 R2 - 0x88080108, // 0006 GETMBR R2 R0 K8 - 0x98061002, // 0007 SETIDX R1 K8 R2 - 0x8C080111, // 0008 GETMET R2 R0 K17 + 0x8808011C, // 0002 GETMBR R2 R0 K28 + 0x98063802, // 0003 SETIDX R1 K28 R2 + 0x88080108, // 0004 GETMBR R2 R0 K8 + 0x98061002, // 0005 SETIDX R1 K8 R2 + 0x88080100, // 0006 GETMBR R2 R0 K0 + 0x98060002, // 0007 SETIDX R1 K0 R2 + 0x8C08011F, // 0008 GETMET R2 R0 K31 0x7C080200, // 0009 CALL R2 1 - 0x98062202, // 000A SETIDX R1 K17 R2 + 0x98063E02, // 000A SETIDX R1 K31 R2 0x80040200, // 000B RET 1 R1 }) ) @@ -14073,83 +17941,373 @@ be_local_closure(class_DSLLexer_get_position_info, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: is_alpha +********************************************************************/ +be_local_closure(class_DSLLexer_is_alpha, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(is_alpha), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x28080335, // 0000 GE R2 R1 K53 + 0x780A0001, // 0001 JMPF R2 #0004 + 0x18080370, // 0002 LE R2 R1 K112 + 0x740A0004, // 0003 JMPT R2 #0009 + 0x28080337, // 0004 GE R2 R1 K55 + 0x780A0001, // 0005 JMPF R2 #0008 + 0x18080371, // 0006 LE R2 R1 K113 + 0x740A0000, // 0007 JMPT R2 #0009 + 0x50080001, // 0008 LDBOOL R2 0 1 + 0x50080200, // 0009 LDBOOL R2 1 0 + 0x80040400, // 000A RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: scan_triple_quoted_string +********************************************************************/ +be_local_closure(class_DSLLexer_scan_triple_quoted_string, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(scan_triple_quoted_string), + &be_const_str_solidified, + ( &(const binstruction[75]) { /* code */ + 0x8808011C, // 0000 GETMBR R2 R0 K28 + 0x04080507, // 0001 SUB R2 R2 K7 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x040C0707, // 0003 SUB R3 R3 K7 + 0x5810001E, // 0004 LDCONST R4 K30 + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x8C140101, // 0007 GETMET R5 R0 K1 + 0x7C140200, // 0008 CALL R5 1 + 0x8C14011F, // 0009 GETMET R5 R0 K31 + 0x7C140200, // 000A CALL R5 1 + 0x7416001F, // 000B JMPT R5 #002C + 0x8C14010C, // 000C GETMET R5 R0 K12 + 0x7C140200, // 000D CALL R5 1 + 0x1C180A01, // 000E EQ R6 R5 R1 + 0x781A0010, // 000F JMPF R6 #0021 + 0x8C180116, // 0010 GETMET R6 R0 K22 + 0x58200007, // 0011 LDCONST R8 K7 + 0x7C180400, // 0012 CALL R6 2 + 0x1C180C01, // 0013 EQ R6 R6 R1 + 0x781A000B, // 0014 JMPF R6 #0021 + 0x8C180116, // 0015 GETMET R6 R0 K22 + 0x5820003D, // 0016 LDCONST R8 K61 + 0x7C180400, // 0017 CALL R6 2 + 0x1C180C01, // 0018 EQ R6 R6 R1 + 0x781A0006, // 0019 JMPF R6 #0021 + 0x8C180101, // 001A GETMET R6 R0 K1 + 0x7C180200, // 001B CALL R6 1 + 0x8C180101, // 001C GETMET R6 R0 K1 + 0x7C180200, // 001D CALL R6 1 + 0x8C180101, // 001E GETMET R6 R0 K1 + 0x7C180200, // 001F CALL R6 1 + 0x7002000A, // 0020 JMP #002C + 0x8C180101, // 0021 GETMET R6 R0 K1 + 0x7C180200, // 0022 CALL R6 1 + 0x5C140C00, // 0023 MOVE R5 R6 + 0x1C180B05, // 0024 EQ R6 R5 K5 + 0x781A0003, // 0025 JMPF R6 #002A + 0x88180108, // 0026 GETMBR R6 R0 K8 + 0x00180D07, // 0027 ADD R6 R6 K7 + 0x90021006, // 0028 SETMBR R0 K8 R6 + 0x90020107, // 0029 SETMBR R0 K0 K7 + 0x00100805, // 002A ADD R4 R4 R5 + 0x7001FFDC, // 002B JMP #0009 + 0x8C14011F, // 002C GETMET R5 R0 K31 + 0x7C140200, // 002D CALL R5 1 + 0x78160014, // 002E JMPF R5 #0044 + 0x8814011C, // 002F GETMBR R5 R0 K28 + 0x04140B26, // 0030 SUB R5 R5 K38 + 0x8818011C, // 0031 GETMBR R6 R0 K28 + 0x04180D07, // 0032 SUB R6 R6 K7 + 0x40140A06, // 0033 CONNECT R5 R5 R6 + 0x8818011D, // 0034 GETMBR R6 R0 K29 + 0x94140C05, // 0035 GETIDX R5 R6 R5 + 0x00180201, // 0036 ADD R6 R1 R1 + 0x00180C01, // 0037 ADD R6 R6 R1 + 0x1C140A06, // 0038 EQ R5 R5 R6 + 0x74160009, // 0039 JMPT R5 #0044 + 0x8C140124, // 003A GETMET R5 R0 K36 + 0x581C0072, // 003B LDCONST R7 K114 + 0x7C140400, // 003C CALL R5 2 + 0x8C140106, // 003D GETMET R5 R0 K6 + 0x541E0026, // 003E LDINT R7 39 + 0x5C200800, // 003F MOVE R8 R4 + 0x8824011C, // 0040 GETMBR R9 R0 K28 + 0x04241202, // 0041 SUB R9 R9 R2 + 0x7C140800, // 0042 CALL R5 4 + 0x70020005, // 0043 JMP #004A + 0x8C140106, // 0044 GETMET R5 R0 K6 + 0x581C0026, // 0045 LDCONST R7 K38 + 0x5C200800, // 0046 MOVE R8 R4 + 0x8824011C, // 0047 GETMBR R9 R0 K28 + 0x04241202, // 0048 SUB R9 R9 R2 + 0x7C140800, // 0049 CALL R5 4 + 0x80000000, // 004A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_error +********************************************************************/ +be_local_closure(class_DSLLexer_add_error, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(add_error), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x8808012E, // 0000 GETMBR R2 R0 K46 + 0x8C08052A, // 0001 GETMET R2 R2 K42 + 0x60100013, // 0002 GETGBL R4 G19 + 0x7C100000, // 0003 CALL R4 0 + 0x98126601, // 0004 SETIDX R4 K51 R1 + 0x88140108, // 0005 GETMBR R5 R0 K8 + 0x98121005, // 0006 SETIDX R4 K8 R5 + 0x88140100, // 0007 GETMBR R5 R0 K0 + 0x98120005, // 0008 SETIDX R4 K0 R5 + 0x8814011C, // 0009 GETMBR R5 R0 K28 + 0x98123805, // 000A SETIDX R4 K28 R5 + 0x7C080400, // 000B CALL R2 2 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: scan_comment +********************************************************************/ +be_local_closure(class_DSLLexer_scan_comment, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(scan_comment), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x8804011C, // 0000 GETMBR R1 R0 K28 + 0x04040307, // 0001 SUB R1 R1 K7 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x04080507, // 0003 SUB R2 R2 K7 + 0x8C0C011F, // 0004 GETMET R3 R0 K31 + 0x7C0C0200, // 0005 CALL R3 1 + 0x740E0006, // 0006 JMPT R3 #000E + 0x8C0C010C, // 0007 GETMET R3 R0 K12 + 0x7C0C0200, // 0008 CALL R3 1 + 0x200C0705, // 0009 NE R3 R3 K5 + 0x780E0002, // 000A JMPF R3 #000E + 0x8C0C0101, // 000B GETMET R3 R0 K1 + 0x7C0C0200, // 000C CALL R3 1 + 0x7001FFF5, // 000D JMP #0004 + 0x880C011C, // 000E GETMBR R3 R0 K28 + 0x040C0707, // 000F SUB R3 R3 K7 + 0x400C0203, // 0010 CONNECT R3 R1 R3 + 0x8810011D, // 0011 GETMBR R4 R0 K29 + 0x940C0803, // 0012 GETIDX R3 R4 R3 + 0x8C100106, // 0013 GETMET R4 R0 K6 + 0x541A0024, // 0014 LDINT R6 37 + 0x5C1C0600, // 0015 MOVE R7 R3 + 0x8820011C, // 0016 GETMBR R8 R0 K28 + 0x04201001, // 0017 SUB R8 R8 R1 + 0x7C100800, // 0018 CALL R4 4 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tokenize +********************************************************************/ +be_local_closure(class_DSLLexer_tokenize, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(tokenize), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x90025201, // 0002 SETMBR R0 K41 R1 + 0x60040012, // 0003 GETGBL R1 G18 + 0x7C040000, // 0004 CALL R1 0 + 0x90025C01, // 0005 SETMBR R0 K46 R1 + 0x90023939, // 0006 SETMBR R0 K28 K57 + 0x90021107, // 0007 SETMBR R0 K8 K7 + 0x90020107, // 0008 SETMBR R0 K0 K7 + 0x8C04011F, // 0009 GETMET R1 R0 K31 + 0x7C040200, // 000A CALL R1 1 + 0x74060002, // 000B JMPT R1 #000F + 0x8C040173, // 000C GETMET R1 R0 K115 + 0x7C040200, // 000D CALL R1 1 + 0x7001FFF9, // 000E JMP #0009 + 0x8C040106, // 000F GETMET R1 R0 K6 + 0x540E0025, // 0010 LDINT R3 38 + 0x5810001E, // 0011 LDCONST R4 K30 + 0x58140039, // 0012 LDCONST R5 K57 + 0x7C040800, // 0013 CALL R1 4 + 0x88040129, // 0014 GETMBR R1 R0 K41 + 0x80040200, // 0015 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_errors +********************************************************************/ +be_local_closure(class_DSLLexer_get_errors, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_DSLLexer, /* shared constants */ + be_str_weak(get_errors), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x8804012E, // 0000 GETMBR R1 R0 K46 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: DSLLexer ********************************************************************/ be_local_class(DSLLexer, 6, NULL, - be_nested_map(35, + be_nested_map(37, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(get_errors, -1), be_const_closure(class_DSLLexer_get_errors_closure) }, - { be_const_key_weak(get_error_report, -1), be_const_closure(class_DSLLexer_get_error_report_closure) }, - { be_const_key_weak(source, 31), be_const_var(0) }, - { be_const_key_weak(advance, -1), be_const_closure(class_DSLLexer_advance_closure) }, - { be_const_key_weak(scan_number, 26), be_const_closure(class_DSLLexer_scan_number_closure) }, - { be_const_key_weak(scan_string, 22), be_const_closure(class_DSLLexer_scan_string_closure) }, - { be_const_key_weak(scan_hex_color_0x, 25), be_const_closure(class_DSLLexer_scan_hex_color_0x_closure) }, - { be_const_key_weak(add_token, -1), be_const_closure(class_DSLLexer_add_token_closure) }, - { be_const_key_weak(is_digit, -1), be_const_closure(class_DSLLexer_is_digit_closure) }, - { be_const_key_weak(at_end, -1), be_const_closure(class_DSLLexer_at_end_closure) }, - { be_const_key_weak(peek_next, 34), be_const_closure(class_DSLLexer_peek_next_closure) }, - { be_const_key_weak(check_time_suffix, -1), be_const_closure(class_DSLLexer_check_time_suffix_closure) }, - { be_const_key_weak(reset, -1), be_const_closure(class_DSLLexer_reset_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_DSLLexer_init_closure) }, - { be_const_key_weak(scan_variable_reference, 8), be_const_closure(class_DSLLexer_scan_variable_reference_closure) }, - { be_const_key_weak(tokenize_with_errors, 23), be_const_closure(class_DSLLexer_tokenize_with_errors_closure) }, - { be_const_key_weak(scan_time_suffix, 2), be_const_closure(class_DSLLexer_scan_time_suffix_closure) }, - { be_const_key_weak(column, -1), be_const_var(3) }, - { be_const_key_weak(is_alnum, -1), be_const_closure(class_DSLLexer_is_alnum_closure) }, - { be_const_key_weak(has_errors, -1), be_const_closure(class_DSLLexer_has_errors_closure) }, - { be_const_key_weak(scan_comment, 18), be_const_closure(class_DSLLexer_scan_comment_closure) }, - { be_const_key_weak(tokens, -1), be_const_var(4) }, - { be_const_key_weak(scan_identifier_or_keyword, 13), be_const_closure(class_DSLLexer_scan_identifier_or_keyword_closure) }, + { be_const_key_weak(scan_token, 36), be_const_closure(class_DSLLexer_scan_token_closure) }, + { be_const_key_weak(get_errors, 11), be_const_closure(class_DSLLexer_get_errors_closure) }, + { be_const_key_weak(scan_string, -1), be_const_closure(class_DSLLexer_scan_string_closure) }, + { be_const_key_weak(add_token, 14), be_const_closure(class_DSLLexer_add_token_closure) }, { be_const_key_weak(tokenize, -1), be_const_closure(class_DSLLexer_tokenize_closure) }, - { be_const_key_weak(is_hex_digit, -1), be_const_closure(class_DSLLexer_is_hex_digit_closure) }, + { be_const_key_weak(peek, -1), be_const_closure(class_DSLLexer_peek_closure) }, + { be_const_key_weak(source, -1), be_const_var(0) }, + { be_const_key_weak(get_error_report, -1), be_const_closure(class_DSLLexer_get_error_report_closure) }, + { be_const_key_weak(advance, -1), be_const_closure(class_DSLLexer_advance_closure) }, { be_const_key_weak(scan_operator_or_delimiter, -1), be_const_closure(class_DSLLexer_scan_operator_or_delimiter_closure) }, - { be_const_key_weak(position, -1), be_const_var(1) }, - { be_const_key_weak(peek, 15), be_const_closure(class_DSLLexer_peek_closure) }, + { be_const_key_weak(add_error, -1), be_const_closure(class_DSLLexer_add_error_closure) }, + { be_const_key_weak(scan_triple_quoted_string, 24), be_const_closure(class_DSLLexer_scan_triple_quoted_string_closure) }, + { be_const_key_weak(scan_number, -1), be_const_closure(class_DSLLexer_scan_number_closure) }, + { be_const_key_weak(peek_ahead, 9), be_const_closure(class_DSLLexer_peek_ahead_closure) }, + { be_const_key_weak(is_alnum, 32), be_const_closure(class_DSLLexer_is_alnum_closure) }, + { be_const_key_weak(peek_next, -1), be_const_closure(class_DSLLexer_peek_next_closure) }, + { be_const_key_weak(is_digit, -1), be_const_closure(class_DSLLexer_is_digit_closure) }, + { be_const_key_weak(tokenize_with_errors, -1), be_const_closure(class_DSLLexer_tokenize_with_errors_closure) }, + { be_const_key_weak(at_end, -1), be_const_closure(class_DSLLexer_at_end_closure) }, + { be_const_key_weak(reset, -1), be_const_closure(class_DSLLexer_reset_closure) }, + { be_const_key_weak(scan_variable_reference, -1), be_const_closure(class_DSLLexer_scan_variable_reference_closure) }, + { be_const_key_weak(column, -1), be_const_var(3) }, + { be_const_key_weak(scan_identifier_or_keyword, -1), be_const_closure(class_DSLLexer_scan_identifier_or_keyword_closure) }, + { be_const_key_weak(tokens, 12), be_const_var(4) }, + { be_const_key_weak(scan_hex_color_0x, -1), be_const_closure(class_DSLLexer_scan_hex_color_0x_closure) }, + { be_const_key_weak(has_errors, -1), be_const_closure(class_DSLLexer_has_errors_closure) }, + { be_const_key_weak(errors, 22), be_const_var(5) }, + { be_const_key_weak(check_time_suffix, 1), be_const_closure(class_DSLLexer_check_time_suffix_closure) }, { be_const_key_weak(line, -1), be_const_var(2) }, - { be_const_key_weak(add_error, 19), be_const_closure(class_DSLLexer_add_error_closure) }, - { be_const_key_weak(scan_token, -1), be_const_closure(class_DSLLexer_scan_token_closure) }, - { be_const_key_weak(is_alpha, -1), be_const_closure(class_DSLLexer_is_alpha_closure) }, + { be_const_key_weak(scan_time_suffix, -1), be_const_closure(class_DSLLexer_scan_time_suffix_closure) }, { be_const_key_weak(get_position_info, -1), be_const_closure(class_DSLLexer_get_position_info_closure) }, - { be_const_key_weak(errors, -1), be_const_var(5) }, + { be_const_key_weak(is_alpha, -1), be_const_closure(class_DSLLexer_is_alpha_closure) }, { be_const_key_weak(match, -1), be_const_closure(class_DSLLexer_match_closure) }, + { be_const_key_weak(position, 10), be_const_var(1) }, + { be_const_key_weak(scan_comment, -1), be_const_closure(class_DSLLexer_scan_comment_closure) }, + { be_const_key_weak(is_hex_digit, 4), be_const_closure(class_DSLLexer_is_hex_digit_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_DSLLexer_init_closure) }, })), be_str_weak(DSLLexer) ); /******************************************************************** -** Solidified function: execute +** Solidified function: create_newline_token ********************************************************************/ -be_local_closure(execute, /* name */ +be_local_closure(create_newline_token, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 9, /* nstack */ + 2, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(compile), + /* K1 */ be_nested_str_weak(Token), + /* K2 */ be_nested_str_weak(_X0A), + /* K3 */ be_const_int(1), }), - be_str_weak(execute), + be_str_weak(create_newline_token), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x6008000D, // 0004 GETGBL R2 G13 - 0x5C0C0200, // 0005 MOVE R3 R1 - 0x7C080200, // 0006 CALL R2 1 - 0x5C0C0400, // 0007 MOVE R3 R2 - 0x7C0C0000, // 0008 CALL R3 0 - 0x80040600, // 0009 RET 1 R3 + ( &(const binstruction[ 9]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x54120022, // 0002 LDINT R4 35 + 0x58140002, // 0003 LDCONST R5 K2 + 0x5C180000, // 0004 MOVE R6 R0 + 0x5C1C0200, // 0005 MOVE R7 R1 + 0x58200003, // 0006 LDCONST R8 K3 + 0x7C080C00, // 0007 CALL R2 6 + 0x80040400, // 0008 RET 1 R2 }) ) ); @@ -14161,29 +18319,72 @@ be_local_closure(execute, /* name */ ********************************************************************/ be_local_module(animation_dsl, "animation_dsl", - be_nested_map(21, + be_nested_map(24, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(create_dsl_runtime, 20), be_const_closure(create_dsl_runtime_closure) }, - { be_const_key_weak(DSLLexer, -1), be_const_class(be_class_DSLLexer) }, - { be_const_key_weak(create_eof_token, -1), be_const_closure(create_eof_token_closure) }, - { be_const_key_weak(tokenize_dsl_with_errors, -1), be_const_closure(tokenize_dsl_with_errors_closure) }, - { be_const_key_weak(compile_dsl, -1), be_const_closure(compile_dsl_closure) }, - { be_const_key_weak(load_file, -1), be_const_closure(load_file_closure) }, - { be_const_key_weak(compile, -1), be_const_closure(compile_dsl_source_closure) }, - { be_const_key_weak(execute, -1), be_const_closure(execute_closure) }, - { be_const_key_weak(SimpleDSLTranspiler, -1), be_const_class(be_class_SimpleDSLTranspiler) }, { be_const_key_weak(DSLRuntime, -1), be_const_class(be_class_DSLRuntime) }, - { be_const_key_weak(VERSION, 0), be_const_int(65536) }, - { be_const_key_weak(is_keyword, 8), be_const_closure(is_keyword_closure) }, - { be_const_key_weak(is_right_associative, -1), be_const_closure(is_right_associative_closure) }, + { be_const_key_weak(create_newline_token, -1), be_const_closure(create_newline_token_closure) }, + { be_const_key_weak(SimpleDSLTranspiler, -1), be_const_class(be_class_SimpleDSLTranspiler) }, + { be_const_key_weak(tokenize_dsl_with_errors, -1), be_const_closure(tokenize_dsl_with_errors_closure) }, + { be_const_key_weak(is_keyword, -1), be_const_closure(is_keyword_closure) }, + { be_const_key_weak(_symbol_entry, 4), be_const_class(be_class_SymbolEntry) }, + { be_const_key_weak(compile, -1), be_const_closure(compile_dsl_source_closure) }, + { be_const_key_weak(VERSION, -1), be_const_int(65536) }, + { be_const_key_weak(get_operator_precedence, -1), be_const_closure(get_operator_precedence_closure) }, + { be_const_key_weak(create_eof_token, 2), be_const_closure(create_eof_token_closure) }, + { be_const_key_weak(create_dsl_runtime, 11), be_const_closure(create_dsl_runtime_closure) }, + { be_const_key_weak(Token, 23), be_const_class(be_class_Token) }, + { be_const_key_weak(is_right_associative, 1), be_const_closure(is_right_associative_closure) }, + { be_const_key_weak(_symbol_table, 8), be_const_class(be_class_SymbolTable) }, + { be_const_key_weak(create_runtime, 9), be_const_closure(create_runtime_closure) }, { be_const_key_weak(tokenize_dsl, -1), be_const_closure(tokenize_dsl_closure) }, + { be_const_key_weak(execute, 15), be_const_closure(execute_closure) }, { be_const_key_weak(is_color_name, -1), be_const_closure(is_color_name_closure) }, - { be_const_key_weak(create_error_token, 3), be_const_closure(create_error_token_closure) }, - { be_const_key_weak(get_operator_precedence, 13), be_const_closure(get_operator_precedence_closure) }, - { be_const_key_weak(create_runtime, -1), be_const_closure(create_runtime_closure) }, - { be_const_key_weak(create_newline_token, 19), be_const_closure(create_newline_token_closure) }, - { be_const_key_weak(MockEngine, -1), be_const_class(be_class_MockEngine) }, - { be_const_key_weak(Token, -1), be_const_class(be_class_Token) }, + { be_const_key_weak(create_error_token, -1), be_const_closure(create_error_token_closure) }, + { be_const_key_weak(named_colors, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(37, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(brown, -1), be_nested_str_weak(0xFFA52A2A) }, + { be_const_key_weak(silver, -1), be_nested_str_weak(0xFFC0C0C0) }, + { be_const_key_weak(salmon, -1), be_nested_str_weak(0xFFFA8072) }, + { be_const_key_weak(transparent, -1), be_nested_str_weak(0x00000000) }, + { be_const_key_weak(lime, 19), be_nested_str_weak(0xFF00FF00) }, + { be_const_key_weak(coral, 26), be_nested_str_weak(0xFFFF7F50) }, + { be_const_key_weak(cyan, -1), be_nested_str_weak(0xFF00FFFF) }, + { be_const_key_weak(olive, -1), be_nested_str_weak(0xFF808000) }, + { be_const_key_weak(snow, 16), be_nested_str_weak(0xFFFFFAFA) }, + { be_const_key_weak(violet, -1), be_nested_str_weak(0xFFEE82EE) }, + { be_const_key_weak(green, 20), be_nested_str_weak(0xFF008000) }, + { be_const_key_weak(turquoise, -1), be_nested_str_weak(0xFF40E0D0) }, + { be_const_key_weak(grey, -1), be_nested_str_weak(0xFF808080) }, + { be_const_key_weak(indigo, -1), be_nested_str_weak(0xFF4B0082) }, + { be_const_key_weak(navy, 23), be_nested_str_weak(0xFF000080) }, + { be_const_key_weak(white, 30), be_nested_str_weak(0xFFFFFFFF) }, + { be_const_key_weak(red, -1), be_nested_str_weak(0xFFFF0000) }, + { be_const_key_weak(orange, -1), be_nested_str_weak(0xFFFFA500) }, + { be_const_key_weak(gray, -1), be_nested_str_weak(0xFF808080) }, + { be_const_key_weak(purple, -1), be_nested_str_weak(0xFF800080) }, + { be_const_key_weak(beige, -1), be_nested_str_weak(0xFFF5F5DC) }, + { be_const_key_weak(fuchsia, -1), be_nested_str_weak(0xFFFF00FF) }, + { be_const_key_weak(crimson, 12), be_nested_str_weak(0xFFDC143C) }, + { be_const_key_weak(black, 18), be_nested_str_weak(0xFF000000) }, + { be_const_key_weak(magenta, 2), be_nested_str_weak(0xFFFF00FF) }, + { be_const_key_weak(yellow, 15), be_nested_str_weak(0xFFFFFF00) }, + { be_const_key_weak(tan, 27), be_nested_str_weak(0xFFD2B48C) }, + { be_const_key_weak(gold, -1), be_nested_str_weak(0xFFFFD700) }, + { be_const_key_weak(pink, -1), be_nested_str_weak(0xFFFFC0CB) }, + { be_const_key_weak(ivory, -1), be_nested_str_weak(0xFFFFFFF0) }, + { be_const_key_weak(khaki, 35), be_nested_str_weak(0xFFF0E68C) }, + { be_const_key_weak(aqua, -1), be_nested_str_weak(0xFF00FFFF) }, + { be_const_key_weak(blue, -1), be_nested_str_weak(0xFF0000FF) }, + { be_const_key_weak(plum, 21), be_nested_str_weak(0xFFDDA0DD) }, + { be_const_key_weak(orchid, -1), be_nested_str_weak(0xFFDA70D6) }, + { be_const_key_weak(teal, -1), be_nested_str_weak(0xFF008080) }, + { be_const_key_weak(maroon, -1), be_nested_str_weak(0xFF800000) }, + })) ) } )) }, + { be_const_key_weak(load_file, -1), be_const_closure(load_file_closure) }, + { be_const_key_weak(MockEngine, 3), be_const_class(be_class_MockEngine) }, + { be_const_key_weak(DSLLexer, -1), be_const_class(be_class_DSLLexer) }, + { be_const_key_weak(compile_dsl, -1), be_const_closure(compile_dsl_closure) }, })) ); BE_EXPORT_VARIABLE be_define_const_native_module(animation_dsl); diff --git a/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be b/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be new file mode 100644 index 000000000..b8fbdc9a2 --- /dev/null +++ b/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be @@ -0,0 +1,323 @@ +# DSL Berry Code Blocks Test Suite +# Tests for berry code block functionality in SimpleDSLTranspiler +# +# Command to run test is: +# ./berry -s -g -m lib/libesp32/berry_animation/src -e "import tasmota" lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be + +import animation +import animation_dsl +import string + +# Test basic berry code block with triple braces +def test_basic_berry_block_triple_braces() + print("Testing basic berry code block with triple braces...") + + var dsl_source = 'berry """\n' + + 'var test_var = 42\n' + + 'print("Hello from berry block")\n' + + '"""\n' + + 'color red_custom = 0xFF0000\n' + + var berry_code = animation_dsl.compile(dsl_source) + + assert(berry_code != nil, "Should generate Berry code") + assert(string.find(berry_code, "# Berry code block") >= 0, "Should have berry code block comment") + assert(string.find(berry_code, "var test_var = 42") >= 0, "Should include berry code verbatim") + assert(string.find(berry_code, 'print("Hello from berry block")') >= 0, "Should include print statement") + assert(string.find(berry_code, "# End berry code block") >= 0, "Should have end comment") + assert(string.find(berry_code, "var red_custom_ = 0xFFFF0000") >= 0, "Should continue with DSL after berry block") + + print("✓ Basic berry code block (triple braces) test passed") + return true +end + +# Test basic berry code block with braces inside +def test_basic_berry_block_with_braces() + print("Testing basic berry code block with braces inside...") + + var dsl_source = "berry '''\n" + + "var test_var = 100\n" + + "if test_var > 50\n" + + " print('Value is greater than 50')\n" + + "end\n" + + "'''\n" + + "color blue_custom = 0x0000FF\n" + + var berry_code = animation_dsl.compile(dsl_source) + + assert(berry_code != nil, "Should generate Berry code") + assert(string.find(berry_code, "# Berry code block") >= 0, "Should have berry code block comment") + assert(string.find(berry_code, "var test_var = 100") >= 0, "Should include berry code verbatim") + assert(string.find(berry_code, "print('Value is greater than 50')") >= 0, "Should include print statement") + assert(string.find(berry_code, "# End berry code block") >= 0, "Should have end comment") + + print("✓ Basic berry code block (single quotes) test passed") + return true +end + +# Test multiple berry code blocks +def test_multiple_berry_blocks() + print("Testing multiple berry code blocks...") + + var dsl_source = 'berry """\n' + + 'var global_var = 50\n' + + 'def helper_function(x)\n' + + ' return x * 2\n' + + 'end\n' + + '"""\n' + + 'color green_custom = 0x00FF00\n' + + "berry '''\n" + + "var result = helper_function(global_var)\n" + + "print('Result:', result)\n" + + "'''\n" + + "set col = 0xFF8800" + + var berry_code = animation_dsl.compile(dsl_source) + + assert(berry_code != nil, "Should generate Berry code") + + # Check first berry block + var first_block_pos = string.find(berry_code, "var global_var = 50") + assert(first_block_pos >= 0, "Should include first berry block") + + # Check second berry block + var second_block_pos = string.find(berry_code, "var result = helper_function(global_var)") + assert(second_block_pos >= 0, "Should include second berry block") + assert(second_block_pos > first_block_pos, "Second block should come after first block") + + # Check DSL continues to work + assert(string.find(berry_code, "var green_custom_ = 0xFF00FF00") >= 0, "Should process DSL after berry blocks") + + print("✓ Multiple berry code blocks test passed") + return true +end + +# Test berry code block with complex content +def test_complex_berry_content() + print("Testing berry code block with complex content...") + + var dsl_source = 'berry """\n' + + 'import math\n' + + 'import string\n' + + '\n' + + '# Complex function with multiple features\n' + + 'def calculate_dynamic_value(base, factor)\n' + + ' var result = math.sin(factor) * base\n' + + ' return int(result + 100)\n' + + 'end\n' + + '\n' + + 'var config = {\n' + + ' "brightness": 200,\n' + + ' "speed": 1.5\n' + + '}\n' + + '\n' + + 'print("Complex berry block initialized")\n' + + '"""\n' + + 'color purple_custom = 0x800080\n' + + 'animation pulse = pulsating_animation(color=purple_custom, period=2s)\n' + + 'run pulse' + + var berry_code = animation_dsl.compile(dsl_source) + + assert(berry_code != nil, "Should generate Berry code") + assert(string.find(berry_code, "import math") >= 0, "Should include import statements") + assert(string.find(berry_code, "import string") >= 0, "Should include multiple imports") + assert(string.find(berry_code, "def calculate_dynamic_value(base, factor)") >= 0, "Should include function definition") + assert(string.find(berry_code, 'var config = {') >= 0, "Should include complex data structures") + assert(string.find(berry_code, '"brightness": 200,') >= 0, "Should preserve map syntax") + assert(string.find(berry_code, 'print("Complex berry block initialized")') >= 0, "Should include print statement") + + print("✓ Complex berry content test passed") + return true +end + +# Test berry code block interacting with DSL objects +def test_berry_dsl_interaction() + print("Testing berry code block interaction with DSL objects...") + + var dsl_source = 'color red_custom = 0xFF0000\n' + + 'animation test_anim = pulsating_animation(color=red_custom, period=3s)\n' + + 'berry """\n' + + '# Modify DSL-generated animation\n' + + 'test_anim_.opacity = 150\n' + + 'test_anim_.priority = 10\n' + + 'print("Animation modified via berry code")\n' + + '"""\n' + + 'run test_anim' + + var berry_code = animation_dsl.compile(dsl_source) + + assert(berry_code != nil, "Should generate Berry code") + assert(string.find(berry_code, "var test_anim_ = animation.pulsating_animation(engine)") >= 0, "Should create animation") + assert(string.find(berry_code, "test_anim_.opacity = 150") >= 0, "Should modify animation opacity") + assert(string.find(berry_code, "test_anim_.priority = 10") >= 0, "Should modify animation priority") + assert(string.find(berry_code, 'print("Animation modified via berry code")') >= 0, "Should include print statement") + + print("✓ Berry-DSL interaction test passed") + return true +end + +# Test berry code block with inline comments +def test_berry_block_with_inline_comment() + print("Testing berry code block with inline comment...") + + var dsl_source = 'berry """ # This is an inline comment\n' + + 'var test_value = 123 # Berry code block # This is an inline comment\n' + + '"""\n' + + 'color yellow_custom = 0xFFFF00' + + var berry_code = animation_dsl.compile(dsl_source) + + assert(berry_code != nil, "Should generate Berry code") + assert(string.find(berry_code, "# Berry code block # This is an inline comment") >= 0, "Should preserve inline comment") + assert(string.find(berry_code, "var test_value = 123") >= 0, "Should include berry code") + + print("✓ Berry block with inline comment test passed") + return true +end + +# Test error handling - missing string after berry keyword +def test_error_missing_string() + print("Testing error handling for missing string after berry keyword...") + + var dsl_source = 'berry\n' + + 'print("This should cause an error")\n' + + 'color test_color = 0xFF0000' + + try + var berry_code = animation_dsl.compile(dsl_source) + assert(false, "Should raise compilation error") + except "dsl_compilation_error" + # ok + end + + print("✓ Error handling (missing string) test passed") + return true +end + +# Test error handling - invalid token after berry keyword +def test_error_invalid_token() + print("Testing error handling for invalid token after berry keyword...") + + var dsl_source = 'berry 123\n' + + 'color test_color = 0xFF0000' + + try + var berry_code = animation_dsl.compile(dsl_source) + assert(false, "Should raise compilation error") + except "dsl_compilation_error" + # ok + end + + print("✓ Error handling (invalid token) test passed") + return true +end + +# Test execution of berry code blocks +def test_berry_block_execution() + print("Testing execution of berry code blocks...") + + var dsl_source = 'berry """\n' + + 'var execution_test = "Berry code executed successfully"\n' + + 'print(execution_test)\n' + + '"""\n' + + 'color cyan_custom = 0x00FFFF\n' + + 'animation my_anim = solid(color=cyan_custom)' + 'run my_anim' + + # Test compilation + var berry_code = animation_dsl.compile(dsl_source) + assert(berry_code != nil, "Should compile successfully") + + # Test execution (this will actually run the berry code) + try + animation_dsl.execute(dsl_source) + print("✓ Berry block execution test passed") + return true + except .. as e, m + print("✗ Berry block execution failed:", e, m) + return false + end +end + +# Test berry code blocks with multiline strings and complex syntax +def test_multiline_complex_syntax() + print("Testing berry code blocks with multiline strings and complex syntax...") + + var dsl_source = 'berry """\n' + + '# Test multiline strings and complex syntax\n' + + 'var multiline_string = "This is a\\n" +\n' + + ' "multiline string\\n" +\n' + + ' "with multiple lines"\n' + + '\n' + + 'def complex_function(a, b, c)\n' + + ' if a > b\n' + + ' return a + c\n' + + ' else\n' + + ' return b + c\n' + + ' end\n' + + 'end\n' + + '\n' + + 'var result = complex_function(10, 5, 3)\n' + + 'print("Complex function result:", result)\n' + + '"""\n' + + 'color magenta_custom = 0xFF00FF\n' + + var berry_code = animation_dsl.compile(dsl_source) + + assert(berry_code != nil, "Should generate Berry code") + assert(string.find(berry_code, 'var multiline_string = "This is a\\n"') >= 0, "Should preserve multiline string syntax") + assert(string.find(berry_code, "def complex_function(a, b, c)") >= 0, "Should include function definition") + assert(string.find(berry_code, "if a > b") >= 0, "Should include conditional logic") + assert(string.find(berry_code, "var result = complex_function(10, 5, 3)") >= 0, "Should include function call") + + print("✓ Multiline complex syntax test passed") + return true +end + +# Run all tests +def run_all_berry_block_tests() + print("=== DSL Berry Code Blocks Test Suite ===") + print("") + + var tests = [ + test_basic_berry_block_triple_braces, + test_basic_berry_block_with_braces, + test_multiple_berry_blocks, + test_complex_berry_content, + test_berry_dsl_interaction, + test_berry_block_with_inline_comment, + test_error_missing_string, + test_error_invalid_token, + test_berry_block_execution, + test_multiline_complex_syntax + ] + + var passed = 0 + var total = size(tests) + + for test_func : tests + try + if test_func() + passed += 1 + end + except .. as e, m + print("✗ Test failed with exception:", e, m) + end + print("") + end + + print("=== Berry Code Blocks Test Results ===") + print(f"Passed: {passed}/{total}") + + if passed == total + print("All berry code block tests passed! ✓") + return true + else + print("Some berry code block tests failed! ✗") + raise "test_failed" + end +end + +# Run the tests +return run_all_berry_block_tests() \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be b/lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be new file mode 100644 index 000000000..c67747796 --- /dev/null +++ b/lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be @@ -0,0 +1,313 @@ +# DSL Berry Code Blocks Integration Test Suite +# Tests for real-world integration scenarios with berry code blocks +# +# Command to run test is: +# ./berry -s -g -m lib/libesp32/berry_animation/src -e "import tasmota" lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be + +import animation +import animation_dsl +import string + +# Test berry code blocks with mathematical calculations +def test_mathematical_integration() + print("Testing berry code blocks with mathematical calculations...") + + var dsl_source = 'berry """\n' + + 'import math\n' + + 'def calculate_period(base_period, frequency)\n' + + ' return int(base_period / frequency)\n' + + 'end\n' + + 'def calculate_opacity(brightness_percent)\n' + + ' return int(brightness_percent * 2.55)\n' + + 'end\n' + + '"""\n' + + 'color wave_color = 0x0080FF\n' + + 'animation wave1 = pulsating_animation(color=wave_color, period=2s)\n' + + 'animation wave2 = pulsating_animation(color=wave_color, period=3s)\n' + + 'berry """\n' + + 'wave1_.period = calculate_period(4000, 2.0) # 2000ms\n' + + 'wave1_.opacity = calculate_opacity(80) # 204\n' + + 'wave2_.period = calculate_period(6000, 1.5) # 4000ms\n' + + 'wave2_.opacity = calculate_opacity(60) # 153\n' + + '"""\n' + + 'run wave1\n' + + 'run wave2' + + # Test compilation + var berry_code = animation_dsl.compile(dsl_source) + assert(berry_code != nil, "Should compile successfully") + + # Verify mathematical functions are included + assert(string.find(berry_code, "def calculate_period(base_period, frequency)") >= 0, "Should include period calculation function") + assert(string.find(berry_code, "def calculate_opacity(brightness_percent)") >= 0, "Should include opacity calculation function") + + # Verify function calls are included + assert(string.find(berry_code, "wave1_.period = calculate_period(4000, 2.0)") >= 0, "Should include period calculation call") + assert(string.find(berry_code, "wave1_.opacity = calculate_opacity(80)") >= 0, "Should include opacity calculation call") + + # Test execution + try + animation_dsl.execute(dsl_source) + print("✓ Mathematical integration test passed") + return true + except .. as e + print("✗ Mathematical integration test failed:", e) + return false + end +end + +# Test berry code blocks with configuration management +def test_configuration_management() + print("Testing berry code blocks with configuration management...") + + var dsl_source = 'berry """\n' + + '# Global configuration object\n' + + 'var config = {\n' + + ' "brightness": 200,\n' + + ' "speed_multiplier": 1.5,\n' + + ' "color_intensity": 0.8,\n' + + ' "debug": true\n' + + '}\n' + + 'def log_debug(message)\n' + + ' if config["debug"]\n' + + ' print("[DEBUG]", message)\n' + + ' end\n' + + 'end\n' + + 'def apply_config_to_animation(anim, name)\n' + + ' anim.opacity = config["brightness"]\n' + + ' log_debug("Applied config to " + name)\n' + + 'end\n' + + '"""\n' + + 'color fire_red = 0xFF4500\n' + + 'color ocean_blue = 0x006994\n' + + 'animation fire_anim = pulsating_animation(color=fire_red, period=2s)\n' + + 'animation ocean_anim = pulsating_animation(color=ocean_blue, period=3s)\n' + + 'berry """\n' + + 'apply_config_to_animation(fire_anim_, "fire_animation")\n' + + 'apply_config_to_animation(ocean_anim_, "ocean_animation")\n' + + 'log_debug("Configuration applied to all animations")\n' + + '"""\n' + + 'run fire_anim\n' + + 'run ocean_anim' + + # Test compilation + var berry_code = animation_dsl.compile(dsl_source) + assert(berry_code != nil, "Should compile successfully") + + # Verify configuration object is included + assert(string.find(berry_code, 'var config = {') >= 0, "Should include config object") + assert(string.find(berry_code, '"brightness": 200,') >= 0, "Should include brightness setting") + + # Verify helper functions are included + assert(string.find(berry_code, "def log_debug(message)") >= 0, "Should include debug function") + assert(string.find(berry_code, "def apply_config_to_animation(anim, name)") >= 0, "Should include config application function") + + # Test execution + try + animation_dsl.execute(dsl_source) + print("✓ Configuration management test passed") + return true + except .. as e + print("✗ Configuration management test failed:", e) + return false + end +end + +# Test berry code blocks with dynamic animation creation +def test_dynamic_animation_creation() + print("Testing berry code blocks with dynamic animation creation...") + + var dsl_source = 'berry """\n' + + 'var animation_counter = 0\n' + + 'def create_numbered_animation(base_color, period_ms)\n' + + ' animation_counter += 1\n' + + ' var anim = animation.pulsating_animation(engine)\n' + + ' anim.color = base_color\n' + + ' anim.period = period_ms\n' + + ' anim.priority = animation_counter\n' + + ' engine.add(anim)\n' + + ' print("Created animation #" + str(animation_counter))\n' + + ' return anim\n' + + 'end\n' + + '"""\n' + + 'color red_custom = 0xFF0000\n' + + 'color green_custom = 0x00FF00\n' + + 'color blue_custom = 0x0000FF\n' + + 'berry """\n' + + 'create_numbered_animation(0xFFFF0000, 2000) # Red\n' + + 'create_numbered_animation(0xFF00FF00, 2500) # Green\n' + + 'create_numbered_animation(0xFF0000FF, 3000) # Blue\n' + + 'print("Created " + str(animation_counter) + " dynamic animations")\n' + + '"""' + + # Test compilation + var berry_code = animation_dsl.compile(dsl_source) + assert(berry_code != nil, "Should compile successfully") + + # Verify dynamic creation function is included + assert(string.find(berry_code, "def create_numbered_animation(base_color, period_ms)") >= 0, "Should include dynamic creation function") + assert(string.find(berry_code, "var anim = animation.pulsating_animation(engine)") >= 0, "Should create animations dynamically") + assert(string.find(berry_code, "engine.add(anim)") >= 0, "Should add animations to engine") + + # Test execution + try + animation_dsl.execute(dsl_source) + print("✓ Dynamic animation creation test passed") + return true + except .. as e + print("✗ Dynamic animation creation test failed:", e) + return false + end +end + +# Test berry code blocks with state management +def test_state_management() + print("Testing berry code blocks with state management...") + + var dsl_source = 'berry """\n' + + '# State management system\n' + + 'var state = {\n' + + ' "current_mode": "normal",\n' + + ' "brightness_level": 255,\n' + + ' "animation_count": 0\n' + + '}\n' + + 'def set_mode(mode)\n' + + ' state["current_mode"] = mode\n' + + ' print("Mode changed to:", mode)\n' + + 'end\n' + + 'def get_brightness_for_mode()\n' + + ' if state["current_mode"] == "dim"\n' + + ' return 100\n' + + ' elif state["current_mode"] == "bright"\n' + + ' return 255\n' + + ' else\n' + + ' return 180\n' + + ' end\n' + + 'end\n' + + '"""\n' + + 'color status_color = 0x00FFFF\n' + + 'animation status_anim = pulsating_animation(color=status_color, period=2s)\n' + + 'berry """\n' + + 'set_mode("bright")\n' + + 'status_anim_.opacity = get_brightness_for_mode()\n' + + 'state["animation_count"] = 1\n' + + 'print("State:", state)\n' + + '"""\n' + + 'run status_anim' + + # Test compilation + var berry_code = animation_dsl.compile(dsl_source) + assert(berry_code != nil, "Should compile successfully") + + # Verify state management is included + assert(string.find(berry_code, 'var state = {') >= 0, "Should include state object") + assert(string.find(berry_code, "def set_mode(mode)") >= 0, "Should include mode setter") + assert(string.find(berry_code, "def get_brightness_for_mode()") >= 0, "Should include brightness getter") + + # Test execution + try + animation_dsl.execute(dsl_source) + print("✓ State management test passed") + return true + except .. as e + print("✗ State management test failed:", e) + return false + end +end + +# Test berry code blocks with error handling +def test_error_handling_integration() + print("Testing berry code blocks with error handling...") + + var dsl_source = 'berry """\n' + + 'def safe_divide(a, b)\n' + + ' try\n' + + ' return a / b\n' + + ' except .. as e\n' + + ' print("Division error:", e)\n' + + ' return 1.0\n' + + ' end\n' + + 'end\n' + + 'def safe_set_period(anim, period)\n' + + ' try\n' + + ' if period > 0\n' + + ' anim.period = period\n' + + ' print("Period set to:", period)\n' + + ' else\n' + + ' print("Invalid period, using default")\n' + + ' anim.period = 2000\n' + + ' end\n' + + ' except .. as e\n' + + ' print("Error setting period:", e)\n' + + ' end\n' + + 'end\n' + + '"""\n' + + 'color safe_color = 0xFF8000\n' + + 'animation safe_anim = pulsating_animation(color=safe_color, period=1s)\n' + + 'berry """\n' + + 'var calculated_period = safe_divide(4000, 2) # Should work\n' + + 'safe_set_period(safe_anim_, int(calculated_period * 1000))\n' + + '"""\n' + + 'run safe_anim' + + # Test compilation + var berry_code = animation_dsl.compile(dsl_source) + assert(berry_code != nil, "Should compile successfully") + + # Verify error handling functions are included + assert(string.find(berry_code, "def safe_divide(a, b)") >= 0, "Should include safe division function") + assert(string.find(berry_code, "def safe_set_period(anim, period)") >= 0, "Should include safe period setter") + assert(string.find(berry_code, "try") >= 0, "Should include try-catch blocks") + + # Test execution + try + animation_dsl.execute(dsl_source) + print("✓ Error handling integration test passed") + return true + except .. as e + print("✗ Error handling integration test failed:", e) + return false + end +end + +# Run all integration tests +def run_all_berry_integration_tests() + print("=== DSL Berry Code Blocks Integration Test Suite ===") + print("") + + var tests = [ + test_mathematical_integration, + test_configuration_management, + test_dynamic_animation_creation, + test_state_management, + test_error_handling_integration + ] + + var passed = 0 + var total = size(tests) + + for test_func : tests + try + if test_func() + passed += 1 + end + except .. as e + print("✗ Test failed with exception:", e) + end + print("") + end + + print("=== Berry Integration Test Results ===") + print(f"Passed: {passed}/{total}") + + if passed == total + print("All berry integration tests passed! ✓") + return true + else + print("Some berry integration tests failed! ✗") + return false + end +end + +# Run the tests +return run_all_berry_integration_tests() \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be b/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be index 350e9b612..79156246b 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be @@ -366,8 +366,8 @@ def test_reserved_name_validation() "color red_custom = 0x800000", "color smooth_custom = 0x808080", # Easing function names are now valid as user-defined names - "animation smooth = solid(color=blue)", - "animation linear = solid(color=green)" + "animation smooth2 = solid(color=blue)", + "animation linear2 = solid(color=green)" ] for dsl_input : valid_name_tests diff --git a/lib/libesp32/berry_animation/src/tests/dsl_lexer_triple_quotes_test.be b/lib/libesp32/berry_animation/src/tests/dsl_lexer_triple_quotes_test.be new file mode 100644 index 000000000..2df2f9397 --- /dev/null +++ b/lib/libesp32/berry_animation/src/tests/dsl_lexer_triple_quotes_test.be @@ -0,0 +1,216 @@ +# DSL Lexer Triple Quotes Test Suite +# Tests for triple-quoted string tokenization in DSLLexer +# +# Command to run test is: +# ./berry -s -g -m lib/libesp32/berry_animation/src -e "import tasmota" lib/libesp32/berry_animation/src/tests/dsl_lexer_triple_quotes_test.be + +import animation_dsl +import string + +# Test basic triple-quoted string tokenization with double quotes +def test_triple_quotes_double() + print("Testing triple-quoted string tokenization (triple quotes)...") + + var source = 'berry """\nHello World\n"""' + var lexer = animation_dsl.DSLLexer(source) + var tokens = lexer.tokenize() + + assert(size(tokens) >= 3, "Should have at least 3 tokens (berry, string, EOF)") + assert(tokens[0].type == animation_dsl.Token.KEYWORD, "First token should be KEYWORD") + assert(tokens[0].value == "berry", "First token should be 'berry'") + assert(tokens[1].type == animation_dsl.Token.STRING, "Second token should be STRING") + assert(tokens[1].value == "\nHello World\n", "String content should be preserved") + + print("✓ Triple-quoted string (double quotes) tokenization test passed") + return true +end + +# Test basic triple-quoted string tokenization with single quotes +def test_triple_quotes_single() + print("Testing triple-quoted string tokenization (single quotes)...") + + var source = "berry '''\nHello World\n'''" + var lexer = animation_dsl.DSLLexer(source) + var tokens = lexer.tokenize() + + assert(size(tokens) >= 3, "Should have at least 3 tokens (berry, string, EOF)") + assert(tokens[0].type == animation_dsl.Token.KEYWORD, "First token should be KEYWORD") + assert(tokens[0].value == "berry", "First token should be 'berry'") + assert(tokens[1].type == animation_dsl.Token.STRING, "Second token should be STRING") + assert(tokens[1].value == "\nHello World\n", "String content should be preserved") + + print("✓ Triple-quoted string (single quotes) tokenization test passed") + return true +end + +# Test multiline triple-quoted string +def test_multiline_triple_quotes() + print("Testing multiline triple-quoted string tokenization...") + + var source = 'berry """\nLine 1\nLine 2\nLine 3\n"""' + var lexer = animation_dsl.DSLLexer(source) + var tokens = lexer.tokenize() + + assert(size(tokens) >= 3, "Should have at least 3 tokens") + assert(tokens[1].type == animation_dsl.Token.STRING, "Second token should be STRING") + + var expected_content = "\nLine 1\nLine 2\nLine 3\n" + assert(tokens[1].value == expected_content, f"String content should be '{expected_content}', got '{tokens[1].value}'") + + print("✓ Multiline triple-quoted string tokenization test passed") + return true +end + +# Test triple-quoted string with embedded quotes +def test_embedded_quotes() + print("Testing triple-quoted string with embedded quotes...") + + var source = 'berry """\nprint("Hello")\nvar x = \'world\'\n"""' + var lexer = animation_dsl.DSLLexer(source) + var tokens = lexer.tokenize() + + assert(size(tokens) >= 3, "Should have at least 3 tokens") + assert(tokens[1].type == animation_dsl.Token.STRING, "Second token should be STRING") + + var expected_content = '\nprint("Hello")\nvar x = \'world\'\n' + assert(tokens[1].value == expected_content, f"String content should preserve embedded quotes") + + print("✓ Embedded quotes in triple-quoted string test passed") + return true +end + +# Test empty triple-quoted string +def test_empty_triple_quotes() + print("Testing empty triple-quoted string...") + + var source = 'berry """"""' + var lexer = animation_dsl.DSLLexer(source) + var tokens = lexer.tokenize() + + assert(size(tokens) >= 3, "Should have at least 3 tokens") + assert(tokens[1].type == animation_dsl.Token.STRING, "Second token should be STRING") + assert(tokens[1].value == "", "Empty string should have empty value") + + print("✓ Empty triple-quoted string test passed") + return true +end + +# Test unterminated triple-quoted string (error case) +def test_unterminated_triple_quotes() + print("Testing unterminated triple-quoted string...") + + var source = 'berry """\nUnterminated string' + var lexer = animation_dsl.DSLLexer(source) + var tokens = lexer.tokenize() + + # Should generate an error token + var has_error = false + for token : tokens + if token.type == animation_dsl.Token.ERROR + has_error = true + break + end + end + + assert(has_error, "Should generate an ERROR token for unterminated string") + + print("✓ Unterminated triple-quoted string test passed") + return true +end + +# Test triple-quoted string with complex content +def test_complex_content() + print("Testing triple-quoted string with complex content...") + + var source = 'berry """\n' + + 'import math\n' + + 'def func(x)\n' + + ' return x * 2\n' + + 'end\n' + + 'var result = func(21)\n' + + 'print("Result:", result)\n' + + '"""' + + var lexer = animation_dsl.DSLLexer(source) + var tokens = lexer.tokenize() + + assert(size(tokens) >= 3, "Should have at least 3 tokens") + assert(tokens[1].type == animation_dsl.Token.STRING, "Second token should be STRING") + + var content = tokens[1].value + assert(string.find(content, "import math") >= 0, "Should contain import statement") + assert(string.find(content, "def func(x)") >= 0, "Should contain function definition") + assert(string.find(content, "return x * 2") >= 0, "Should contain function body") + assert(string.find(content, 'print("Result:", result)') >= 0, "Should contain print statement") + + print("✓ Complex content triple-quoted string test passed") + return true +end + +# Test mixed quote types (should not interfere) +def test_mixed_quote_types() + print("Testing that triple quotes don't interfere with regular quotes...") + + var source = 'color red = 0xFF0000\nberry """\ntest\n"""\nvar x = "normal string"' + var lexer = animation_dsl.DSLLexer(source) + var tokens = lexer.tokenize() + + # Find the normal string token + var normal_string_found = false + for token : tokens + if token.type == animation_dsl.Token.STRING && token.value == "normal string" + normal_string_found = true + break + end + end + + assert(normal_string_found, "Should still tokenize normal strings correctly") + + print("✓ Mixed quote types test passed") + return true +end + +# Run all lexer triple quotes tests +def run_all_lexer_triple_quotes_tests() + print("=== DSL Lexer Triple Quotes Test Suite ===") + print("") + + var tests = [ + test_triple_quotes_double, + test_triple_quotes_single, + test_multiline_triple_quotes, + test_embedded_quotes, + test_empty_triple_quotes, + test_unterminated_triple_quotes, + test_complex_content, + test_mixed_quote_types + ] + + var passed = 0 + var total = size(tests) + + for test_func : tests + try + if test_func() + passed += 1 + end + except .. as e, m + print("✗ Test failed with exception:", e, m) + end + print("") + end + + print("=== Lexer Triple Quotes Test Results ===") + print(f"Passed: {passed}/{total}") + + if passed == total + print("All lexer triple quotes tests passed! ✓") + return true + else + print("Some lexer triple quotes tests failed! ✗") + raise "test_failed" + end +end + +# Run the tests +return run_all_lexer_triple_quotes_tests() \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be b/lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be index 11bd00975..275530947 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be @@ -214,7 +214,7 @@ class DSLParameterValidationTest end # Check that the generated code contains the expected object reference - if string.find(berry_code, "self.resolve(red_eye_, 'pos')") == -1 + if string.find(berry_code, "animation.resolve(red_eye_, 'pos')") == -1 raise "generation_error", "Generated code should contain object property reference" end end @@ -336,7 +336,7 @@ class DSLParameterValidationTest end # Check that the generated code contains the expected computed expression - if string.find(berry_code, "self.resolve(strip_len_) - self.resolve(red_eye_, 'pos')") == -1 + if string.find(berry_code, "animation.resolve(strip_len_) - animation.resolve(red_eye_, 'pos')") == -1 raise "generation_error", "Generated code should contain computed object property reference" end end @@ -383,7 +383,7 @@ class DSLParameterValidationTest return true else print("✗ Some DSL parameter validation tests failed!") - return false + raise "test_failed" end end end diff --git a/lib/libesp32/berry_animation/src/tests/dsl_reset_restart_test.be b/lib/libesp32/berry_animation/src/tests/dsl_restart_test.be similarity index 73% rename from lib/libesp32/berry_animation/src/tests/dsl_reset_restart_test.be rename to lib/libesp32/berry_animation/src/tests/dsl_restart_test.be index fa4fb3fe4..ed584880c 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_reset_restart_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_restart_test.be @@ -1,5 +1,5 @@ -# DSL Reset/Restart Test Suite -# Tests for reset and restart functionality in sequences +# DSL Restart Test Suite +# Tests for restart functionality in sequences # # Command to run test is: # ./berry -s -g -m lib/libesp32/berry_animation/src -e "import tasmota def log(x) print(x) end" lib/libesp32/berry_animation/src/tests/dsl_reset_restart_test.be @@ -8,32 +8,6 @@ import animation import animation_dsl import string -# Test basic reset functionality -def test_reset_basic() - print("Testing basic reset functionality...") - - var dsl_source = "set osc_val = triangle(min_value=0, max_value=10, duration=2s)\n" + - "animation test_anim = solid(color=red)\n" + - "\n" + - "sequence demo {\n" + - " play test_anim for 1s\n" + - " reset osc_val\n" + - " play test_anim for 1s\n" + - "}\n" + - "\n" + - "run demo" - - var berry_code = animation_dsl.compile(dsl_source) - - assert(berry_code != nil, "Should generate Berry code for reset") - assert(string.find(berry_code, "animation.triangle(engine)") >= 0, "Should generate triangle oscillator") - assert(string.find(berry_code, "push_closure_step") >= 0, "Should generate closure step for reset") - assert(string.find(berry_code, "osc_val_.start(engine.time_ms)") >= 0, "Should call start() method") - - print("✓ Basic reset test passed") - return true -end - # Test basic restart functionality def test_restart_basic() print("Testing basic restart functionality...") @@ -60,9 +34,9 @@ def test_restart_basic() return true end -# Test reset/restart with different value provider types -def test_reset_restart_different_providers() - print("Testing reset/restart with different value provider types...") +# Test restart with different value provider types +def test_restart_different_providers() + print("Testing restart with different value provider types...") var dsl_source = "set triangle_val = triangle(min_value=0, max_value=29, duration=5s)\n" + "set cosine_val = cosine_osc(min_value=0, max_value=29, duration=5s)\n" + @@ -71,11 +45,11 @@ def test_reset_restart_different_providers() "\n" + "sequence demo {\n" + " play test_anim for 500ms\n" + - " reset triangle_val\n" + + " restart triangle_val\n" + " wait 200ms\n" + " restart cosine_val\n" + " wait 200ms\n" + - " reset sine_val\n" + + " restart sine_val\n" + " play test_anim for 500ms\n" + "}\n" + "\n" + @@ -84,11 +58,11 @@ def test_reset_restart_different_providers() var berry_code = animation_dsl.compile(dsl_source) assert(berry_code != nil, "Should generate Berry code for multiple providers") - assert(string.find(berry_code, "triangle_val_.start(engine.time_ms)") >= 0, "Should reset triangle") + assert(string.find(berry_code, "triangle_val_.start(engine.time_ms)") >= 0, "Should restart triangle") assert(string.find(berry_code, "cosine_val_.start(engine.time_ms)") >= 0, "Should restart cosine") - assert(string.find(berry_code, "sine_val_.start(engine.time_ms)") >= 0, "Should reset sine") + assert(string.find(berry_code, "sine_val_.start(engine.time_ms)") >= 0, "Should restart sine") - # Count the number of closure steps - should be 3 (one for each reset/restart) + # Count the number of closure steps - should be 3 (one for each restart) var closure_count = 0 var pos = 0 while true @@ -97,15 +71,15 @@ def test_reset_restart_different_providers() closure_count += 1 pos += 1 end - assert(closure_count == 3, f"Should have 3 closure steps for reset/restart, found {closure_count}") + assert(closure_count == 3, f"Should have 3 closure steps for estart, found {closure_count}") print("✓ Different providers test passed") return true end -# Test reset/restart with animations -def test_reset_restart_animations() - print("Testing reset/restart with animations...") +# Test restart with animations +def test_restart_animations() + print("Testing restart with animations...") var dsl_source = "set osc_val = triangle(min_value=0, max_value=10, duration=2s)\n" + "animation pulse_anim = pulsating_animation(color=red, period=3s)\n" + @@ -113,7 +87,7 @@ def test_reset_restart_animations() "\n" + "sequence demo {\n" + " play pulse_anim for 1s\n" + - " reset pulse_anim\n" + + " restart pulse_anim\n" + " play solid_anim for 1s\n" + " restart solid_anim\n" + " play pulse_anim for 1s\n" + @@ -123,11 +97,11 @@ def test_reset_restart_animations() var berry_code = animation_dsl.compile(dsl_source) - assert(berry_code != nil, "Should generate Berry code for animation reset/restart") - assert(string.find(berry_code, "pulse_anim_.start(engine.time_ms)") >= 0, "Should reset pulse animation") + assert(berry_code != nil, "Should generate Berry code for animation restart") + assert(string.find(berry_code, "pulse_anim_.start(engine.time_ms)") >= 0, "Should restart pulse animation") assert(string.find(berry_code, "solid_anim_.start(engine.time_ms)") >= 0, "Should restart solid animation") - # Count the number of closure steps - should be 2 (one for each reset/restart) + # Count the number of closure steps - should be 2 (one for each restart) var closure_count = 0 var pos = 0 while true @@ -136,15 +110,15 @@ def test_reset_restart_animations() closure_count += 1 pos += 1 end - assert(closure_count == 2, f"Should have 2 closure steps for animation reset/restart, found {closure_count}") + assert(closure_count == 2, f"Should have 2 closure steps for animation restart, found {closure_count}") - print("✓ Animation reset/restart test passed") + print("✓ Animation restart test passed") return true end -# Test reset/restart in repeat blocks -def test_reset_restart_in_repeat() - print("Testing reset/restart in repeat blocks...") +# Test restart in repeat blocks +def test_restart_in_repeat() + print("Testing restart in repeat blocks...") var dsl_source = "set osc_val = triangle(min_value=0, max_value=10, duration=1s)\n" + "animation test_anim = solid(color=yellow)\n" + @@ -152,7 +126,7 @@ def test_reset_restart_in_repeat() "sequence demo {\n" + " repeat 3 times {\n" + " play test_anim for 500ms\n" + - " reset osc_val\n" + + " restart osc_val\n" + " wait 200ms\n" + " }\n" + "}\n" + @@ -161,11 +135,11 @@ def test_reset_restart_in_repeat() var berry_code = animation_dsl.compile(dsl_source) - assert(berry_code != nil, "Should generate Berry code for reset in repeat") + assert(berry_code != nil, "Should generate Berry code for restart in repeat") assert(string.find(berry_code, "push_repeat_subsequence") >= 0, "Should generate repeat block") - assert(string.find(berry_code, "osc_val_.start(engine.time_ms)") >= 0, "Should reset in repeat block") + assert(string.find(berry_code, "osc_val_.start(engine.time_ms)") >= 0, "Should restart in repeat block") - print("✓ Reset/restart in repeat test passed") + print("✓ Restart in repeat test passed") return true end @@ -177,7 +151,7 @@ def test_error_undefined_provider() "\n" + "sequence demo {\n" + " play test_anim for 1s\n" + - " reset undefined_provider\n" + + " restart undefined_provider\n" + "}\n" + "\n" + "run demo" @@ -203,7 +177,7 @@ def test_error_non_value_provider() "\n" + "sequence demo {\n" + " play test_anim for 1s\n" + - " reset my_color\n" + + " restart my_color\n" + "}\n" + "\n" + "run demo" @@ -226,9 +200,10 @@ def test_error_animation_not_provider() var dsl_source = "animation my_anim = solid(color=blue)\n" + "\n" + + "set myvar = 2\n" "sequence demo {\n" + " play my_anim for 1s\n" + - " restart my_anim\n" + + " restart myvar\n" + "}\n" + "\n" + "run demo" @@ -254,7 +229,7 @@ def test_error_variable_not_provider() "\n" + "sequence demo {\n" + " play test_anim for 1s\n" + - " reset my_var\n" + + " restart my_var\n" + "}\n" + "\n" + "run demo" @@ -271,11 +246,11 @@ def test_error_variable_not_provider() return true end -# Test complex scenario with multiple resets/restarts +# Test complex scenario with multiple restarts def test_complex_scenario() - print("Testing complex scenario with multiple resets/restarts...") + print("Testing complex scenario with multiple restarts...") - var dsl_source = "# Complex cylon eye with reset functionality\n" + + var dsl_source = "# Complex cylon eye with restart functionality\n" + "set strip_len = strip_length()\n" + "palette eye_palette = [ red, yellow, green, violet ]\n" + "color eye_color = color_cycle(palette=eye_palette, cycle_period=0)\n" + @@ -293,7 +268,7 @@ def test_complex_scenario() "sequence cylon_eye {\n" + " play red_eye for 3s\n" + " red_eye.pos = triangle_val\n" + - " reset triangle_val\n" + + " restart triangle_val\n" + " play red_eye for 3s\n" + " red_eye.pos = cosine_val\n" + " restart cosine_val\n" + @@ -305,10 +280,10 @@ def test_complex_scenario() var berry_code = animation_dsl.compile(dsl_source) assert(berry_code != nil, "Should compile complex scenario") - assert(string.find(berry_code, "triangle_val_.start(engine.time_ms)") >= 0, "Should reset triangle_val") + assert(string.find(berry_code, "triangle_val_.start(engine.time_ms)") >= 0, "Should restart triangle_val") assert(string.find(berry_code, "cosine_val_.start(engine.time_ms)") >= 0, "Should restart cosine_val") - # Should have multiple closure steps: 2 assignments + 2 resets + 1 color advance = 5 total + # Should have multiple closure steps: 2 assignments + 2 restarts + 1 color advance = 5 total var closure_count = 0 var pos = 0 while true @@ -323,16 +298,16 @@ def test_complex_scenario() return true end -# Test that reset/restart works with comments -def test_reset_restart_with_comments() - print("Testing reset/restart with comments...") +# Test that restart works with comments +def test_restart_with_comments() + print("Testing restart with comments...") var dsl_source = "set osc_val = triangle(min_value=0, max_value=10, duration=2s) # Triangle oscillator\n" + "animation test_anim = solid(color=red)\n" + "\n" + "sequence demo {\n" + " play test_anim for 1s\n" + - " reset osc_val # Reset the oscillator\n" + + " restart osc_val # Restart the oscillator\n" + " restart osc_val # Restart it again\n" + " play test_anim for 1s\n" + "}\n" + @@ -342,10 +317,10 @@ def test_reset_restart_with_comments() var berry_code = animation_dsl.compile(dsl_source) assert(berry_code != nil, "Should generate Berry code with comments") - assert(string.find(berry_code, "# Reset the oscillator") >= 0, "Should preserve reset comment") + assert(string.find(berry_code, "# Restart the oscillator") >= 0, "Should preserve restart comment") assert(string.find(berry_code, "# Restart it again") >= 0, "Should preserve restart comment") - # Should have 2 closure steps for reset and restart + # Should have 2 closure steps for restart var closure_count = 0 var pos = 0 while true @@ -356,42 +331,40 @@ def test_reset_restart_with_comments() end assert(closure_count == 2, f"Should have 2 closure steps, found {closure_count}") - print("✓ Reset/restart with comments test passed") + print("✓ Restart with comments test passed") return true end # Run all tests -def run_all_reset_restart_tests() - print("Starting DSL Reset/Restart Tests...") +def run_all_restart_tests() + print("Starting DSL Restart Tests...") - test_reset_basic() test_restart_basic() - test_reset_restart_different_providers() - test_reset_restart_in_repeat() + test_restart_different_providers() + test_restart_in_repeat() test_error_undefined_provider() test_error_non_value_provider() test_error_animation_not_provider() test_error_variable_not_provider() test_complex_scenario() - test_reset_restart_with_comments() + test_restart_with_comments() - print("\n🎉 All DSL Reset/Restart tests passed!") + print("\n🎉 All DSL Restart tests passed!") return true end # Execute tests -run_all_reset_restart_tests() +run_all_restart_tests() return { - "run_all_reset_restart_tests": run_all_reset_restart_tests, - "test_reset_basic": test_reset_basic, + "run_all_estart_tests": run_all_restart_tests, "test_restart_basic": test_restart_basic, - "test_reset_restart_different_providers": test_reset_restart_different_providers, - "test_reset_restart_in_repeat": test_reset_restart_in_repeat, + "test_restart_different_providers": test_restart_different_providers, + "test_restart_in_repeat": test_restart_in_repeat, "test_error_undefined_provider": test_error_undefined_provider, "test_error_non_value_provider": test_error_non_value_provider, "test_error_animation_not_provider": test_error_animation_not_provider, "test_error_variable_not_provider": test_error_variable_not_provider, "test_complex_scenario": test_complex_scenario, - "test_reset_restart_with_comments": test_reset_restart_with_comments + "test_restart_with_comments": test_restart_with_comments } \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be b/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be index eed8f10c6..0b0a93a97 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be @@ -603,15 +603,14 @@ def test_error_handling() # Expected behavior end - # Test undefined references - simplified transpiler uses runtime resolution + # Test undefined references - should raise exception var undefined_ref_dsl = "animation test = undefined_pattern" try var berry_code = animation_dsl.compile(undefined_ref_dsl) - # Simplified transpiler uses runtime resolution, so this should compile - assert(berry_code != nil, "Should compile with runtime resolution") + assert(false, "Should have raised exception for undefined identifier") except "dsl_compilation_error" as e, msg - assert(false, "Should not raise exception for undefined references: " + msg) + # Expected behavior - undefined identifiers should raise exceptions end print("✓ Error handling test passed") @@ -1114,6 +1113,141 @@ def test_invalid_sequence_commands() return true end +# Test template-only transpilation +def test_template_only_transpilation() + print("Testing template-only transpilation...") + + # Test single template definition + var single_template_dsl = "template pulse_effect {\n" + + " param base_color type color\n" + + " param duration\n" + + " param brightness type number\n" + + " \n" + + " animation pulse = pulsating_animation(\n" + + " color=base_color\n" + + " period=duration\n" + + " )\n" + + " pulse.opacity = brightness\n" + + " run pulse\n" + + "}" + + var single_code = animation_dsl.compile(single_template_dsl) + assert(single_code != nil, "Should compile single template") + + # Should NOT contain engine initialization + assert(string.find(single_code, "var engine = animation.init_strip()") < 0, "Should NOT generate engine initialization for template-only file") + + # Should NOT contain engine.run() + assert(string.find(single_code, "engine.run()") < 0, "Should NOT generate engine.run() for template-only file") + + # Should contain template function definition + assert(string.find(single_code, "def pulse_effect_template(engine, base_color_, duration_, brightness_)") >= 0, "Should generate template function") + + # Should contain function registration + assert(string.find(single_code, "animation.register_user_function('pulse_effect', pulse_effect_template)") >= 0, "Should register template function") + + # Test multiple templates + var multiple_templates_dsl = "template pulse_effect {\n" + + " param base_color type color\n" + + " param duration\n" + + " \n" + + " animation pulse = pulsating_animation(\n" + + " color=base_color\n" + + " period=duration\n" + + " )\n" + + " run pulse\n" + + "}\n" + + "\n" + + "template blink_red {\n" + + " param speed\n" + + " \n" + + " animation blink = pulsating_animation(\n" + + " color=red\n" + + " period=speed\n" + + " )\n" + + " \n" + + " run blink\n" + + "}" + + var multiple_code = animation_dsl.compile(multiple_templates_dsl) + assert(multiple_code != nil, "Should compile multiple templates") + + # Should NOT contain engine initialization or run + assert(string.find(multiple_code, "var engine = animation.init_strip()") < 0, "Should NOT generate engine initialization for multiple templates") + assert(string.find(multiple_code, "engine.run()") < 0, "Should NOT generate engine.run() for multiple templates") + + # Should contain both template functions + assert(string.find(multiple_code, "def pulse_effect_template(") >= 0, "Should generate first template function") + assert(string.find(multiple_code, "def blink_red_template(") >= 0, "Should generate second template function") + + # Should contain both registrations + assert(string.find(multiple_code, "animation.register_user_function('pulse_effect'") >= 0, "Should register first template") + assert(string.find(multiple_code, "animation.register_user_function('blink_red'") >= 0, "Should register second template") + + print("✓ Template-only transpilation test passed") + return true +end + +# Test mixed template and DSL transpilation +def test_mixed_template_dsl_transpilation() + print("Testing mixed template and DSL transpilation...") + + # Test template with regular DSL (should generate engine initialization and run) + var mixed_dsl = "template pulse_effect {\n" + + " param base_color type color\n" + + " param duration\n" + + " \n" + + " animation pulse = pulsating_animation(\n" + + " color=base_color\n" + + " period=duration\n" + + " )\n" + + " run pulse\n" + + "}\n" + + "\n" + + "color my_red = 0xFF0000\n" + + "animation test_anim = solid(color=my_red)\n" + + "run test_anim" + + var mixed_code = animation_dsl.compile(mixed_dsl) + assert(mixed_code != nil, "Should compile mixed template and DSL") + + # Should contain engine initialization because of non-template DSL + assert(string.find(mixed_code, "var engine = animation.init_strip()") >= 0, "Should generate engine initialization for mixed content") + + # Should contain engine.run() because of run statement + assert(string.find(mixed_code, "engine.run()") >= 0, "Should generate engine.run() for mixed content") + + # Should contain template function + assert(string.find(mixed_code, "def pulse_effect_template(") >= 0, "Should generate template function") + + # Should contain regular DSL elements + assert(string.find(mixed_code, "var my_red_ = 0xFFFF0000") >= 0, "Should generate color definition") + assert(string.find(mixed_code, "var test_anim_ = animation.solid(engine)") >= 0, "Should generate animation definition") + + # Test template with property assignment (should generate engine initialization) + var template_with_property_dsl = "template pulse_effect {\n" + + " param base_color type color\n" + + " \n" + + " animation pulse = pulsating_animation(color=base_color, period=2s)\n" + + " run pulse\n" + + "}\n" + + "\n" + + "animation test_anim = solid(color=red)\n" + + "test_anim.opacity = 128" + + var property_code = animation_dsl.compile(template_with_property_dsl) + assert(property_code != nil, "Should compile template with property assignment") + + # Should generate engine initialization because of property assignment + assert(string.find(property_code, "var engine = animation.init_strip()") >= 0, "Should generate engine initialization for property assignment") + + # Should NOT generate engine.run() because no run statement + assert(string.find(property_code, "engine.run()") < 0, "Should NOT generate engine.run() without run statement") + + print("✓ Mixed template and DSL transpilation test passed") + return true +end + # Run all tests def run_dsl_transpiler_tests() print("=== DSL Transpiler Test Suite ===") @@ -1141,7 +1275,9 @@ def run_dsl_transpiler_tests() test_easing_keywords, test_animation_type_checking, test_color_type_checking, - test_invalid_sequence_commands + test_invalid_sequence_commands, + test_template_only_transpilation, + test_mixed_template_dsl_transpilation ] var passed = 0 diff --git a/lib/libesp32/berry_animation/src/tests/dsl_undefined_identifier_test.be b/lib/libesp32/berry_animation/src/tests/dsl_undefined_identifier_test.be new file mode 100644 index 000000000..ab728b668 --- /dev/null +++ b/lib/libesp32/berry_animation/src/tests/dsl_undefined_identifier_test.be @@ -0,0 +1,188 @@ +# DSL Undefined Identifier Test +# Tests that undefined identifiers in function calls are properly caught and reported +# +# This test covers the fix for process_primary_expression() where undefined identifiers +# in function call contexts should raise appropriate error messages. + +import animation +import animation_dsl +import string + +# Test class to verify undefined identifier error handling +class DSLUndefinedIdentifierTest + var test_results + + def init() + self.test_results = [] + end + + # Helper method to run a test case + def run_test(test_name, test_func) + try + test_func() + self.test_results.push(f"✓ {test_name}") + return true + except .. as e, msg + self.test_results.push(f"✗ {test_name}: {msg}") + return false + end + end + + # Test undefined function in animation definition + # Note: This will be caught by animation factory validation, not our new check + def test_undefined_function_in_animation() + var dsl_code = + "animation test = undefined_function(color=red)\n" + "run test" + + try + var berry_code = animation_dsl.compile_dsl(dsl_code) + raise "compilation_error", "Should have failed with undefined function error" + except "dsl_compilation_error" as e, msg + # This will be caught by animation factory validation + if string.find(msg, "Animation factory function 'undefined_function' does not exist") == -1 + raise "wrong_error", f"Expected animation factory error, got: {msg}" + end + end + end + + # Test undefined function in color definition + # Note: This will be caught by color provider validation, not our new check + def test_undefined_function_in_color() + var dsl_code = + "color test_color = undefined_color_provider(period=2s)\n" + "animation test = solid(color=test_color)\n" + "run test" + + try + var berry_code = animation_dsl.compile_dsl(dsl_code) + raise "compilation_error", "Should have failed with undefined function error" + except "dsl_compilation_error" as e, msg + # This will be caught by color provider validation + if string.find(msg, "Color provider factory") == -1 && string.find(msg, "does not exist") == -1 + raise "wrong_error", f"Expected color provider factory error, got: {msg}" + end + end + end + + # Test undefined function in property assignment + def test_undefined_function_in_property() + var dsl_code = + "animation test = solid(color=red)\n" + "test.opacity = undefined_value_provider(min_value=0, max_value=255)\n" + "run test" + + try + var berry_code = animation_dsl.compile_dsl(dsl_code) + raise "compilation_error", "Should have failed with undefined function error" + except "dsl_compilation_error" as e, msg + if string.find(msg, "Unknown function or identifier 'undefined_value_provider'") == -1 + raise "wrong_error", f"Expected undefined function error, got: {msg}" + end + end + end + + # Test undefined function in computed expression + def test_undefined_function_in_computed_expression() + var dsl_code = + "animation test = solid(color=red)\n" + "test.opacity = undefined_function() + 100\n" + "run test" + + try + var berry_code = animation_dsl.compile_dsl(dsl_code) + raise "compilation_error", "Should have failed with undefined function error" + except "dsl_compilation_error" as e, msg + if string.find(msg, "Unknown function or identifier 'undefined_function'") == -1 + raise "wrong_error", f"Expected undefined function error, got: {msg}" + end + end + end + + # Test that valid functions still work (regression test) + def test_valid_functions_still_work() + var dsl_code = + "set osc = triangle(min_value=50, max_value=255, duration=2s)\n" + "animation test = solid(color=red)\n" + "test.opacity = osc\n" + "run test" + + var berry_code = animation_dsl.compile_dsl(dsl_code) + + if berry_code == nil + raise "compilation_error", "Valid functions should compile successfully" + end + + # Check that the generated code contains expected elements + if string.find(berry_code, "animation.triangle") == -1 + raise "generation_error", "Generated code should contain animation.triangle" + end + end + + # Test undefined identifier in regular context (not function call) + def test_undefined_identifier_regular_context() + var dsl_code = + "animation test = solid(color=undefined_color)\n" + "run test" + + try + var berry_code = animation_dsl.compile_dsl(dsl_code) + raise "compilation_error", "Should have failed with undefined identifier error" + except "dsl_compilation_error" as e, msg + if string.find(msg, "Unknown identifier 'undefined_color'") == -1 + raise "wrong_error", f"Expected undefined identifier error, got: {msg}" + end + end + end + + # Run all tests + def run_all_tests() + print("=== DSL Undefined Identifier Test Suite ===") + + var tests = [ + ["Undefined function in animation definition", / -> self.test_undefined_function_in_animation()], + ["Undefined function in color definition", / -> self.test_undefined_function_in_color()], + ["Undefined function in property assignment", / -> self.test_undefined_function_in_property()], + ["Undefined function in computed expression", / -> self.test_undefined_function_in_computed_expression()], + ["Valid functions still work (regression)", / -> self.test_valid_functions_still_work()], + ["Undefined identifier in regular context", / -> self.test_undefined_identifier_regular_context()] + ] + + var passed = 0 + var total = size(tests) + + for test_info : tests + var test_name = test_info[0] + var test_func = test_info[1] + + try + if self.run_test(test_name, test_func) + passed += 1 + end + except .. as error_type, error_message + print(f"✗ Test crashed: {error_type} - {error_message}") + end + end + + print(f"\n=== Test Results: {passed}/{total} passed ===") + + for result : self.test_results + print(result) + end + + return passed == total + end +end + +# Run the tests +var test_suite = DSLUndefinedIdentifierTest() +var success = test_suite.run_all_tests() + +if success + print("\n🎉 All undefined identifier tests passed!") +else + print("\n❌ Some undefined identifier tests failed!") + raise "test_failed" +end + +return success \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be b/lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be index 6ef4a101a..05548161b 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be @@ -165,93 +165,103 @@ class DSLValueProviderValidationTest end end - # Test strip_length arithmetic expression (should be wrapped with animation.resolve) + # Test strip_length arithmetic expression (should fail compilation due to dangerous pattern) def test_strip_length_arithmetic_expression() var dsl_code = "set strip_len3 = (strip_length() + 1) / 2" - var berry_code = animation_dsl.compile(dsl_code) - if berry_code == nil - raise "compilation_error", "strip_length arithmetic expression should compile successfully" + var compilation_failed = false + var error_message = "" + + try + var berry_code = animation_dsl.compile(dsl_code) + if berry_code == nil + compilation_failed = true + end + except "dsl_compilation_error" as e, msg + compilation_failed = true + error_message = msg end - # Check that it generates closure with animation.resolve wrapper - if string.find(berry_code, "create_closure_value") == -1 - raise "generation_error", "Arithmetic expression should create closure" + if !compilation_failed + raise "validation_error", "strip_length in arithmetic expression should cause compilation to fail due to dangerous pattern" end - # Most importantly, check that strip_length is wrapped with animation.resolve - if string.find(berry_code, "animation.resolve(animation.strip_length(engine))") == -1 - raise "generation_error", "strip_length in arithmetic should be wrapped with animation.resolve()" - end - - # Check the complete expected pattern - var expected_pattern = "def (engine) return (animation.resolve(animation.strip_length(engine)) + 1) / 2 end" - if string.find(berry_code, expected_pattern) == -1 - raise "generation_error", f"Generated code should contain expected pattern: {expected_pattern}" + # Check that the error message mentions the dangerous pattern + if string.find(error_message, "cannot be used in computed expressions") == -1 + raise "error_message_error", f"Error message should mention computed expressions restriction, got: {error_message}" end end - # Test complex strip_length arithmetic + # Test complex strip_length arithmetic (should fail compilation due to dangerous pattern) def test_strip_length_complex_arithmetic() var dsl_code = "set complex = (strip_length() + 5) * 2 - strip_length() / 4" - var berry_code = animation_dsl.compile(dsl_code) - if berry_code == nil - raise "compilation_error", "Complex strip_length arithmetic should compile successfully" - end + var compilation_failed = false + var error_message = "" - # Check that both strip_length calls are wrapped with animation.resolve - var resolve_count = 0 - var pos = 0 - while true - var found_pos = string.find(berry_code, "animation.resolve(animation.strip_length(engine))", pos) - if found_pos == -1 - break + try + var berry_code = animation_dsl.compile(dsl_code) + if berry_code == nil + compilation_failed = true end - resolve_count += 1 - pos = found_pos + 1 + except "dsl_compilation_error" as e, msg + compilation_failed = true + error_message = msg end - if resolve_count != 2 - raise "generation_error", f"Expected 2 animation.resolve() calls for strip_length, found {resolve_count}" + if !compilation_failed + raise "validation_error", "Complex strip_length arithmetic should cause compilation to fail due to dangerous pattern" + end + + # Check that the error message mentions the dangerous pattern + if string.find(error_message, "cannot be used in computed expressions") == -1 + raise "error_message_error", f"Error message should mention computed expressions restriction, got: {error_message}" end end - # Test mixed user variables and strip_length + # Test mixed user variables and strip_length (should fail due to dangerous pattern) def test_mixed_variables_and_strip_length() var dsl_code = "set val1 = 10\nset mixed = val1 + strip_length() * 2" - var berry_code = animation_dsl.compile(dsl_code) - if berry_code == nil - raise "compilation_error", "Mixed variables and strip_length should compile successfully" + var compilation_failed = false + var error_message = "" + + try + var berry_code = animation_dsl.compile(dsl_code) + if berry_code == nil + compilation_failed = true + end + except "dsl_compilation_error" as e, msg + compilation_failed = true + error_message = msg end - # Check that both val1_ and strip_length are properly resolved - if string.find(berry_code, "animation.resolve(val1_)") == -1 - raise "generation_error", "User variable val1_ should be wrapped with animation.resolve()" + if !compilation_failed + raise "validation_error", "Mixed variables and strip_length should cause compilation to fail due to dangerous pattern" end - if string.find(berry_code, "animation.resolve(animation.strip_length(engine))") == -1 - raise "generation_error", "strip_length should be wrapped with animation.resolve()" + # Check that the error message mentions the dangerous pattern + if string.find(error_message, "cannot be used in computed expressions") == -1 + raise "error_message_error", f"Error message should mention computed expressions restriction, got: {error_message}" end end - # Test strip_length in property assignment + # Test strip_length in property assignment (currently allowed due to anonymous function wrapper) def test_strip_length_in_property_assignment() var dsl_code = "animation test = solid(color=red)\ntest.opacity = strip_length() / 2" var berry_code = animation_dsl.compile(dsl_code) if berry_code == nil - raise "compilation_error", "strip_length in property assignment should compile successfully" + raise "compilation_error", "strip_length in property assignment should compile (anonymous function wrapper bypasses dangerous pattern detection)" end - # Check that property assignment creates closure with resolved strip_length - if string.find(berry_code, "test_.opacity = animation.create_closure_value") == -1 - raise "generation_error", "Property assignment with arithmetic should create closure" + # Check that it generates an anonymous function wrapper + if string.find(berry_code, "def (engine)") == -1 + raise "generation_error", "Property assignment should generate anonymous function wrapper" end - if string.find(berry_code, "animation.resolve(animation.strip_length(engine))") == -1 - raise "generation_error", "strip_length in property assignment should be wrapped with animation.resolve()" + if string.find(berry_code, "animation.strip_length(engine)") == -1 + raise "generation_error", "Anonymous function should contain strip_length call" end end @@ -275,74 +285,61 @@ class DSLValueProviderValidationTest end end - # Test edge case: strip_length with parentheses + # Test edge case: strip_length with parentheses (should fail due to dangerous pattern) def test_strip_length_with_parentheses() var dsl_code = "set result = (strip_length()) * 2" - var berry_code = animation_dsl.compile(dsl_code) - if berry_code == nil - raise "compilation_error", "strip_length with parentheses should compile successfully" - end + var compilation_failed = false + var error_message = "" - # Check that strip_length is still properly resolved even with extra parentheses - if string.find(berry_code, "animation.resolve(animation.strip_length(engine))") == -1 - raise "generation_error", "strip_length with parentheses should be wrapped with animation.resolve()" - end - end - - # Test edge case: multiple strip_length calls in same expression - def test_multiple_strip_length_calls() - var dsl_code = "set ratio = strip_length() / (strip_length() + 10)" - - var berry_code = animation_dsl.compile(dsl_code) - if berry_code == nil - raise "compilation_error", "Multiple strip_length calls should compile successfully" - end - - # Count the number of animation.resolve(animation.strip_length(engine)) calls - var resolve_count = 0 - var pos = 0 - while true - var found_pos = string.find(berry_code, "animation.resolve(animation.strip_length(engine))", pos) - if found_pos == -1 - break + try + var berry_code = animation_dsl.compile(dsl_code) + if berry_code == nil + compilation_failed = true end - resolve_count += 1 - pos = found_pos + 1 + except "dsl_compilation_error" as e, msg + compilation_failed = true + error_message = msg end - if resolve_count != 2 - raise "generation_error", f"Expected 2 resolved strip_length calls, found {resolve_count}" + if !compilation_failed + raise "validation_error", "strip_length with parentheses in arithmetic should cause compilation to fail due to dangerous pattern" + end + + # Check that the error message mentions the dangerous pattern + if string.find(error_message, "cannot be used in computed expressions") == -1 + raise "error_message_error", f"Error message should mention computed expressions restriction, got: {error_message}" end end - # Test edge case: strip_length in nested expressions + # Test edge case: strip_length in nested expressions (should fail due to dangerous pattern) def test_strip_length_nested_expressions() var dsl_code = "set nested = ((strip_length() + 1) * 2) / (strip_length() - 1)" - var berry_code = animation_dsl.compile(dsl_code) - if berry_code == nil - raise "compilation_error", "Nested strip_length expressions should compile successfully" - end + var compilation_failed = false + var error_message = "" - # Both strip_length calls should be resolved - var resolve_count = 0 - var pos = 0 - while true - var found_pos = string.find(berry_code, "animation.resolve(animation.strip_length(engine))", pos) - if found_pos == -1 - break + try + var berry_code = animation_dsl.compile(dsl_code) + if berry_code == nil + compilation_failed = true end - resolve_count += 1 - pos = found_pos + 1 + except "dsl_compilation_error" as e, msg + compilation_failed = true + error_message = msg end - if resolve_count != 2 - raise "generation_error", f"Expected 2 resolved strip_length calls in nested expression, found {resolve_count}" + if !compilation_failed + raise "validation_error", "Nested strip_length expressions should cause compilation to fail due to dangerous pattern" + end + + # Check that the error message mentions the dangerous pattern + if string.find(error_message, "cannot be used in computed expressions") == -1 + raise "error_message_error", f"Error message should mention computed expressions restriction, got: {error_message}" end end - # Test that the fix doesn't affect strip_length when not in arithmetic + # Test that strip_length works in non-arithmetic contexts (direct assignment without closure) def test_strip_length_non_arithmetic_contexts() var dsl_code = "animation test = solid(color=red)\ntest.opacity = strip_length()" @@ -351,14 +348,57 @@ class DSLValueProviderValidationTest raise "compilation_error", "strip_length in non-arithmetic context should compile successfully" end - # In non-arithmetic context, strip_length should be used directly without resolve - if string.find(berry_code, "test_.opacity = animation.strip_length(engine)") == -1 - raise "generation_error", "strip_length in non-arithmetic context should be used directly" + # In property assignment context, strip_length should be assigned directly without closure wrapping + # since it's a value provider instance without additional computation + if string.find(berry_code, "def (engine)") != -1 + raise "generation_error", "strip_length in property assignment should NOT use anonymous function wrapper when used alone" end - # Should not contain animation.resolve for this case - if string.find(berry_code, "animation.resolve(animation.strip_length(engine))") != -1 - raise "generation_error", "strip_length in non-arithmetic context should not be wrapped with resolve" + if string.find(berry_code, "animation.strip_length(engine)") == -1 + raise "generation_error", "Should contain direct strip_length call" + end + + # Should not contain animation.resolve since it's not in a computed expression + if string.find(berry_code, "animation.resolve") != -1 + raise "generation_error", "strip_length should not be wrapped with resolve in this context" + end + end + + # Test the safe pattern: separate strip_length() call from computation + def test_strip_length_safe_pattern() + var dsl_code = "set strip_len = strip_length()\nset computed = (strip_len + 1) / 2" + + var berry_code = animation_dsl.compile(dsl_code) + if berry_code == nil + raise "compilation_error", "Safe strip_length pattern should compile successfully" + end + + # Check that strip_len is created as a direct call + if string.find(berry_code, "var strip_len_ = animation.strip_length(engine)") == -1 + raise "generation_error", "strip_len should be created as direct call" + end + + # Check that computed uses closure with animation.resolve for the variable + if string.find(berry_code, "create_closure_value") == -1 + raise "generation_error", "Computed expression should create closure" + end + + if string.find(berry_code, "animation.resolve(strip_len_)") == -1 + raise "generation_error", "User variable strip_len_ should be wrapped with animation.resolve()" + end + + # Should NOT contain direct strip_length calls in the computed expression + var computed_line_start = string.find(berry_code, "var computed_ = ") + if computed_line_start != -1 + var computed_line_end = string.find(berry_code, "\n", computed_line_start) + if computed_line_end == -1 + computed_line_end = size(berry_code) + end + var computed_line = berry_code[computed_line_start..computed_line_end-1] + + if string.find(computed_line, "animation.strip_length(engine)") != -1 + raise "generation_error", "Computed expression should not contain direct strip_length calls" + end end end @@ -382,9 +422,9 @@ class DSLValueProviderValidationTest ["Strip Length in Property Assignment", / -> self.test_strip_length_in_property_assignment()], ["No Regression with Regular Expressions", / -> self.test_no_regression_with_regular_expressions()], ["Strip Length with Parentheses", / -> self.test_strip_length_with_parentheses()], - ["Multiple Strip Length Calls", / -> self.test_multiple_strip_length_calls()], ["Strip Length Nested Expressions", / -> self.test_strip_length_nested_expressions()], - ["Strip Length Non-Arithmetic Contexts", / -> self.test_strip_length_non_arithmetic_contexts()] + ["Strip Length Non-Arithmetic Contexts", / -> self.test_strip_length_non_arithmetic_contexts()], + ["Strip Length Safe Pattern", / -> self.test_strip_length_safe_pattern()] ] for test : tests diff --git a/lib/libesp32/berry_animation/src/tests/event_system_test.be b/lib/libesp32/berry_animation/src/tests/event_system_test.be index ea5b76625..52936b043 100644 --- a/lib/libesp32/berry_animation/src/tests/event_system_test.be +++ b/lib/libesp32/berry_animation/src/tests/event_system_test.be @@ -130,7 +130,8 @@ def test_dsl_event_compilation() "# strip length 30 # TEMPORARILY DISABLED\n" "color custom_red = 0xFF0000\n" "on button_press: solid(custom_red)\n" - "run solid(custom_red)" + "animation anim = solid(color=custom_red)" + "run anim" var compiled_code = animation_dsl.compile(dsl_code) @@ -145,8 +146,10 @@ def test_dsl_event_with_parameters() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" "color custom_blue = 0x0000FF\n" + "color custom_red = 0xFF0000\n" "on timer(5s): solid(custom_blue)\n" - "run solid(custom_blue)" + "animation anim = solid(color=custom_red)" + "run anim" var compiled_code = animation_dsl.compile(dsl_code) diff --git a/lib/libesp32/berry_animation/src/tests/global_variable_test.be b/lib/libesp32/berry_animation/src/tests/global_variable_test.be index 68d701345..b2b3b0864 100644 --- a/lib/libesp32/berry_animation/src/tests/global_variable_test.be +++ b/lib/libesp32/berry_animation/src/tests/global_variable_test.be @@ -46,21 +46,17 @@ def test_undefined_variable_exception() print("Testing undefined variable exception behavior...") var dsl_code = "animation test = solid(color=undefined_var)" - var berry_code = animation_dsl.compile(dsl_code) - assert(berry_code != nil, "Should compile DSL code") - - # Check that undefined variables use direct underscore notation - import string - assert(string.find(berry_code, "test_.color = undefined_var_") >= 0, "Should use undefined_var_ directly for undefined variable") - - # Verify the generated code fails to compile (due to undefined variable) - # This is better than the old behavior - we catch undefined variables at compile time! + # The new transpiler behavior is to catch undefined variables at DSL compile time + # This is better than the old behavior - we catch errors earlier! try - var compiled_code = compile(berry_code) - assert(false, "Should have failed to compile due to undefined variable") - except .. as e, msg - print(f"✓ Correctly failed to compile due to undefined variable: {e}") + var berry_code = animation_dsl.compile(dsl_code) + assert(false, "Should have failed to compile DSL due to undefined variable") + except "dsl_compilation_error" as e, msg + print(f"✓ Correctly failed to compile DSL due to undefined variable: {e}") + # Verify the error message mentions the undefined variable + import string + assert(string.find(msg, "undefined_var") >= 0, "Error message should mention undefined_var") end print("✓ Undefined variable exception test passed") diff --git a/lib/libesp32/berry_animation/src/tests/palette_dsl_test.be b/lib/libesp32/berry_animation/src/tests/palette_dsl_test.be index 7966d7131..776e6a20f 100644 --- a/lib/libesp32/berry_animation/src/tests/palette_dsl_test.be +++ b/lib/libesp32/berry_animation/src/tests/palette_dsl_test.be @@ -589,7 +589,8 @@ def test_alternative_syntax_integration() " 0xFFFF00\n" + "]\n" + "\n" + - "animation fire_anim = rich_palette_animation(palette=fire_colors, cycle_period=3s)\n" + + "color rich_palette2 = color_cycle(palette=fire_colors, cycle_period=3s)\n" + "animation fire_anim = solid(color=rich_palette2)\n" + "\n" + "run fire_anim\n" @@ -599,7 +600,8 @@ def test_alternative_syntax_integration() # Verify the generated code contains the expected elements import string assert(string.find(berry_code, "var fire_colors_ = bytes(") != -1, "Should contain palette definition") - assert(string.find(berry_code, "rich_palette_animation(engine)") != -1, "Should contain animation creation") + assert(string.find(berry_code, "color_cycle(engine)") != -1, "Should contain value provider creation") + assert(string.find(berry_code, "solid(engine)") != -1, "Should contain animation creation") assert(string.find(berry_code, "fire_colors_") != -1, "Should reference the palette") print("✓ Alternative syntax integration test passed") diff --git a/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be b/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be index cf4207f6b..c7497b9fe 100644 --- a/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be +++ b/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be @@ -36,13 +36,13 @@ def test_basic_symbol_registration() return true end -# Test forward reference resolution -def test_forward_reference_resolution() - print("Testing forward reference resolution...") +# Test proper symbol ordering (no forward references) +def test_proper_symbol_ordering() + print("Testing proper symbol ordering...") - # DSL with forward reference: animation uses color defined later - var dsl_source = "animation fire_pattern = solid(color=custom_red)\n" + - "color custom_red = 0xFF0000" + # DSL with proper ordering: color defined before animation uses it + var dsl_source = "color custom_red = 0xFF0000\n" + + "animation fire_pattern = solid(color=custom_red)" var lexer = animation_dsl.DSLLexer(dsl_source) var tokens = lexer.tokenize() @@ -50,20 +50,20 @@ def test_forward_reference_resolution() var berry_code = transpiler.transpile() - # Should resolve the forward reference successfully - assert(berry_code != nil, "Should compile with forward reference") - assert(!transpiler.has_errors(), "Should resolve forward reference without errors") + # Should compile successfully with proper ordering + assert(berry_code != nil, "Should compile with proper symbol ordering") + assert(!transpiler.has_errors(), "Should have no errors with proper ordering") # Check generated code contains both definitions (with underscore suffix) assert(string.find(berry_code, "var custom_red_ = 0xFFFF0000") >= 0, "Should define custom_red color") assert(string.find(berry_code, "var fire_pattern_ = animation.solid(engine)") >= 0, "Should define fire animation") assert(string.find(berry_code, "fire_pattern_.color = custom_red_") >= 0, "Should reference custom_red") - print("✓ Forward reference resolution test passed") + print("✓ Proper symbol ordering test passed") return true end -# Test undefined reference handling (simplified transpiler uses runtime resolution) +# Test undefined reference handling (should fail at transpile time) def test_undefined_reference_handling() print("Testing undefined reference handling...") @@ -76,22 +76,13 @@ def test_undefined_reference_handling() var berry_code = transpiler.transpile() - # New behavior: transpiler generates direct reference to undefined_color_ - assert(berry_code != nil, "Should compile with direct reference") - assert(!transpiler.has_errors(), "Should have no compile-time errors") + # Should detect undefined reference at transpile time + assert(transpiler.has_errors(), "Should detect undefined reference error") - # Check that direct reference is generated (since undefined_color doesn't exist in animation module) - assert(string.find(berry_code, "undefined_color_") >= 0, "Should generate runtime resolution") - - # With new behavior, Berry compilation will fail due to undefined variable - # This is actually better than runtime errors as it catches issues earlier - try - var compiled_code = compile(berry_code) - assert(false, "Should fail to compile due to undefined variable") - except .. as e, msg - print(f"✓ Correctly caught undefined variable at compile time: {e}") - assert(string.find(str(msg), "undefined_color_") >= 0, "Error should mention undefined variable") - end + # Check that error message mentions the undefined symbol + var error_report = transpiler.get_error_report() + assert(string.find(error_report, "undefined_color") >= 0, "Error should mention undefined_color") + assert(string.find(error_report, "Unknown identifier") >= 0, "Should be an unknown identifier error") print("✓ Undefined reference handling test passed") return true @@ -147,14 +138,14 @@ def test_definition_generation() return true end -# Test complex forward references -def test_complex_forward_references() - print("Testing complex forward references...") +# Test complex symbol dependencies with proper ordering +def test_complex_symbol_dependencies() + print("Testing complex symbol dependencies...") - # Complex DSL with multiple forward references - var dsl_source = "animation complex_anim = pulsating_animation(color=primary_color, period=3000)\n" + + # Complex DSL with proper symbol ordering (no forward references) + var dsl_source = "color primary_color = 0xFF8000\n" + + "animation complex_anim = pulsating_animation(color=primary_color, period=3000)\n" + "animation gradient_pattern = solid(color=primary_color)\n" + - "color primary_color = 0xFF8000\n" + "sequence demo {\n" + " play complex_anim for 5s\n" + "}\n" + @@ -166,9 +157,9 @@ def test_complex_forward_references() var berry_code = transpiler.transpile() - # Should resolve all forward references - assert(berry_code != nil, "Should compile complex forward references") - assert(!transpiler.has_errors(), "Should resolve all forward references") + # Should compile successfully with proper ordering + assert(berry_code != nil, "Should compile complex dependencies") + assert(!transpiler.has_errors(), "Should have no errors with proper ordering") # Check all definitions are present (with underscore suffix) assert(string.find(berry_code, "var primary_color_") >= 0, "Should define primary color") @@ -176,7 +167,7 @@ def test_complex_forward_references() assert(string.find(berry_code, "var complex_anim_") >= 0, "Should define complex animation") assert(string.find(berry_code, "var demo_ = animation.SequenceManager(engine)") >= 0, "Should define sequence") - print("✓ Complex forward references test passed") + print("✓ Complex symbol dependencies test passed") return true end @@ -186,11 +177,11 @@ def run_symbol_registry_tests() var tests = [ test_basic_symbol_registration, - test_forward_reference_resolution, + test_proper_symbol_ordering, test_undefined_reference_handling, test_builtin_reference_handling, test_definition_generation, - test_complex_forward_references + test_complex_symbol_dependencies ] var passed = 0 diff --git a/lib/libesp32/berry_animation/src/tests/symbol_table_test.be b/lib/libesp32/berry_animation/src/tests/symbol_table_test.be new file mode 100644 index 000000000..8bb74f1f5 --- /dev/null +++ b/lib/libesp32/berry_animation/src/tests/symbol_table_test.be @@ -0,0 +1,357 @@ +# Symbol Table Test Suite +# Tests for the SymbolEntry and SymbolTable classes +# +# Command to run test is: +# ./berry -s -g -m lib/libesp32/berry_animation/src -e "import tasmota def log(x) print(x) end" lib/libesp32/berry_animation/src/tests/symbol_table_test.be + +import animation +import animation_dsl +import string + +# Test SymbolEntry creation and basic properties +def test_symbol_entry_creation() + print("Testing SymbolEntry creation...") + + # Test palette constant entry + var palette_entry = animation_dsl._symbol_entry.create_palette_constant("PALETTE_RAINBOW", nil, true) + assert(palette_entry.name == "PALETTE_RAINBOW", "Should set name correctly") + assert(palette_entry.type == "palette_constant", "Should set type correctly") + assert(palette_entry.is_builtin == true, "Should be marked as builtin") + assert(palette_entry.takes_args == false, "Palette constants don't take args") + assert(palette_entry.is_dangerous_call() == false, "Palette constants are not dangerous") + + # Test animation constructor entry + var anim_entry = animation_dsl._symbol_entry.create_animation_constructor("solid", nil, true) + assert(anim_entry.type == "animation_constructor", "Should be animation constructor") + assert(anim_entry.takes_named_args() == true, "Animation constructors take named args") + assert(anim_entry.is_dangerous_call() == true, "Animation constructors are dangerous") + + # Test user function entry + var func_entry = animation_dsl._symbol_entry.create_user_function("my_func", false) + assert(func_entry.type == "user_function", "Should be user function") + assert(func_entry.takes_positional_args() == true, "User functions take positional args") + assert(func_entry.is_builtin == false, "Should not be builtin") + + print("✓ SymbolEntry creation test passed") + return true +end + +# Test SymbolEntry reference generation +def test_symbol_entry_references() + print("Testing SymbolEntry reference generation...") + + # Test builtin reference + var builtin_entry = animation_dsl._symbol_entry.create_animation_constructor("solid", nil, true) + assert(builtin_entry.get_reference() == "animation.solid", "Should generate builtin reference") + + # Test math function reference + var math_entry = animation_dsl._symbol_entry.create_math_function("max", true) + assert(math_entry.get_reference() == "animation._math.max", "Should generate math function reference") + + # Test user-defined reference + var user_entry = animation_dsl._symbol_entry.create_animation_instance("my_anim", nil, false) + assert(user_entry.get_reference() == "my_anim_", "Should generate user reference with underscore") + + print("✓ SymbolEntry reference generation test passed") + return true +end + +# Test SymbolEntry argument detection +def test_symbol_entry_argument_detection() + print("Testing SymbolEntry argument detection...") + + # Test different types and their argument characteristics + var tests = [ + ["palette_constant", false, "none"], + ["math_function", true, "positional"], + ["user_function", true, "positional"], + ["value_provider_constructor", true, "named"], + ["animation_constructor", true, "named"], + ["color_constructor", true, "named"], + ["variable", false, "none"], + ["sequence", false, "none"] + ] + + for test : tests + var typ = test[0] + var expected_takes_args = test[1] + var expected_arg_type = test[2] + + var entry = animation_dsl._symbol_entry("test_symbol", typ, nil, false) + assert(entry.takes_args == expected_takes_args, f"Type {typ} should have takes_args={expected_takes_args}") + assert(entry.arg_type == expected_arg_type, f"Type {typ} should have arg_type={expected_arg_type}") + end + + print("✓ SymbolEntry argument detection test passed") + return true +end + +# Test SymbolEntry danger detection +def test_symbol_entry_danger_detection() + print("Testing SymbolEntry danger detection...") + + # Test dangerous types (constructors) + var dangerous_types = ["value_provider_constructor", "animation_constructor", "color_constructor"] + for typ : dangerous_types + var entry = animation_dsl._symbol_entry("test", typ, nil, true) + assert(entry.is_dangerous_call() == true, f"Type {typ} should be dangerous") + end + + # Test safe types + var safe_types = ["palette_constant", "math_function", "user_function", "variable", "sequence"] + for typ : safe_types + var entry = animation_dsl._symbol_entry("test", typ, nil, true) + assert(entry.is_dangerous_call() == false, f"Type {typ} should be safe") + end + + print("✓ SymbolEntry danger detection test passed") + return true +end + +# Test SymbolTable basic operations +def test_symbol_table_basic_operations() + print("Testing SymbolTable basic operations...") + + var table = animation_dsl._symbol_table() + + # Test adding a symbol + var entry = animation_dsl._symbol_entry.create_variable("test_var", false) + var added_entry = table.add("test_var", entry) + assert(added_entry == entry, "Should return the added entry") + + # Test checking if symbol exists + assert(table.contains("test_var") == true, "Should contain added symbol") + assert(table.contains("nonexistent") == false, "Should not contain nonexistent symbol") + + # Test getting symbol + var retrieved = table.get("test_var") + assert(retrieved == entry, "Should retrieve the same entry") + + # Test getting reference + var ref = table.get_reference("test_var") + assert(ref == "test_var_", "Should generate correct reference") + + print("✓ SymbolTable basic operations test passed") + return true +end + +# Test SymbolTable dynamic detection +def test_symbol_table_dynamic_detection() + print("Testing SymbolTable dynamic detection...") + + var table = animation_dsl._symbol_table() + + # Test detection of built-in animation constructor + assert(table.contains("solid") == true, "Should detect built-in solid function") + var solid_entry = table.get("solid") + assert(solid_entry != nil, "Should get solid entry") + assert(solid_entry.type == "animation_constructor", "Should detect as animation constructor") + assert(solid_entry.is_builtin == true, "Should be marked as builtin") + + # Test detection of built-in math function + assert(table.contains("max") == true, "Should detect built-in max function") + var max_entry = table.get("max") + assert(max_entry != nil, "Should get max entry") + assert(max_entry.type == "math_function", "Should detect as math function") + + # Test detection of built-in palette + assert(table.contains("PALETTE_RAINBOW") == true, "Should detect built-in palette") + var palette_entry = table.get("PALETTE_RAINBOW") + assert(palette_entry != nil, "Should get palette entry") + assert(palette_entry.type == "palette_constant", "Should detect as palette constant") + + print("✓ SymbolTable dynamic detection test passed") + return true +end + +# Test SymbolTable conflict detection +def test_symbol_table_conflict_detection() + print("Testing SymbolTable conflict detection...") + + var table = animation_dsl._symbol_table() + + # Try to redefine a built-in symbol with different type + var user_entry = animation_dsl._symbol_entry.create_variable("solid", false) + + try + table.add("solid", user_entry) + assert(false, "Should have thrown conflict error") + except "symbol_redefinition_error" as e, msg + assert(string.find(str(msg), "solid") >= 0, "Error should mention symbol name") + assert(string.find(str(msg), "animation_constructor") >= 0, "Error should mention built-in type") + end + + # Test that same type redefinition is allowed + var anim_entry1 = animation_dsl._symbol_entry.create_animation_instance("my_anim", nil, false) + var anim_entry2 = animation_dsl._symbol_entry.create_animation_instance("my_anim", nil, false) + + table.add("my_anim", anim_entry1) + table.add("my_anim", anim_entry2) # Should not throw + + print("✓ SymbolTable conflict detection test passed") + return true +end + +# Test SymbolTable creation methods +def test_symbol_table_creation_methods() + print("Testing SymbolTable creation methods...") + + var table = animation_dsl._symbol_table() + + # Test create_palette + var palette_entry = table.create_palette("my_palette", nil) + assert(palette_entry.type == "palette", "Should create palette entry") + assert(table.contains("my_palette") == true, "Should add to table") + + # Test create_color + var color_entry = table.create_color("my_color", nil) + assert(color_entry.type == "color", "Should create color entry") + assert(table.contains("my_color") == true, "Should add to table") + + # Test create_animation + var anim_entry = table.create_animation("my_anim", nil) + assert(anim_entry.type == "animation", "Should create animation entry") + assert(table.contains("my_anim") == true, "Should add to table") + + # Test create_value_provider + var vp_entry = table.create_value_provider("my_vp", nil) + assert(vp_entry.type == "value_provider", "Should create value provider entry") + assert(table.contains("my_vp") == true, "Should add to table") + + # Test create_variable + var var_entry = table.create_variable("my_var") + assert(var_entry.type == "variable", "Should create variable entry") + assert(table.contains("my_var") == true, "Should add to table") + + # Test create_sequence + var seq_entry = table.create_sequence("my_seq") + assert(seq_entry.type == "sequence", "Should create sequence entry") + assert(table.contains("my_seq") == true, "Should add to table") + + # Test create_template + var template_entry = table.create_template("my_template", {"param1": "int", "param2": "string"}) + assert(template_entry.type == "template", "Should create template entry") + assert(template_entry.get_param_types()["param1"] == "int", "Should set parameter types") + assert(table.contains("my_template") == true, "Should add to table") + + print("✓ SymbolTable creation methods test passed") + return true +end + +# Test SymbolTable named color handling +def test_symbol_table_named_colors() + print("Testing SymbolTable named color handling...") + + var table = animation_dsl._symbol_table() + + # Test named color detection + assert(table.symbol_exists("red") == true, "Should recognize named color 'red'") + assert(table.symbol_exists("blue") == true, "Should recognize named color 'blue'") + assert(table.symbol_exists("nonexistent_color") == false, "Should not recognize invalid color") + + # Test named color reference generation + var red_ref = table.get_reference("red") + assert(red_ref == "0xFFFF0000", "Should generate correct hex value for red") + + var blue_ref = table.get_reference("blue") + assert(blue_ref == "0xFF0000FF", "Should generate correct hex value for blue") + + print("✓ SymbolTable named color handling test passed") + return true +end + +# Test SymbolTable utility methods +def test_symbol_table_utility_methods() + print("Testing SymbolTable utility methods...") + + var table = animation_dsl._symbol_table() + + # Add some test symbols + table.create_animation("test_anim", nil) + table.create_variable("test_var") + + # Test get_type + assert(table.get_type("test_anim") == "animation", "Should return correct type") + assert(table.get_type("solid") == "animation_constructor", "Should return builtin type") + assert(table.get_type("nonexistent") == nil, "Should return nil for nonexistent") + + # Test takes_args + assert(table.takes_args("solid") == true, "Solid should take args") + assert(table.takes_args("test_var") == false, "Variables don't take args") + + # Test takes_named_args + assert(table.takes_named_args("solid") == true, "Solid takes named args") + assert(table.takes_named_args("max") == false, "Max takes positional args") + + # Test takes_positional_args + assert(table.takes_positional_args("max") == true, "Max takes positional args") + assert(table.takes_positional_args("solid") == false, "Solid doesn't take positional args") + + # Test is_dangerous + assert(table.is_dangerous("solid") == true, "Solid is dangerous (constructor)") + assert(table.is_dangerous("max") == false, "Max is not dangerous") + assert(table.is_dangerous("test_var") == false, "Variables are not dangerous") + + print("✓ SymbolTable utility methods test passed") + return true +end + +# Test MockEngine functionality +def test_mock_engine() + print("Testing MockEngine functionality...") + + var mock = animation_dsl.MockEngine() + assert(mock.time_ms == 0, "Should initialize time to 0") + assert(mock.get_strip_length() == 30, "Should return default strip length") + + print("✓ MockEngine test passed") + return true +end + +# Run all symbol table tests +def run_symbol_table_tests() + print("=== Symbol Table Test Suite ===") + + var tests = [ + test_symbol_entry_creation, + test_symbol_entry_references, + test_symbol_entry_argument_detection, + test_symbol_entry_danger_detection, + test_symbol_table_basic_operations, + test_symbol_table_dynamic_detection, + test_symbol_table_conflict_detection, + test_symbol_table_creation_methods, + test_symbol_table_named_colors, + test_symbol_table_utility_methods, + test_mock_engine + ] + + var passed = 0 + var total = size(tests) + + for test_func : tests + try + if test_func() + passed += 1 + else + print("✗ Test failed") + end + except .. as error_type, error_message + print("✗ Test crashed: " + str(error_type) + " - " + str(error_message)) + end + print("") # Add spacing between tests + end + + print("=== Results: " + str(passed) + "/" + str(total) + " tests passed ===") + + if passed == total + print("🎉 All symbol table tests passed!") + return true + else + print("❌ Some symbol table tests failed") + raise "test_failed" + end +end + +# Auto-run tests when file is executed +run_symbol_table_tests() \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/test_all.be b/lib/libesp32/berry_animation/src/tests/test_all.be index 202155a71..74593a0b2 100644 --- a/lib/libesp32/berry_animation/src/tests/test_all.be +++ b/lib/libesp32/berry_animation/src/tests/test_all.be @@ -8,6 +8,7 @@ import tasmota # Import the animation module import animation +import user_functions # Define a function to run a test file def run_test_file(file_path) @@ -56,8 +57,8 @@ def run_all_tests() # Animation effect tests "lib/libesp32/berry_animation/src/tests/filled_animation_test.be", - "lib/libesp32/berry_animation/src/tests/pulse_animation_test.be", - "lib/libesp32/berry_animation/src/tests/breathe_animation_test.be", + # "lib/libesp32/berry_animation/src/tests/pulse_animation_test.be", + # "lib/libesp32/berry_animation/src/tests/breathe_animation_test.be", "lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be", "lib/libesp32/berry_animation/src/tests/color_cycle_bytes_test.be", # Tests ColorCycleColorProvider with bytes palette "lib/libesp32/berry_animation/src/tests/color_cycle_palette_size_test.be", # Tests ColorCycleColorProvider palette_size read-only parameter @@ -70,17 +71,17 @@ def run_all_tests() "lib/libesp32/berry_animation/src/tests/beacon_animation_test.be", "lib/libesp32/berry_animation/src/tests/gradient_animation_test.be", "lib/libesp32/berry_animation/src/tests/noise_animation_test.be", - "lib/libesp32/berry_animation/src/tests/plasma_animation_test.be", - "lib/libesp32/berry_animation/src/tests/sparkle_animation_test.be", + # "lib/libesp32/berry_animation/src/tests/plasma_animation_test.be", + # "lib/libesp32/berry_animation/src/tests/sparkle_animation_test.be", "lib/libesp32/berry_animation/src/tests/wave_animation_test.be", "lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be", # Motion effects tests - "lib/libesp32/berry_animation/src/tests/shift_animation_test.be", - "lib/libesp32/berry_animation/src/tests/bounce_animation_test.be", - "lib/libesp32/berry_animation/src/tests/scale_animation_test.be", - "lib/libesp32/berry_animation/src/tests/jitter_animation_test.be", - "lib/libesp32/berry_animation/src/tests/motion_effects_test.be", + # "lib/libesp32/berry_animation/src/tests/shift_animation_test.be", + # "lib/libesp32/berry_animation/src/tests/bounce_animation_test.be", + # "lib/libesp32/berry_animation/src/tests/scale_animation_test.be", + # "lib/libesp32/berry_animation/src/tests/jitter_animation_test.be", + # "lib/libesp32/berry_animation/src/tests/motion_effects_test.be", # Color and parameter tests "lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be", @@ -117,9 +118,14 @@ def run_all_tests() "lib/libesp32/berry_animation/src/tests/palette_dsl_test.be", "lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be", "lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be", + "lib/libesp32/berry_animation/src/tests/dsl_undefined_identifier_test.be", "lib/libesp32/berry_animation/src/tests/dsl_newline_syntax_test.be", "lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be", "lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be", + "lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be", + "lib/libesp32/berry_animation/src/tests/dsl_lexer_triple_quotes_test.be", + "lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be", + "lib/libesp32/berry_animation/src/tests/dsl_restart_test.be", # Event system tests "lib/libesp32/berry_animation/src/tests/event_system_test.be" diff --git a/lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be b/lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be index 273e9ba7d..84978c001 100644 --- a/lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be +++ b/lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be @@ -111,7 +111,8 @@ def test_is_math_method_function() # Test mathematical methods var math_methods = ["min", "max", "abs", "round", "sqrt", "scale", "sin", "cos"] for method : math_methods - if !transpiler.is_math_method(method) + var entry = transpiler.symbol_table.get(method) + if entry == nil || entry.type != animation_dsl._symbol_entry.TYPE_MATH_FUNCTION print(f" ❌ {method} should be detected as a math method") return false else @@ -122,7 +123,8 @@ def test_is_math_method_function() # Test non-mathematical methods var non_math_methods = ["pulsating_animation", "solid", "color_cycle", "unknown_method"] for method : non_math_methods - if transpiler.is_math_method(method) + var entry = transpiler.symbol_table.get(method) + if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_MATH_FUNCTION print(f" ❌ {method} should NOT be detected as a math method") return false else diff --git a/lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be b/lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be index f8929eb96..994c2358f 100644 --- a/lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be +++ b/lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be @@ -31,13 +31,13 @@ def test_transpilation_case(dsl_code, expected_user_function, test_name) print(f" Generated code:\n{generated_code}") - # Check that user function is called with self.engine - var expected_call = f"animation.get_user_function('{expected_user_function}')(self.engine" + # Check that user function is called with engine parameter + var expected_call = f"animation.get_user_function('{expected_user_function}')(engine" if string.find(generated_code, expected_call) < 0 print(f" ❌ Expected to find '{expected_call}' in generated code") return false else - print(f" ✅ Found user function call with self.engine: '{expected_call}'") + print(f" ✅ Found user function call with engine: '{expected_call}'") end # Verify the code compiles @@ -87,6 +87,7 @@ def test_user_function_in_computed_parameter() # Test case 1: Simple user function in computed parameter var dsl_code1 = + "import user_functions\n" "set strip_len = strip_length()\n" "animation test = pulsating_animation(color=red, period=2s)\n" "test.opacity = rand_demo()\n" @@ -99,9 +100,10 @@ def test_user_function_in_computed_parameter() # Test case 2: User function with mathematical functions var dsl_code2 = + "import user_functions\n" "set strip_len = strip_length()\n" "animation test = solid(color=red)\n" - "test.brightness = max(100, rand_demo())\n" + "test.opacity = max(100, rand_demo())\n" "run test" var result2 = test_transpilation_case(dsl_code2, "rand_demo", "User function with mathematical functions") @@ -111,9 +113,10 @@ def test_user_function_in_computed_parameter() # Test case 3: User function in arithmetic expressions var dsl_code3 = + "import user_functions\n" "set strip_len = strip_length()\n" "animation test = solid(color=green)\n" - "test.position = abs(rand_demo() - 128) + 64\n" + "test.opacity = abs(rand_demo() - 128) + 64\n" "run test" var result3 = test_transpilation_case(dsl_code3, "rand_demo", "User function in arithmetic expressions") @@ -136,7 +139,8 @@ if test1_result && test2_result print("\n🎉 All tests passed!") print("✅ User functions are correctly detected") print("✅ User functions work correctly in computed parameters") - print("✅ User functions are called with self.engine in closure context") + print("✅ User functions are called with engine in closure context") else print("\n❌ Some tests failed!") + raise "test_failed" end \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/user_functions_test.be b/lib/libesp32/berry_animation/src/tests/user_functions_test.be index 56212781e..efa8e0c1b 100644 --- a/lib/libesp32/berry_animation/src/tests/user_functions_test.be +++ b/lib/libesp32/berry_animation/src/tests/user_functions_test.be @@ -33,7 +33,7 @@ def test_user_function_in_computed_parameters() var dsl_code = "animation random_base = solid(color=blue, priority=10)\n" - "random_base.opacity = user.rand_demo()\n" + "random_base.opacity = rand_demo()\n" "run random_base" try @@ -57,7 +57,7 @@ def test_user_function_with_math() var dsl_code = "animation random_bounded = solid(color=orange, priority=8)\n" - "random_bounded.opacity = max(50, min(255, user.rand_demo() + 100))\n" + "random_bounded.opacity = max(50, min(255, rand_demo() + 100))\n" "run random_bounded" try @@ -83,7 +83,7 @@ def test_user_function_in_arithmetic() var dsl_code = "animation random_variation = solid(color=purple, priority=15)\n" - "random_variation.opacity = abs(user.rand_demo() - 128) + 64\n" + "random_variation.opacity = abs(rand_demo() - 128) + 64\n" "run random_variation" try @@ -109,7 +109,7 @@ def test_complex_user_function_expressions() var dsl_code = "animation random_complex = solid(color=white, priority=20)\n" - "random_complex.opacity = round((user.rand_demo() + 128) / 2 + abs(user.rand_demo() - 100))\n" + "random_complex.opacity = round((rand_demo() + 128) / 2 + abs(rand_demo() - 100))\n" "run random_complex" try @@ -140,8 +140,8 @@ def test_generated_code_validity() var dsl_code = "animation random_multi = solid(color=cyan, priority=12)\n" - "random_multi.opacity = user.rand_demo()\n" - "random_multi.duration = max(100, user.rand_demo())\n" + "random_multi.opacity = rand_demo()\n" + "random_multi.duration = max(100, rand_demo())\n" "run random_multi" try