fix type conversion safety and consistency issues across all sglog formatters
This commit is contained in:
@@ -21,6 +21,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
### Fixed
|
||||
|
||||
- Resolved GNU/Linux build issues for Unreal Engine `5.5` and `5.6` caused by incorrect linkage to GNU/GCC's `libstdc++` instead of LLVM/Clang's `libc++`.
|
||||
- Fix `SGLog` build issues on GNU/Linux with UE `5.6`.
|
||||
- Fix type conversion safety and consistency issues across all `SGLog` formatters.
|
||||
|
||||
### Removed
|
||||
|
||||
@@ -955,4 +957,4 @@ This is a minor release focusing on adherence to the Unreal Engine Marketplace G
|
||||
|
||||
### Added
|
||||
|
||||
- Initial public release of the SenseGlove haptic API for Unreal Engine with support for Microsoft Windows and GNU/Linux.
|
||||
- Initial public release of the SenseGlove haptic API for Unreal Engine with support for Microsoft Windows and GNU/Linux.
|
||||
|
||||
@@ -96,7 +96,7 @@ struct TFSGLogString<const bool>
|
||||
{
|
||||
static void Format(const bool Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), (Value ? TEXT("True") : TEXT("False")));
|
||||
OutString = Value ? TEXT("True") : TEXT("False");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -105,7 +105,7 @@ struct TFSGLogString<bool>
|
||||
{
|
||||
static void Format(const bool Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), (Value ? TEXT("True") : TEXT("False")));
|
||||
OutString = Value ? TEXT("True") : TEXT("False");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -114,7 +114,7 @@ struct TFSGLogString<const char[L]>
|
||||
{
|
||||
static void Format(const char* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(UTF8_TO_TCHAR(Value));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -123,7 +123,7 @@ struct TFSGLogString<char[L]>
|
||||
{
|
||||
static void Format(const char* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(UTF8_TO_TCHAR(Value));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -132,7 +132,7 @@ struct TFSGLogString<const char*>
|
||||
{
|
||||
static void Format(const char* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(UTF8_TO_TCHAR(Value));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -141,61 +141,52 @@ struct TFSGLogString<char*>
|
||||
{
|
||||
static void Format(const char* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(UTF8_TO_TCHAR(Value));
|
||||
}
|
||||
};
|
||||
|
||||
#if ! PLATFORM_ANDROID && PLATFORM_LINUX
|
||||
|
||||
template< std::size_t L>
|
||||
template<std::size_t L>
|
||||
struct TFSGLogString<const char16_t[L]>
|
||||
{
|
||||
static void Format(const char16_t* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value).Get());
|
||||
}
|
||||
};
|
||||
|
||||
template< std::size_t L>
|
||||
template<std::size_t L>
|
||||
struct TFSGLogString<char16_t[L]>
|
||||
{
|
||||
static void Format(const char16_t* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value).Get());
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
template<>
|
||||
struct TFSGLogString<const char16_t*>
|
||||
{
|
||||
static void Format(const char16_t* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value).Get());
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
template<>
|
||||
struct TFSGLogString<char16_t*>
|
||||
{
|
||||
static void Format(const char16_t* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value).Get());
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* ! PLATFORM_ANDROID && PLATFORM_LINUX */
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<const double>
|
||||
{
|
||||
static void Format(const double Value, FString& OutString)
|
||||
{
|
||||
char Buffer[100];
|
||||
std::snprintf(Buffer, sizeof(Buffer), "%f", Value);
|
||||
|
||||
std::string String(Buffer);
|
||||
|
||||
OutString = FString(StringCast<WIDECHAR>(String.c_str()).Get());
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -204,12 +195,7 @@ struct TFSGLogString<double>
|
||||
{
|
||||
static void Format(const double Value, FString& OutString)
|
||||
{
|
||||
char Buffer[100];
|
||||
std::snprintf(Buffer, sizeof(Buffer), "%f", Value);
|
||||
|
||||
std::string String(Buffer);
|
||||
|
||||
OutString = FString(StringCast<WIDECHAR>(String.c_str()).Get());
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -218,7 +204,7 @@ struct TFSGLogString<const float>
|
||||
{
|
||||
static void Format(const float Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::SanitizeFloat(StaticCast<double>(Value), 1);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -227,7 +213,7 @@ struct TFSGLogString<float>
|
||||
{
|
||||
static void Format(const float Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::SanitizeFloat(StaticCast<double>(Value), 1);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -236,7 +222,7 @@ struct TFSGLogString<const FName>
|
||||
{
|
||||
static void Format(const FName& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -245,7 +231,7 @@ struct TFSGLogString<FName>
|
||||
{
|
||||
static void Format(const FName& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -254,7 +240,7 @@ struct TFSGLogString<const FQuat>
|
||||
{
|
||||
static void Format(const FQuat& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -263,7 +249,7 @@ struct TFSGLogString<FQuat>
|
||||
{
|
||||
static void Format(const FQuat& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -272,7 +258,7 @@ struct TFSGLogString<const FRotator>
|
||||
{
|
||||
static void Format(const FRotator& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -281,7 +267,7 @@ struct TFSGLogString<FRotator>
|
||||
{
|
||||
static void Format(const FRotator& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -308,7 +294,7 @@ struct TFSGLogString<const FTransform>
|
||||
{
|
||||
static void Format(const FTransform& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -317,7 +303,7 @@ struct TFSGLogString<FTransform>
|
||||
{
|
||||
static void Format(const FTransform& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -326,7 +312,7 @@ struct TFSGLogString<const FVector>
|
||||
{
|
||||
static void Format(const FVector& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -335,7 +321,7 @@ struct TFSGLogString<FVector>
|
||||
{
|
||||
static void Format(const FVector& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData());
|
||||
OutString = Value.ToString();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -344,7 +330,7 @@ struct TFSGLogString<const int8>
|
||||
{
|
||||
static void Format(const int8 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -353,7 +339,7 @@ struct TFSGLogString<int8>
|
||||
{
|
||||
static void Format(const int8 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -362,7 +348,7 @@ struct TFSGLogString<const int16>
|
||||
{
|
||||
static void Format(const int16 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -371,7 +357,7 @@ struct TFSGLogString<int16>
|
||||
{
|
||||
static void Format(const int16 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -380,7 +366,7 @@ struct TFSGLogString<const int32>
|
||||
{
|
||||
static void Format(const int32 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::FromInt(Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -389,7 +375,7 @@ struct TFSGLogString<int32>
|
||||
{
|
||||
static void Format(const int32 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::FromInt(Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -398,7 +384,7 @@ struct TFSGLogString<const int64>
|
||||
{
|
||||
static void Format(const int64 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -407,7 +393,7 @@ struct TFSGLogString<int64>
|
||||
{
|
||||
static void Format(const int64 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -416,12 +402,9 @@ struct TFSGLogString<const long double>
|
||||
{
|
||||
static void Format(const long double Value, FString& OutString)
|
||||
{
|
||||
char Buffer[100];
|
||||
char Buffer[128];
|
||||
std::snprintf(Buffer, sizeof(Buffer), "%Lf", Value);
|
||||
|
||||
std::string String(Buffer);
|
||||
|
||||
OutString = FString(StringCast<WIDECHAR>(String.c_str()).Get());
|
||||
OutString = FString(UTF8_TO_TCHAR(Buffer));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -430,106 +413,99 @@ struct TFSGLogString<long double>
|
||||
{
|
||||
static void Format(const long double Value, FString& OutString)
|
||||
{
|
||||
char Buffer[100];
|
||||
char Buffer[128];
|
||||
std::snprintf(Buffer, sizeof(Buffer), "%Lf", Value);
|
||||
|
||||
std::string String(Buffer);
|
||||
|
||||
OutString = FString(StringCast<WIDECHAR>(String.c_str()).Get());
|
||||
OutString = FString(UTF8_TO_TCHAR(Buffer));
|
||||
}
|
||||
};
|
||||
|
||||
#if ! PLATFORM_ANDROID && PLATFORM_LINUX
|
||||
template<>
|
||||
struct TFSGLogString<const std::size_t>
|
||||
{
|
||||
static void Format(const std::size_t Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
#endif /* ! PLATFORM_ANDROID && PLATFORM_LINUX */
|
||||
|
||||
#if ! PLATFORM_ANDROID && PLATFORM_LINUX
|
||||
template <>
|
||||
template<>
|
||||
struct TFSGLogString<std::size_t>
|
||||
{
|
||||
static void Format(const std::size_t Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
#endif /* ! PLATFORM_ANDROID && PLATFORM_LINUX */
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<const uint8>
|
||||
{
|
||||
static void Format(const int8 Value, FString& OutString)
|
||||
static void Format(const uint8 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<uint8>
|
||||
{
|
||||
static void Format(const int8 Value, FString& OutString)
|
||||
static void Format(const uint8 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<const uint16>
|
||||
{
|
||||
static void Format(const int16 Value, FString& OutString)
|
||||
static void Format(const uint16 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<uint16>
|
||||
{
|
||||
static void Format(const int16 Value, FString& OutString)
|
||||
static void Format(const uint16 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<const uint32>
|
||||
{
|
||||
static void Format(const int32 Value, FString& OutString)
|
||||
static void Format(const uint32 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<uint32>
|
||||
{
|
||||
static void Format(const int32 Value, FString& OutString)
|
||||
static void Format(const uint32 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<const uint64>
|
||||
{
|
||||
static void Format(const int64 Value, FString& OutString)
|
||||
static void Format(const uint64 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct TFSGLogString<uint64>
|
||||
{
|
||||
static void Format(const int64 Value, FString& OutString)
|
||||
static void Format(const uint64 Value, FString& OutString)
|
||||
{
|
||||
OutString = FString::Printf(TEXT("%d"), Value);
|
||||
OutString = LexToString(Value);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -538,7 +514,7 @@ struct TFSGLogString<const std::string>
|
||||
{
|
||||
static void Format(const std::string& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value.c_str()).Get());
|
||||
OutString = FString(UTF8_TO_TCHAR(Value.c_str()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -547,7 +523,7 @@ struct TFSGLogString<std::string>
|
||||
{
|
||||
static void Format(const std::string& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value.c_str()).Get());
|
||||
OutString = FString(UTF8_TO_TCHAR(Value.c_str()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -556,7 +532,7 @@ struct TFSGLogString<const wchar_t[L]>
|
||||
{
|
||||
static void Format(const wchar_t* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value).Get());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -565,7 +541,7 @@ struct TFSGLogString<wchar_t[L]>
|
||||
{
|
||||
static void Format(const wchar_t* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value).Get());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -574,7 +550,7 @@ struct TFSGLogString<const wchar_t*>
|
||||
{
|
||||
static void Format(const wchar_t* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value).Get());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -583,7 +559,7 @@ struct TFSGLogString<wchar_t*>
|
||||
{
|
||||
static void Format(const wchar_t* Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value).Get());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -592,7 +568,7 @@ struct TFSGLogString<const std::wstring>
|
||||
{
|
||||
static void Format(const std::wstring& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value.c_str()).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value.data(), Value.size()).Get(), Value.size());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -601,7 +577,7 @@ struct TFSGLogString<std::wstring>
|
||||
{
|
||||
static void Format(const std::wstring& Value, FString& OutString)
|
||||
{
|
||||
OutString = FString(StringCast<WIDECHAR>(Value.c_str()).Get());
|
||||
OutString = FString(StringCast<TCHAR>(Value.data(), Value.size()).Get(), Value.size());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user