Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
hfedcba committed Oct 19, 2017
2 parents e06325f + ddce6c7 commit a1e4c02
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 16 deletions.
2 changes: 1 addition & 1 deletion revision.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6
7
25 changes: 14 additions & 11 deletions src/JsonDecoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -718,23 +718,19 @@ void JsonDecoder::decodeNumber(const std::string& json, uint32_t& pos, PVariable
else if(exponent > 308) exponent = 308;
value->floatValue = (exponent >= 0) ? value->floatValue * Math::Pow10(exponent) : value->floatValue / Math::Pow10(-exponent);
if(minus) value->floatValue *= -1;
value->integerValue = std::lround(value->floatValue);
value->integerValue64 = std::llround(value->floatValue);
value->integerValue = std::lround(value->floatValue);
}
else
{
if(value->type == VariableType::tInteger && (number > 2147483647 || number < -2147483648))
{
value->type = VariableType::tInteger64;
value->integerValue64 = minus ? -number : number;
value->floatValue = value->integerValue64;
}
else
{
value->integerValue = minus ? -number : number;
value->integerValue64 = value->integerValue;
value->floatValue = value->integerValue;
}

value->integerValue64 = minus ? -number : number;
value->integerValue = value->integerValue64;
value->floatValue = value->integerValue64;
}
}

Expand Down Expand Up @@ -847,12 +843,19 @@ void JsonDecoder::decodeNumber(const std::vector<char>& json, uint32_t& pos, PVa
else if(exponent > 308) exponent = 308;
value->floatValue = (exponent >= 0) ? value->floatValue * Math::Pow10(exponent) : value->floatValue / Math::Pow10(-exponent);
if(minus) value->floatValue *= -1;
value->integerValue64 = std::llround(value->floatValue);
value->integerValue = std::lround(value->floatValue);
}
else
{
value->integerValue = minus ? -number : number;
value->floatValue = value->integerValue;
if(value->type == VariableType::tInteger && (number > 2147483647 || number < -2147483648))
{
value->type = VariableType::tInteger64;
}

value->integerValue64 = minus ? -number : number;
value->integerValue = value->integerValue64;
value->floatValue = value->integerValue64;
}
}

Expand Down
8 changes: 4 additions & 4 deletions src/Variable.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,10 @@ class Variable
Variable() { type = VariableType::tVoid; arrayValue = PArray(new Array()); structValue = PStruct(new Struct()); }
Variable(Variable const& rhs);
Variable(VariableType variableType) : Variable() { type = variableType; if(type == VariableType::tVariant) type = VariableType::tVoid; }
Variable(uint8_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; }
Variable(int32_t integer) : Variable() { type = VariableType::tInteger; integerValue = integer; integerValue64 = integer; }
Variable(uint32_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; integerValue64 = integer; }
Variable(int64_t integer) : Variable() { type = VariableType::tInteger64; integerValue = (int32_t)integer; integerValue64 = integer; }
Variable(uint8_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; }
Variable(int32_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; }
Variable(uint32_t integer) : Variable() { type = VariableType::tInteger; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; }
Variable(int64_t integer) : Variable() { type = VariableType::tInteger64; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; }
Variable(uint64_t integer) : Variable() { type = VariableType::tInteger64; integerValue = (int32_t)integer; integerValue64 = (int64_t)integer; }
Variable(std::string string) : Variable() { type = VariableType::tString; stringValue = string; }
Variable(const char* string) : Variable() { type = VariableType::tString; stringValue = std::string(string); }
Expand Down

0 comments on commit a1e4c02

Please sign in to comment.