openscad-cpp-evaluator 0.23.0__tar.gz → 0.24.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.23.0 → openscad_cpp_evaluator-0.24.0}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/mesh_check.hpp +6 -2
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/mesh_check.cpp +18 -4
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_mesh_check.cpp +41 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/README.md +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/text/stb_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/uv.lock +0 -0
|
@@ -34,9 +34,13 @@ struct MeshDiagnosis {
|
|
|
34
34
|
size_t unweldedVertices = 0;
|
|
35
35
|
|
|
36
36
|
bool watertight() const { return boundaryEdges == 0; }
|
|
37
|
+
// Topology only. Zero-area faces are deliberately not part of this: a
|
|
38
|
+
// mesh full of slivers can be a perfectly good closed manifold, and CSG
|
|
39
|
+
// routinely emits them -- a level-4 Menger sponge has 14. They are worth
|
|
40
|
+
// reporting, because some slicers drop them and are then left with real
|
|
41
|
+
// holes, but calling such a mesh "not manifold" is simply wrong.
|
|
37
42
|
bool manifold() const {
|
|
38
|
-
return boundaryEdges == 0 && nonManifoldEdges == 0 && pinchedVertices == 0
|
|
39
|
-
&& degenerateFaces == 0;
|
|
43
|
+
return boundaryEdges == 0 && nonManifoldEdges == 0 && pinchedVertices == 0;
|
|
40
44
|
}
|
|
41
45
|
bool orientable() const { return inconsistentEdges == 0; }
|
|
42
46
|
bool ok() const { return manifold() && orientable(); }
|
|
@@ -29,6 +29,14 @@ void pos(const manifold::MeshGL& m, Vert v, double out[3]) {
|
|
|
29
29
|
for (int i = 0; i < 3; ++i) out[i] = m.vertProperties[v * stride + i];
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
// A face naming the same vertex twice. Its "edges" include a self-edge, so
|
|
33
|
+
// it cannot take part in the topology at all.
|
|
34
|
+
bool repeatsAVertex(const manifold::MeshGL& m, size_t t) {
|
|
35
|
+
Vert v[3];
|
|
36
|
+
triVerts(m, t, v);
|
|
37
|
+
return v[0] == v[1] || v[1] == v[2] || v[0] == v[2];
|
|
38
|
+
}
|
|
39
|
+
|
|
32
40
|
bool degenerate(const manifold::MeshGL& m, size_t t) {
|
|
33
41
|
Vert v[3];
|
|
34
42
|
triVerts(m, t, v);
|
|
@@ -136,10 +144,16 @@ MeshDiagnosis checkMesh(const manifold::MeshGL& mesh) {
|
|
|
136
144
|
std::set<std::array<Vert, 3>> seenFaces;
|
|
137
145
|
|
|
138
146
|
for (size_t t = 0; t < tris; ++t) {
|
|
139
|
-
if (degenerate(mesh, t))
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
147
|
+
if (degenerate(mesh, t)) ++d.degenerateFaces;
|
|
148
|
+
// Counted, but NOT removed from the topology. A zero-area triangle
|
|
149
|
+
// is still a face with three edges, and dropping it leaves those
|
|
150
|
+
// edges with one face each -- which then reads as a hole that is
|
|
151
|
+
// not there. A level-4 Menger sponge is manifold with every face
|
|
152
|
+
// present and reported 722 boundary edges without them.
|
|
153
|
+
//
|
|
154
|
+
// A face naming the same vertex twice is different: its self-edge
|
|
155
|
+
// cannot be matched by anything, so it genuinely has to go.
|
|
156
|
+
if (repeatsAVertex(mesh, t)) continue;
|
|
143
157
|
Vert v[3];
|
|
144
158
|
triVerts(mesh, t, v);
|
|
145
159
|
|
|
@@ -97,6 +97,47 @@ TEST(MeshCheck, DegenerateAndDuplicateFacesAreReportedSeparately) {
|
|
|
97
97
|
EXPECT_EQ(d.duplicateFaces, 1u) << d.summary();
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
// A sliver is still a face. Dropping zero-area triangles before building
|
|
101
|
+
// the edge map leaves their edges with one face each, which reads as a hole
|
|
102
|
+
// that is not there -- a level-4 Menger sponge is manifold with every face
|
|
103
|
+
// present and reported 722 boundary edges without them.
|
|
104
|
+
TEST(MeshCheck, AZeroAreaFaceIsReportedWithoutInventingHoles) {
|
|
105
|
+
// A closed cube whose top face is fanned through Q, a point sitting
|
|
106
|
+
// exactly on the diagonal 4-6. That makes face {4,8,6} zero-area while
|
|
107
|
+
// every edge it owns is still shared with a real neighbour -- which is
|
|
108
|
+
// the shape CSG actually produces. Drop the sliver and edges 4-8, 8-6
|
|
109
|
+
// and 4-6 each lose a face, so three holes appear that were never there.
|
|
110
|
+
manifold::MeshGL m = build(
|
|
111
|
+
{0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0,
|
|
112
|
+
0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1,
|
|
113
|
+
0.5f, 0.5f, 1}, // 8: on the diagonal 4-6
|
|
114
|
+
{
|
|
115
|
+
0, 2, 1, 0, 3, 2, // bottom
|
|
116
|
+
4, 5, 8, 5, 6, 8, 4, 8, 6, // top, fanned; {4,8,6} is the sliver
|
|
117
|
+
4, 6, 7,
|
|
118
|
+
0, 1, 5, 0, 5, 4, // sides
|
|
119
|
+
1, 2, 6, 1, 6, 5,
|
|
120
|
+
2, 3, 7, 2, 7, 6,
|
|
121
|
+
3, 0, 4, 3, 4, 7,
|
|
122
|
+
});
|
|
123
|
+
const MeshDiagnosis d = checkMesh(m);
|
|
124
|
+
EXPECT_EQ(d.degenerateFaces, 1u) << "fixture has no sliver: " << d.summary();
|
|
125
|
+
EXPECT_EQ(d.boundaryEdges, 0u)
|
|
126
|
+
<< "dropping the sliver invented holes: " << d.summary();
|
|
127
|
+
EXPECT_TRUE(d.watertight()) << d.summary();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// A face naming the same vertex twice is different: its self-edge cannot be
|
|
131
|
+
// matched by anything, so it does have to leave the topology.
|
|
132
|
+
TEST(MeshCheck, AFaceWithARepeatedVertexIsExcludedFromTheTopology) {
|
|
133
|
+
manifold::MeshGL m = tetra();
|
|
134
|
+
m.triVerts.insert(m.triVerts.end(), {0u, 1u, 1u});
|
|
135
|
+
const MeshDiagnosis d = checkMesh(m);
|
|
136
|
+
EXPECT_EQ(d.degenerateFaces, 1u) << d.summary();
|
|
137
|
+
EXPECT_EQ(d.boundaryEdges, 0u) << "its self-edge leaked in: " << d.summary();
|
|
138
|
+
EXPECT_TRUE(d.watertight()) << d.summary();
|
|
139
|
+
}
|
|
140
|
+
|
|
100
141
|
TEST(MeshCheck, CoincidentButDistinctVerticesAreReported) {
|
|
101
142
|
manifold::MeshGL m = tetra();
|
|
102
143
|
m.vertProperties.insert(m.vertProperties.end(), {0, 0, 0}); // copy of vertex 0
|
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/.github/workflows/wheels.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/examples/minimal_debugger.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.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.23.0 → openscad_cpp_evaluator-0.24.0}/src/text/stb_font_provider.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.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.23.0 → openscad_cpp_evaluator-0.24.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.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_manifold_cache.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_python_bindings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.23.0 → openscad_cpp_evaluator-0.24.0}/tests/test_viewport_params.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|