openscad-cpp-evaluator 0.4.1__tar.gz → 0.4.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.
Files changed (193) hide show
  1. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/PKG-INFO +1 -1
  2. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/bindings/module.cpp +30 -0
  3. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/pyproject.toml +1 -1
  4. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/python/openscad_cpp_evaluator/__init__.py +4 -1
  5. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_python_bindings.py +40 -0
  6. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/.github/workflows/ci.yml +0 -0
  7. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/.github/workflows/wheels.yml +0 -0
  8. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/.gitignore +0 -0
  9. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/.gitmodules +0 -0
  10. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/CLAUDE.md +0 -0
  11. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/CMakeLists.txt +0 -0
  12. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/LICENSE +0 -0
  13. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/README.md +0 -0
  14. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/bindings/CMakeLists.txt +0 -0
  15. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/cmake/embed_font.cmake +0 -0
  16. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/examples/CMakeLists.txt +0 -0
  17. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/examples/eval_perf_benchmark.cpp +0 -0
  18. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/examples/manifold_cache_reuse.cpp +0 -0
  19. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/examples/minimal_debugger.cpp +0 -0
  20. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
  21. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/.gitignore +0 -0
  22. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/CLAUDE.md +0 -0
  23. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
  24. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/README.md +0 -0
  25. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
  26. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
  27. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
  28. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
  29. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
  30. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
  31. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
  32. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
  33. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
  34. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
  35. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
  36. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
  37. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
  38. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
  39. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
  40. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
  41. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/api.cpp +0 -0
  42. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
  43. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
  44. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
  45. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
  46. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
  47. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
  48. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
  49. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
  50. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/comments.cpp +0 -0
  51. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
  52. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
  53. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
  54. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
  55. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
  56. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
  57. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
  58. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/position.cpp +0 -0
  59. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
  60. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/scope.cpp +0 -0
  61. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
  62. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
  63. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
  64. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
  65. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
  66. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
  67. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
  68. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
  69. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
  70. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
  71. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
  72. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
  73. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
  74. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
  75. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
  76. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
  77. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
  78. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
  79. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
  80. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
  81. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
  82. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
  83. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
  84. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
  85. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
  86. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
  87. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
  88. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
  89. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
  90. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
  91. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
  92. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
  93. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
  94. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
  95. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
  96. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
  97. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
  98. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
  99. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
  100. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
  101. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
  102. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/export.hpp +0 -0
  103. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
  104. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
  105. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
  106. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
  107. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
  108. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
  109. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/profile.hpp +0 -0
  110. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
  111. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/segments.hpp +0 -0
  112. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
  113. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
  114. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
  115. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/value.hpp +0 -0
  116. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
  117. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/resources/fonts/LICENSE +0 -0
  118. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/resources/fonts/LiberationSans-Regular.ttf +0 -0
  119. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/CMakeLists.txt +0 -0
  120. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/booleans.cpp +0 -0
  121. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/builtins.hpp +0 -0
  122. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/call_args.cpp +0 -0
  123. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/color.cpp +0 -0
  124. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/control.cpp +0 -0
  125. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/extrude.cpp +0 -0
  126. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/function_builtins.cpp +0 -0
  127. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/import.cpp +0 -0
  128. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/modifiers.cpp +0 -0
  129. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/primitives_2d.cpp +0 -0
  130. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/primitives_3d.cpp +0 -0
  131. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/registry.cpp +0 -0
  132. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/roof.cpp +0 -0
  133. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/segments.cpp +0 -0
  134. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/surface.cpp +0 -0
  135. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/text.cpp +0 -0
  136. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/topology.cpp +0 -0
  137. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/builtins/transforms.cpp +0 -0
  138. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/bytecode_compiler.cpp +0 -0
  139. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/bytecode_vm.cpp +0 -0
  140. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/colored_body.cpp +0 -0
  141. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/csg_generate.cpp +0 -0
  142. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/csg_resolve.cpp +0 -0
  143. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/css_colors.cpp +0 -0
  144. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/debug/debug_repl.cpp +0 -0
  145. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/debug_profile.cpp +0 -0
  146. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/eval_context.cpp +0 -0
  147. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/eval_error.cpp +0 -0
  148. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/eval_use.cpp +0 -0
  149. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/export.cpp +0 -0
  150. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/expr_eval.cpp +0 -0
  151. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/import/dxf_import.cpp +0 -0
  152. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/import/mesh_import.cpp +0 -0
  153. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/import/surface_load.cpp +0 -0
  154. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/import/svg_import.cpp +0 -0
  155. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/manifold_cache.cpp +0 -0
  156. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/stmt_eval.cpp +0 -0
  157. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/text/stb_font_provider.cpp +0 -0
  158. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/text/text_metrics.cpp +0 -0
  159. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/user_calls.cpp +0 -0
  160. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/value.cpp +0 -0
  161. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/src/zip_stored.cpp +0 -0
  162. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/CMakeLists.txt +0 -0
  163. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_booleans.cpp +0 -0
  164. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_bytecode_compiler.cpp +0 -0
  165. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_cli.cpp +0 -0
  166. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_control_flow.cpp +0 -0
  167. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_csg_tree.cpp +0 -0
  168. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_debug_hooks.cpp +0 -0
  169. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_dxf_svg_import.cpp +0 -0
  170. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_eval_context.cpp +0 -0
  171. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_export.cpp +0 -0
  172. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_expr_eval.cpp +0 -0
  173. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_extrude_roof.cpp +0 -0
  174. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_function_builtins.cpp +0 -0
  175. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_helpers.hpp +0 -0
  176. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_import_export.cpp +0 -0
  177. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_manifold_cache.cpp +0 -0
  178. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_multi_color_merge.cpp +0 -0
  179. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_primitives.cpp +0 -0
  180. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_profiling.cpp +0 -0
  181. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_scoping.cpp +0 -0
  182. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_surface.cpp +0 -0
  183. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_tail_calls.cpp +0 -0
  184. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_text.cpp +0 -0
  185. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_transforms.cpp +0 -0
  186. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_use.cpp +0 -0
  187. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_value.cpp +0 -0
  188. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_viewport_params.cpp +0 -0
  189. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tests/test_zip_stored.cpp +0 -0
  190. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tools/cli/CMakeLists.txt +0 -0
  191. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tools/cli/cli_lib.cpp +0 -0
  192. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tools/cli/cli_lib.hpp +0 -0
  193. {openscad_cpp_evaluator-0.4.1 → openscad_cpp_evaluator-0.4.3}/tools/cli/main.cpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscad_cpp_evaluator
