ACF $AcfVersion:0$
Public Types | Public Member Functions | Static Public Member Functions | List of all members
istd::TOptInterfacePtr< InterfaceType > Class Template Reference

A wrapper for managed and unmanaged interface pointers. More...

#include <TOptInterfacePtr.h>

Public Types

typedef InterfaceType Interface
 
typedef istd::TUniqueInterfacePtr< InterfaceType > UniqueInterfacePtr
 
typedef istd::TSharedInterfacePtr< InterfaceType > SharedInterfacePtr
 

Public Member Functions

 TOptInterfacePtr (TOptInterfacePtr &&) noexcept=default
 
TOptInterfacePtroperator= (TOptInterfacePtr &&) noexcept=default
 
 TOptInterfacePtr ()=default
 
 TOptInterfacePtr (Interface *unamangedPtr)=delete
 
 TOptInterfacePtr (SharedInterfacePtr managedPtr)
 
 TOptInterfacePtr (UniqueInterfacePtr &managedPtr)
 
void SetUnmanagedPtr (Interface *ptr)
 
void SetManagedPtr (SharedInterfacePtr managedPtr)
 
void AdoptRawPtr (Interface *rawPtr)
 Adopts ownership of a raw pointer.The pointer must be allocated in a manner compatible with SharedInterfacePtr's deleter.
 
template<typename T >
bool AdoptCastedRawPtr (T *rawPtr)
 
template<class T >
bool SetCastedPtr (TSharedInterfacePtr< T > &source)
 
void TakeOver (TOptInterfacePtr &ptr)
 
template<class T >
bool TakeOver (TUniqueInterfacePtr< T > &source)
 
template<class T >
bool TakeOver (TUniqueInterfacePtr< T > &&source)
 
bool IsValid () const
 
bool IsManaged () const
 
bool IsUnmanaged () const
 
void Reset ()
 
template<typename InterfaceCast = InterfaceType>
const InterfaceCast * GetPtr () const
 
template<typename InterfaceCast = InterfaceType>
InterfaceCast * GetPtr ()
 
const Interfaceoperator-> () const
 
Interfaceoperator-> ()
 
const Interfaceoperator* () const
 
Interfaceoperator* ()
 
 TOptInterfacePtr (const TOptInterfacePtr &ptr)
 Copy constructor.
 
TOptInterfacePtroperator= (const TOptInterfacePtr &ptr)
 Assign operator.
 
 operator bool () const noexcept
 

Static Public Member Functions

static TOptInterfacePtr FromUnmanaged (InterfaceType *ptr)
 

Detailed Description

template<class InterfaceType>
class istd::TOptInterfacePtr< InterfaceType >

A wrapper for managed and unmanaged interface pointers.

TOptInterfacePtr is a versatile smart pointer that can hold either:

This is useful in scenarios where:

Key characteristics:

Template Parameters
InterfaceTypeThe interface type to expose.
See also
TUniqueInterfacePtr, TSharedInterfacePtr

Example:

class MyClass
{
public:
// Accept owned pointer
{
m_ptr.SetManagedPtr(ptr);
}
// Accept borrowed pointer
void SetBorrowed(IMyInterface* ptr)
{
m_ptr.SetUnmanagedPtr(ptr);
}
// Check ownership
bool IsOwner() const
{
return m_ptr.IsManaged();
}
};
A wrapper for managed and unmanaged interface pointers.
void SetManagedPtr(SharedInterfacePtr managedPtr)
void SetUnmanagedPtr(Interface *ptr)
Shared ownership smart pointer for interface types.

Definition at line 65 of file TOptInterfacePtr.h.

Member Typedef Documentation

◆ Interface

template<class InterfaceType >
typedef InterfaceType istd::TOptInterfacePtr< InterfaceType >::Interface

Definition at line 68 of file TOptInterfacePtr.h.

◆ SharedInterfacePtr

template<class InterfaceType >
typedef istd::TSharedInterfacePtr<InterfaceType> istd::TOptInterfacePtr< InterfaceType >::SharedInterfacePtr

Definition at line 70 of file TOptInterfacePtr.h.

◆ UniqueInterfacePtr

template<class InterfaceType >
typedef istd::TUniqueInterfacePtr<InterfaceType> istd::TOptInterfacePtr< InterfaceType >::UniqueInterfacePtr

Definition at line 69 of file TOptInterfacePtr.h.

Constructor & Destructor Documentation

◆ TOptInterfacePtr() [1/6]

template<class InterfaceType >
istd::TOptInterfacePtr< InterfaceType >::TOptInterfacePtr ( TOptInterfacePtr< InterfaceType > &&  )
defaultnoexcept

◆ TOptInterfacePtr() [2/6]

template<class InterfaceType >
istd::TOptInterfacePtr< InterfaceType >::TOptInterfacePtr ( )
default

◆ TOptInterfacePtr() [3/6]

template<class InterfaceType >
istd::TOptInterfacePtr< InterfaceType >::TOptInterfacePtr ( Interface unamangedPtr)
delete

◆ TOptInterfacePtr() [4/6]

template<class InterfaceType >
istd::TOptInterfacePtr< InterfaceType >::TOptInterfacePtr ( SharedInterfacePtr  managedPtr)
inlineexplicit

Definition at line 91 of file TOptInterfacePtr.h.

