openscad-cpp-evaluator 0.13.2__tar.gz → 0.13.3__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.13.2 → openscad_cpp_evaluator-0.13.3}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/evaluator.hpp +37 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/user_calls.cpp +12 -1
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_bytecode_compiler.cpp +39 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/README.md +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/text/stb_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tools/cli/main.cpp +0 -0
|
@@ -1218,6 +1218,12 @@ public:
|
|
|
1218
1218
|
// and callStack_.back() is already gone by the time it runs. See
|
|
1219
1219
|
// activeDeclRefcount_'s own doc comment.
|
|
1220
1220
|
const oscad::ASTNode* declNode = nullptr;
|
|
1221
|
+
// True only when THIS call incremented nativeUserCallDepth_ (i.e.
|
|
1222
|
+
// skipDepthGuard was false) -- exitUserCall* needs it to decrement
|
|
1223
|
+
// symmetrically, for the same "callStack_.back() is already gone"
|
|
1224
|
+
// reason as `kind`/`declNode` above. See nativeUserCallDepth_'s
|
|
1225
|
+
// own doc comment for why this can't just be "always decrement".
|
|
1226
|
+
bool countedTowardNativeDepth = false;
|
|
1221
1227
|
};
|
|
1222
1228
|
// `skipDepthGuard`: kMaxUserCallDepth=50 exists purely to keep the
|
|
1223
1229
|
// NATIVE C++ stack from overflowing (see its own doc comment) -- true
|
|
@@ -1427,6 +1433,37 @@ private:
|
|
|
1427
1433
|
// eval_error.hpp).
|
|
1428
1434
|
std::vector<CallStackFrame> callStack_;
|
|
1429
1435
|
|
|
1436
|
+
// Count of callStack_ entries that ACTUALLY cost native C++ stack --
|
|
1437
|
+
// i.e. pushed with skipDepthGuard=false (enterUserCall's own
|
|
1438
|
+
// interpreted-call sites: evalUserFunctionCore, evalUserModule).
|
|
1439
|
+
// Deliberately NOT the same number as callStack_.size(): a compiled-
|
|
1440
|
+
// to-compiled push (pushBracketedCallFrame/pushBracketedModuleFrame,
|
|
1441
|
+
// bytecode_vm.cpp, skipDepthGuard=true) still grows callStack_ (for
|
|
1442
|
+
// TRACE/closure-detection/$parent_modules bookkeeping) but costs ZERO
|
|
1443
|
+
// native stack, serviced by driveVm's own heap-based loop instead.
|
|
1444
|
+
//
|
|
1445
|
+
// Checking callStack_.size() itself against kMaxUserCallDepth (the
|
|
1446
|
+
// ORIGINAL design) conflates these two: a real BOSL2 script's own
|
|
1447
|
+
// AMBIENT callStack_ depth, inflated by many cheap skip=true compiled
|
|
1448
|
+
// module-call pushes sitting on callStack_ already, could push a
|
|
1449
|
+
// LATER genuinely-native-recursive call (e.g. an interpreted-path
|
|
1450
|
+
// function call like BOSL2's own `ident()`) over the threshold even
|
|
1451
|
+
// though the REAL native C++ nesting at that point was nowhere near
|
|
1452
|
+
// it -- caught for real: Anklet.scad's own ambient callStack_ depth
|
|
1453
|
+
// (mostly cheap Op::CallModule pushes) reached the mid-30s, tripping
|
|
1454
|
+
// kMaxUserCallDepth=30 for an `ident()` call that itself was nested
|
|
1455
|
+
// only a couple of GENUINE native frames deep. Exactly the same class
|
|
1456
|
+
// of "fixed-count guard conflates logical depth with native-stack
|
|
1457
|
+
// cost" bug driveVmNativeDepth_ already exists to avoid for the
|
|
1458
|
+
// OTHER guard site (bytecode_vm.cpp) -- this is that same fix,
|
|
1459
|
+
// applied here. Incremented/decremented symmetrically by
|
|
1460
|
+
// enterUserCall/exitUserCallSuccess/exitUserCallException, gated on
|
|
1461
|
+
// UserCallHandle::countedTowardNativeDepth (skipDepthGuard is only
|
|
1462
|
+
// available at enter time; the handle carries the decision forward
|
|
1463
|
+
// to exit time, since callStack_.back() -- and thus skipDepthGuard's
|
|
1464
|
+
// own original context -- is already gone by then).
|
|
1465
|
+
size_t nativeUserCallDepth_ = 0;
|
|
1466
|
+
|
|
1430
1467
|
// Running count of Module-kind frames currently on callStack_ --
|
|
1431
1468
|
// maintained incrementally by enterUserCall/exitUserCall* rather than
|
|
1432
1469
|
// rescanned from callStack_ on every module call (buildModuleChildCtx's
|
|
@@ -682,13 +682,22 @@ Evaluator::UserCallHandle Evaluator::enterUserCall(const std::string& name, cons
|
|
|
682
682
|
// entirely; for what's left, the margin check is the proven-UNSAFE
|
|
683
683
|
// mechanism on Windows (confirmed via real CI), this fixed count the
|
|
684
684
|
// proven-safe one.
|
|
685
|
-
|
|
685
|
+
//
|
|
686
|
+
// Checked against nativeUserCallDepth_, NOT callStack_.size() -- see
|
|
687
|
+
// that field's own doc comment (evaluator.hpp) for why: callStack_
|
|
688
|
+
// also grows from cheap, zero-native-cost skipDepthGuard=true pushes,
|
|
689
|
+
// which must not count toward this native-stack-safety ceiling.
|
|
690
|
+
if (!skipDepthGuard && nativeUserCallDepth_ >= kMaxUserCallDepth) {
|
|
686
691
|
error("Recursion too deep while calling " + std::string(isModule ? "module" : "function") + " '" + name + "'",
|
|
687
692
|
declNode);
|
|
688
693
|
}
|
|
689
694
|
UserCallHandle h;
|
|
690
695
|
h.kind = kind;
|
|
691
696
|
h.declNode = &declNode;
|
|
697
|
+
if (!skipDepthGuard) {
|
|
698
|
+
++nativeUserCallDepth_;
|
|
699
|
+
h.countedTowardNativeDepth = true;
|
|
700
|
+
}
|
|
692
701
|
h.prof = profileEnter(isModule ? "module" : "function", name, callPos, &declNode.position());
|
|
693
702
|
callStack_.push_back(CallStackFrame{kind, name, callPos, &declNode.position(), &declNode, nullptr, upvalueParent});
|
|
694
703
|
callStack_.back().bodyCtx = &childCtx; // per-frame locals for the debugger
|
|
@@ -710,6 +719,7 @@ void Evaluator::exitUserCallSuccess(const std::string& name, const UserCallHandl
|
|
|
710
719
|
if (fireReturnHook && debugHooks_.returnHook) debugHooks_.returnHook(name, result, static_cast<int>(callStack_.size()));
|
|
711
720
|
callStack_.pop_back();
|
|
712
721
|
if (handle.kind == CallStackFrame::Kind::Module) --moduleCallDepth_;
|
|
722
|
+
if (handle.countedTowardNativeDepth) --nativeUserCallDepth_;
|
|
713
723
|
noteActiveDeclExit(handle.declNode);
|
|
714
724
|
if (handle.prof) profileExit(*handle.prof);
|
|
715
725
|
}
|
|
@@ -717,6 +727,7 @@ void Evaluator::exitUserCallSuccess(const std::string& name, const UserCallHandl
|
|
|
717
727
|
void Evaluator::exitUserCallException(const UserCallHandle& handle) {
|
|
718
728
|
callStack_.pop_back();
|
|
719
729
|
if (handle.kind == CallStackFrame::Kind::Module) --moduleCallDepth_;
|
|
730
|
+
if (handle.countedTowardNativeDepth) --nativeUserCallDepth_;
|
|
720
731
|
noteActiveDeclExit(handle.declNode);
|
|
721
732
|
if (handle.prof) profileExit(*handle.prof);
|
|
722
733
|
}
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_bytecode_compiler.cpp
RENAMED
|
@@ -1390,6 +1390,45 @@ TEST(ModuleBodyCompiles, UnionWrappedRecursionStillHitsTheNativeReentryGuardCont
|
|
|
1390
1390
|
}
|
|
1391
1391
|
}
|
|
1392
1392
|
|
|
1393
|
+
// Regression test for a real bug this same investigation caught:
|
|
1394
|
+
// enterUserCall's own depth guard used to check callStack_.size()
|
|
1395
|
+
// directly -- but callStack_ also grows from cheap, zero-native-cost
|
|
1396
|
+
// COMPILED module-call pushes (skipDepthGuard=true), which must not
|
|
1397
|
+
// count toward the native-stack-safety ceiling a LATER genuinely
|
|
1398
|
+
// interpreted call (skipDepthGuard=false) is guarded by. Caught for
|
|
1399
|
+
// real: a live BOSL2 script's own ambient callStack_ depth (mostly
|
|
1400
|
+
// compiled Op::CallModule pushes) reached the mid-30s, tripping
|
|
1401
|
+
// kMaxUserCallDepth=30 for a plain function call even though the REAL
|
|
1402
|
+
// native C++ nesting at that point was nowhere near it. Fixed via
|
|
1403
|
+
// nativeUserCallDepth_ (evaluator.hpp), a separate counter incremented
|
|
1404
|
+
// only for skipDepthGuard=false pushes.
|
|
1405
|
+
//
|
|
1406
|
+
// recur() recurses 100 levels deep via bare `recur(n-1);` (pure
|
|
1407
|
+
// Op::CallModule, skipDepthGuard=true, zero native cost, well past the
|
|
1408
|
+
// old kMaxUserCallDepth=30) before calling leaf() at the base case --
|
|
1409
|
+
// forced to run INTERPRETED (skipDepthGuard=false) via a fast-continue
|
|
1410
|
+
// breakpoint on its own declaration line (mirrors countDebugHookStops'
|
|
1411
|
+
// own "force one specific chunk native" trick, above this file's first
|
|
1412
|
+
// TEST). Before the fix, this leaf() call -- genuinely nested only 1
|
|
1413
|
+
// real native frame deep -- would have falsely tripped the guard purely
|
|
1414
|
+
// from callStack_'s own ambient depth.
|
|
1415
|
+
TEST(ModuleBodyCompiles, DeepCompiledModuleRecursionDoesNotFalselyTripTheInterpretedFunctionGuard) {
|
|
1416
|
+
ScopedVm vm(true);
|
|
1417
|
+
DebugHooks hooks;
|
|
1418
|
+
hooks.debugHook = [](int, int, bool, bool, const std::string&, const std::vector<CallStackFrame>&,
|
|
1419
|
+
const DebugFramesFn&) { return DebugAction{}; };
|
|
1420
|
+
Evaluator ev(EchoFn{}, nullptr, nullptr, hooks);
|
|
1421
|
+
ev.setFastContinueBreakpoints(std::unordered_map<std::string, std::set<int>>{{"<string>", {2}}});
|
|
1422
|
+
auto ast = parseSrc("module recur(n) { if (n > 0) { recur(n - 1); } else { cube(leaf()); } }\n"
|
|
1423
|
+
"function leaf() = 1;\n"
|
|
1424
|
+
"recur(100);");
|
|
1425
|
+
auto scope = oscad::buildScopes(ast);
|
|
1426
|
+
EvalContext ctx = EvalContext::makeRoot(scope.get());
|
|
1427
|
+
std::vector<std::unique_ptr<CSGNode>> tree = ev.resolveTree(ast, ctx);
|
|
1428
|
+
ASSERT_EQ(tree.size(), 1u);
|
|
1429
|
+
EXPECT_EQ(tree[0]->kind, "cube");
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1393
1432
|
// The realistic case the NativeStatement-gap fix actually targets: the
|
|
1394
1433
|
// RECURSIVE call itself is a bare statement (pure Op::CallModule, zero
|
|
1395
1434
|
// native stack, bounded only by the heap-sized kMaxVmCallStackDepth), and
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/.github/workflows/wheels.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/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
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/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.13.2 → openscad_cpp_evaluator-0.13.3}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/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.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_manifold_cache.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.2 → openscad_cpp_evaluator-0.13.3}/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.13.2 → openscad_cpp_evaluator-0.13.3}/tests/test_viewport_params.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|