remotemono
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
remotemono::RMonoHandle< HandleT, deleter, invalidHandle > Class Template Reference

#include <RMonoHandle_Def.h>

Inheritance diagram for remotemono::RMonoHandle< HandleT, deleter, invalidHandle >:
Inheritance graph
[legend]
Collaboration diagram for remotemono::RMonoHandle< HandleT, deleter, invalidHandle >:
Collaboration graph
[legend]

Public Types

typedef HandleT HandleType
 
typedef RMonoHandle< HandleType, deleter, invalidHandle > Self
 

Public Member Functions

 RMonoHandle ()
 
 RMonoHandle (std::nullptr_t)
 
 RMonoHandle (HandleType handle, RMonoAPIBase *mono, bool owned)
 
 RMonoHandle (const Self &other)
 
 RMonoHandle (Self &&other)
 
Selfoperator= (const Self &other)
 
Selfoperator= (Self &&other)
 
bool operator== (const Self &other) const
 
bool operator!= (const Self &other) const
 
HandleType operator* () const
 
RMonoAPIBasegetMonoAPI ()
 
bool takeOwnership ()
 
void reset ()
 
bool isValid () const
 
bool isNull () const
 
 operator bool () const
 

Protected Attributes

std::shared_ptr< Data > d
 

Detailed Description

template<typename HandleT, void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
class remotemono::RMonoHandle< HandleT, deleter, invalidHandle >

A wrapper around a handle in the remote process. RMonoHandle is mostly used to wrap various pointer types to Mono data structures (e.g. MonoAssembly*, MonoImage*). It allows for simple automatic memory management by using shared pointers internally, so that you normally don't have to free resources returned by the Mono API functions. Note that MonoObject* (and derived types like MonoString*, MonoException* etc.) will use the subclass RMonoObjectHandle.

Constructor & Destructor Documentation

◆ RMonoHandle() [1/5]

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::RMonoHandle ( )
inline

Create an invalid handle (e.g. a null pointer)

◆ RMonoHandle() [2/5]

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::RMonoHandle ( std::nullptr_t  )
inline

Create an invalid handle (e.g. a null pointer)

◆ RMonoHandle() [3/5]

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::RMonoHandle ( HandleType  handle,
RMonoAPIBase mono,
bool  owned 
)
inline

Main constructor for creating an RMonoHandle from a raw handle (e.g. a raw remote pointer).

Parameters
handleThe raw remote handle, e.g. a raw remote pointer or a GC handle.
monoThe Mono API from which the handle originates.
ownedtrue if the RMonoHandle should own the remote resources associated with the raw handle. Owning the resources means that the deleter function will be called when the internal shared pointer expires.

◆ RMonoHandle() [4/5]

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::RMonoHandle ( const Self other)
inline

Copy constructor.

◆ RMonoHandle() [5/5]

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::RMonoHandle ( Self &&  other)
inline

Move constructor.

Member Function Documentation

◆ getMonoAPI()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
RMonoAPIBase* remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::getMonoAPI ( )
inline

Returns the Mono API that this handle belongs to.

◆ isNull()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
bool remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::isNull ( ) const
inline

The opposite of isValid().

◆ isValid()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
bool remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::isValid ( ) const
inline
Returns
true if this is a valid handle, i.e. a handle not created with the invalid raw handle or one of the invalid-handle constructors.

◆ operator bool()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::operator bool ( ) const
inline

An alias for isValid().

◆ operator!=()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
bool remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::operator!= ( const Self other) const
inline

Returns true if the raw handles of the two RMonoHandle objects are different.

◆ operator*()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
HandleType remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::operator* ( ) const
inline

Returns the raw handle.

◆ operator=() [1/2]

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
Self& remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::operator= ( const Self other)
inline

Assignment operator.

◆ operator=() [2/2]

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
Self& remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::operator= ( Self &&  other)
inline

Move-assignment operator.

◆ operator==()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
bool remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::operator== ( const Self other) const
inline

Returns true if the raw handles of the two RMonoHandle objects are the same.

◆ reset()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
void remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::reset ( )
inline

Resets this RMonoHandle to an invalid handle.

◆ takeOwnership()

template<typename HandleT , void(*)(HandleT, RMonoAPIBase *) deleter, HandleT invalidHandle>
bool remotemono::RMonoHandle< HandleT, deleter, invalidHandle >::takeOwnership ( )
inline

Lets the caller take ownership of the remote resources behind the handle. After calling this method, the caller will be responsible for freeing any associated resources.

Returns
true if this object had ownership before, false otherwise.

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