diff options
author | ipknHama <ipknhama@gmail.com> | 2014-04-20 05:41:53 +0900 |
---|---|---|
committer | ipknHama <ipknhama@gmail.com> | 2014-04-20 17:45:59 +0900 |
commit | 5cdffdf9f75997bfa821203123305b9f8c24b463 (patch) | |
tree | b09e33d3888cebadda2e33d4c3b7813a2165b1d5 | |
parent | c6656ab314e0cef54f47c4fa3af342bd6564535a (diff) | |
download | crow-5cdffdf9f75997bfa821203123305b9f8c24b463.tar.gz crow-5cdffdf9f75997bfa821203123305b9f8c24b463.zip |
update json interface
-rw-r--r-- | json.h | 36 | ||||
-rw-r--r-- | unittest.cpp | 6 |
2 files changed, 15 insertions, 27 deletions
@@ -53,7 +53,7 @@ namespace flask }; class rvalue; - rvalue load_copy(const char* data, size_t size); + rvalue load(const char* data, size_t size); namespace detail { @@ -135,7 +135,7 @@ namespace flask length_ = length; owned_ = 1; } - friend rvalue flask::json::load_copy(const char* data, size_t size); + friend rvalue flask::json::load(const char* data, size_t size); }; bool operator < (const r_string& l, const r_string& r) @@ -470,8 +470,8 @@ namespace flask type t_; mutable uint8_t option_{0}; - friend rvalue load_nocopy(const char* data, size_t size); - friend rvalue load_copy(const char* data, size_t size); + friend rvalue load_nocopy_internal(const char* data, size_t size); + friend rvalue load(const char* data, size_t size); friend std::ostream& operator <<(std::ostream& os, const rvalue& r) { switch(r.t_) @@ -560,7 +560,7 @@ namespace flask //inline rvalue decode(const std::string& s) //{ //} - inline rvalue load_nocopy(const char* data, size_t size) + inline rvalue load_nocopy_internal(const char* data, size_t size) { //static const char* escaped = "\"\\/\b\f\n\r\t"; struct Parser @@ -905,9 +905,8 @@ namespace flask rvalue parse() { - //auto ret = decode_object(); ws_skip(); - auto ret = decode_value(); + auto ret = decode_object(); // or decode value? ws_skip(); if (*data != '\0') ret.set_error(); @@ -918,11 +917,11 @@ namespace flask }; return Parser(data, size).parse(); } - inline rvalue load_copy(const char* data, size_t size) + inline rvalue load(const char* data, size_t size) { char* s = new char[size+1]; memcpy(s, data, size+1); - auto ret = load_nocopy(s, size); + auto ret = load_nocopy_internal(s, size); if (ret) ret.key_.force(s, size); else @@ -930,27 +929,16 @@ namespace flask return ret; } - inline rvalue load_copy(const char* data) + inline rvalue load(const char* data) { - return load_copy(data, strlen(data)); + return load(data, strlen(data)); } - inline rvalue load_copy(const std::string& str) + inline rvalue load(const std::string& str) { - return load_copy(str.data(), str.size()); + return load(str.data(), str.size()); } - inline rvalue load_nocopy(const char* data) - { - return load_nocopy(data, strlen(data)); - } - - inline rvalue load_nocopy(const std::string& str) - { - return load_nocopy(str.data(), str.size()); - } - - class wvalue { public: diff --git a/unittest.cpp b/unittest.cpp index cf9db14..5f90551 100644 --- a/unittest.cpp +++ b/unittest.cpp @@ -252,12 +252,12 @@ TEST(multi_server) TEST(json_read) { { - auto x = json::load_copy("{} 3"); + auto x = json::load("{} 3"); if (x) fail("should fail to parse"); } - auto x = json::load_copy(R"({"message":"hello, world"})"); + auto x = json::load(R"({"message":"hello, world"})"); if (!x) fail("fail to parse"); ASSERT_EQUAL("hello, world", x["message"]); @@ -268,7 +268,7 @@ TEST(json_read) ASSERT_THROW(x["message"].size()); std::string s = R"({"int":3, "ints" :[1,2,3,4,5] })"; - auto y = json::load_nocopy(s); + auto y = json::load(s); ASSERT_EQUAL(3, y["int"]); ASSERT_EQUAL(5, y["ints"].size()); ASSERT_EQUAL(1, y["ints"][0]); |