openscad-cpp-evaluator 0.26.1__tar.gz → 0.27.0__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.26.1 → openscad_cpp_evaluator-0.27.0}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/evaluator.hpp +4 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/csg_generate.cpp +32 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_manifold_cache.cpp +51 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/README.md +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/text/stb_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/uv.lock +0 -0
|
@@ -223,6 +223,10 @@ public:
|
|
|
223
223
|
// evaluate()/resolveTree()+generateTree() complete. Mirrors the
|
|
224
224
|
// reference's Evaluator.id_to_node/id_to_color (also plain public
|
|
225
225
|
// attributes there).
|
|
226
|
+
// Give cached bodies fresh originalIDs so a second call site reusing
|
|
227
|
+
// them is not confused with the first. See its definition.
|
|
228
|
+
void restampCachedIds(std::vector<ColoredBody>& bodies);
|
|
229
|
+
|
|
226
230
|
std::unordered_map<uint32_t, const oscad::ASTNode*> idToNode;
|
|
227
231
|
std::unordered_map<uint32_t, std::optional<std::array<float, 4>>> idToColor;
|
|
228
232
|
|
|
@@ -48,6 +48,7 @@ std::vector<ColoredBody> Evaluator::generateTreeImpl(const std::vector<CSGNode*>
|
|
|
48
48
|
std::optional<std::vector<ColoredBody>> cached = key ? manifoldCache_->get(*key) : std::nullopt;
|
|
49
49
|
if (cached) {
|
|
50
50
|
node.bodies = std::move(*cached);
|
|
51
|
+
restampCachedIds(node.bodies);
|
|
51
52
|
} else {
|
|
52
53
|
// Recurse into children first (bottom-up) -- populates each
|
|
53
54
|
// child's own .bodies in place so flattenCsgTree/a GenerateFn
|
|
@@ -104,6 +105,37 @@ std::vector<ColoredBody> Evaluator::generatePartialTree() {
|
|
|
104
105
|
return generateTreeImpl(flat);
|
|
105
106
|
}
|
|
106
107
|
|
|
108
|
+
void Evaluator::restampCachedIds(std::vector<ColoredBody>& bodies) {
|
|
109
|
+
// A cache hit hands back the geometry AND the originalIDs of whichever
|
|
110
|
+
// call site first produced it. Those IDs are provenance -- "which node
|
|
111
|
+
// made this" -- not content, so two identical shapes at two call sites
|
|
112
|
+
// came back sharing one identity and selecting either picked both.
|
|
113
|
+
//
|
|
114
|
+
// Each distinct run gets a fresh ID, one per run rather than one per
|
|
115
|
+
// body, so a cached subtree made of several parts stays selectable
|
|
116
|
+
// part by part. Each new ID inherits the old one's node and color, so
|
|
117
|
+
// the parts keep pointing at the AST nodes that really produced them.
|
|
118
|
+
for (ColoredBody& cb : bodies) {
|
|
119
|
+
if (!cb.body || cb.body->IsEmpty()) continue;
|
|
120
|
+
manifold::MeshGL mesh = cb.body->GetMeshGL();
|
|
121
|
+
if (mesh.runOriginalID.empty()) continue;
|
|
122
|
+
std::unordered_map<uint32_t, uint32_t> remap;
|
|
123
|
+
for (uint32_t& id : mesh.runOriginalID) {
|
|
124
|
+
auto found = remap.find(id);
|
|
125
|
+
if (found == remap.end()) {
|
|
126
|
+
const uint32_t fresh = manifold::Manifold::ReserveIDs(1);
|
|
127
|
+
auto node = idToNode.find(id);
|
|
128
|
+
if (node != idToNode.end()) idToNode[fresh] = node->second;
|
|
129
|
+
auto color = idToColor.find(id);
|
|
130
|
+
if (color != idToColor.end()) idToColor[fresh] = color->second;
|
|
131
|
+
found = remap.emplace(id, fresh).first;
|
|
132
|
+
}
|
|
133
|
+
id = found->second;
|
|
134
|
+
}
|
|
135
|
+
cb.body = manifold::Manifold(mesh);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
107
139
|
ColoredBody Evaluator::tagGenerated(manifold::Manifold body, const oscad::ASTNode& node, const Value& colorValue) {
|
|
108
140
|
manifold::MeshGL mesh = body.GetMeshGL();
|
|
109
141
|
std::optional<std::array<float, 4>> color = valueToColor(colorValue);
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_manifold_cache.cpp
RENAMED
|
@@ -5,7 +5,10 @@
|
|
|
5
5
|
#include "test_helpers.hpp"
|
|
6
6
|
|
|
7
7
|
#include <gtest/gtest.h>
|
|
8
|
+
#include <algorithm>
|
|
9
|
+
#include <iterator>
|
|
8
10
|
#include <numbers>
|
|
11
|
+
#include <set>
|
|
9
12
|
|
|
10
13
|
using namespace oscadeval;
|
|
11
14
|
using namespace oscadeval::test;
|
|
@@ -156,6 +159,54 @@ TEST(ManifoldCache, UncacheableNodeAlwaysRegeneratesNeverHitsOrPopulatesCache) {
|
|
|
156
159
|
EXPECT_FALSE(second.ev.idToNode.empty());
|
|
157
160
|
}
|
|
158
161
|
|
|
162
|
+
// A cache hit must not hand back the originalIDs of whichever call site
|
|
163
|
+
// first produced the geometry. Those IDs are provenance, and sharing them
|
|
164
|
+
// made two identical shapes one thing to a UI: selecting either picked
|
|
165
|
+
// both. Common in CAD, where arrays of identical parts are the norm.
|
|
166
|
+
TEST(ManifoldCache, IdenticalShapesAtDifferentCallSitesGetDistinctOriginalIds) {
|
|
167
|
+
auto cache = std::make_shared<ManifoldCache>();
|
|
168
|
+
Evaluated e = evalSrcWithCache(
|
|
169
|
+
"translate([0,0,0]) cylinder(h=20,r=4,$fn=32);\n"
|
|
170
|
+
"translate([25,0,0]) cylinder(h=20,r=4,$fn=32);\n", cache);
|
|
171
|
+
ASSERT_EQ(e.bodies.size(), 2u);
|
|
172
|
+
|
|
173
|
+
// Held in locals: GetMeshGL() returns by value, so taking begin() and
|
|
174
|
+
// end() from two separate calls walks between unrelated buffers.
|
|
175
|
+
const manifold::MeshGL meshA = e.bodies[0].body->GetMeshGL();
|
|
176
|
+
const manifold::MeshGL meshB = e.bodies[1].body->GetMeshGL();
|
|
177
|
+
const std::set<uint32_t> first(meshA.runOriginalID.begin(), meshA.runOriginalID.end());
|
|
178
|
+
const std::set<uint32_t> second(meshB.runOriginalID.begin(), meshB.runOriginalID.end());
|
|
179
|
+
ASSERT_FALSE(first.empty());
|
|
180
|
+
ASSERT_FALSE(second.empty());
|
|
181
|
+
std::vector<uint32_t> shared;
|
|
182
|
+
std::set_intersection(first.begin(), first.end(), second.begin(), second.end(),
|
|
183
|
+
std::back_inserter(shared));
|
|
184
|
+
EXPECT_TRUE(shared.empty()) << "the two cylinders share an originalID";
|
|
185
|
+
|
|
186
|
+
// Both still resolve to a node, so re-stamping does not lose the
|
|
187
|
+
// mapping selection needs.
|
|
188
|
+
for (uint32_t id : first) EXPECT_EQ(e.ev.idToNode.count(id), 1u);
|
|
189
|
+
for (uint32_t id : second) EXPECT_EQ(e.ev.idToNode.count(id), 1u);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Re-stamping is per run, not per body, so a cached subtree made of
|
|
193
|
+
// several parts stays selectable part by part rather than collapsing into
|
|
194
|
+
// one -- which is what Manifold's own AsOriginal() would have done.
|
|
195
|
+
TEST(ManifoldCache, ACachedMultiPartSubtreeKeepsOneIdPerPart) {
|
|
196
|
+
auto cache = std::make_shared<ManifoldCache>();
|
|
197
|
+
Evaluated e = evalSrcWithCache(
|
|
198
|
+
"module pair() { cube(2); translate([5,0,0]) sphere(1,$fn=8); }\n"
|
|
199
|
+
"pair();\n"
|
|
200
|
+
"translate([0,20,0]) pair();\n", cache);
|
|
201
|
+
ASSERT_EQ(e.bodies.size(), 4u);
|
|
202
|
+
std::set<uint32_t> all;
|
|
203
|
+
for (const ColoredBody& b : e.bodies) {
|
|
204
|
+
const manifold::MeshGL mesh = b.body->GetMeshGL();
|
|
205
|
+
for (uint32_t id : mesh.runOriginalID) all.insert(id);
|
|
206
|
+
}
|
|
207
|
+
EXPECT_EQ(all.size(), 4u) << "parts of the reused subtree share IDs";
|
|
208
|
+
}
|
|
209
|
+
|
|
159
210
|
TEST(ManifoldCache, OutputIsIdenticalCacheOnVsCacheOffAcrossBuiltinCategories) {
|
|
160
211
|
const std::vector<std::string> scripts = {
|
|
161
212
|
"cube(3);",
|
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/.github/workflows/wheels.yml
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.26.1 → openscad_cpp_evaluator-0.27.0}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/examples/minimal_debugger.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
|
|
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.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/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.26.1 → openscad_cpp_evaluator-0.27.0}/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
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_bytecode_compiler.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_dxf_svg_import.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_python_bindings.py
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
|
{openscad_cpp_evaluator-0.26.1 → openscad_cpp_evaluator-0.27.0}/tests/test_viewport_params.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|