Add a new overload of utility::add_class that accepts a fifth parameter
for static functions. Static functions are registered as attributes of a
Dynamic_Object namespace with the class name, enabling ClassName.func()
call syntax. To allow constructors to coexist with the namespace global,
Fun_Call_AST_Node now falls back to dispatch-by-name when the evaluated
identifier is not directly callable.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Convert \u escape sequences to proper UTF-8 characters instead of
passing through the literal \u notation. Supports the full BMP range
with correct 1, 2, 3, and 4-byte UTF-8 encoding.
Based on PR #483 by @olikraus, rebased onto current develop.
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
- fix issue #399.
- make to_json() with an empty Map, Vector or Dynamic_Object return a
similar/compatible type (JSON object or array), rather than "null".
- include the fix for #381 (to_json() support for null values), so
that can also be unit tested.
Linux compilers interpret "long" as 64 bit, Visual Studio on Windows interprets "long" as 32 bit. In order to remove ambiguity, from_json should use int64_t rather than long when parsing integers.
This modifies no logic, it simply adds the keyword `noexcept`
I believe this is 100% correct. It calls methods that are not
guaranteed to be `noexcept`, such as `operator[]` but have
no logically way of throwing.