aboutsummaryrefslogtreecommitdiff
path: root/src/server/database/Database/Field.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-05-13 15:46:27 +0200
committerShauren <shauren.trinity@gmail.com>2023-08-15 21:59:52 +0200
commita4299c2a4b88d1cbdcea1301a190da6081abf876 (patch)
tree85b194c12b0413b8da3ad554633ddeb0fec98185 /src/server/database/Database/Field.cpp
parentb9201d3c07ecbd690117d248bec238e3657b57b9 (diff)
Core/Misc: Replace string to int conversion functions from Common.h with c++17 std::from_chars based ones Trinity::StringTo
(cherry picked from commit 3260b94dd627b7b0c7114f94bb97d108b005af3e)
Diffstat (limited to 'src/server/database/Database/Field.cpp')
-rw-r--r--src/server/database/Database/Field.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/server/database/Database/Field.cpp b/src/server/database/Database/Field.cpp
index 3713d2855d4..cdcb32c6508 100644
--- a/src/server/database/Database/Field.cpp
+++ b/src/server/database/Database/Field.cpp
@@ -18,7 +18,8 @@
#include "Field.h"
#include "Errors.h"
#include "Log.h"
-#include "MySQLHacks.h"
+#include "StringConvert.h"
+#include <cstring>
Field::Field()
{
@@ -45,7 +46,7 @@ uint8 Field::GetUInt8() const
if (data.raw)
return *reinterpret_cast<uint8 const*>(data.value);
- return static_cast<uint8>(strtoul(data.value, nullptr, 10));
+ return Trinity::StringTo<uint8>(data.value, 10).value_or(0);
}
int8 Field::GetInt8() const
@@ -63,7 +64,7 @@ int8 Field::GetInt8() const
if (data.raw)
return *reinterpret_cast<int8 const*>(data.value);
- return static_cast<int8>(strtol(data.value, nullptr, 10));
+ return Trinity::StringTo<int8>(data.value, 10).value_or(0);
}
uint16 Field::GetUInt16() const
@@ -81,7 +82,7 @@ uint16 Field::GetUInt16() const
if (data.raw)
return *reinterpret_cast<uint16 const*>(data.value);
- return static_cast<uint16>(strtoul(data.value, nullptr, 10));
+ return Trinity::StringTo<uint16>(data.value, 10).value_or(0);
}
int16 Field::GetInt16() const
@@ -99,7 +100,7 @@ int16 Field::GetInt16() const
if (data.raw)
return *reinterpret_cast<int16 const*>(data.value);
- return static_cast<int16>(strtol(data.value, nullptr, 10));
+ return Trinity::StringTo<int16>(data.value, 10).value_or(0);
}
uint32 Field::GetUInt32() const
@@ -117,7 +118,7 @@ uint32 Field::GetUInt32() const
if (data.raw)
return *reinterpret_cast<uint32 const*>(data.value);
- return static_cast<uint32>(strtoul(data.value, nullptr, 10));
+ return Trinity::StringTo<uint32>(data.value, 10).value_or(0);
}
int32 Field::GetInt32() const
@@ -135,7 +136,7 @@ int32 Field::GetInt32() const
if (data.raw)
return *reinterpret_cast<int32 const*>(data.value);
- return static_cast<int32>(strtol(data.value, nullptr, 10));
+ return Trinity::StringTo<int32>(data.value, 10).value_or(0);
}
uint64 Field::GetUInt64() const
@@ -153,7 +154,7 @@ uint64 Field::GetUInt64() const
if (data.raw)
return *reinterpret_cast<uint64 const*>(data.value);
- return static_cast<uint64>(strtoull(data.value, nullptr, 10));
+ return Trinity::StringTo<uint64>(data.value, 10).value_or(0);
}
int64 Field::GetInt64() const
@@ -171,7 +172,7 @@ int64 Field::GetInt64() const
if (data.raw)
return *reinterpret_cast<int64 const*>(data.value);
- return static_cast<int64>(strtoll(data.value, nullptr, 10));
+ return Trinity::StringTo<int64>(data.value, 10).value_or(0);
}
float Field::GetFloat() const
@@ -189,25 +190,25 @@ float Field::GetFloat() const
if (data.raw)
return *reinterpret_cast<float const*>(data.value);
- return static_cast<float>(atof(data.value));
+ return Trinity::StringTo<float>(data.value, 10).value_or(0);
}
double Field::GetDouble() const
{
if (!data.value)
- return 0.0f;
+ return 0.0;
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Double) && !IsType(DatabaseFieldTypes::Decimal))
{
LogWrongType(__FUNCTION__);
- return 0.0f;
+ return 0.0;
}
#endif
if (data.raw && !IsType(DatabaseFieldTypes::Decimal))
return *reinterpret_cast<double const*>(data.value);
- return static_cast<double>(atof(data.value));
+ return Trinity::StringTo<double>(data.value, 10).value_or(0);
}
char const* Field::GetCString() const