openscad-cpp-evaluator 0.34.0__tar.gz → 0.35.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.34.0 → openscad_cpp_evaluator-0.35.0}/CLAUDE.md +14 -1
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/builtins.hpp +5 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/registry.cpp +3 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/topology.cpp +62 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_booleans.cpp +79 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/uv.lock +1 -1
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/README.md +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/dxf_dim.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/text/font_match.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/text/freetype_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_unexpected_args.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tools/cli/main.cpp +0 -0
|
@@ -591,7 +591,7 @@ grep for `ponytail:`.
|
|
|
591
591
|
All 25 module/shape combinations were diffed against OpenSCAD 2026.02.01 warning for warning, with
|
|
592
592
|
the surviving geometry compared by STL volume.
|
|
593
593
|
|
|
594
|
-
- `src/builtins/topology.cpp` — `hull()`/`minkowski()`/`fill()`. All
|
|
594
|
+
- `src/builtins/topology.cpp` — `hull()`/`minkowski()`/`minkowski_difference()`/`fill()`. All four splice their children transparently in
|
|
595
595
|
the CSG tree exactly like union/difference/intersection (resolve just evaluates them for the
|
|
596
596
|
side effect); `hull()` picks an all-3D (`Manifold::Hull`) or all-2D (`CrossSection::Hull`) hull of
|
|
597
597
|
the *foreground* (role-split) children, falling back to sections only when no child has a body;
|
|
@@ -604,6 +604,19 @@ grep for `ponytail:`.
|
|
|
604
604
|
which matters because two outers can overlap once the holes between them are gone. Ported from
|
|
605
605
|
the reference's `applyFill2D`, and checked shape-for-shape against OpenSCAD 2026.02.01 by
|
|
606
606
|
extruding and comparing STL volumes.
|
|
607
|
+
|
|
608
|
+
`minkowski_difference()` is erosion, and a deliberate BelfrySCAD extension: OpenSCAD has no such
|
|
609
|
+
module and no way to spell the operation in the language, since `minkowski()` only ever sums.
|
|
610
|
+
Reads the same way — first child is the body, every child after it is a tool eroded away in turn
|
|
611
|
+
(`Manifold::MinkowskiDifference`). 3D only, matching `minkowski()`'s own 3D-wins dispatch, since
|
|
612
|
+
Manifold has no CrossSection erosion and 2D already has one in `offset(r=-N)`.
|
|
613
|
+
|
|
614
|
+
Worth knowing why this is a module rather than an extension of `offset()`: a *positive* 3D offset
|
|
615
|
+
is already expressible as `minkowski() { X; sphere(r); }`, so `offset(r=N)` on a solid would have
|
|
616
|
+
been pure sugar. Erosion is the half that is genuinely unavailable, and naming it after the
|
|
617
|
+
operation beats borrowing a 2D name for it. Eroding a cube by a cube is exact (no curved tool to
|
|
618
|
+
tessellate), which is what the tests assert on; a sphere tool lands a little large, and that gap
|
|
619
|
+
is the sphere's tessellation rather than an error in the erosion.
|
|
607
620
|
- `src/builtins/extrude.cpp` — `linear_extrude()`/`rotate_extrude()`/`projection(cut=)`. All three
|
|
608
621
|
union every 2D child into one `CrossSection` via `toCrossSection` first. `rotate_extrude`'s
|
|
609
622
|
segment count can't be resolved until generate time (it depends on the merged children's bounds,
|
|
@@ -165,6 +165,11 @@ std::vector<ColoredBody> generateHull(Evaluator& ev, const CSGParams& params,
|
|
|
165
165
|
Value builtinDxfDim(Evaluator& ev, const CallArgs& args, const oscad::ASTNode& node);
|
|
166
166
|
Value builtinDxfCross(Evaluator& ev, const CallArgs& args, const oscad::ASTNode& node);
|
|
167
167
|
|
|
168
|
+
CSGParams resolveMinkowskiDifference(Evaluator& ev, const oscad::ModularCall& node, EvalContext& ctx);
|
|
169
|
+
std::vector<ColoredBody> generateMinkowskiDifference(Evaluator& ev, const CSGParams& params,
|
|
170
|
+
const std::vector<std::unique_ptr<CSGNode>>& children,
|
|
171
|
+
const oscad::ASTNode& node);
|
|
172
|
+
|
|
168
173
|
CSGParams resolveFill(Evaluator& ev, const oscad::ModularCall& node, EvalContext& ctx);
|
|
169
174
|
std::vector<ColoredBody> generateFill(Evaluator& ev, const CSGParams& params,
|
|
170
175
|
const std::vector<std::unique_ptr<CSGNode>>& children,
|
|
@@ -35,6 +35,7 @@ const std::unordered_map<std::string_view, ResolveFn>& resolveDispatch() {
|
|
|
35
35
|
{"projection", &resolveProjection},
|
|
36
36
|
{"roof", &resolveRoof},
|
|
37
37
|
{"fill", &resolveFill},
|
|
38
|
+
{"minkowski_difference", &resolveMinkowskiDifference},
|
|
38
39
|
{"offset", &resolveOffset},
|
|
39
40
|
{"surface", &resolveSurface},
|
|
40
41
|
{"text", &resolveText},
|
|
@@ -74,6 +75,7 @@ const std::unordered_map<std::string_view, GenerateFn>& generateDispatch() {
|
|
|
74
75
|
{"projection", &generateProjection},
|
|
75
76
|
{"roof", &generateRoof},
|
|
76
77
|
{"fill", &generateFill},
|
|
78
|
+
{"minkowski_difference", &generateMinkowskiDifference},
|
|
77
79
|
{"offset", &generateOffset},
|
|
78
80
|
{"surface", &generateSurface},
|
|
79
81
|
{"text", &generateText},
|
|
@@ -119,6 +121,7 @@ const std::vector<std::string>* builtinParamNames(const std::string& name) {
|
|
|
119
121
|
{"projection", {"cut", "convexity"}},
|
|
120
122
|
{"roof", {"method", "convexity"}},
|
|
121
123
|
{"fill", {}},
|
|
124
|
+
{"minkowski_difference", {}},
|
|
122
125
|
{"offset", {"r", "delta", "chamfer"}},
|
|
123
126
|
{"surface", {"file", "center", "convexity", "invert"}},
|
|
124
127
|
{"text", {"text", "size", "font", "direction", "language", "script", "halign", "valign", "spacing"}},
|
|
@@ -313,4 +313,66 @@ std::vector<ColoredBody> generateMinkowski(Evaluator& ev, const CSGParams&, cons
|
|
|
313
313
|
return out;
|
|
314
314
|
}
|
|
315
315
|
|
|
316
|
+
// minkowski_difference() -- erosion, the operation `minkowski()` has no
|
|
317
|
+
// inverse for. A BelfrySCAD extension: OpenSCAD has no equivalent module and
|
|
318
|
+
// no way to express it in the language, since minkowski() only ever sums.
|
|
319
|
+
// Shrinking a part by a clearance, or hollowing one to a wall thickness,
|
|
320
|
+
// otherwise needs hand-built difference() scaffolding that is not the same
|
|
321
|
+
// operation.
|
|
322
|
+
//
|
|
323
|
+
// Reads like minkowski(): the first child is the body being eroded, and
|
|
324
|
+
// every child after it is a tool eroded away from it in turn. 3D only, same
|
|
325
|
+
// as minkowski()'s own 3D path -- Manifold has no CrossSection erosion, and
|
|
326
|
+
// 2D already has one in offset(r=-N).
|
|
327
|
+
|
|
328
|
+
CSGParams resolveMinkowskiDifference(Evaluator& ev, const oscad::ModularCall& node, EvalContext& ctx) {
|
|
329
|
+
auto [args, effCtx] = resolveCallArgs(ev, node.arguments, ctx);
|
|
330
|
+
(void)args;
|
|
331
|
+
ev.evalChildren(node.children, effCtx);
|
|
332
|
+
return CSGParams{};
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
std::vector<ColoredBody> generateMinkowskiDifference(Evaluator& ev, const CSGParams&,
|
|
336
|
+
const std::vector<std::unique_ptr<CSGNode>>& children,
|
|
337
|
+
const oscad::ASTNode& node) {
|
|
338
|
+
const std::vector<ColoredBody> bodies = flattenCsgTree(children);
|
|
339
|
+
const RoleSplit split = splitByRole(bodies);
|
|
340
|
+
|
|
341
|
+
std::vector<const ColoredBody*> bodies3d;
|
|
342
|
+
for (const ColoredBody& c : split.foreground) {
|
|
343
|
+
if (c.body) bodies3d.push_back(&c);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
std::vector<ColoredBody> passthrough;
|
|
347
|
+
passthrough.insert(passthrough.end(), split.background.begin(), split.background.end());
|
|
348
|
+
passthrough.insert(passthrough.end(), split.highlight.begin(), split.highlight.end());
|
|
349
|
+
passthrough.insert(passthrough.end(), split.showOnly.begin(), split.showOnly.end());
|
|
350
|
+
passthrough.insert(passthrough.end(), split.displayOnly.begin(), split.displayOnly.end());
|
|
351
|
+
|
|
352
|
+
if (bodies3d.empty()) return passthrough;
|
|
353
|
+
if (bodies3d.size() == 1) {
|
|
354
|
+
// Nothing to erode with, so nothing happens -- the same no-op
|
|
355
|
+
// minkowski() gives for a single child.
|
|
356
|
+
std::vector<ColoredBody> result = {*bodies3d.front()};
|
|
357
|
+
result.insert(result.end(), passthrough.begin(), passthrough.end());
|
|
358
|
+
return result;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
manifold::Manifold result = *bodies3d.front()->body;
|
|
362
|
+
for (size_t i = 1; i < bodies3d.size(); ++i) result = result.MinkowskiDifference(*bodies3d[i]->body);
|
|
363
|
+
if (result.Status() != manifold::Manifold::Error::NoError) {
|
|
364
|
+
ev.warn("minkowski_difference: result is not manifold", &node.position());
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
ColoredBody cb;
|
|
368
|
+
cb.body = std::move(result);
|
|
369
|
+
cb.color = bodies3d.front()->color;
|
|
370
|
+
// Per-triangle colour cannot survive an erosion: the surface it was
|
|
371
|
+
// indexed against is gone.
|
|
372
|
+
cb.triColors.reset();
|
|
373
|
+
std::vector<ColoredBody> out = {std::move(cb)};
|
|
374
|
+
out.insert(out.end(), passthrough.begin(), passthrough.end());
|
|
375
|
+
return out;
|
|
376
|
+
}
|
|
377
|
+
|
|
316
378
|
} // namespace oscadeval
|
|
@@ -620,3 +620,82 @@ TEST(MixedDimensions, UniformChildrenAreUntouched) {
|
|
|
620
620
|
ASSERT_EQ(e.bodies.size(), 1u);
|
|
621
621
|
EXPECT_NEAR(e.bodies[0].body->Volume(), 2.0, 1e-9);
|
|
622
622
|
}
|
|
623
|
+
|
|
624
|
+
// -- minkowski_difference() -----------------------------------------------
|
|
625
|
+
//
|
|
626
|
+
// Erosion: the operation minkowski() has no inverse for. A BelfrySCAD
|
|
627
|
+
// extension, because OpenSCAD has no equivalent module and no way to spell
|
|
628
|
+
// it in the language -- minkowski() only ever sums.
|
|
629
|
+
//
|
|
630
|
+
// Eroding a cube by a cube is exact (no curved tool to tessellate), so those
|
|
631
|
+
// expectations are equalities rather than tolerances.
|
|
632
|
+
|
|
633
|
+
TEST(MinkowskiDifference, ErodesACubeExactly) {
|
|
634
|
+
// A 10-cube eroded by a 2-cube is an 8-cube: every face moves in by the
|
|
635
|
+
// tool's half-width.
|
|
636
|
+
Evaluated e = evalSrc("minkowski_difference() { cube(10, center=true); cube(2, center=true); }");
|
|
637
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
638
|
+
ASSERT_TRUE(e.bodies[0].body.has_value());
|
|
639
|
+
EXPECT_NEAR(e.bodies[0].body->Volume(), 512.0, 1e-6);
|
|
640
|
+
const manifold::Box bb = e.bodies[0].body->BoundingBox();
|
|
641
|
+
EXPECT_NEAR(bb.min.x, -4.0, 1e-9);
|
|
642
|
+
EXPECT_NEAR(bb.max.x, 4.0, 1e-9);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
TEST(MinkowskiDifference, ErodesByASphereToWithinTessellation) {
|
|
646
|
+
// Same 8-cube, but the tool is a polyhedral sphere whose inradius is a
|
|
647
|
+
// touch under 1, so the result is a touch larger. That gap IS the
|
|
648
|
+
// tessellation and shrinks with $fn -- it is not an error in the erosion.
|
|
649
|
+
Evaluated e = evalSrc("minkowski_difference() { cube(10, center=true); sphere(1, $fn=64); }");
|
|
650
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
651
|
+
ASSERT_TRUE(e.bodies[0].body.has_value());
|
|
652
|
+
EXPECT_NEAR(e.bodies[0].body->Volume(), 512.0, 1.0);
|
|
653
|
+
EXPECT_GT(e.bodies[0].body->Volume(), 512.0);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
TEST(MinkowskiDifference, ShrinksANonConvexBodyOnEverySide) {
|
|
657
|
+
// The case that motivates the module: a plate with holes, shrunk by a
|
|
658
|
+
// clearance. The bounding box must come in by the tool's radius all
|
|
659
|
+
// round -- 20x20x4 becomes 18x18x2.
|
|
660
|
+
Evaluated e = evalSrc(
|
|
661
|
+
"minkowski_difference() {"
|
|
662
|
+
" difference() { cube([20,20,4], center=true);"
|
|
663
|
+
" for (x=[-6,0,6]) translate([x,0,0]) cylinder(h=6,r=2.5,center=true,$fn=24); }"
|
|
664
|
+
" sphere(1, $fn=24); }");
|
|
665
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
666
|
+
ASSERT_TRUE(e.bodies[0].body.has_value());
|
|
667
|
+
const manifold::Box bb = e.bodies[0].body->BoundingBox();
|
|
668
|
+
EXPECT_NEAR(bb.max.x, 9.0, 0.05);
|
|
669
|
+
EXPECT_NEAR(bb.max.y, 9.0, 0.05);
|
|
670
|
+
EXPECT_NEAR(bb.max.z, 1.0, 0.05);
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
TEST(MinkowskiDifference, SingleChildIsANoOp) {
|
|
674
|
+
// Nothing to erode with, so nothing happens -- the same shape
|
|
675
|
+
// minkowski() gives a lone child back.
|
|
676
|
+
Evaluated e = evalSrc("minkowski_difference() { cube(10, center=true); }");
|
|
677
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
678
|
+
ASSERT_TRUE(e.bodies[0].body.has_value());
|
|
679
|
+
EXPECT_NEAR(e.bodies[0].body->Volume(), 1000.0, 1e-9);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
TEST(MinkowskiDifference, NoChildrenIsEmpty) {
|
|
683
|
+
Evaluated e = evalSrc("minkowski_difference();");
|
|
684
|
+
EXPECT_TRUE(e.bodies.empty());
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
TEST(MinkowskiDifference, ErodesSuccessivelyByEveryToolAfterTheFirst) {
|
|
688
|
+
// Two 2-cube tools take 1 off each side twice: 10 -> 8 -> 6.
|
|
689
|
+
Evaluated e = evalSrc(
|
|
690
|
+
"minkowski_difference() { cube(10, center=true); cube(2, center=true); cube(2, center=true); }");
|
|
691
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
692
|
+
ASSERT_TRUE(e.bodies[0].body.has_value());
|
|
693
|
+
EXPECT_NEAR(e.bodies[0].body->Volume(), 216.0, 1e-6);
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
TEST(MinkowskiDifference, TwoDeeChildrenAreIgnoredLikeMinkowskis) {
|
|
697
|
+
// 3D only, matching minkowski()'s own 3D-wins dispatch. 2D erosion
|
|
698
|
+
// already exists as offset(r=-N).
|
|
699
|
+
Evaluated e = evalSrc("minkowski_difference() { square(10); square(2); }");
|
|
700
|
+
EXPECT_TRUE(e.bodies.empty());
|
|
701
|
+
}
|
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.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
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.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
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.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.34.0 → openscad_cpp_evaluator-0.35.0}/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.34.0 → openscad_cpp_evaluator-0.35.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.34.0 → openscad_cpp_evaluator-0.35.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.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_manifold_cache.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.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
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.0}/tests/test_unexpected_args.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.34.0 → openscad_cpp_evaluator-0.35.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
|