aboutsummaryrefslogtreecommitdiffstats
path: root/json.h
diff options
context:
space:
mode:
authoripknHama <ipknhama@gmail.com>2014-04-22 20:19:03 +0900
committeripknHama <ipknhama@gmail.com>2014-04-22 20:19:03 +0900
commit89bfe52f09ca583afc56e2fb31c6a79c5b6e55ac (patch)
treee884babffb936286ec1f5f58aabe67e885e40308 /json.h
parentdd74354a7bfc34b1c347083c4565ebbd80ff94c0 (diff)
downloadcrow-89bfe52f09ca583afc56e2fb31c6a79c5b6e55ac.tar.gz
crow-89bfe52f09ca583afc56e2fb31c6a79c5b6e55ac.zip
increasing unittest coverage; fix crash bug while parsing headers
Diffstat (limited to 'json.h')
-rw-r--r--json.h47
1 files changed, 24 insertions, 23 deletions
diff --git a/json.h b/json.h
index 705a9bc..395cef1 100644
--- a/json.h
+++ b/json.h
@@ -936,8 +936,9 @@ namespace flask
class wvalue
{
public:
- type t{type::Null};
+ type t() { return t_; }
private:
+ type t_{type::Null};
double d;
std::string s;
std::unique_ptr<std::vector<wvalue>> l;
@@ -953,7 +954,7 @@ namespace flask
wvalue& operator = (wvalue&& r)
{
- t = r.t;
+ t_ = r.t_;
d = r.d;
s = std::move(r.s);
l = std::move(r.l);
@@ -963,14 +964,14 @@ namespace flask
void clear()
{
- t = type::Null;
+ t_ = type::Null;
l.reset();
o.reset();
}
void reset()
{
- t = type::Null;
+ t_ = type::Null;
l.reset();
o.reset();
}
@@ -984,16 +985,16 @@ namespace flask
{
reset();
if (value)
- t = type::True;
+ t_ = type::True;
else
- t = type::False;
+ t_ = type::False;
return *this;
}
wvalue& operator = (double value)
{
reset();
- t = type::Number;
+ t_ = type::Number;
d = value;
return *this;
}
@@ -1001,7 +1002,7 @@ namespace flask
wvalue& operator = (uint16_t value)
{
reset();
- t = type::Number;
+ t_ = type::Number;
d = (double)value;
return *this;
}
@@ -1009,7 +1010,7 @@ namespace flask
wvalue& operator = (int16_t value)
{
reset();
- t = type::Number;
+ t_ = type::Number;
d = (double)value;
return *this;
}
@@ -1017,7 +1018,7 @@ namespace flask
wvalue& operator = (uint32_t value)
{
reset();
- t = type::Number;
+ t_ = type::Number;
d = (double)value;
return *this;
}
@@ -1025,7 +1026,7 @@ namespace flask
wvalue& operator = (int32_t value)
{
reset();
- t = type::Number;
+ t_ = type::Number;
d = (double)value;
return *this;
}
@@ -1033,7 +1034,7 @@ namespace flask
wvalue& operator = (uint64_t value)
{
reset();
- t = type::Number;
+ t_ = type::Number;
d = (double)value;
return *this;
}
@@ -1041,7 +1042,7 @@ namespace flask
wvalue& operator = (int64_t value)
{
reset();
- t = type::Number;
+ t_ = type::Number;
d = (double)value;
return *this;
}
@@ -1049,7 +1050,7 @@ namespace flask
wvalue& operator=(const char* str)
{
reset();
- t = type::String;
+ t_ = type::String;
s = str;
return *this;
}
@@ -1057,7 +1058,7 @@ namespace flask
wvalue& operator=(const std::string& str)
{
reset();
- t = type::String;
+ t_ = type::String;
s = str;
return *this;
}
@@ -1065,9 +1066,9 @@ namespace flask
template <typename T>
wvalue& operator[](const std::vector<T>& v)
{
- if (t != type::List)
+ if (t_ != type::List)
reset();
- t = type::List;
+ t_ = type::List;
if (!l)
l = std::move(std::unique_ptr<std::vector<wvalue>>(new std::vector<wvalue>{}));
l->clear();
@@ -1082,9 +1083,9 @@ namespace flask
wvalue& operator[](unsigned index)
{
- if (t != type::List)
+ if (t_ != type::List)
reset();
- t = type::List;
+ t_ = type::List;
if (!l)
l = std::move(std::unique_ptr<std::vector<wvalue>>(new std::vector<wvalue>{}));
if (l->size() < index+1)
@@ -1094,9 +1095,9 @@ namespace flask
wvalue& operator[](const std::string& str)
{
- if (t != type::Object)
+ if (t_ != type::Object)
reset();
- t = type::Object;
+ t_ = type::Object;
if (!o)
o = std::move(
std::unique_ptr<
@@ -1108,7 +1109,7 @@ namespace flask
size_t estimate_length() const
{
- switch(t)
+ switch(t_)
{
case type::Null: return 4;
case type::False: return 5;
@@ -1160,7 +1161,7 @@ namespace flask
}
void dump_internal(const wvalue& v, std::string& out)
{
- switch(v.t)
+ switch(v.t_)
{
case type::Null: out += "null"; break;
case type::False: out += "false"; break;