diff --git a/Handbook/src/appendix/changelog.md b/Handbook/src/appendix/changelog.md index 7dc1b758..80088919 100644 --- a/Handbook/src/appendix/changelog.md +++ b/Handbook/src/appendix/changelog.md @@ -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. \ No newline at end of file +- Initial public release of the SenseGlove haptic API for Unreal Engine with support for Microsoft Windows and GNU/Linux. diff --git a/Source/SenseGloveLog/Public/SGLog/SGLog.h b/Source/SenseGloveLog/Public/SGLog/SGLog.h index 507536df..aabbe49c 100644 --- a/Source/SenseGloveLog/Public/SGLog/SGLog.h +++ b/Source/SenseGloveLog/Public/SGLog/SGLog.h @@ -96,7 +96,7 @@ struct TFSGLogString { 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 { 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 { static void Format(const char* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(UTF8_TO_TCHAR(Value)); } }; @@ -123,7 +123,7 @@ struct TFSGLogString { static void Format(const char* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(UTF8_TO_TCHAR(Value)); } }; @@ -132,7 +132,7 @@ struct TFSGLogString { static void Format(const char* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(UTF8_TO_TCHAR(Value)); } }; @@ -141,61 +141,52 @@ struct TFSGLogString { static void Format(const char* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(UTF8_TO_TCHAR(Value)); } }; -#if ! PLATFORM_ANDROID && PLATFORM_LINUX - -template< std::size_t L> +template struct TFSGLogString { static void Format(const char16_t* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(StringCast(Value).Get()); } }; -template< std::size_t L> +template struct TFSGLogString { static void Format(const char16_t* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(StringCast(Value).Get()); } }; -template <> +template<> struct TFSGLogString { static void Format(const char16_t* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(StringCast(Value).Get()); } }; -template <> +template<> struct TFSGLogString { static void Format(const char16_t* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(StringCast(Value).Get()); } }; -#endif /* ! PLATFORM_ANDROID && PLATFORM_LINUX */ - template<> struct TFSGLogString { 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(String.c_str()).Get()); + OutString = LexToString(Value); } }; @@ -204,12 +195,7 @@ struct TFSGLogString { 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(String.c_str()).Get()); + OutString = LexToString(Value); } }; @@ -218,7 +204,7 @@ struct TFSGLogString { static void Format(const float Value, FString& OutString) { - OutString = FString::SanitizeFloat(StaticCast(Value), 1); + OutString = LexToString(Value); } }; @@ -227,7 +213,7 @@ struct TFSGLogString { static void Format(const float Value, FString& OutString) { - OutString = FString::SanitizeFloat(StaticCast(Value), 1); + OutString = LexToString(Value); } }; @@ -236,7 +222,7 @@ struct TFSGLogString { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { static void Format(const int8 Value, FString& OutString) { - OutString = FString::Printf(TEXT("%d"), Value); + OutString = LexToString(Value); } }; @@ -353,7 +339,7 @@ struct TFSGLogString { static void Format(const int8 Value, FString& OutString) { - OutString = FString::Printf(TEXT("%d"), Value); + OutString = LexToString(Value); } }; @@ -362,7 +348,7 @@ struct TFSGLogString { static void Format(const int16 Value, FString& OutString) { - OutString = FString::Printf(TEXT("%d"), Value); + OutString = LexToString(Value); } }; @@ -371,7 +357,7 @@ struct TFSGLogString { static void Format(const int16 Value, FString& OutString) { - OutString = FString::Printf(TEXT("%d"), Value); + OutString = LexToString(Value); } }; @@ -380,7 +366,7 @@ struct TFSGLogString { static void Format(const int32 Value, FString& OutString) { - OutString = FString::FromInt(Value); + OutString = LexToString(Value); } }; @@ -389,7 +375,7 @@ struct TFSGLogString { static void Format(const int32 Value, FString& OutString) { - OutString = FString::FromInt(Value); + OutString = LexToString(Value); } }; @@ -398,7 +384,7 @@ struct TFSGLogString { static void Format(const int64 Value, FString& OutString) { - OutString = FString::Printf(TEXT("%d"), Value); + OutString = LexToString(Value); } }; @@ -407,7 +393,7 @@ struct TFSGLogString { static void Format(const int64 Value, FString& OutString) { - OutString = FString::Printf(TEXT("%d"), Value); + OutString = LexToString(Value); } }; @@ -416,12 +402,9 @@ struct TFSGLogString { 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(String.c_str()).Get()); + OutString = FString(UTF8_TO_TCHAR(Buffer)); } }; @@ -430,106 +413,99 @@ struct TFSGLogString { 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(String.c_str()).Get()); + OutString = FString(UTF8_TO_TCHAR(Buffer)); } }; -#if ! PLATFORM_ANDROID && PLATFORM_LINUX template<> struct TFSGLogString { 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 { 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { static void Format(const std::string& Value, FString& OutString) { - OutString = FString(StringCast(Value.c_str()).Get()); + OutString = FString(UTF8_TO_TCHAR(Value.c_str())); } }; @@ -547,7 +523,7 @@ struct TFSGLogString { static void Format(const std::string& Value, FString& OutString) { - OutString = FString(StringCast(Value.c_str()).Get()); + OutString = FString(UTF8_TO_TCHAR(Value.c_str())); } }; @@ -556,7 +532,7 @@ struct TFSGLogString { static void Format(const wchar_t* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(StringCast(Value).Get()); } }; @@ -565,7 +541,7 @@ struct TFSGLogString { static void Format(const wchar_t* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(StringCast(Value).Get()); } }; @@ -574,7 +550,7 @@ struct TFSGLogString { static void Format(const wchar_t* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(StringCast(Value).Get()); } }; @@ -583,7 +559,7 @@ struct TFSGLogString { static void Format(const wchar_t* Value, FString& OutString) { - OutString = FString(StringCast(Value).Get()); + OutString = FString(StringCast(Value).Get()); } }; @@ -592,7 +568,7 @@ struct TFSGLogString { static void Format(const std::wstring& Value, FString& OutString) { - OutString = FString(StringCast(Value.c_str()).Get()); + OutString = FString(StringCast(Value.data(), Value.size()).Get(), Value.size()); } }; @@ -601,7 +577,7 @@ struct TFSGLogString { static void Format(const std::wstring& Value, FString& OutString) { - OutString = FString(StringCast(Value.c_str()).Get()); + OutString = FString(StringCast(Value.data(), Value.size()).Get(), Value.size()); } };