openscad-cpp-evaluator 0.4.4__tar.gz → 0.4.5__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.4.4 → openscad_cpp_evaluator-0.4.5}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/scope_trail.hpp +50 -2
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/CMakeLists.txt +1 -0
- openscad_cpp_evaluator-0.4.5/tests/test_scope_trail.cpp +79 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/README.md +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/text/stb_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tools/cli/main.cpp +0 -0
|
@@ -55,7 +55,25 @@ public:
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
void set(const std::string& name, T value, int level) {
|
|
58
|
-
stacks_[name]
|
|
58
|
+
std::vector<Entry>& vec = stacks_[name];
|
|
59
|
+
// A rebind of the SAME name at the level that's already current
|
|
60
|
+
// (a for-loop variable set every iteration without opening a new
|
|
61
|
+
// level each time, e.g. C-style for's init/incr -- see
|
|
62
|
+
// expr_eval.cpp's ListCompCFor case) overwrites the existing
|
|
63
|
+
// top-of-stack entry in place instead of pushing another one: a
|
|
64
|
+
// 999,999-iteration loop used to accumulate 999,999 Entry objects
|
|
65
|
+
// (and 999,999 duplicate name copies in dirty_[level]) that were
|
|
66
|
+
// never read again, all held until the level closed and popLevel()
|
|
67
|
+
// walked and popped every one of them in a single O(N) sweep.
|
|
68
|
+
// Nothing ever reads a stale same-level entry once a newer one at
|
|
69
|
+
// that same level exists (a level is one scope instantiation,
|
|
70
|
+
// never reopened), so this is a pure win, not just a memory
|
|
71
|
+
// optimization: it also collapses that O(N) unwind to O(1).
|
|
72
|
+
if (!vec.empty() && vec.back().level == level) {
|
|
73
|
+
vec.back().value = std::move(value);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
vec.push_back(Entry{std::move(value), level});
|
|
59
77
|
dirty_[level].push_back(name);
|
|
60
78
|
}
|
|
61
79
|
|
|
@@ -117,6 +135,17 @@ public:
|
|
|
117
135
|
|
|
118
136
|
bool has(const std::string& name, int myLevel) const { return lookup(name, myLevel) != nullptr; }
|
|
119
137
|
|
|
138
|
+
// Test-only introspection: how many physical Entry objects exist for
|
|
139
|
+
// `name` (across every level, not just the current one) -- lets
|
|
140
|
+
// ScopeTrailStorageTest assert the same-level-overwrite optimization
|
|
141
|
+
// actually bounds growth (a for-loop variable set N times at one level
|
|
142
|
+
// should hold ~1 entry, not N), not just that lookup() still returns
|
|
143
|
+
// the right value either way.
|
|
144
|
+
size_t debugEntryCountForTesting(const std::string& name) const {
|
|
145
|
+
auto it = stacks_.find(name);
|
|
146
|
+
return it == stacks_.end() ? 0 : it->second.size();
|
|
147
|
+
}
|
|
148
|
+
|
|
120
149
|
// Ancestry-filtered snapshot -- O(total distinct names ever bound so
|
|
121
150
|
// far in the whole evaluation), not O(names visible now). Only used
|
|
122
151
|
// by debug-REPL/children()-splice enumeration (never a hot path); see
|
|
@@ -258,7 +287,20 @@ public:
|
|
|
258
287
|
void set(const std::string& name, T value, int level) {
|
|
259
288
|
int id = intern_->idFor(name);
|
|
260
289
|
ensureSize(id);
|
|
261
|
-
stacks_[static_cast<size_t>(id)]
|
|
290
|
+
std::vector<Entry>& vec = stacks_[static_cast<size_t>(id)];
|
|
291
|
+
// Same same-level-overwrite optimization as ScopeTrailStorage::set()
|
|
292
|
+
// -- see that one's doc comment for the full rationale. Applies
|
|
293
|
+
// here too: e.g. `$fn = 1; $fn = 2;` as sibling top-level
|
|
294
|
+
// statements share one level (evalChildren's per-statement
|
|
295
|
+
// EvalContext only swaps `scope`, aliasing the same trail/level --
|
|
296
|
+
// see EvalContext::withScope's own doc comment), so repeated
|
|
297
|
+
// same-block reassignment of a $-variable used to accumulate
|
|
298
|
+
// entries here exactly like a for-loop's plain variable did.
|
|
299
|
+
if (!vec.empty() && vec.back().level == level) {
|
|
300
|
+
vec.back().value = std::move(value);
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
vec.push_back(Entry{std::move(value), level});
|
|
262
304
|
dirty_[level].push_back(id);
|
|
263
305
|
}
|
|
264
306
|
|
|
@@ -299,6 +341,12 @@ public:
|
|
|
299
341
|
|
|
300
342
|
bool has(const std::string& name, int myLevel) const { return lookup(name, myLevel) != nullptr; }
|
|
301
343
|
|
|
344
|
+
// See ScopeTrailStorage::debugEntryCountForTesting's own doc comment.
|
|
345
|
+
size_t debugEntryCountForTesting(const std::string& name) const {
|
|
346
|
+
int id = intern_->idFor(name);
|
|
347
|
+
return id >= 0 && static_cast<size_t>(id) < stacks_.size() ? stacks_[static_cast<size_t>(id)].size() : 0;
|
|
348
|
+
}
|
|
349
|
+
|
|
302
350
|
std::vector<std::pair<std::string, T>> items(int myLevel) const {
|
|
303
351
|
std::vector<std::pair<std::string, T>> result;
|
|
304
352
|
for (size_t id = 0; id < stacks_.size(); ++id) {
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#include "openscad_cpp_evaluator/scope_trail.hpp"
|
|
2
|
+
|
|
3
|
+
#include <gtest/gtest.h>
|
|
4
|
+
|
|
5
|
+
namespace oscadeval {
|
|
6
|
+
namespace {
|
|
7
|
+
|
|
8
|
+
TEST(ScopeTrailStorage, SetAtSameLevelOverwritesLatestValue) {
|
|
9
|
+
ScopeTrailStorage<int> storage;
|
|
10
|
+
const int level = storage.openLevel(0);
|
|
11
|
+
storage.set("i", 1, level);
|
|
12
|
+
storage.set("i", 2, level);
|
|
13
|
+
storage.set("i", 3, level);
|
|
14
|
+
ASSERT_NE(storage.lookup("i", level), nullptr);
|
|
15
|
+
EXPECT_EQ(*storage.lookup("i", level), 3);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
TEST(ScopeTrailStorage, SetAtSameLevelDoesNotAccumulateEntries) {
|
|
19
|
+
// The actual optimization this session added: repeated set() calls at
|
|
20
|
+
// the SAME level (a for-loop variable rebound every iteration without
|
|
21
|
+
// opening a new level, or sibling same-block statements reassigning
|
|
22
|
+
// the same name) must overwrite in place, not grow the underlying
|
|
23
|
+
// stack -- verified via the test-only accessor, since correctness
|
|
24
|
+
// alone (SetAtSameLevelOverwritesLatestValue above) can't distinguish
|
|
25
|
+
// "overwrote in place" from "pushed and lookup() happens to find the
|
|
26
|
+
// newest one anyway."
|
|
27
|
+
ScopeTrailStorage<int> storage;
|
|
28
|
+
const int level = storage.openLevel(0);
|
|
29
|
+
for (int i = 0; i < 1000; ++i) storage.set("i", i, level);
|
|
30
|
+
EXPECT_EQ(storage.debugEntryCountForTesting("i"), 1u);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
TEST(ScopeTrailStorage, SetAtANewLevelStillPushes) {
|
|
34
|
+
// The optimization must not collapse GENUINE nested bindings -- a
|
|
35
|
+
// child level's own set() for the same name is a real new binding
|
|
36
|
+
// (must be poppable back to the parent's value), not a same-level
|
|
37
|
+
// rebind.
|
|
38
|
+
ScopeTrailStorage<int> storage;
|
|
39
|
+
const int parentLevel = storage.openLevel(0);
|
|
40
|
+
storage.set("x", 1, parentLevel);
|
|
41
|
+
const int childLevel = storage.openLevel(parentLevel);
|
|
42
|
+
storage.set("x", 2, childLevel);
|
|
43
|
+
EXPECT_EQ(storage.debugEntryCountForTesting("x"), 2u);
|
|
44
|
+
ASSERT_NE(storage.lookup("x", childLevel), nullptr);
|
|
45
|
+
EXPECT_EQ(*storage.lookup("x", childLevel), 2);
|
|
46
|
+
storage.popLevel(childLevel);
|
|
47
|
+
ASSERT_NE(storage.lookup("x", parentLevel), nullptr);
|
|
48
|
+
EXPECT_EQ(*storage.lookup("x", parentLevel), 1);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
TEST(ScopeTrailStorage, PopLevelAfterManySameLevelSetsRestoresParentValue) {
|
|
52
|
+
// The end-to-end correctness case a for-loop actually exercises: many
|
|
53
|
+
// same-level rebinds of the loop variable, then the level closes
|
|
54
|
+
// (loop exits) -- the parent's own binding for that name (if any) must
|
|
55
|
+
// resurface untouched, and the now-closed level's value must not leak.
|
|
56
|
+
ScopeTrailStorage<int> storage;
|
|
57
|
+
const int parentLevel = storage.openLevel(0);
|
|
58
|
+
storage.set("i", -1, parentLevel);
|
|
59
|
+
const int loopLevel = storage.openLevel(parentLevel);
|
|
60
|
+
for (int i = 0; i < 999; ++i) storage.set("i", i, loopLevel);
|
|
61
|
+
ASSERT_NE(storage.lookup("i", loopLevel), nullptr);
|
|
62
|
+
EXPECT_EQ(*storage.lookup("i", loopLevel), 998);
|
|
63
|
+
storage.popLevel(loopLevel);
|
|
64
|
+
ASSERT_NE(storage.lookup("i", parentLevel), nullptr);
|
|
65
|
+
EXPECT_EQ(*storage.lookup("i", parentLevel), -1);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
TEST(IndexedScopeTrailStorage, SetAtSameLevelDoesNotAccumulateEntries) {
|
|
69
|
+
auto intern = std::make_shared<DynNameIntern>();
|
|
70
|
+
IndexedScopeTrailStorage<int> storage(intern);
|
|
71
|
+
const int level = storage.openLevel(0);
|
|
72
|
+
for (int i = 0; i < 1000; ++i) storage.set("$fn", i, level);
|
|
73
|
+
EXPECT_EQ(storage.debugEntryCountForTesting("$fn"), 1u);
|
|
74
|
+
ASSERT_NE(storage.lookup("$fn", level), nullptr);
|
|
75
|
+
EXPECT_EQ(*storage.lookup("$fn", level), 999);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
} // namespace
|
|
79
|
+
} // namespace oscadeval
|
|
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.4.4 → openscad_cpp_evaluator-0.4.5}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/external/openscad_cpp_parser/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/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.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/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
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/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
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_bytecode_compiler.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
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/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
|
{openscad_cpp_evaluator-0.4.4 → openscad_cpp_evaluator-0.4.5}/tests/test_viewport_params.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|