2.6
trobro
released this
In order to avoid stack overflows for deep value trees, internal recursive calls have been replaced with loops, including for the destructor on Hjson::Value. As a side effect the Hjson::Value desctructor will now allocate memory on the heap if the Hjson::Value is a tree with a depth greater than two levels.
1.7
Backported fix for gcc 13 requiring cstdint to be included in hjson.h.
2.5
trobro
released this
- Added
overridespecifier in hjson.h to avoid possible compiler warning - Fix for warnings about name collision during link time optimization
2.4.1
trobro
released this
Any control chars in map keys are now escaped in Hjson and JSON output.
2.4
trobro
released this
Now includes <cstdint> in the file hjson.h which is required by GCC 13.
2.3
trobro
released this
Fixes problems with values and/or closing brackets ending up inside comments, even when the tree was unmarshalled from a document.
It is still possible to get this problem when programmatically setting comments.
If DecoderOptions::whitespaceAsComments is set to true, comments now also include trailing whitespace after quoteless strings.
2.2
Changed behavior:
- UnmarshalFromFile() will now ignore the last line feed in a file if the file ends with a comment. Before this change, a read-write cycle of a file with comments would always add one more line feed at the end of the file if the file ended with a comment.
- The output from Merge() of two maps now uses the key order from the second Hjson::Value argument because the second argument is typically from an input file written by a user, and we don't want to keep changing the order that the user had decided.
Bug fixes:
- Lower (second level or deeper) level maps now keep their comments in the output from Merge().
- Value::clone() now keep all comments.
2.1
Added Hjson::Value bracket operators for non-const char* to avoid overload ambiguity.
2.0
trobro
released this
Major release containing several breaking changes.
Biggest change: can now read and write comments.
- enum class for Hjson::Value types
- changed default options
- assignment and arithmetic operators for all primitive C++ types
- read and write comments
- convenience file functions
- MarshalWithOptions() replaced by Marshal() overload
- DefaultOptions() replaced by brace-or-equal-initializers in EncoderOptions