Rewrite and revert some code to build in pre-C++11

Rewerite and revert some code that this library can be built in pre-C++11 and C++11 env.
Main Change List:
1. using -> typedef
2. not using auto & decltype
3. not using raw string literals
4. ..., other c++11 features will be chosen to compile, depending on env.
This commit is contained in:
chenguoping
2020-04-30 11:24:36 +08:00
parent a4fb5db543
commit d2c205206d
22 changed files with 688 additions and 511 deletions

View File

@@ -1,4 +1,5 @@
#include "json/json.h"
#include <cstdlib>
#include <iostream>
/**
* \brief Parse a raw string into Value object using the CharReaderBuilder
@@ -10,9 +11,9 @@
* 20
*/
int main() {
const std::string rawJson = R"({"Age": 20, "Name": "colin"})";
const auto rawJsonLength = static_cast<int>(rawJson.length());
constexpr bool shouldUseOldWay = false;
const std::string rawJson = "{\"Age\": 20, \"Name\": \"colin\"}";
const int rawJsonLength = static_cast<int>(rawJson.length());
JSONCPP_CONST bool shouldUseOldWay = false;
JSONCPP_STRING err;
Json::Value root;
@@ -21,12 +22,13 @@ int main() {
reader.parse(rawJson, root);
} else {
Json::CharReaderBuilder builder;
const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
Json::CharReader* reader(builder.newCharReader());
if (!reader->parse(rawJson.c_str(), rawJson.c_str() + rawJsonLength, &root,
&err)) {
std::cout << "error" << std::endl;
return EXIT_FAILURE;
}
delete reader;
}
const std::string name = root["Name"].asString();
const int age = root["Age"].asInt();