Make Value ctor explicit

Signed-off-by: Nicholas Van Sickle <nvsickle@amazon.com>
This commit is contained in:
Nicholas Van Sickle
2022-01-06 16:48:07 -08:00
parent d347a9d2c0
commit e7f573d22a
4 changed files with 44 additions and 76 deletions
@@ -969,16 +969,6 @@ namespace AZ::Dom
m_value = value;
}
int32_t Value::GetInt32() const
{
return aznumeric_cast<int32_t>(GetInt64());
}
void Value::SetInt32(int32_t value)
{
m_value = aznumeric_cast<int64_t>(value);
}
uint64_t Value::GetUint64() const
{
switch (m_value.index())
@@ -999,16 +989,6 @@ namespace AZ::Dom
m_value = value;
}
uint32_t Value::GetUint32() const
{
return aznumeric_cast<uint32_t>(GetUint64());
}
void Value::SetUint32(uint32_t value)
{
m_value = aznumeric_cast<uint64_t>(value);
}
bool Value::GetBool() const
{
if (IsBool())
@@ -1044,16 +1024,6 @@ namespace AZ::Dom
m_value = value;
}
float Value::GetFloat() const
{
return aznumeric_cast<float>(GetDouble());
}
void Value::SetFloat(float value)
{
m_value = aznumeric_cast<double>(value);
}
void Value::SetString(SharedStringType sharedString)
{
m_value = sharedString;
+23 -26
View File
@@ -198,28 +198,39 @@ namespace AZ::Dom
Value(const Value&);
Value(Value&&) noexcept;
Value(AZStd::string_view stringView, bool copy);
Value(SharedStringType sharedString);
explicit Value(const ValueType&);
explicit Value(ValueType&&);
explicit Value(SharedStringType sharedString);
Value(int8_t value);
Value(uint8_t value);
Value(int16_t value);
Value(uint16_t value);
Value(int32_t value);
Value(uint32_t value);
Value(int64_t value);
Value(uint64_t value);
Value(float value);
Value(double value);
Value(bool value);
explicit Value(int8_t value);
explicit Value(uint8_t value);
explicit Value(int16_t value);
explicit Value(uint16_t value);
explicit Value(int32_t value);
explicit Value(uint32_t value);
explicit Value(int64_t value);
explicit Value(uint64_t value);
explicit Value(float value);
explicit Value(double value);
explicit Value(bool value);
explicit Value(Type type);
template<class T>
explicit Value(T, AZStd::enable_if_t<AZStd::is_pointer_v<T>>* enabled = 0) = delete;
static Value FromOpaqueValue(const AZStd::any& value);
// Equality / comparison / swap...
Value& operator=(const Value&);
Value& operator=(Value&&) noexcept;
template <class T>
Value& operator=(T value)
{
return operator=(Value(value));
}
bool operator==(const Value& rhs) const;
bool operator!=(const Value& rhs) const;
@@ -330,22 +341,10 @@ namespace AZ::Dom
// int API...
int64_t GetInt64() const;
void SetInt64(int64_t);
int32_t GetInt32() const;
void SetInt32(int32_t);
int16_t GetInt16() const;
void SetInt16(int16_t);
int8_t GetInt8() const;
void SetInt8(int8_t);
// uint API...
uint64_t GetUint64() const;
void SetUint64(uint64_t);
uint32_t GetUint32() const;
void SetUint32(uint32_t);
uint16_t GetUint16() const;
void SetUint16(uint16_t);
uint8_t GetUint8() const;
void SetUint8(uint8_t);
// bool API...
bool GetBool() const;
@@ -354,8 +353,6 @@ namespace AZ::Dom
// double API...
double GetDouble() const;
void SetDouble(double);
float GetFloat() const;
void SetFloat(float);
// String API...
AZStd::string_view GetString() const;
@@ -66,9 +66,9 @@ namespace AZ::Dom::Benchmark
{
Value entry(Type::Object);
entry.AddMember("string", createString(n));
entry.AddMember("int", n);
entry.AddMember("double", static_cast<double>(n) * 0.5);
entry.AddMember("bool", n % 2 == 0);
entry.AddMember("int", Value(n));
entry.AddMember("double", Value(static_cast<double>(n) * 0.5));
entry.AddMember("bool", Value(n % 2 == 0));
entry.AddMember("null", Value(Type::Null));
return entry;
};
@@ -153,7 +153,7 @@ namespace AZ::Dom::Benchmark
for (auto _ : state)
{
Value copy = original;
copy["entries"]["Key0"].ArrayPushBack(42);
copy["entries"]["Key0"].ArrayPushBack(Value(42));
TakeAndDiscardWithoutTimingDtor(AZStd::move(copy), state);
}
@@ -68,7 +68,7 @@ namespace AZ::Dom::Tests
{
m_value.ArrayPushBack(Value(i));
EXPECT_EQ(m_value.ArraySize(), i + 1);
EXPECT_EQ(m_value[i].GetInt32(), i);
EXPECT_EQ(m_value[i].GetInt64(), i);
}
PerformValueChecks();
@@ -76,6 +76,7 @@ namespace AZ::Dom::Tests
TEST_F(DomValueTests, NestedArrays)
{
Value x(5);
m_value.SetArray();
for (int j = 0; j < 5; ++j)
{
@@ -93,7 +94,7 @@ namespace AZ::Dom::Tests
EXPECT_EQ(m_value[i].ArraySize(), 5);
for (int j = 0; j < 5; ++j)
{
EXPECT_EQ(m_value[i][j].GetInt32(), j);
EXPECT_EQ(m_value[i][j].GetInt64(), j);
}
}
@@ -116,7 +117,7 @@ namespace AZ::Dom::Tests
AZStd::string key = AZStd::string::format("Key%i", i);
m_value.AddMember(key, Value(i));
EXPECT_EQ(m_value.MemberCount(), i + 1);
EXPECT_EQ(m_value[key].GetInt32(), i);
EXPECT_EQ(m_value[key].GetInt64(), i);
}
PerformValueChecks();
@@ -142,7 +143,7 @@ namespace AZ::Dom::Tests
EXPECT_EQ(nestedObject.MemberCount(), 5);
for (int i = 0; i < 5; ++i)
{
EXPECT_EQ(nestedObject[AZStd::string::format("Key%i", i)].GetInt32(), i);
EXPECT_EQ(nestedObject[AZStd::string::format("Key%i", i)].GetInt64(), i);
}
}
@@ -167,14 +168,14 @@ namespace AZ::Dom::Tests
{
m_value.ArrayPushBack(Value(i));
EXPECT_EQ(m_value.ArraySize(), i + 1);
EXPECT_EQ(m_value[i].GetInt32(), i);
EXPECT_EQ(m_value[i].GetInt64(), i);
if (i < 5)
{
AZ::Name key = AZ::Name(AZStd::string::format("TwoTimes%i", i));
m_value.AddMember(key, Value(i * 2));
EXPECT_EQ(m_value.MemberCount(), i + 1);
EXPECT_EQ(m_value[key].GetInt32(), i * 2);
EXPECT_EQ(m_value[key].GetInt64(), i * 2);
}
}
@@ -191,9 +192,9 @@ namespace AZ::Dom::Tests
{
Value childNode(Type::Node);
childNode.SetNodeName(childNodeName);
childNode.SetNodeValue(i);
childNode.SetNodeValue(Value(i));
childNode.AddMember("foo", i);
childNode.AddMember("foo", Value(i));
childNode.AddMember("bar", Value("test", false));
m_value.ArrayPushBack(childNode);
@@ -204,8 +205,8 @@ namespace AZ::Dom::Tests
{
const Value& childNode = m_value[i];
EXPECT_EQ(childNode.GetNodeName(), childNodeName);
EXPECT_EQ(childNode.GetNodeValue().GetInt32(), i);
EXPECT_EQ(childNode["foo"].GetInt32(), i);
EXPECT_EQ(childNode.GetNodeValue().GetInt64(), i);
EXPECT_EQ(childNode["foo"].GetInt64(), i);
EXPECT_EQ(childNode["bar"].GetString(), "test");
}
@@ -334,8 +335,8 @@ namespace AZ::Dom::Tests
TEST_F(DomValueTests, CopyOnWrite_Array)
{
Value v1(Type::Array);
v1.ArrayPushBack(1);
v1.ArrayPushBack(2);
v1.ArrayPushBack(Value(1));
v1.ArrayPushBack(Value(2));
Value nestedArray(Type::Array);
v1.ArrayPushBack(nestedArray);
@@ -349,7 +350,7 @@ namespace AZ::Dom::Tests
EXPECT_NE(&v1.GetArray(), &v2.GetArray());
EXPECT_EQ(&v1.ArrayAt(2).GetArray(), &v2.ArrayAt(2).GetArray());
v2[2].ArrayPushBack(42);
v2[2].ArrayPushBack(Value(42));
EXPECT_NE(&v1.GetArray(), &v2.GetArray());
EXPECT_NE(&v1.ArrayAt(2).GetArray(), &v2.ArrayAt(2).GetArray());
@@ -365,8 +366,8 @@ namespace AZ::Dom::Tests
Value v1;
v1.SetNode("TopLevel");
v1.ArrayPushBack(1);
v1.ArrayPushBack(2);
v1.ArrayPushBack(Value(1));
v1.ArrayPushBack(Value(2));
v1["obj"].SetNode("Nested");
Value v2 = v1;
@@ -378,7 +379,7 @@ namespace AZ::Dom::Tests
EXPECT_NE(&v1.GetNode(), &v2.GetNode());
EXPECT_EQ(&v1["obj"].GetNode(), &v2["obj"].GetNode());
v2["obj"].ArrayPushBack(42);
v2["obj"].ArrayPushBack(Value(42));
EXPECT_NE(&v1.GetNode(), &v2.GetNode());
EXPECT_NE(&v1["obj"].GetNode(), &v2["obj"].GetNode());