Enable -Werror for GCC/Clang and /WX for MSVC to enforce warning-free
builds. Fix wchar_t-to-char narrowing conversion in chaiscript_windows.hpp
by using explicit static_cast. Replace deprecated std::wstring_convert in
chaiscript_parser.hpp with direct static_cast. Add noexcept to JSON default
constructor, and mark intentionally unused parameters with [[maybe_unused]].
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add object_from_json as a non-breaking alternative to from_json that returns
a Dynamic_Object instead of a Map, enabling dot-access syntax on JSON fields
(e.g. obj.name instead of obj["name"]). Nested JSON objects become nested
Dynamic_Objects. Also add map_to_object and object_to_map for Python-style
interconversion between maps and objects.
Co-authored-by: leftibot <leftibot@users.noreply.github.com>
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.