openscad-cpp-evaluator 1.37.0__tar.gz → 1.37.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-1.37.0 → openscad_cpp_evaluator-1.37.2}/CLAUDE.md +24 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/CMakeLists.txt +21 -2
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/grammar/lexer.l +21 -1
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_lexical.cpp +27 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_python_bindings.py +18 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/uv.lock +1 -1
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/.gitignore +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/.gitmodules +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/LICENSE +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/README.md +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/cmake/patch_manifold.cmake +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope_table.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/.DS_Store +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_concurrent_parse.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_render_expression.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_strict_commas.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/coverage.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/format_closure.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/utf8.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/resources/fonts/LiberationSans-Bold.ttf +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/resources/fonts/LiberationSans-BoldItalic.ttf +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/resources/fonts/LiberationSans-Italic.ttf +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/dxf_dim.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/coverage.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/format_closure.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/import/scene_import.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/measure_geometry.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/text/font_match.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/text/freetype_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/utf8.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/xkcd_colors.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/xkcd_colors.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_children_separate.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_coverage.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_discretizer.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_feature_detection.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_include_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_render_expr.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_undef_args.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_unexpected_args.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tools/cli/main.cpp +0 -0
|
@@ -507,6 +507,30 @@ Requires the same toolchain as `openscad_cpp_parser`: CMake ≥3.24, a C++20 com
|
|
|
507
507
|
(macOS: `brew install bison`, the submodule's own CMakeLists auto-detects Homebrew's), Flex.
|
|
508
508
|
GoogleTest is fetched automatically via `FetchContent`.
|
|
509
509
|
|
|
510
|
+
### Building offline (Flathub)
|
|
511
|
+
|
|
512
|
+
Every dependency is a `FetchContent` download pinned to a tag, commit or checksummed tarball --
|
|
513
|
+
**keep it that way**: an unpinned `master` makes two builds of one tag differ and rules out a
|
|
514
|
+
build that lists its sources by checksum. A build with no network (Flathub's) hands each one in as
|
|
515
|
+
a source directory and forbids downloading:
|
|
516
|
+
|
|
517
|
+
```bash
|
|
518
|
+
cmake -S . -B build -DFETCHCONTENT_FULLY_DISCONNECTED=ON -DBUILD_TESTING=OFF \
|
|
519
|
+
-DFETCHCONTENT_SOURCE_DIR_MANIFOLD=... -DFETCHCONTENT_SOURCE_DIR_CLIPPER2=... \
|
|
520
|
+
-DFETCHCONTENT_SOURCE_DIR_BOOST_CONFIG=... -DFETCHCONTENT_SOURCE_DIR_BOOST_POLYGON=... \
|
|
521
|
+
-DFETCHCONTENT_SOURCE_DIR_FREETYPE=... -DFETCHCONTENT_SOURCE_DIR_HARFBUZZ=... \
|
|
522
|
+
-DFETCHCONTENT_SOURCE_DIR_STB=... -DFETCHCONTENT_SOURCE_DIR_CPP_LINENOISE=... \
|
|
523
|
+
-DFETCHCONTENT_SOURCE_DIR_NLOHMANN_JSON=...
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
That is the whole list for a wheel build (tests off; GoogleTest is the only other download, and
|
|
527
|
+
TBB only with `MANIFOLD_PAR`). Clipper2 is Manifold's own download, pinned in Manifold's
|
|
528
|
+
`cmake/manifoldDeps.cmake`; nlohmann_json is the parser's. FetchContent skips `PATCH_COMMAND` for a
|
|
529
|
+
supplied source, so the root `CMakeLists.txt` runs `cmake/patch_manifold.cmake` itself when
|
|
530
|
+
`FETCHCONTENT_SOURCE_DIR_MANIFOLD` is set -- otherwise an offline build would quietly ship the heap
|
|
531
|
+
overflow that patch fixes. Verified 2026-10-06: a fully disconnected configure + build produced the
|
|
532
|
+
Python module and CLI, and rendered text (freetype + harfbuzz).
|
|
533
|
+
|
|
510
534
|
Run a single test binary or filter:
|
|
511
535
|
|
|
512
536
|
```bash
|
|
@@ -141,6 +141,16 @@ FetchContent_Declare(
|
|
|
141
141
|
# CsgLeafNode::Compose -- see cmake/patch_manifold.cmake.
|
|
142
142
|
PATCH_COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/patch_manifold.cmake
|
|
143
143
|
)
|
|
144
|
+
# FetchContent runs PATCH_COMMAND only for a source it downloads itself, so
|
|
145
|
+
# a build handed Manifold's source (FETCHCONTENT_SOURCE_DIR_MANIFOLD, as an
|
|
146
|
+
# offline Flatpak build does) would otherwise compile it unpatched. The
|
|
147
|
+
# script is idempotent, so running it here too is safe.
|
|
148
|
+
if(FETCHCONTENT_SOURCE_DIR_MANIFOLD)
|
|
149
|
+
execute_process(
|
|
150
|
+
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/patch_manifold.cmake
|
|
151
|
+
WORKING_DIRECTORY ${FETCHCONTENT_SOURCE_DIR_MANIFOLD}
|
|
152
|
+
COMMAND_ERROR_IS_FATAL ANY)
|
|
153
|
+
endif()
|
|
144
154
|
FetchContent_MakeAvailable(manifold)
|
|
145
155
|
|
|
146
156
|
# Boost.Polygon's Voronoi diagram builder, for roof()'s general (multi-
|
|
@@ -158,7 +168,13 @@ FetchContent_MakeAvailable(boost_config boost_polygon)
|
|
|
158
168
|
# path, not add_subdirectory/MakeAvailable's target machinery. (It used to
|
|
159
169
|
# supply stb_truetype.h for the font backend too; FreeType/HarfBuzz below
|
|
160
170
|
# replaced that.)
|
|
161
|
-
|
|
171
|
+
#
|
|
172
|
+
# Pinned to a commit, as everything here is: stb has no releases, and
|
|
173
|
+
# following master made two builds of the same tag differ, which also rules
|
|
174
|
+
# out an offline (Flathub) build listing its sources by checksum.
|
|
175
|
+
FetchContent_Declare(stb
|
|
176
|
+
URL https://github.com/nothings/stb/archive/2c980bb59875b0d32144a71867fbdebb2f77cd20.tar.gz
|
|
177
|
+
URL_HASH SHA256=9a955b1b49a4410088a2e0ee2a9c057c3c907d0c1d75454144cb980aca0ba515)
|
|
162
178
|
FetchContent_MakeAvailable(stb)
|
|
163
179
|
|
|
164
180
|
# FreeType (glyph outlines + face metrics) and HarfBuzz (shaping), the two
|
|
@@ -221,7 +237,10 @@ FetchContent_MakeAvailable(harfbuzz)
|
|
|
221
237
|
# `CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR`, so FetchContent_
|
|
222
238
|
# MakeAvailable here only exposes its `linenoise` INTERFACE target, matching
|
|
223
239
|
# the existing MANIFOLD_TEST-override pattern's intent for free.
|
|
224
|
-
|
|
240
|
+
# Pinned to a commit for the same reason as stb: no releases.
|
|
241
|
+
FetchContent_Declare(cpp_linenoise
|
|
242
|
+
URL https://github.com/yhirose/cpp-linenoise/archive/b0e8b88f53be0de26252180b1b959c6dd67ec4a9.tar.gz
|
|
243
|
+
URL_HASH SHA256=e3e67ea401a9e6e19c300f025c51faab197b83254c83e6bef8ef452ee184548b)
|
|
225
244
|
FetchContent_MakeAvailable(cpp_linenoise)
|
|
226
245
|
|
|
227
246
|
# Embeds the bundled default font's (resources/fonts/) raw bytes into a
|
|
@@ -72,11 +72,19 @@ const std::unordered_map<std::string, KeywordFactory>& keywordTable() {
|
|
|
72
72
|
%x INCFILE
|
|
73
73
|
|
|
74
74
|
IDENT \$?[_A-Za-z][A-Za-z0-9_]*
|
|
75
|
+
UTF8CH [\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf4][\x80-\xbf]{3}
|
|
75
76
|
NUMLIT 0[xX][0-9A-Fa-f]+|[0-9]+([.][0-9]*)?([eE][+-]?[0-9]+)?|[.][0-9]+([eE][+-]?[0-9]+)?
|
|
76
77
|
|
|
77
78
|
%%
|
|
78
79
|
|
|
79
80
|
[ \t\r\n]+ { /* skip whitespace */ }
|
|
81
|
+
\xc2\xa0|\xef\xbb\xbf|\xa0 {
|
|
82
|
+
// Also whitespace, as in OpenSCAD's lexer.l: U+00A0 NO-BREAK SPACE
|
|
83
|
+
// (C2 A0), which Qt's editor silently turns into a space -- so a file
|
|
84
|
+
// holding one parsed in the editor and failed from the command line --
|
|
85
|
+
// U+FEFF (EF BB BF, a byte-order mark, anywhere in the file) and a bare
|
|
86
|
+
// A0, Latin-1's no-break space.
|
|
87
|
+
}
|
|
80
88
|
"//"[^\n]* { /* skip line comment */ }
|
|
81
89
|
"/*"([^*]|\*+[^*/])*\*+"/" { /* skip block comment */ }
|
|
82
90
|
|
|
@@ -162,9 +170,21 @@ NUMLIT 0[xX][0-9A-Fa-f]+|[0-9]+([.][0-9]*)?([eE][+-]?[0-9]+)?|[.][0-9]+([eE][+-
|
|
|
162
170
|
">" { return yy::parser::make_GTOP(driver.currentTokenLoc()); }
|
|
163
171
|
"#" { return yy::parser::make_HASHOP(driver.currentTokenLoc()); }
|
|
164
172
|
|
|
165
|
-
|
|
173
|
+
{UTF8CH} {
|
|
174
|
+
// A whole character, so the message stays valid UTF-8: quoting just its
|
|
175
|
+
// first byte made a message no consumer could decode.
|
|
166
176
|
driver.reportError(driver.currentTokenLoc(), std::string("unexpected character '") + yytext + "'");
|
|
167
177
|
}
|
|
178
|
+
. {
|
|
179
|
+
// A byte that starts no valid UTF-8 character: named, not quoted.
|
|
180
|
+
std::string shown(yytext);
|
|
181
|
+
const auto byte = static_cast<unsigned char>(yytext[0]);
|
|
182
|
+
if (byte >= 0x80 || byte < 0x20) {
|
|
183
|
+
static const char hex[] = "0123456789ABCDEF";
|
|
184
|
+
shown = std::string("\\x") + hex[byte >> 4] + hex[byte & 0xF];
|
|
185
|
+
}
|
|
186
|
+
driver.reportError(driver.currentTokenLoc(), "unexpected character '" + shown + "'");
|
|
187
|
+
}
|
|
168
188
|
|
|
169
189
|
<<EOF>> { return yy::parser::make_YYEOF(driver.currentTokenLoc()); }
|
|
170
190
|
|
|
@@ -473,3 +473,30 @@ TEST(LexicalStrings, BackslashNewlineStillAdvancesTheLineNumber) {
|
|
|
473
473
|
EXPECT_EQ(ast[0]->position().line, 1);
|
|
474
474
|
EXPECT_EQ(ast[1]->position().line, 3) << "the continuation consumed a line";
|
|
475
475
|
}
|
|
476
|
+
|
|
477
|
+
// As in OpenSCAD's lexer: U+00A0, U+FEFF and a bare Latin-1 A0 are whitespace.
|
|
478
|
+
TEST(LexicalWhitespace, NoBreakSpaceByteOrderMarkAndLatin1A0) {
|
|
479
|
+
for (const char* ws : {"\xc2\xa0", "\xef\xbb\xbf", "\xa0"}) {
|
|
480
|
+
auto ast = parseSrc(std::string(ws) + "a" + ws + "=" + ws + "1;" + ws + "\nb = 2;");
|
|
481
|
+
ASSERT_EQ(ast.size(), 2u);
|
|
482
|
+
EXPECT_EQ(ast[1]->position().line, 2);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// The message quotes a whole character, and names a byte that starts none,
|
|
487
|
+
// so it is always valid UTF-8.
|
|
488
|
+
TEST(LexicalWhitespace, UnexpectedCharacterMessageIsValidUtf8) {
|
|
489
|
+
const std::pair<const char*, const char*> cases[] = {
|
|
490
|
+
{"a = 1 \xc3\xa9;", "unexpected character '\xc3\xa9'"},
|
|
491
|
+
{"a = 1 \xc2;", "unexpected character '\\xC2'"},
|
|
492
|
+
{"a = 1 \xff;", "unexpected character '\\xFF'"},
|
|
493
|
+
};
|
|
494
|
+
for (const auto& [src, want] : cases) {
|
|
495
|
+
try {
|
|
496
|
+
parseSrc(src);
|
|
497
|
+
FAIL() << "expected a parse error for " << src;
|
|
498
|
+
} catch (const ParseError& e) {
|
|
499
|
+
EXPECT_NE(std::string(e.what()).find(want), std::string::npos) << e.what();
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_python_bindings.py
RENAMED
|
@@ -1259,6 +1259,24 @@ def test_a_cancel_signal_stops_a_silent_script_from_another_thread(tmp_path):
|
|
|
1259
1259
|
assert time.perf_counter() - t0 < 5
|
|
1260
1260
|
|
|
1261
1261
|
|
|
1262
|
+
def test_no_break_space_in_code_is_whitespace_and_errors_stay_decodable(tmp_path):
|
|
1263
|
+
"""U+00A0 and U+FEFF in code are whitespace, as in OpenSCAD (BelfrySCAD#679),
|
|
1264
|
+
and a parse error naming a non-ASCII character reaches Python as a
|
|
1265
|
+
readable EvalError -- it was `nanobind::str(): conversion error`, since
|
|
1266
|
+
the message quoted the character's first byte alone."""
|
|
1267
|
+
import pytest
|
|
1268
|
+
from openscad_cpp_evaluator import Evaluator, EvalError
|
|
1269
|
+
|
|
1270
|
+
ok = tmp_path / "nbsp.scad"
|
|
1271
|
+
ok.write_bytes(b"\xef\xbb\xbfcube(1);\xc2\xa0\nsphere(\xc2\xa02);\n")
|
|
1272
|
+
Evaluator(echo_fn=lambda _m: None).evaluate(str(ok), {})
|
|
1273
|
+
|
|
1274
|
+
bad = tmp_path / "bad.scad"
|
|
1275
|
+
bad.write_bytes("cube(1) \u00e9;\n".encode("utf-8"))
|
|
1276
|
+
with pytest.raises(EvalError, match="unexpected character '\u00e9'"):
|
|
1277
|
+
Evaluator(echo_fn=lambda _m: None).evaluate(str(bad), {})
|
|
1278
|
+
|
|
1279
|
+
|
|
1262
1280
|
def main():
|
|
1263
1281
|
"""`python tests/test_python_bindings.py` -- how cibuildwheel runs this
|
|
1264
1282
|
file -- runs the whole file under pytest. It used to loop over the test_
|
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.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
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_bytecode_compiler.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_children_separate.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-1.37.0 → openscad_cpp_evaluator-1.37.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-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_feature_detection.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_include_cache.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_manifold_cache.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.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-1.37.0 → openscad_cpp_evaluator-1.37.2}/tests/test_unexpected_args.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-1.37.0 → openscad_cpp_evaluator-1.37.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
|