1. 11 Jul, 2014 4 commits
    • Philipp A. Hartmann's avatar
      GenericDocument: simplify error handling in ParseStream · 44755211
      Philipp A. Hartmann authored
       * unconditionally store error state of reader after parsing
       * clear stack after parsing by using a ClearStackOnExit scope guard
      44755211
    • Philipp A. Hartmann's avatar
      reader.h: prepare "early return path" for exception support · 3c1d4bc2
      Philipp A. Hartmann authored
      In case of a user-defined RAPIDJSON_PARSE_ERROR_NORETURN that throws
      an exception instead of using the Rapidjson ParseError API, the early
      return paths performing the stack unwinding manually can be omitted as
      well.
      
      This patch provides a customizable RAPIDJSON_PARSE_ERROR_EARLY_RETURN
      macro to remove these (then unneeded) control paths from the parsing
      implementation (with and without a return value).
      
      Secondly, clearing the parse stack is moved to a small helper struct
      that calls stack_.Clear() from its destructor.  This avoids the need
      for the 'goto' in the ParseStream function and ensures proper cleanup
      even if e.g. a user-defined Allocator throws an exception.
      3c1d4bc2
    • Philipp A. Hartmann's avatar
      move ParseErrorCode to error/error.h · b37bd853
      Philipp A. Hartmann authored
      In order to enable the customization of the error macros
       - RAPIDJSON_PARSE_ERROR_NORETURN
       - RAPIDJSON_PARSE_ERROR_EARLY_RETURN
      the user may need to have access to the ParseErrorCode enum
      already.  This requires a separate header location than the
      GenericReader.
      b37bd853
    • Philipp A. Hartmann's avatar
      GenericValue::operator= : fixup assignment operator · 41d211cd
      Philipp A. Hartmann authored
      While MSVC doesn't like the explicit `.template operator=<...>` syntax
      (see 4f40ed64), Clang 3.5 complains about the absence of it:
      
      In file included from ../../test/perftest/rapidjsontest.cpp:6:
      ../../include/rapidjson/document.h:504:18: error: use 'template' keyword to treat 'operator =' as a dependent template name
                      return (*this).operator=<StringRefType>(str);
                                     ^
                                     template
      
      Delegate both operator=(StringRefType) and operator=(T) to operator(GenericValue&).
      41d211cd
  2. 10 Jul, 2014 9 commits
  3. 09 Jul, 2014 14 commits
  4. 08 Jul, 2014 13 commits