UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FormatStringSan.h File Reference

Go to the source code of this file.

Classes

struct  UE::Core::Private::FormatStringSan::TAtArgPos< N >
 
struct  UE::Core::Private::FormatStringSan::FResult
 
struct  UE::Core::Private::FormatStringSan::TCheckFormatString< CharType, Arg, Args... >
 
struct  UE::Core::Private::FormatStringSan::TCheckFormatString< CharType >
 
struct  UE::Core::Private::FormatStringSan::TCheckedFormatStringPrivate< CharType, ArgTypes >
 

Namespaces

namespace  UE
 
namespace  UE::Core
 
namespace  UE::Core::Private
 implementation
 
namespace  UE::Core::Private::FormatStringSan
 

Macros

#define UE_CHECK_FORMAT_STRING(Fmt, ...)
 
#define UE_CHECK_FORMAT_STRING_ERR(Err, Fmt, ...)    (decltype(::UE::Core::Private::FormatStringSan::GetFmtArgCheckerType(Fmt, ##__VA_ARGS__))::Check(false, 0, Fmt).Status == Err)
 
#define UE_VALIDATE_FORMAT_STRING(Format, ...)
 
#define X(Name, Desc)   Name,
 
#define X(Name, Desc)    case EFormatStringSanStatus::Name: static_assert(Err != EFormatStringSanStatus::Name, Desc); break;
 

Typedefs

template<typename FmtType , typename... ArgTypes>
using UE::Core::TCheckedFormatString = ::UE::Core::Private::FormatStringSan::TCheckedFormatStringPrivate< FmtType, TIdentity_T< ArgTypes >... >
 

Enumerations

enum class  UE::Core::Private::FormatStringSan::EFormatStringSanStatus { UE::Core::Private::FormatStringSan::Ok , UE::Core::Private::FormatStringSan::X }
 

Functions

template<EFormatStringSanStatus Err, typename T >
constexpr void UE::Core::Private::FormatStringSan::AssertFormatStatus ()
 
template<typename CharType , typename... Ts>
constexpr TCheckFormatString< CharType, std::decay_t< Ts >... > UE::Core::Private::FormatStringSan::GetFmtArgCheckerType (const CharType *, Ts...)
 
template<typename CharType >
constexpr bool UE::Core::Private::FormatStringSan::CharIsDigit (CharType Char)
 
template<typename CharType >
constexpr const CharType * UE::Core::Private::FormatStringSan::SkipInteger (const CharType *Fmt)
 
template<typename CharType >
constexpr bool UE::Core::Private::FormatStringSan::CharIsIntegerFormatSpecifier (CharType Char)
 

Variables

template<typename T >
constexpr bool UE::Core::Private::FormatStringSan::bIsAConstString
 
template<typename T >
constexpr bool UE::Core::Private::FormatStringSan::TIsFloatOrDouble_V = std::is_same_v<float, T> || std::is_same_v<double, T>
 
template<typename T >
constexpr bool UE::Core::Private::FormatStringSan::TIsIntegralEnum_V = std::is_enum_v<T> || TIsTEnumAsByte_V<T>
 

Macro Definition Documentation

◆ UE_CHECK_FORMAT_STRING

#define UE_CHECK_FORMAT_STRING (   Fmt,
  ... 
)
Value:
do { \
namespace UCFS = ::UE::Core::Private::FormatStringSan; \
using UCFS_FChecker = decltype(UCFS::GetFmtArgCheckerType(Fmt, ##__VA_ARGS__)); \
constexpr UCFS::FResult UCFS_Result = UCFS_FChecker::Check(false, 0, Fmt); \
(UCFS::AssertFormatStatus<UCFS_Result.Status, UCFS::TAtArgPos<UCFS_Result.ArgPos>>()); \
} while(false);
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127

◆ UE_CHECK_FORMAT_STRING_ERR

#define UE_CHECK_FORMAT_STRING_ERR (   Err,
  Fmt,
  ... 
)     (decltype(::UE::Core::Private::FormatStringSan::GetFmtArgCheckerType(Fmt, ##__VA_ARGS__))::Check(false, 0, Fmt).Status == Err)

◆ UE_VALIDATE_FORMAT_STRING

#define UE_VALIDATE_FORMAT_STRING (   Format,
  ... 
)

◆ X [1/2]

#define X (   Name,
  Desc 
)    Name,

◆ X [2/2]