Resolved conflict in unittests/compiled_tests.cpp where both branches
added tests at the end of file (issue #146 tests and issue #421 tests).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Separate system-level options (No_Load_Modules, Load_Modules, No_External_Scripts,
External_Scripts) from library-level options (No_Stdlib, No_IO, No_Prelude, No_JSON)
into two distinct enum types. Add Library_Options as a parameter to the ChaiScript
constructor. Update tests to demonstrate both ChaiScript_Basic (explicit Std_Lib::library
call) and ChaiScript (library options via constructor parameter) usage.
Requested by @lefticus in PR #642 review.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add both a compiled C++ test (with registered type_conversion) and a
pure ChaiScript test (with dynamic objects and custom == operator) to
verify that switch case comparisons properly manage object lifetimes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add new Options enum values (No_Stdlib, No_IO, No_Prelude, No_JSON) that
allow users to control which parts of the standard library are registered.
Std_Lib::library() now accepts an options vector, and the ChaiScript
convenience class forwards its options to the library builder. This enables
use cases where only custom functions should be exposed to script users.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
I initially tried to use the existing .clang-format file,
but it does not match the code style (at least with clang-format 11)
and the formatting is not consistent across files.
Therefore, I decided to rewrite the .clang-format with some personal
preferences.
Used command
find . -iname "*.hpp" -o -iname "*.cpp" | xargs clang-format -i -style=file
Implemented unit test which is validating whether a lambda from
Chaiscript could return a boolean value without throwing any exception.
The same test case is checking whether lambda with boolean return value
could be called peacefully from Chaiscript.
Notes
* Due to the limitations for how Boxed_Value is handled
the unique_ptrs must still be wrapped in a shared_ptr
* However, this caveat does not directly affect the user