◆ TOptInterfacePtr() [5/6]

template<class InterfaceType >
istd::TOptInterfacePtr< InterfaceType >::TOptInterfacePtr ( UniqueInterfacePtr managedPtr)
inlineexplicit

◆ TOptInterfacePtr() [6/6]

template<class InterfaceType >
istd::TOptInterfacePtr< InterfaceType >::TOptInterfacePtr ( const TOptInterfacePtr< InterfaceType > &  ptr)
inline

Copy constructor.

Definition at line 356 of file TOptInterfacePtr.h.

Member Function Documentation

◆ AdoptCastedRawPtr()

template<class InterfaceType >
template<typename T >
bool istd::TOptInterfacePtr< InterfaceType >::AdoptCastedRawPtr ( T *  rawPtr)
inline

◆ AdoptRawPtr()

template<class InterfaceType >
void istd::TOptInterfacePtr< InterfaceType >::AdoptRawPtr ( Interface rawPtr)
inline

Adopts ownership of a raw pointer.The pointer must be allocated in a manner compatible with SharedInterfacePtr's deleter.

Do NOT pass stack pointers or memory owned elsewhere.

Definition at line 127 of file TOptInterfacePtr.h.

Referenced by istd::TOptInterfacePtr< InterfaceType >::AdoptCastedRawPtr().

◆ FromUnmanaged()

template<class InterfaceType >
static TOptInterfacePtr istd::TOptInterfacePtr< InterfaceType >::FromUnmanaged ( InterfaceType *  ptr)
inlinestatic

◆ GetPtr() [1/2]

template<class InterfaceType >
template<typename InterfaceCast = InterfaceType>
InterfaceCast * istd::TOptInterfacePtr< InterfaceType >::GetPtr ( )
inline

◆ GetPtr() [2/2]

template<class InterfaceType >
template<typename InterfaceCast = InterfaceType>
const InterfaceCast * istd::TOptInterfacePtr< InterfaceType >::GetPtr ( ) const
inline

◆ IsManaged()

template<class InterfaceType >
bool istd::TOptInterfacePtr< InterfaceType >::IsManaged ( ) const
inline

◆ IsUnmanaged()

template<class InterfaceType >
bool istd::TOptInterfacePtr< InterfaceType >::IsUnmanaged ( ) const
inline

Definition at line 257 of file TOptInterfacePtr.h.

◆ IsValid()

template<class InterfaceType >
bool istd::TOptInterfacePtr< InterfaceType >::IsValid ( ) const
inline

◆ operator bool()

template<class InterfaceType >
istd::TOptInterfacePtr< InterfaceType >::operator bool ( ) const
inlineexplicitnoexcept

◆ operator*() [1/2]

template<class InterfaceType >
Interface & istd::TOptInterfacePtr< InterfaceType >::operator* ( )
inline

◆ operator*() [2/2]

template<class InterfaceType >
const Interface & istd::TOptInterfacePtr< InterfaceType >::operator* ( ) const
inline

◆ operator->() [1/2]

template<class InterfaceType >
Interface * istd::TOptInterfacePtr< InterfaceType >::operator-> ( )
inline

◆ operator->() [2/2]

template<class InterfaceType >
const Interface * istd::TOptInterfacePtr< InterfaceType >::operator-> ( ) const
inline

◆ operator=() [1/2]

template<class InterfaceType >
TOptInterfacePtr & istd::TOptInterfacePtr< InterfaceType >::operator= ( const TOptInterfacePtr< InterfaceType > &  ptr)
inline

Assign operator.

Definition at line 367 of file TOptInterfacePtr.h.

◆ operator=() [2/2]

template<class InterfaceType >
TOptInterfacePtr & istd::TOptInterfacePtr< InterfaceType >::operator= ( TOptInterfacePtr< InterfaceType > &&  )
defaultnoexcept

◆ Reset()

template<class InterfaceType >
void istd::TOptInterfacePtr< InterfaceType >::Reset ( )
inline

◆ SetCastedPtr()

template<class InterfaceType >
template<class T >
bool istd::TOptInterfacePtr< InterfaceType >::SetCastedPtr ( TSharedInterfacePtr< T > &  source)
inline

◆ SetManagedPtr()

template<class InterfaceType >
void istd::TOptInterfacePtr< InterfaceType >::SetManagedPtr ( SharedInterfacePtr  managedPtr)
inline

Definition at line 113 of file TOptInterfacePtr.h.

◆ SetUnmanagedPtr()

template<class InterfaceType >
void istd::TOptInterfacePtr< InterfaceType >::SetUnmanagedPtr ( Interface ptr)
inline

◆ TakeOver() [1/3]

template<class InterfaceType >
void istd::TOptInterfacePtr< InterfaceType >::TakeOver ( TOptInterfacePtr< InterfaceType > &  ptr)
inline

◆ TakeOver() [2/3]

template<class InterfaceType >
template<class T >
bool istd::TOptInterfacePtr< InterfaceType >::TakeOver ( TUniqueInterfacePtr< T > &&  source)
inline

◆ TakeOver() [3/3]

template<class InterfaceType >
template<class T >
bool istd::TOptInterfacePtr< InterfaceType >::TakeOver ( TUniqueInterfacePtr< T > &  source)
inline

The documentation for this class was generated from the following file: