Ark Server API (ASA) - Wiki
Loading...
Searching...
No Matches
ObjectPtr_Private Namespace Reference

Classes

struct  Friend
 
struct  TRawPointerType
 
struct  TRawPointerType< const TObjectPtr< T > >
 
struct  TRawPointerType< const volatile TObjectPtr< T > >
 
struct  TRawPointerType< TObjectPtr< T > >
 
struct  TRawPointerType< volatile TObjectPtr< T > >
 

Functions

template<typename T >
FORCEINLINE const TCoerceToPointer (const T *Other)
 
template<typename T , typename U , typename CommonPointerType = decltype(std::declval<bool>() ? std::declval<const T*>() : std::declval<U>()), std::enable_if_t< std::is_pointer< CommonPointerType >::value > * = nullptr>
FORCEINLINE auto CoerceToPointer (U &&Other) -> CommonPointerType
 
template<typename T , typename U , std::enable_if_t< !TIsTObjectPtr< std::decay_t< U > >::Value, decltype(std::declval< U >().Get()) > * = nullptr>
FORCEINLINE auto CoerceToPointer (U &&Other) -> decltype(std::declval< U >().Get())
 
template<typename T , typename U >
bool IsObjectPtrEqualToRawPtrOfRelatedType (const TObjectPtr< T > &Ptr, const U *Other)
 
template<typename T , typename U , std::enable_if_t< !TIsTObjectPtr< std::decay_t< U > >::Value, decltype(CoerceToPointer< T >(std::declval< U >())==std::declval< const T * >()) > * = nullptr>
bool IsObjectPtrEqual (const TObjectPtr< T > &Ptr, U &&Other)
 
template<typename T , int = sizeof(T)>
char(& ResolveTypeIsComplete (int))[2]
 
template<typename T >
char(& ResolveTypeIsComplete (...))[1]
 

Function Documentation

◆ CoerceToPointer() [1/3]

template<typename T >
FORCEINLINE const T * ObjectPtr_Private::CoerceToPointer ( const T * Other)

Coerce to pointer through implicit conversion to const T* (overload through less specific "const T*" parameter to avoid ambiguity with other coercion options that may also exist.

Definition at line 379 of file ObjectPtr.h.

◆ CoerceToPointer() [2/3]

template<typename T , typename U , typename CommonPointerType = decltype(std::declval<bool>() ? std::declval<const T*>() : std::declval<U>()), std::enable_if_t< std::is_pointer< CommonPointerType >::value > * = nullptr>
FORCEINLINE auto ObjectPtr_Private::CoerceToPointer ( U && Other) -> CommonPointerType

Coerce to pointer through implicit conversion to CommonPointerType where CommonPointerType is deduced, and must be a C++ pointer, not a wrapper type.

Definition at line 407 of file ObjectPtr.h.

◆ CoerceToPointer() [3/3]

template<typename T , typename U , std::enable_if_t< !TIsTObjectPtr< std::decay_t< U > >::Value, decltype(std::declval< U >().Get()) > * = nullptr>
FORCEINLINE auto ObjectPtr_Private::CoerceToPointer ( U && Other) -> decltype(std::declval<U>().Get())

Coerce to pointer through the use of a ".Get()" member, which is the convention within Unreal smart pointer types.

Definition at line 421 of file ObjectPtr.h.

◆ IsObjectPtrEqual()

template<typename T , typename U , std::enable_if_t< !TIsTObjectPtr< std::decay_t< U > >::Value, decltype(CoerceToPointer< T >(std::declval< U >())==std::declval< const T * >()) > * = nullptr>
bool ObjectPtr_Private::IsObjectPtrEqual ( const TObjectPtr< T > & Ptr,
U && Other )

Perform shallow equality check between a TObjectPtr and another (non TObjectPtr) type that we can coerce to a pointer.

Definition at line 451 of file ObjectPtr.h.

◆ IsObjectPtrEqualToRawPtrOfRelatedType()

template<typename T , typename U >
bool ObjectPtr_Private::IsObjectPtrEqualToRawPtrOfRelatedType ( const TObjectPtr< T > & Ptr,
const U * Other )

Definition at line 427 of file ObjectPtr.h.

◆ ResolveTypeIsComplete() [1/2]

template<typename T >
char(& ObjectPtr_Private::ResolveTypeIsComplete ( ...) )[1]

◆ ResolveTypeIsComplete() [2/2]

template<typename T , int = sizeof(T)>
char(& ObjectPtr_Private::ResolveTypeIsComplete ( int ) )[2]