99#include < rapidjson/error/en.h>
1010#include " Define.h"
1111
12+ namespace rj = rapidjson;
13+
1214struct Result
1315{
1416 bool success = false ;
@@ -18,8 +20,11 @@ struct Result
1820 std::string response;
1921};
2022
21- using LE = rapidjson::LineEndingOption;
22- using LF = rapidjson::PrettyFormatOptions;
23+ using LE = rj::LineEndingOption;
24+ using LF = rj::PrettyFormatOptions;
25+
26+ constexpr auto flgBaseReader = rj::kParseEscapedApostropheFlag | rj::kParseNanAndInfFlag | rj::kParseNumbersAsStringsFlag ;
27+ constexpr auto flgBaseWriter = rj::kParseEscapedApostropheFlag | rj::kParseNanAndInfFlag | rj::kParseFullPrecisionFlag ;
2328
2429class JsonHandler
2530{
@@ -33,23 +38,22 @@ class JsonHandler
3338 auto FormatJson (const std::string &jsonText, LE le, LF lf, char indentChar, unsigned indentLen) -> const Result;
3439 auto ValidateJson (const std::string &jsonText) -> const Result;
3540
36- template <typename Handler>
37- auto ParseJson (const std::string &jsonText, rapidjson ::StringBuffer &sb, Handler &handler) -> const Result;
41+ template <unsigned format, typename Handler>
42+ auto ParseJson (const std::string &jsonText, rj ::StringBuffer &sb, Handler &handler) -> const Result;
3843};
3944
40- template <typename Handler>
41- inline auto JsonHandler::ParseJson (const std::string &jsonText, rapidjson ::StringBuffer &sb, Handler &handler) -> const Result
45+ template <unsigned flgBase, typename Handler>
46+ inline auto JsonHandler::ParseJson (const std::string &jsonText, rj ::StringBuffer &sb, Handler &handler) -> const Result
4247{
4348 Result retVal {};
4449
45- bool success = false ;
46- rapidjson ::Reader reader;
47- rapidjson ::StringStream ss (jsonText.c_str ());
50+ bool success = false ;
51+ rj ::Reader reader;
52+ rj ::StringStream ss (jsonText.c_str ());
4853
4954 // TODO: Find some better way
50- constexpr auto flgBase = rapidjson::kParseFullPrecisionFlag | rapidjson::kParseEscapedApostropheFlag | rapidjson::kParseNanAndInfFlag ;
51- constexpr auto flgBase_commemt = flgBase | rapidjson::kParseCommentsFlag ;
52- constexpr auto flgBase_comma = flgBase | rapidjson::kParseTrailingCommasFlag ;
55+ constexpr auto flgBase_commemt = flgBase | rj::kParseCommentsFlag ;
56+ constexpr auto flgBase_comma = flgBase | rj::kParseTrailingCommasFlag ;
5357 constexpr auto flgBase_Both = flgBase_comma | flgBase_commemt;
5458
5559 if (m_parseOptions.bIgnoreComment && m_parseOptions.bIgnoreTraillingComma )
@@ -82,7 +86,7 @@ inline auto JsonHandler::ParseJson(const std::string &jsonText, rapidjson::Strin
8286 else
8387 {
8488 retVal.success = false ;
85- retVal.error_str = rapidjson ::GetParseError_En (reader.GetParseErrorCode ());
89+ retVal.error_str = rj ::GetParseError_En (reader.GetParseErrorCode ());
8690 retVal.error_pos = static_cast <int >(reader.GetErrorOffset ());
8791 retVal.error_code = reader.GetParseErrorCode ();
8892 retVal.response .clear ();
0 commit comments