3
- Version: 0.4.1
3
+ Version: 0.4.3
4
4
  Summary: C++ OpenSCAD evaluator with Python bindings
5
5
  Author: NeuSCAD Contributors
6
6
  License-Expression: MIT
@@ -109,6 +109,20 @@ nb::object posToPy(const oscad::Position* p) {
109
109
  return facadeAttr("_Position")(p->line, p->column, p->origin, p->start_offset, p->end_offset);
110
110
  }
111
111
 
112
+ // Mirrors the reference's ColoredBody.role string values exactly (minus
113
+ // "highlight_ghost" -- see BodyRole's own ponytail comment in
114
+ // colored_body.hpp for why that 5th, renderer-overlay-only state isn't
115
+ // modeled here yet).
116
+ const char* roleToString(oscadeval::BodyRole role) {
117
+ switch (role) {
118
+ case oscadeval::BodyRole::Highlight: return "highlight";
119
+ case oscadeval::BodyRole::Background: return "background";
120
+ case oscadeval::BodyRole::ShowOnly: return "show_only";
121
+ case oscadeval::BodyRole::Normal:
122
+ default: return "normal";
123
+ }
124
+ }
125
+
112
126
  // One evaluated body's mesh + attributes, shaped to match what the renderer
113
127
  // already reads off a manifold3d mesh (vert_properties (nVert, numProp),
114
128
  // tri_verts (nTri, 3), run_original_id (nRun,), run_index (nRun+1,) -- the
@@ -126,10 +140,26 @@ nb::dict bodyToDict(oscadeval::ColoredBody& cb) {
126
140
  d["run_index"] = vecToNumpy(std::move(mesh.runIndex), {mesh.runIndex.size()});
127
141
  d["num_prop"] = static_cast<int>(numProp);
128
142
  d["flat_preview"] = cb.flatPreview;
143
+ d["role"] = roleToString(cb.role);
129
144
  if (cb.color)
130
145
  d["color"] = nb::make_tuple((*cb.color)[0], (*cb.color)[1], (*cb.color)[2], (*cb.color)[3]);
131
146
  else
132
147
  d["color"] = nb::none();
148
+ // Per-triangle RGBA, set only for a real multi-color CSG merge (see
149
+ // Evaluator::attachTriColors) -- None for the common single-material
150
+ // case, matching the reference's ColoredBody.tri_colors exactly (an
151
+ // (numTri, 4) float32 array or None). The renderer reads this to split
152
+ // one merged body's triangles across separate opaque/translucent draw
153
+ // buffers.
154
+ if (cb.triColors) {
155
+ const std::vector<std::array<float, 4>>& src = *cb.triColors;
156
+ std::vector<float> flat;
157
+ flat.reserve(src.size() * 4);
158
+ for (const auto& rgba : src) flat.insert(flat.end(), rgba.begin(), rgba.end());
159
+ d["tri_colors"] = vecToNumpy(std::move(flat), {src.size(), 4});
160
+ } else {
161
+ d["tri_colors"] = nb::none();
162
+ }
133
163
  return d;
134
164
  }
