Add nullifyNanAndInf parameter to FBCxxUtils
Summary: There was an issue with syncing our internal files to github. A change was made in the utils that wasn't synced out, despite the sonar code using the new API. This brings the util update to github, while I fix the syncing issue. After that there will be a single source of truth so no more sync issues like this can occur. Reviewed By: priteshrnandgaonkar Differential Revision: D8541128 fbshipit-source-id: d8509b65035569c4ee9707e5d7eab99fa325da88
This commit is contained in:
committed by
Facebook Github Bot
parent
54fa6aa8f2
commit
94f03f182b
@@ -14,7 +14,7 @@
|
|||||||
namespace facebook {
|
namespace facebook {
|
||||||
namespace cxxutils {
|
namespace cxxutils {
|
||||||
|
|
||||||
folly::dynamic convertIdToFollyDynamic(id json);
|
folly::dynamic convertIdToFollyDynamic(id json, bool nullifyNanAndInf = false);
|
||||||
id convertFollyDynamicToId(const folly::dynamic &dyn);
|
id convertFollyDynamicToId(const folly::dynamic &dyn);
|
||||||
|
|
||||||
} }
|
} }
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ id convertFollyDynamicToId(const folly::dynamic &dyn) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
folly::dynamic convertIdToFollyDynamic(id json)
|
folly::dynamic convertIdToFollyDynamic(id json, bool nullifyNanAndInf)
|
||||||
{
|
{
|
||||||
if (json == nil || json == (id)kCFNull) {
|
if (json == nil || json == (id)kCFNull) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@@ -63,7 +63,11 @@ folly::dynamic convertIdToFollyDynamic(id json)
|
|||||||
if ([json isKindOfClass:[@YES class]]) {
|
if ([json isKindOfClass:[@YES class]]) {
|
||||||
return (bool) [json boolValue];
|
return (bool) [json boolValue];
|
||||||
} else {
|
} else {
|
||||||
return [json longLongValue];
|
const auto value = [json longLongValue];
|
||||||
|
if (nullifyNanAndInf && (isnan(value) || isinf(value))) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
case _C_UCHR:
|
case _C_UCHR:
|
||||||
case _C_SHT:
|
case _C_SHT:
|
||||||
@@ -73,12 +77,22 @@ folly::dynamic convertIdToFollyDynamic(id json)
|
|||||||
case _C_LNG:
|
case _C_LNG:
|
||||||
case _C_ULNG:
|
case _C_ULNG:
|
||||||
case _C_LNG_LNG:
|
case _C_LNG_LNG:
|
||||||
case _C_ULNG_LNG:
|
case _C_ULNG_LNG: {
|
||||||
return [json longLongValue];
|
const auto value = [json longLongValue];
|
||||||
|
if (nullifyNanAndInf && (isnan(value) || isinf(value))) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
case _C_FLT:
|
case _C_FLT:
|
||||||
case _C_DBL:
|
case _C_DBL: {
|
||||||
return [json doubleValue];
|
const auto value = [json doubleValue];
|
||||||
|
if (nullifyNanAndInf && (isnan(value) || isinf(value))) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
// default:
|
// default:
|
||||||
// fall through
|
// fall through
|
||||||
@@ -90,15 +104,15 @@ folly::dynamic convertIdToFollyDynamic(id json)
|
|||||||
} else if ([json isKindOfClass:[NSArray class]]) {
|
} else if ([json isKindOfClass:[NSArray class]]) {
|
||||||
folly::dynamic array = folly::dynamic::array;
|
folly::dynamic array = folly::dynamic::array;
|
||||||
for (id element in json) {
|
for (id element in json) {
|
||||||
array.push_back(convertIdToFollyDynamic(element));
|
array.push_back(convertIdToFollyDynamic(element, nullifyNanAndInf));
|
||||||
}
|
}
|
||||||
return array;
|
return array;
|
||||||
} else if ([json isKindOfClass:[NSDictionary class]]) {
|
} else if ([json isKindOfClass:[NSDictionary class]]) {
|
||||||
__block folly::dynamic object = folly::dynamic::object();
|
__block folly::dynamic object = folly::dynamic::object();
|
||||||
|
|
||||||
[json enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *value, __unused BOOL *stop) {
|
[json enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *value, __unused BOOL *stop) {
|
||||||
object.insert(convertIdToFollyDynamic(key),
|
object.insert(convertIdToFollyDynamic(key, nullifyNanAndInf),
|
||||||
convertIdToFollyDynamic(value));
|
convertIdToFollyDynamic(value, nullifyNanAndInf));
|
||||||
}];
|
}];
|
||||||
|
|
||||||
return object;
|
return object;
|
||||||
|
|||||||
Reference in New Issue
Block a user