Changelog

v0.2.6 – in-progress

  • Implement travis build
  • Implement pseudo-release-tag -> readthedocs build pipeline
  • Remove monorepo dependencies from the sparse export

Closes: adfd69d, c3f0854, 296d380

v0.2.5

  • Tokenizer and Parser now have peek-ahead capability
  • Don’t choke on empty list (“[]”) or object (“{}”)
  • Fix sink_object and sink_list were inconsistent in whether or not they expected the opening event to have been consumed or not
  • Add parse utilities for parsing lists into standard containers with push_back members
  • Add parse API for lists mirroring the parse API for objects
  • Fix sink_object sign error in loop condition
  • Add string type name to the registry entry
  • Add stream specialization for shared_ptr

v0.2.4

  • change all functions to GNU style snake_case

v0.2.3

  • get rid of WalkOpts
  • remove registry_poc.cc
  • get rid of BufPrinter and FmtError, replace with static stringstream
  • make Registry* const within the dumper
  • parse_array -> parse_list
  • make order of parameters consistent in type_registry.h API
  • parse functions all return integers
  • some cleanup/reorg of type_registry.h/cc

v0.2.2

  • Use SerializeOpts inside StreamDumper to pretty-print (ish)
  • convert json_gen to generate code for the new registry-based streaming API and update stream_gen_test to use it
  • change stream_macros.h to generate code for the new registry-based streaming API and update stream_test to use it.
  • add kCompactOpts to json.h/cc (for unpretty-printing)
  • add documentation for the new streaming API and some general docs
  • delete old streaming API

v0.2.1

  • Added generic tree walk to the stream API, allows arbitrary navigation of json-serializable structures
  • Add python script to code-generate the stream API rather than using C macros.
  • Add utilities to escape/unescape strings for JSON serialization.
  • Fix missing backslash in regex for STRING_LITERAL token
  • Cleanup some compiler warnings
  • Add a frontend test to execute the demo program on some canonical input and ensure that the lex/parse/markup output matches expected outputs
  • ParseString will now unescape the contents
  • Moved parse/emit functions to their own files
  • Moved parse/emit functions out of the stream namespace
  • Merge _tpl.h files into -> .h
  • Make json_gen use a jinja template
  • Replace remaining printf() with LOG() for parse errors

v0.2.0

Overhaul the stream API.

  • Stream API no longer uses runtime pointer maps
  • Implement compile time string hashing for key switch/case
  • Implement new macro technique for variable number of case statements
  • Emit/Parse are now implemented as overloads in json::stream:: namespace rather than member functions of the struct. This may change again in the future.

v0.1.0

Initial commit.

  • Functional low-level API for lexing/parsing JSON
  • A demonstrator “stream” API for creating JSON-serializable structures in C++.