@@ -28,13 +28,13 @@ void ChangeIds(rapidjson_flax::Value& obj, rapidjson_flax::Document& document, c
|
|||||||
else if (obj.IsString() && obj.GetStringLength() == 32)
|
else if (obj.IsString() && obj.GetStringLength() == 32)
|
||||||
{
|
{
|
||||||
auto value = JsonTools::GetGuid(obj);
|
auto value = JsonTools::GetGuid(obj);
|
||||||
if (mapping.TryGet(value, value))
|
if (value.IsValid() && mapping.TryGet(value, value))
|
||||||
{
|
{
|
||||||
// Unoptimized version:
|
// Unoptimized version:
|
||||||
//obj.SetString(value.ToString(Guid::FormatType::N).ToSTD().c_str(), 32, document.GetAllocator());
|
//obj.SetString(value.ToString(Guid::FormatType::N).ToSTD().c_str(), 32, document.GetAllocator());
|
||||||
|
|
||||||
// Optimized version:
|
// Optimized version:
|
||||||
char buffer[32] =
|
static char buffer[32] =
|
||||||
{
|
{
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
'0','0','0','0','0','0','0','0','0','0',
|
'0','0','0','0','0','0','0','0','0','0',
|
||||||
@@ -255,9 +255,8 @@ BoundingBox JsonTools::GetBoundingBox(const Value& value)
|
|||||||
|
|
||||||
Guid JsonTools::GetGuid(const Value& value)
|
Guid JsonTools::GetGuid(const Value& value)
|
||||||
{
|
{
|
||||||
if (!value.IsString())
|
if (!value.IsString() || value.GetStringLength() != 32)
|
||||||
return Guid::Empty;
|
return Guid::Empty;
|
||||||
CHECK_RETURN(value.GetStringLength() == 32, Guid::Empty);
|
|
||||||
|
|
||||||
// Split
|
// Split
|
||||||
const char* a = value.GetString();
|
const char* a = value.GetString();
|
||||||
@@ -267,10 +266,12 @@ Guid JsonTools::GetGuid(const Value& value)
|
|||||||
|
|
||||||
// Parse
|
// Parse
|
||||||
Guid result;
|
Guid result;
|
||||||
StringUtils::ParseHex(a, 8, &result.A);
|
bool failed = StringUtils::ParseHex(a, 8, &result.A);
|
||||||
StringUtils::ParseHex(b, 8, &result.B);
|
failed |= StringUtils::ParseHex(b, 8, &result.B);
|
||||||
StringUtils::ParseHex(c, 8, &result.C);
|
failed |= StringUtils::ParseHex(c, 8, &result.C);
|
||||||
StringUtils::ParseHex(d, 8, &result.D);
|
failed |= StringUtils::ParseHex(d, 8, &result.D);
|
||||||
|
if (failed)
|
||||||
|
return Guid::Empty;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ public:
|
|||||||
const auto member = node.FindMember(name);
|
const auto member = node.FindMember(name);
|
||||||
if (member != node.MemberEnd() && member->value.IsInt())
|
if (member != node.MemberEnd() && member->value.IsInt())
|
||||||
{
|
{
|
||||||
result = member->value.GetInt();
|
result = (byte)member->value.GetInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,7 +232,7 @@ public:
|
|||||||
const auto member = node.FindMember(name);
|
const auto member = node.FindMember(name);
|
||||||
if (member != node.MemberEnd() && member->value.IsInt())
|
if (member != node.MemberEnd() && member->value.IsInt())
|
||||||
{
|
{
|
||||||
result = member->value.GetInt();
|
result = (uint32)member->value.GetInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,7 +241,7 @@ public:
|
|||||||
const auto member = node.FindMember(name);
|
const auto member = node.FindMember(name);
|
||||||
if (member != node.MemberEnd() && member->value.IsInt())
|
if (member != node.MemberEnd() && member->value.IsInt())
|
||||||
{
|
{
|
||||||
result = member->value.GetInt();
|
result = (int16)member->value.GetInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +250,7 @@ public:
|
|||||||
const auto member = node.FindMember(name);
|
const auto member = node.FindMember(name);
|
||||||
if (member != node.MemberEnd() && member->value.IsInt())
|
if (member != node.MemberEnd() && member->value.IsInt())
|
||||||
{
|
{
|
||||||
result = member->value.GetInt();
|
result = (uint16)member->value.GetInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user