81 template <UE::CIntegral IntegralType>
115 if constexpr (std::is_same_v<T, int8> || std::is_same_v<T, int16> || std::is_same_v<T, int32> || std::is_same_v<T, int64>)
118 #pragma warning (push)
119 #pragma warning (disable : 4146)
124 #pragma warning (pop)
127 else if constexpr (std::is_same_v<T, uint8> || std::is_same_v<T, uint16> || std::is_same_v<T, uint32> || std::is_same_v<T, uint64>)
131 else if constexpr (std::is_same_v<T, float> || std::is_same_v<T, double>)
137 static_assert(
sizeof(T) == 0,
"Not supported");
149#define FAST_DECIMAL_PARSE_INTEGER_IMPL(NUMBER_TYPE) \
150 inline bool StringToNumber(const TCHAR* InStr, const int32 InStrLen, const FDecimalNumberFormattingRules& InFormattingRules, const FNumberParsingOptions& InParsingOptions, NUMBER_TYPE& OutVal, int32* OutParsedLen = nullptr) \
152 bool bIsNegative = false; \
154 const bool bResult = Internal::StringToIntegral(InStr, InStrLen, InFormattingRules, InParsingOptions, Internal::FDecimalNumberIntegralLimits::FromNumericLimits<NUMBER_TYPE>(), bIsNegative, Val, OutParsedLen); \
155 OutVal = static_cast<NUMBER_TYPE>(Val); \
156 OutVal *= (bIsNegative ? -1 : 1); \
159 UE_FORCEINLINE_HINT bool StringToNumber(const TCHAR* InStr, const FDecimalNumberFormattingRules& InFormattingRules, const FNumberParsingOptions& InParsingOptions, NUMBER_TYPE& OutVal, int32* OutParsedLen = nullptr) \
161 return StringToNumber(InStr, FCString::Strlen(InStr), InFormattingRules, InParsingOptions, OutVal, OutParsedLen); \
164#define FAST_DECIMAL_PARSE_FRACTIONAL_IMPL(NUMBER_TYPE) \
165 inline bool StringToNumber(const TCHAR* InStr, const int32 InStrLen, const FDecimalNumberFormattingRules& InFormattingRules, const FNumberParsingOptions& InParsingOptions, NUMBER_TYPE& OutVal, int32* OutParsedLen = nullptr) \
168 const bool bResult = Internal::StringToFractional(InStr, InStrLen, InFormattingRules, InParsingOptions, Internal::FDecimalNumberFractionalLimits::FromNumericLimits<NUMBER_TYPE>(), Val, OutParsedLen); \
169 OutVal = static_cast<NUMBER_TYPE>(Val); \
172 UE_FORCEINLINE_HINT bool StringToNumber(const TCHAR* InStr, const FDecimalNumberFormattingRules& InFormattingRules, const FNumberParsingOptions& InParsingOptions, NUMBER_TYPE& OutVal, int32* OutParsedLen = nullptr) \
174 return StringToNumber(InStr, FCString::Strlen(InStr), InFormattingRules, InParsingOptions, OutVal, OutParsedLen); \
190#undef FAST_DECIMAL_PARSE_INTEGER_IMPL
191#undef FAST_DECIMAL_PARSE_FRACTIONAL_IMPL
206#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_REQUIRES(...)
Definition Requires.h:86
Definition NumericLimits.h:41