openscad-cpp-evaluator 0.51.0__tar.gz → 0.51.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.51.0 → openscad_cpp_evaluator-0.51.1}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/topology.cpp +29 -2
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_booleans.cpp +46 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/README.md +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_render_expression.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/dxf_dim.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/measure_geometry.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/text/font_match.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/text/freetype_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_children_separate.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_feature_detection.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_render_expr.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_unexpected_args.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/uv.lock +0 -0
|
@@ -970,6 +970,19 @@ std::vector<ColoredBody> generateLevelSet(Evaluator& ev, const CSGParams& params
|
|
|
970
970
|
if (i0[a] > n[a] - 2) i0[a] = n[a] - 2;
|
|
971
971
|
t[a] = g[a] - static_cast<double>(i0[a]);
|
|
972
972
|
}
|
|
973
|
+
// Outside the sampled block the answer is "outside", falling away
|
|
974
|
+
// with distance. Clamping instead (which is what the interpolation
|
|
975
|
+
// above does on its own) would smear the boundary values outward and
|
|
976
|
+
// extend the surface rather than close it.
|
|
977
|
+
double outside = 0.0;
|
|
978
|
+
for (int a = 0; a < 3; ++a) {
|
|
979
|
+
const double maxg = static_cast<double>(n[a] - 1);
|
|
980
|
+
const double raw = (pos[a] - origin[a]) / spacing[a];
|
|
981
|
+
if (raw < 0.0) outside = std::max(outside, -raw);
|
|
982
|
+
else if (raw > maxg) outside = std::max(outside, raw - maxg);
|
|
983
|
+
}
|
|
984
|
+
if (outside > 0.0) return invert ? (1.0 + outside) : -(1.0 + outside);
|
|
985
|
+
|
|
973
986
|
double acc = 0.0;
|
|
974
987
|
for (int c = 0; c < 8; ++c) {
|
|
975
988
|
const size_t di = static_cast<size_t>(c & 1), dj = static_cast<size_t>((c >> 1) & 1),
|
|
@@ -980,8 +993,18 @@ std::vector<ColoredBody> generateLevelSet(Evaluator& ev, const CSGParams& params
|
|
|
980
993
|
return bandDistance(acc, isoLo, isoHi, invert);
|
|
981
994
|
};
|
|
982
995
|
|
|
983
|
-
|
|
984
|
-
|
|
996
|
+
// Manifold closes the mesh where the surface meets the edge of the box it
|
|
997
|
+
// is given, and that closure follows the sample lattice -- a visible
|
|
998
|
+
// staircase on anything that reaches the boundary, which a gyroid does
|
|
999
|
+
// everywhere. So sample a PADDED box, let the ragged closure happen out
|
|
1000
|
+
// there, and cut back to the box actually asked for. The cut is then a
|
|
1001
|
+
// clean plane.
|
|
1002
|
+
//
|
|
1003
|
+
// Exactly the fix already applied to the 2D path (clipToBounds); it was
|
|
1004
|
+
// not applied here at the time because the 2D error was the one measured.
|
|
1005
|
+
const double pad = 2.0 * edge;
|
|
1006
|
+
manifold::Box bounds(manifold::vec3(origin[0] - pad, origin[1] - pad, origin[2] - pad),
|
|
1007
|
+
manifold::vec3((*hi)[0] + pad, (*hi)[1] + pad, (*hi)[2] + pad));
|
|
985
1008
|
// tolerance -1: a positive value makes Manifold do EXTRA evaluations per
|
|
986
1009
|
// output vertex to snap nearer the true surface. Against a fixed grid
|
|
987
1010
|
// those only re-interpolate data already used -- cost, no information.
|
|
@@ -996,6 +1019,10 @@ std::vector<ColoredBody> generateLevelSet(Evaluator& ev, const CSGParams& params
|
|
|
996
1019
|
: manifold::Manifold::LevelSet(sampleGrid, bounds, edge, 0.0, -1.0, /*canParallel=*/true);
|
|
997
1020
|
|
|
998
1021
|
if (solid.IsEmpty()) return {};
|
|
1022
|
+
solid = solid ^ manifold::Manifold::Cube(
|
|
1023
|
+
manifold::vec3((*hi)[0] - origin[0], (*hi)[1] - origin[1], (*hi)[2] - origin[2]))
|
|
1024
|
+
.Translate(manifold::vec3(origin[0], origin[1], origin[2]));
|
|
1025
|
+
if (solid.IsEmpty()) return {};
|
|
999
1026
|
ColoredBody b;
|
|
1000
1027
|
b.body = std::move(solid);
|
|
1001
1028
|
std::vector<ColoredBody> out;
|
|
@@ -1143,3 +1143,49 @@ TEST(LevelSet2d, A3dArrayWithA2dBoundsWarns) {
|
|
|
1143
1143
|
EXPECT_FALSE(levelsetWarnings("levelset([[[1,2],[3,4]],[[5,6],[7,8]]], bounds=[[0,0],[1,1]]);")
|
|
1144
1144
|
.empty());
|
|
1145
1145
|
}
|
|
1146
|
+
|
|
1147
|
+
TEST(LevelSet, ASurfaceMeetingTheBoxIsCutCleanly) {
|
|
1148
|
+
// Manifold closes the mesh where the surface reaches the edge of the box
|
|
1149
|
+
// it is given, and that closure follows the SAMPLE LATTICE -- a visible
|
|
1150
|
+
// staircase on anything that touches the boundary. A gyroid touches it
|
|
1151
|
+
// everywhere, which is how this was found: the shape looked ragged next
|
|
1152
|
+
// to BOSL2's isosurface() of the same field.
|
|
1153
|
+
//
|
|
1154
|
+
// Sampling a padded box and cutting back makes the cut a plane. The
|
|
1155
|
+
// numeric form of that: a half-space is EXACTLY half the box, at every
|
|
1156
|
+
// resolution. Before the fix it was resolution-dependent.
|
|
1157
|
+
//
|
|
1158
|
+
// The 2D path had this fixed already (clipToBounds); 3D did not, because
|
|
1159
|
+
// 2D was the case that got measured at the time.
|
|
1160
|
+
for (const char* edge : {"2", "1", "0.5"}) {
|
|
1161
|
+
Evaluated e = evalSrc(std::string("levelset(function(x,y,z) x, "
|
|
1162
|
+
"bounds=[[-20,-20,-20],[20,20,20]], "
|
|
1163
|
+
"isovalue=[-1e18,0], edge=") +
|
|
1164
|
+
edge + ");");
|
|
1165
|
+
ASSERT_EQ(e.bodies.size(), 1u) << "edge=" << edge;
|
|
1166
|
+
EXPECT_NEAR(soleBody(e).Volume(), 32000.0, 1e-6) << "edge=" << edge;
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
TEST(LevelSet, PaddingDoesNotDisturbAShapeInsideTheBox) {
|
|
1171
|
+
// The padding is sampled outside the requested bounds, so a shape that
|
|
1172
|
+
// never reaches the boundary must come out exactly as before.
|
|
1173
|
+
Evaluated e = evalSrc(sphereFieldSrc(50, 30) +
|
|
1174
|
+
"levelset(f, bounds=[[-30,-30,-30],[30,30,30]], isovalue=20);");
|
|
1175
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
1176
|
+
const double analytic = 4.0 / 3.0 * 3.14159265358979 * 8000;
|
|
1177
|
+
EXPECT_NEAR(soleBody(e).Volume(), analytic, 0.01 * analytic);
|
|
1178
|
+
EXPECT_EQ(soleBody(e).Genus(), 0);
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
TEST(LevelSet, AGridFieldIsAlsoCutCleanlyAtTheBox) {
|
|
1182
|
+
// The grid intake cannot sample beyond its data, so the sampler reads
|
|
1183
|
+
// "outside" past the block rather than clamping and smearing the edge
|
|
1184
|
+
// values outward. Same clean cut as the function form.
|
|
1185
|
+
Evaluated e = evalSrc(
|
|
1186
|
+
"N = 41;\nfunction co(t) = -20 + 40*t/(N-1);\n"
|
|
1187
|
+
"f = [for (i=[0:N-1]) [for (j=[0:N-1]) [for (k=[0:N-1]) co(i) ]]];\n"
|
|
1188
|
+
"levelset(f, bounds=[[-20,-20,-20],[20,20,20]], isovalue=[-1e18,0]);");
|
|
1189
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
1190
|
+
EXPECT_NEAR(soleBody(e).Volume(), 32000.0, 40.0); // one sample layer of slack
|
|
1191
|
+
}
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/.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.51.0 → openscad_cpp_evaluator-0.51.1}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/src/text/freetype_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.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_bytecode_compiler.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_children_separate.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/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.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_feature_detection.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_manifold_cache.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/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
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.1}/tests/test_unexpected_args.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.51.0 → openscad_cpp_evaluator-0.51.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
|
|
File without changes
|