openscad-cpp-evaluator 0.8.0__tar.gz → 0.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/bytecode.hpp +11 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/bytecode_compiler.cpp +57 -23
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/bytecode_vm.cpp +18 -1
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_bytecode_compiler.cpp +40 -16
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/README.md +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/text/stb_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tools/cli/main.cpp +0 -0
|
@@ -266,6 +266,17 @@ struct CompiledChunk {
|
|
|
266
266
|
const oscad::ASTNode* targetDecl = nullptr;
|
|
267
267
|
int slot = 0;
|
|
268
268
|
std::string name;
|
|
269
|
+
// Set only when this entry is a `let(name = function(...) ...)`
|
|
270
|
+
// closure's own reference to ITSELF (bytecode_compiler.cpp's LetOp
|
|
271
|
+
// case, the letrec-style pre-declared-slot path) -- Op::MakeClosure
|
|
272
|
+
// can't read this one out of `slots` the way it does every other
|
|
273
|
+
// capture: at the moment it runs, the closure it's building hasn't
|
|
274
|
+
// been constructed yet (StoreLocal for `name` hasn't executed), so
|
|
275
|
+
// `slots[slot]` would still hold whatever was there before this
|
|
276
|
+
// call. See Op::MakeClosure's own runtime doc comment
|
|
277
|
+
// (bytecode_vm.cpp) for how this is actually resolved (deferred,
|
|
278
|
+
// then patched in after construction).
|
|
279
|
+
bool isSelfReference = false;
|
|
269
280
|
};
|
|
270
281
|
|
|
271
282
|
// One FunctionLiteral's own capture list for Op::MakeClosure, computed
|
|
@@ -68,25 +68,27 @@ void bubbleEscapingCaptures(const CompiledChunk::ClosureSite& site, const oscad:
|
|
|
68
68
|
// True if any instruction in `chunk`'s own body/defaults is Op::LoadFree --
|
|
69
69
|
// i.e. an identifier that resolved to neither a local, a statically-known
|
|
70
70
|
// enclosing upvalue, nor a dyn ($-prefixed) name at compile time (see
|
|
71
|
-
// compileExpr's own Identifier case).
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
//
|
|
71
|
+
// compileExpr's own Identifier case). The direct `let(a = function(...)
|
|
72
|
+
// ... a(...) ...)` self-reference (reduce()/accumulate()/while()'s own
|
|
73
|
+
// idiom) no longer hits this -- see the LetOp case's own letrec pre-declare,
|
|
74
|
+
// below -- but anything the pre-declare doesn't cover still does: `a`
|
|
75
|
+
// wrapped in a ternary/let/anything other than a bare FunctionLiteral RHS
|
|
76
|
+
// (`let(a = cond ? function(...) ...a(...)... : function(...) ...)`),
|
|
77
|
+
// mutual recursion between two sibling let-bound closures (each references
|
|
78
|
+
// the OTHER, which isn't declared yet when compiling the first), or any
|
|
79
|
+
// other free variable this phase simply can't resolve statically. For any
|
|
80
|
+
// of those, Evaluator::evalIdentifier's own ctx.scope->lookupVariable()
|
|
81
|
+
// fallback re-evaluates the let-binding's RHS FRESH on every single call,
|
|
78
82
|
// producing a new Closure whose capturedLet is THIS invocation's own
|
|
79
83
|
// ctx.let_ (see expr_eval.cpp's FunctionLiteral case) rather than a stable
|
|
80
|
-
// snapshot
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
// fresh-derivation ever re-roots the trail. Excluding a
|
|
86
|
-
// chunk from registration leaves it running
|
|
87
|
-
//
|
|
88
|
-
// scope for now; closing it -- letting `a` resolve as a genuine upvalue of
|
|
89
|
-
// its own declaring LetOp -- is future work, not bundled into this change.
|
|
84
|
+
// snapshot -- registering such a chunk for compiled invocation would still
|
|
85
|
+
// be functionally correct, but each recursive call's own
|
|
86
|
+
// capturedLet->openChild() then nests ONE level deeper than the last
|
|
87
|
+
// (confirmed empirically: an O(n) list reduce() degrading to O(n^2) once
|
|
88
|
+
// compiled, before the letrec pre-declare existed), since nothing about
|
|
89
|
+
// that repeated fresh-derivation ever re-roots the trail. Excluding a
|
|
90
|
+
// LoadFree-containing chunk from registration leaves it running
|
|
91
|
+
// interpreted exactly as before -- correct, if not optimized.
|
|
90
92
|
bool containsLoadFree(const std::vector<Instruction>& code) {
|
|
91
93
|
for (const Instruction& ins : code) {
|
|
92
94
|
if (ins.op == Op::LoadFree) return true;
|
|
@@ -350,10 +352,14 @@ public:
|
|
|
350
352
|
// below), and for a captures-having one only when its own
|
|
351
353
|
// body contains no Op::LoadFree -- see containsLoadFree's
|
|
352
354
|
// own doc comment, above, for why a LoadFree-containing
|
|
353
|
-
// captures-having closure
|
|
354
|
-
//
|
|
355
|
-
//
|
|
356
|
-
//
|
|
355
|
+
// captures-having closure must still be left interpreted:
|
|
356
|
+
// its own capturedLet-chaining, once registered, degrades
|
|
357
|
+
// an O(n) reduction into O(n^2). (The reduce()/
|
|
358
|
+
// accumulate()/while() idiom itself -- a closure directly
|
|
359
|
+
// assigned via `let` that calls itself by name -- no longer
|
|
360
|
+
// hits this: see the LetOp case's own letrec pre-declare,
|
|
361
|
+
// below, which lets that specific self-reference resolve as
|
|
362
|
+
// a real upvalue instead of falling through to LoadFree.)
|
|
357
363
|
// Everything else (Op::LoadUpvalue/Op::MakeClosure inside a
|
|
358
364
|
// REGISTERED captures-having chunk) is no longer assumed to
|
|
359
365
|
// resolve only against a still-live creator frame (see
|
|
@@ -561,12 +567,40 @@ public:
|
|
|
561
567
|
out.push_back({Op::OpenLocalScope, 0, 0, nullptr});
|
|
562
568
|
int slotStart = nextSlot_;
|
|
563
569
|
for (const auto& assign : n.assignments) {
|
|
564
|
-
compileExpr(*assign->expr, out, scope); // RHS is never tail
|
|
565
570
|
const std::string& name = assign->name->name;
|
|
571
|
+
// A DIRECT `name = function(...) ...` RHS -- the
|
|
572
|
+
// reduce()/accumulate()/while() idiom, and count_to()-
|
|
573
|
+
// style helpers generally -- gets its own slot declared
|
|
574
|
+
// BEFORE compiling that RHS (letrec-style), so a
|
|
575
|
+
// self-reference inside the closure's own body resolves
|
|
576
|
+
// as a genuine upvalue (Op::LoadUpvalue) instead of
|
|
577
|
+
// falling through to Op::LoadFree. Every other RHS shape
|
|
578
|
+
// keeps the existing after-the-fact declareLocal below
|
|
579
|
+
// unchanged (`let(x = x + 1)` must still see the OUTER
|
|
580
|
+
// x, not a fresh, not-yet-assigned local shadowing it --
|
|
581
|
+
// only a function-literal RHS has "see myself" as a
|
|
582
|
+
// sensible reading at all). See Op::MakeClosure's own
|
|
583
|
+
// runtime handler (bytecode_vm.cpp) for how the
|
|
584
|
+
// resulting self-capture is actually resolved -- the
|
|
585
|
+
// closure being created doesn't exist yet at the moment
|
|
586
|
+
// its own captures are normally snapshotted, so this
|
|
587
|
+
// one is deferred and patched in after construction
|
|
588
|
+
// instead of read eagerly like every other capture.
|
|
589
|
+
const bool selfBinding = !name.empty() && name[0] != '$' &&
|
|
590
|
+
assign->expr->kind() == oscad::NodeKind::FunctionLiteral;
|
|
591
|
+
int preDeclaredSlot = -1;
|
|
592
|
+
if (selfBinding) preDeclaredSlot = declareLocal(scope, name);
|
|
593
|
+
compileExpr(*assign->expr, out, scope); // RHS is never tail
|
|
594
|
+
if (selfBinding && out.back().op == Op::MakeClosure) {
|
|
595
|
+
CompiledChunk::ClosureSite& site = chunk_.closureSites[static_cast<size_t>(out.back().a)];
|
|
596
|
+
for (auto& cap : site.captures) {
|
|
597
|
+
if (cap.targetDecl == selfDecl_ && cap.slot == preDeclaredSlot) cap.isSelfReference = true;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
566
600
|
if (!name.empty() && name[0] == '$') {
|
|
567
601
|
out.push_back({Op::StoreDyn, internName(name), 0, &assign->position()});
|
|
568
602
|
} else {
|
|
569
|
-
int slot = declareLocal(scope, name);
|
|
603
|
+
int slot = selfBinding ? preDeclaredSlot : declareLocal(scope, name);
|
|
570
604
|
out.push_back({Op::StoreLocal, slot, 0, &assign->position()});
|
|
571
605
|
}
|
|
572
606
|
}
|
|
@@ -173,7 +173,20 @@ Value runChunk(Evaluator& ev, const CompiledChunk& chunk, const std::vector<Inst
|
|
|
173
173
|
// created escaping closure already uses, unchanged.
|
|
174
174
|
const CompiledChunk::ClosureSite& site = chunk.closureSites[static_cast<size_t>(ins.a)];
|
|
175
175
|
auto capturedTrail = TrailView<Value>::makeRoot();
|
|
176
|
+
// A letrec-style self-reference (UpvalueRef::isSelfReference,
|
|
177
|
+
// see its own doc comment) is skipped here, not read -- the
|
|
178
|
+
// closure it names is THIS instruction's own result, which
|
|
179
|
+
// doesn't exist until the shared_ptr below is constructed.
|
|
180
|
+
// Patched in immediately afterward via the exact same
|
|
181
|
+
// capturedTrail (a live, shared TrailView -- mutating it
|
|
182
|
+
// after `closure` wraps it is exactly as visible to that
|
|
183
|
+
// closure's own later invocations as any other entry).
|
|
184
|
+
std::vector<const std::string*> selfNames;
|
|
176
185
|
for (const auto& cap : site.captures) {
|
|
186
|
+
if (cap.isSelfReference) {
|
|
187
|
+
selfNames.push_back(&cap.name);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
177
190
|
if (cap.targetDecl == chunk.selfDecl) {
|
|
178
191
|
capturedTrail->set(cap.name, slots[static_cast<size_t>(cap.slot)]);
|
|
179
192
|
continue;
|
|
@@ -182,7 +195,11 @@ Value runChunk(Evaluator& ev, const CompiledChunk& chunk, const std::vector<Inst
|
|
|
182
195
|
if (!v) v = ctx.let_->find(cap.name);
|
|
183
196
|
capturedTrail->set(cap.name, v ? *v : Value{});
|
|
184
197
|
}
|
|
185
|
-
|
|
198
|
+
auto closure = std::make_shared<const Closure>(Closure{site.node, capturedTrail});
|
|
199
|
+
for (const std::string* selfName : selfNames) {
|
|
200
|
+
capturedTrail->set(*selfName, Value{closure});
|
|
201
|
+
}
|
|
202
|
+
stack.push_back(Value{std::move(closure)});
|
|
186
203
|
++pc;
|
|
187
204
|
break;
|
|
188
205
|
}
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_bytecode_compiler.cpp
RENAMED
|
@@ -608,33 +608,57 @@ TEST(BytecodeCompiler, MultiLevelCurriedClosureInvocationRunsCompiled) {
|
|
|
608
608
|
"ECHO: 42\nECHO: 20");
|
|
609
609
|
}
|
|
610
610
|
|
|
611
|
-
TEST(BytecodeCompiler,
|
|
612
|
-
ScopedVm vm(true);
|
|
613
|
-
// reduce()'s own idiom: `a` calls itself by name
|
|
614
|
-
//
|
|
615
|
-
//
|
|
616
|
-
//
|
|
617
|
-
//
|
|
618
|
-
//
|
|
619
|
-
//
|
|
620
|
-
//
|
|
621
|
-
//
|
|
622
|
-
//
|
|
623
|
-
//
|
|
624
|
-
//
|
|
625
|
-
//
|
|
611
|
+
TEST(BytecodeCompiler, SelfReferentialRecursiveClosureNowResolvesAsUpvalueAndRunsCompiled) {
|
|
612
|
+
ScopedVm vm(true);
|
|
613
|
+
// reduce()'s own idiom: `a` calls itself by name. A direct
|
|
614
|
+
// `let(a = function(...) ... a(...) ...)` RHS gets `a`'s own slot
|
|
615
|
+
// pre-declared BEFORE compiling that RHS (bytecode_compiler.cpp's
|
|
616
|
+
// LetOp case), letrec-style -- so this self-reference now resolves as
|
|
617
|
+
// a genuine upvalue (Op::LoadUpvalue) instead of falling through to
|
|
618
|
+
// Op::LoadFree, and `a`'s own body is eligible for registration
|
|
619
|
+
// (containsLoadFree no longer sees any unresolved reference in it).
|
|
620
|
+
// Op::MakeClosure's own runtime handler defers this ONE capture
|
|
621
|
+
// (the closure being built doesn't exist yet when its own captures
|
|
622
|
+
// are normally snapshotted) and patches it in immediately after
|
|
623
|
+
// constructing the real closure -- see its own doc comment,
|
|
624
|
+
// bytecode_vm.cpp. This is also what fixed a real O(n) -> O(n^2)
|
|
625
|
+
// regression found while building this feature: every recursive call
|
|
626
|
+
// used to re-derive a FRESH closure via Evaluator::evalIdentifier's
|
|
627
|
+
// ctx.scope->lookupVariable() fallback, nesting its own capturedLet
|
|
628
|
+
// one level deeper than the last -- confirmed via the CLI against a
|
|
629
|
+
// 32,000-element list (7+ seconds -> 0.05s once `a` genuinely
|
|
630
|
+
// resolves itself as an upvalue instead).
|
|
631
|
+
//
|
|
632
|
+
// 11 stops, not 30 (confirmed by diffing against the previous,
|
|
633
|
+
// containsLoadFree-excluded behavior with the same script): `reduce`'s
|
|
634
|
+
// own body-entry (1) + `a`'s own 5 recursive calls (1 each, compiled)
|
|
635
|
+
// + `func`'s own 4 calls (1 each, already compiled even before this --
|
|
636
|
+
// zero captures) + the top-level echo() statement's own stop (module
|
|
637
|
+
// code is never compiled).
|
|
626
638
|
const int stops = countDebugHookStops(
|
|
627
639
|
"function reduce(func, list, init=0) = let(l = len(list), a = function (x,i) i<l? "
|
|
628
640
|
"a(func(x,list[i]), i+1) : x) a(init,0);\n"
|
|
629
641
|
"echo(reduce(function(p,q) p+q, [1,2,3,4], 0));",
|
|
630
642
|
std::unordered_map<std::string, std::set<int>>{});
|
|
631
|
-
|
|
643
|
+
EXPECT_EQ(stops, 11);
|
|
632
644
|
EXPECT_EQ(runCapturingEcho("function reduce(func, list, init=0) = let(l = len(list), a = function (x,i) "
|
|
633
645
|
"i<l? a(func(x,list[i]), i+1) : x) a(init,0);\n"
|
|
634
646
|
"echo(reduce(function(p,q) p+q, [1,2,3,4], 0));"),
|
|
635
647
|
"ECHO: 10");
|
|
636
648
|
}
|
|
637
649
|
|
|
650
|
+
TEST(BytecodeCompiler, PlainLetSelfReferenceStillSeesTheOuterBindingNotItself) {
|
|
651
|
+
ScopedVm vm(true);
|
|
652
|
+
// The letrec pre-declare above is gated on the RHS being a DIRECT
|
|
653
|
+
// FunctionLiteral specifically because a non-function `let(x = x + 1)`
|
|
654
|
+
// must keep seeing the OUTER x (real OpenSCAD/letOp shadowing
|
|
655
|
+
// semantics -- each assignment's RHS sees only what preceded it in the
|
|
656
|
+
// same let, never itself), not a fresh, not-yet-assigned local
|
|
657
|
+
// shadowing it. Confirms that ordinary case is untouched by the
|
|
658
|
+
// FunctionLiteral-only pre-declare.
|
|
659
|
+
EXPECT_EQ(runCapturingEcho("x = 100;\nfunction f() = let(x = x + 1) x;\necho(f());"), "ECHO: 101");
|
|
660
|
+
}
|
|
661
|
+
|
|
638
662
|
TEST(BytecodeCompiler, ClosureWithDollarParameterStillBailsContainer) {
|
|
639
663
|
ScopedVm vm(true);
|
|
640
664
|
// Residual, deliberate limitation: a FunctionLiteral with its OWN
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/external/openscad_cpp_parser/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/builtins/primitives_3d.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/src/text/stb_font_provider.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.8.0 → openscad_cpp_evaluator-0.8.1}/tests/test_viewport_params.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|