197#define HEADER_GENERATED_DELEGATE_SIGNATURE_SUFFIX TEXT("__DelegateSignature")
200#define FUNC_CONCAT( ... ) __VA_ARGS__
208#define FUNC_DECLARE_DELEGATE( DelegateName, ReturnType, ... ) \
209 typedef TDelegate<ReturnType(__VA_ARGS__)> DelegateName;
212#define FUNC_DECLARE_MULTICAST_DELEGATE( MulticastDelegateName, ReturnType, ... ) \
213 typedef TMulticastDelegate<ReturnType(__VA_ARGS__)> MulticastDelegateName;
216#define FUNC_DECLARE_TS_MULTICAST_DELEGATE( MulticastDelegateName, ReturnType, ... ) \
217 typedef TMulticastDelegate<ReturnType(__VA_ARGS__), FDefaultTSDelegateUserPolicy> MulticastDelegateName;
224#define FUNC_DECLARE_EVENT( OwningType, EventName, ReturnType, ... ) \
225 class EventName : public TMulticastDelegate<ReturnType(__VA_ARGS__)> \
227 friend class OwningType; \
231#define DECLARE_DERIVED_EVENT( OwningType, BaseTypeEvent, EventName ) \
232 class EventName : public BaseTypeEvent { friend class OwningType; };
235#define FUNC_DECLARE_DYNAMIC_DELEGATE( DynamicDelegateClassName, ExecFunction, FuncParamList, FuncParamPassThru, ... ) \
236 class DynamicDelegateClassName : public TBaseDynamicDelegate<FNotThreadSafeDelegateMode, __VA_ARGS__> \
240 DynamicDelegateClassName() \
245 explicit DynamicDelegateClassName( const TScriptDelegate<>& InScriptDelegate ) \
246 : TBaseDynamicDelegate<FNotThreadSafeDelegateMode, __VA_ARGS__>( InScriptDelegate ) \
251 inline void Execute( FuncParamList ) const \
254 checkSlow( IsBound() ); \
255 ExecFunction( FuncParamPassThru ); \
258 inline bool ExecuteIfBound( FuncParamList ) const \
262 ExecFunction( FuncParamPassThru ); \
270#define FUNC_DECLARE_DYNAMIC_DELEGATE_RETVAL(DynamicDelegateRetValClassName, ExecFunction, RetValType, FuncParamList, FuncParamPassThru, ...) \
271 class DynamicDelegateRetValClassName : public TBaseDynamicDelegate<FNotThreadSafeDelegateMode, __VA_ARGS__> \
275 DynamicDelegateRetValClassName() \
280 explicit DynamicDelegateRetValClassName( const TScriptDelegate<>& InScriptDelegate ) \
281 : TBaseDynamicDelegate<FNotThreadSafeDelegateMode, __VA_ARGS__>( InScriptDelegate ) \
286 inline RetValType Execute( FuncParamList ) const \
289 checkSlow( IsBound() ); \
290 return ExecFunction( FuncParamPassThru ); \
296#define FUNC_DECLARE_DYNAMIC_MULTICAST_DELEGATE(DynamicMulticastDelegateClassName, ExecFunction, FuncParamList, FuncParamPassThru, ...) \
297class DynamicMulticastDelegateClassName : public TBaseDynamicMulticastDelegate<FNotThreadSafeDelegateMode, __VA_ARGS__> \
301 DynamicMulticastDelegateClassName() \
306 explicit DynamicMulticastDelegateClassName( const TMulticastScriptDelegate<>& InMulticastScriptDelegate ) \
307 : TBaseDynamicMulticastDelegate<FNotThreadSafeDelegateMode, __VA_ARGS__>( InMulticastScriptDelegate ) \
312 void Broadcast( FuncParamList ) const \
314 ExecFunction( FuncParamPassThru ); \
319#define ENABLE_STATIC_FUNCTION_FNAMES (PLATFORM_COMPILER_CLANG && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 5)))
321#if ENABLE_STATIC_FUNCTION_FNAMES
325 template <
typename T>
329 template <
bool Dummy, T... Chars>
335 typedef typename TTypedImpl<T>::template
Inner<
true, Chars...>::Type Type;
338 template <T... Chars>
344 template <
bool Dummy, T
Char, T... Chars>
347 typedef typename Inner<
Dummy, Chars...>::Type Type;
350 template <
bool Dummy, T... Chars>
353 typedef typename Inner2<
typename Inner<
Dummy, Chars...>::Type, Chars...>::Type Type;
358 template <
bool Dummy>
366 template <
typename IntSeq>
369 template <
typename T, T... Chars>
374 static const T Str[
sizeof...(Chars) + 1] = { Chars..., 0 };
375 FName* Result =
nullptr;
391 template <
typename T>
394 template <
typename T, T... Chars>
397 typedef typename NStrAfterLastDoubleColon_Private::TTypedImpl<T>::template
Inner<
true, Chars...>::Type Type;
404 template <
typename T, T... Chars>
410 #define STATIC_FUNCTION_FNAME(str) NStrAfterLastDoubleColon_Private::TStaticFNameFromCharSequence<typename NStrAfterLastDoubleColon_Private::TStrAfterLastDoubleColon<decltype(PREPROCESSOR_JOIN(str, _intseq))>::Type>::Get()
414 #define STATIC_FUNCTION_FNAME(str) UE::Delegates::Private::GetTrimmedMemberFunctionName(str)
425#define BindDynamic( UserObject, FuncName ) __Internal_BindDynamic( UserObject, FuncName, STATIC_FUNCTION_FNAME( #FuncName ) )
433#define AddDynamic( UserObject, FuncName ) __Internal_AddDynamic( UserObject, FuncName, STATIC_FUNCTION_FNAME( #FuncName ) )
441#define AddUniqueDynamic( UserObject, FuncName ) __Internal_AddUniqueDynamic( UserObject, FuncName, STATIC_FUNCTION_FNAME( #FuncName ) )
449#define RemoveDynamic( UserObject, FuncName ) __Internal_RemoveDynamic( UserObject, FuncName, STATIC_FUNCTION_FNAME( #FuncName ) )
457#define IsAlreadyBound( UserObject, FuncName ) __Internal_IsAlreadyBound( UserObject, FuncName, STATIC_FUNCTION_FNAME( #FuncName ) )
475 return FName(Result + 2);
483#define __Delegate_h__
484#define FUNC_INCLUDING_INLINE_IMPL
494#undef FUNC_INCLUDING_INLINE_IMPL
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE(DelegateName)
Definition DelegateCombinations.h:20
#define DECLARE_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:23
#define DECLARE_TS_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:26
Definition NameTypes.h:617
Definition DelegateHandle.cpp:9
FName GetTrimmedMemberFunctionName(const ANSICHAR *InMacroFunctionName)
Definition Delegate.h:469
static UE_FORCEINLINE_HINT const CharType * Strrstr(const CharType *String, const CharType *Find)
Definition CString.h:1102
Definition IntegerSequence.h:9