135
165
 
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
4
4
 
5
5
  [project]
6
6
  name = "openscad_cpp_evaluator"
7
- version = "0.4.1"
7
+ version = "0.4.3"
8
8
  description = "C++ OpenSCAD evaluator with Python bindings"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -287,6 +287,8 @@ class ColoredBody:
287
287
  color: Optional[tuple] # RGBA 0-1, or None to follow the theme
288
288
  section: object = None # kept for API parity (always None here)
289
289
  flat_preview: bool = False
290
+ tri_colors: Optional[object] = None # (numTri, 4) float32 ndarray, real multi-color CSG merges only
291
+ role: str = "normal" # "normal" | "highlight" | "background" | "show_only"
290
292
 
291
293
 
292
294
  def bodies_from_dicts(body_dicts) -> list:
@@ -295,7 +297,8 @@ def bodies_from_dicts(body_dicts) -> list:
295
297
  instances. Shared by Evaluator.evaluate() and a debug session's own live
296
298
  partial-render (see debug_evaluate()'s `generate_partial` hook kwarg,
297
299
  module.cpp) so both paths convert identically."""
298
- return [ColoredBody(_BodyShim(d), d["color"], None, d["flat_preview"]) for d in body_dicts]
300
+ return [ColoredBody(_BodyShim(d), d["color"], None, d["flat_preview"], d.get("tri_colors"),
301
+ d.get("role", "normal")) for d in body_dicts]
299
302
 
300
303
 
301
304
  class Evaluator:
@@ -192,6 +192,46 @@ def test_dyn_explicit_distinguishes_seeded_from_script_assigned():
192
192
  assert "$fa" not in ev.dyn_explicit
193
193
 
194
194
 
195
+ def test_tri_colors_populated_for_a_real_multicolor_csg_merge():
196
+ # Found via BelfrySCAD's own renderer crashing on ColoredBody.tri_colors
197
+ # missing entirely -- the C++ core (Evaluator::attachTriColors,
198
+ # booleans.cpp) already computes this, bodyToDict() just never exposed
199
+ # it. union()-ing an opaque cube with a translucent sphere forces a real
200
+ # merge with two distinct triangle colors.
201
+ path = _write("union() { color([1,0,0,1]) cube(10); "
202
+ "color([0,1,0,0.5]) translate([5,5,5]) sphere(8); }")
203
+ ev = Evaluator()
204
+ bodies, _ = ev.evaluate(path)
205
+ assert len(bodies) == 1
206
+ tri_colors = bodies[0].tri_colors
207
+ assert tri_colors is not None
208
+ num_tris = bodies[0].body.to_mesh().tri_verts.shape[0]
209
+ assert tri_colors.shape == (num_tris, 4)
210
+ # Two distinct colors actually present, not e.g. all-default filler.
211
+ assert len({tuple(row) for row in tri_colors}) >= 2
212
+
213
+
214
+ def test_tri_colors_is_none_for_an_ordinary_single_color_body():
215
+ path = _write("cube(1);")
216
+ ev = Evaluator()
217
+ bodies, _ = ev.evaluate(path)
218
+ assert len(bodies) == 1
219
+ assert bodies[0].tri_colors is None
220
+
221
+
222
+ def test_role_defaults_to_normal_and_reflects_modifiers():
223
+ # Found in the same pass as tri_colors: bodyToDict() never exposed
224
+ # ColoredBody.role either, crashing the renderer on any real render
225
+ # (it reads cb.role for every body, not just modified ones).
226
+ path = _write("cube(1);\n#sphere(1);\n%cylinder(h=1,r=1);\n!cube(2);\n")
227
+ ev = Evaluator()
228
+ bodies, _ = ev.evaluate(path)
229
+ roles = sorted(b.role for b in bodies)
230
+ # show_only (!) present anywhere -> only show_only + highlight bodies
231
+ # survive evaluate()'s own filter (see anyShowOnly in csg_resolve.cpp).
232
+ assert roles == ["highlight", "show_only"]
233
+
234
+
195
235
  def main():
196
236
  tests = [v for k, v in sorted(globals().items()) if k.startswith("test_") and callable(v)]
197
237
  failures = []