openscad-cpp-evaluator 0.28.0__tar.gz → 0.28.2__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.28.0 → openscad_cpp_evaluator-0.28.2}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/evaluator.hpp +5 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/csg_resolve.cpp +40 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_booleans.cpp +43 -8
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_python_bindings.py +9 -6
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/README.md +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/text/stb_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/uv.lock +0 -0
|
@@ -330,6 +330,11 @@ public:
|
|
|
330
330
|
// free function, same reasoning as tagGenerated()/builtinChildren().
|
|
331
331
|
void warn(const std::string& message, const oscad::Position* position);
|
|
332
332
|
|
|
333
|
+
// Apply `!`: replace the whole tree with the first show_only
|
|
334
|
+
// subtree, discarding its ancestors and every sibling. See its
|
|
335
|
+
// definition for why this cannot be done by tagging bodies.
|
|
336
|
+
void rerootAtShowOnly(std::vector<std::unique_ptr<CSGNode>>& tree);
|
|
337
|
+
|
|
333
338
|
// parent_module(idx) support: walks the live module-call stack
|
|
334
339
|
// (innermost last) and returns the name `idx` levels up from the
|
|
335
340
|
// current module, or undef if out of range. Public because
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#include <functional>
|
|
1
2
|
#include "openscad_cpp_evaluator/dispatch.hpp"
|
|
2
3
|
#include "openscad_cpp_evaluator/evaluator.hpp"
|
|
3
4
|
|
|
@@ -255,6 +256,7 @@ std::vector<ColoredBody> Evaluator::evaluateImpl(const NodeList& nodes, EvalCont
|
|
|
255
256
|
using Clock = std::chrono::steady_clock;
|
|
256
257
|
const Clock::time_point resolveStart = profiling_ ? Clock::now() : Clock::time_point{};
|
|
257
258
|
std::vector<std::unique_ptr<CSGNode>> tree = resolveTreeImpl(nodes, ctx);
|
|
259
|
+
rerootAtShowOnly(tree);
|
|
258
260
|
const Clock::time_point resolveEnd = profiling_ ? Clock::now() : Clock::time_point{};
|
|
259
261
|
std::vector<ColoredBody> result = generateTree(tree);
|
|
260
262
|
const Clock::time_point generateEnd = profiling_ ? Clock::now() : Clock::time_point{};
|
|
@@ -289,6 +291,44 @@ std::vector<ColoredBody> Evaluator::evaluateImpl(const NodeList& nodes, EvalCont
|
|
|
289
291
|
return result;
|
|
290
292
|
}
|
|
291
293
|
|
|
294
|
+
|
|
295
|
+
// `!` does not merely tag what it marks -- it makes that subtree the whole
|
|
296
|
+
// model. Everything else goes: siblings, and every operation wrapped around
|
|
297
|
+
// it. `translate([50,0,0]) !cube(5);` puts a cube at the origin, and
|
|
298
|
+
// `linear_extrude(height=10) !circle(10);` leaves a 2D circle rather than a
|
|
299
|
+
// cylinder, because the extrude is an ancestor and ancestors are discarded.
|
|
300
|
+
//
|
|
301
|
+
// Tagging the bodies and filtering them at the end -- which is what this
|
|
302
|
+
// did before -- cannot express that: by the time a body carries the tag,
|
|
303
|
+
// every ancestor has already been applied to it.
|
|
304
|
+
void Evaluator::rerootAtShowOnly(std::vector<std::unique_ptr<CSGNode>>& tree) {
|
|
305
|
+
std::vector<std::unique_ptr<CSGNode>*> found;
|
|
306
|
+
// Pre-order, so `found.front()` is the first one in the source.
|
|
307
|
+
std::function<void(std::vector<std::unique_ptr<CSGNode>>&)> walk =
|
|
308
|
+
[&](std::vector<std::unique_ptr<CSGNode>>& nodes) {
|
|
309
|
+
for (std::unique_ptr<CSGNode>& n : nodes) {
|
|
310
|
+
if (!n) continue;
|
|
311
|
+
if (n->kind == "show_only") found.push_back(&n);
|
|
312
|
+
walk(n->children);
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
walk(tree);
|
|
316
|
+
if (found.empty()) return;
|
|
317
|
+
|
|
318
|
+
if (found.size() > 1) {
|
|
319
|
+
// Same rule as the reference: warn, and take the first.
|
|
320
|
+
const CSGNode& second = **found[1];
|
|
321
|
+
warn("More than one Root Modifier (!)",
|
|
322
|
+
second.node ? &second.node->position() : nullptr);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Moved out before the rest of the tree is dropped -- its owner is
|
|
326
|
+
// somewhere inside what is about to be destroyed.
|
|
327
|
+
std::unique_ptr<CSGNode> chosen = std::move(*found.front());
|
|
328
|
+
tree.clear();
|
|
329
|
+
tree.push_back(std::move(chosen));
|
|
330
|
+
}
|
|
331
|
+
|
|
292
332
|
std::vector<ColoredBody> Evaluator::evaluate(const std::vector<std::unique_ptr<oscad::ASTNode>>& nodes, EvalContext& ctx,
|
|
293
333
|
const std::unordered_map<std::string, Value>& viewportParams) {
|
|
294
334
|
return evaluateImpl(nodes, ctx, viewportParams);
|
|
@@ -177,15 +177,50 @@ TEST(Modifiers, BackgroundIsExcludedFromBooleanMergeButStillReturned) {
|
|
|
177
177
|
EXPECT_TRUE(hasBackground);
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
TEST(Modifiers,
|
|
180
|
+
TEST(Modifiers, TopLevelShowOnlyLeavesNothingButItsOwnSubtree) {
|
|
181
181
|
Evaluated e = evaluateSrc("!cube(1); cube(2); #cube(3);");
|
|
182
|
-
//
|
|
183
|
-
//
|
|
184
|
-
//
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
182
|
+
// `!` makes its subtree the whole model, so both siblings go -- the
|
|
183
|
+
// highlighted one included. This test previously expected cube(3) to
|
|
184
|
+
// survive on the strength of its role; the reference implementation
|
|
185
|
+
// renders only cube(1) here (checked against 2021.01).
|
|
186
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
187
|
+
EXPECT_EQ(e.bodies[0].role, BodyRole::ShowOnly);
|
|
188
|
+
EXPECT_NEAR(e.bodies[0].body->Volume(), 1.0, 1e-9);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// The reason a body-role filter could not do this: by the time a body is
|
|
192
|
+
// tagged, every operation wrapped around it has already been applied.
|
|
193
|
+
TEST(Modifiers, ShowOnlyDiscardsTheOperationsWrappedAroundIt) {
|
|
194
|
+
Evaluated moved = evaluateSrc("translate([50,0,0]) !cube(5);");
|
|
195
|
+
ASSERT_EQ(moved.bodies.size(), 1u);
|
|
196
|
+
const manifold::Box box = moved.bodies[0].body->BoundingBox();
|
|
197
|
+
EXPECT_NEAR(box.min.x, 0.0, 1e-9) << "the translate is an ancestor, so it does not apply";
|
|
198
|
+
EXPECT_NEAR(box.max.x, 5.0, 1e-9);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// The case that prompted this: an extrude is an ancestor like any other,
|
|
202
|
+
// so what is left is the 2D circle rather than the cylinder.
|
|
203
|
+
TEST(Modifiers, ShowOnlyInsideAnExtrudeLeavesTheProfile) {
|
|
204
|
+
Evaluated e = evaluateSrc("linear_extrude(height=10) !circle(10);");
|
|
205
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
206
|
+
// What survives is 2D: a section, not a solid. Extruding it is what
|
|
207
|
+
// the discarded ancestor would have done.
|
|
208
|
+
ASSERT_TRUE(e.bodies[0].section.has_value()) << "extruded into a solid";
|
|
209
|
+
const manifold::Rect bounds = e.bodies[0].section->Bounds();
|
|
210
|
+
EXPECT_NEAR(bounds.max.x, 10.0, 0.1);
|
|
211
|
+
EXPECT_NEAR(bounds.min.x, -10.0, 0.1);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
TEST(Modifiers, MoreThanOneShowOnlyTakesTheFirstAndWarns) {
|
|
215
|
+
std::vector<std::string> echoed;
|
|
216
|
+
Evaluated e = evaluateSrc("translate([50,0,0]) !cube(5);\n!sphere(3);",
|
|
217
|
+
[&echoed](const std::string& m) { echoed.push_back(m); });
|
|
218
|
+
ASSERT_EQ(e.bodies.size(), 1u);
|
|
219
|
+
const manifold::Box box = e.bodies[0].body->BoundingBox();
|
|
220
|
+
EXPECT_NEAR(box.max.x, 5.0, 1e-9) << "the cube, not the sphere";
|
|
221
|
+
EXPECT_TRUE(std::any_of(echoed.begin(), echoed.end(), [](const std::string& m) {
|
|
222
|
+
return m.find("More than one Root Modifier") != std::string::npos;
|
|
223
|
+
})) << "no warning in: " << (echoed.empty() ? "(nothing)" : echoed.front());
|
|
189
224
|
}
|
|
190
225
|
|
|
191
226
|
TEST(Modifiers, NoShowOnlyMeansAllRolesPassThrough) {
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_python_bindings.py
RENAMED
|
@@ -223,13 +223,16 @@ def test_role_defaults_to_normal_and_reflects_modifiers():
|
|
|
223
223
|
# Found in the same pass as tri_colors: bodyToDict() never exposed
|
|
224
224
|
# ColoredBody.role either, crashing the renderer on any real render
|
|
225
225
|
# (it reads cb.role for every body, not just modified ones).
|
|
226
|
+
# Without a `!` anywhere, every role passes through.
|
|
227
|
+
path = _write("cube(1);\n#sphere(1);\n%cylinder(h=1,r=1);\n")
|
|
228
|
+
bodies, _ = Evaluator().evaluate(path)
|
|
229
|
+
assert sorted(b.role for b in bodies) == ["background", "highlight", "normal"]
|
|
230
|
+
|
|
231
|
+
# With one, its subtree IS the model: the siblings go, highlighted ones
|
|
232
|
+
# included (see rerootAtShowOnly in csg_resolve.cpp).
|
|
226
233
|
path = _write("cube(1);\n#sphere(1);\n%cylinder(h=1,r=1);\n!cube(2);\n")
|
|
227
|
-
|
|
228
|
-
bodies
|
|
229
|
-
roles = sorted(b.role for b in bodies)
|
|
230
|
-
# show_only (!) present anywhere -> only show_only + highlight bodies
|
|
231
|
-
# survive evaluate()'s own filter (see anyShowOnly in csg_resolve.cpp).
|
|
232
|
-
assert roles == ["highlight", "show_only"]
|
|
234
|
+
bodies, _ = Evaluator().evaluate(path)
|
|
235
|
+
assert [b.role for b in bodies] == ["show_only"]
|
|
233
236
|
|
|
234
237
|
|
|
235
238
|
# -- parse_ast: AST snapshot ---------------------------------------------
|
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/.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.28.0 → openscad_cpp_evaluator-0.28.2}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/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.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/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.28.0 → openscad_cpp_evaluator-0.28.2}/src/text/stb_font_provider.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/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.28.0 → openscad_cpp_evaluator-0.28.2}/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.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_manifold_cache.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.28.0 → openscad_cpp_evaluator-0.28.2}/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
|