MeshLib C Docs
Loading...
Searching...
No Matches
std_shared_ptr_const_void.h File Reference
#include <MRCMisc/common.h>
#include <MRCMisc/exports.h>
#include <stddef.h>

Go to the source code of this file.

Typedefs

typedef struct MR_std_shared_ptr_void MR_std_shared_ptr_void
 
typedef struct MR_std_shared_ptr_const_void MR_std_shared_ptr_const_void
 

Functions

MRC_API MR_std_shared_ptr_const_voidMR_std_shared_ptr_const_void_DefaultConstruct (void)
 
MRC_API MR_std_shared_ptr_const_voidMR_std_shared_ptr_const_void_DefaultConstructArray (size_t num_elems)
 
MRC_API MR_std_shared_ptr_const_voidMR_std_shared_ptr_const_void_ConstructFromAnother (MR_PassBy other_pass_by, MR_std_shared_ptr_const_void *other)
 
MRC_API void MR_std_shared_ptr_const_void_AssignFromAnother (MR_std_shared_ptr_const_void *_this, MR_PassBy other_pass_by, MR_std_shared_ptr_const_void *other)
 
MRC_API void MR_std_shared_ptr_const_void_Destroy (const MR_std_shared_ptr_const_void *_this)
 Destroys a heap-allocated instance of MR_std_shared_ptr_const_void. Does nothing if the pointer is null.
 
MRC_API void MR_std_shared_ptr_const_void_DestroyArray (const MR_std_shared_ptr_const_void *_this)
 Destroys a heap-allocated array of MR_std_shared_ptr_const_void. Does nothing if the pointer is null.
 
MRC_API const MR_std_shared_ptr_const_voidMR_std_shared_ptr_const_void_OffsetPtr (const MR_std_shared_ptr_const_void *ptr, ptrdiff_t i)
 Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.
 
MRC_API MR_std_shared_ptr_const_voidMR_std_shared_ptr_const_void_OffsetMutablePtr (MR_std_shared_ptr_const_void *ptr, ptrdiff_t i)
 Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.
 
MRC_API const void * MR_std_shared_ptr_const_void_Get (const MR_std_shared_ptr_const_void *_this)
 
MRC_API int MR_std_shared_ptr_const_void_UseCount (const MR_std_shared_ptr_const_void *_this)
 
MRC_API MR_std_shared_ptr_const_voidMR_std_shared_ptr_const_void_ConstructNonOwning (const void *ptr)
 
MRC_API void MR_std_shared_ptr_const_void_AssignNonOwning (MR_std_shared_ptr_const_void *_this, const void *ptr)
 
MRC_API MR_std_shared_ptr_const_voidMR_std_shared_ptr_const_void_ConstructFromMutable (MR_PassBy ptr_pass_by, MR_std_shared_ptr_void *ptr)
 
MRC_API void MR_std_shared_ptr_const_void_AssignFromMutable (MR_std_shared_ptr_const_void *_this, MR_PassBy ptr_pass_by, MR_std_shared_ptr_void *ptr)
 
MRC_API MR_std_shared_ptr_const_voidMR_std_shared_ptr_const_void_ConstructAliasing (MR_PassBy ownership_pass_by, MR_std_shared_ptr_const_void *ownership, const void *ptr)
 
MRC_API void MR_std_shared_ptr_const_void_AssignAliasing (MR_std_shared_ptr_const_void *_this, MR_PassBy ownership_pass_by, MR_std_shared_ptr_const_void *ownership, const void *ptr)
 

Typedef Documentation

◆ MR_std_shared_ptr_const_void

Wraps a pointer to a single shared reference-counted heap-allocated const void. Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).

◆ MR_std_shared_ptr_void

Function Documentation

◆ MR_std_shared_ptr_const_void_AssignAliasing()

MRC_API void MR_std_shared_ptr_const_void_AssignAliasing ( MR_std_shared_ptr_const_void * _this,
MR_PassBy ownership_pass_by,
MR_std_shared_ptr_const_void * ownership,
const void * ptr )

The aliasing assignment. Overwrite an existing instance, copying ownership from an existing shared pointer and storing an arbitrary raw pointer. The input pointer can be reinterpreted from any other std::shared_ptr<T> to avoid constructing a new std::shared_ptr<void>. Parameter _this can not be null. It is a single object.

◆ MR_std_shared_ptr_const_void_AssignFromAnother()

MRC_API void MR_std_shared_ptr_const_void_AssignFromAnother ( MR_std_shared_ptr_const_void * _this,
MR_PassBy other_pass_by,
MR_std_shared_ptr_const_void * other )

Assigns the contents from another instance. Both objects remain alive after the call. Parameter _this can not be null. It is a single object.

◆ MR_std_shared_ptr_const_void_AssignFromMutable()

MRC_API void MR_std_shared_ptr_const_void_AssignFromMutable ( MR_std_shared_ptr_const_void * _this,
MR_PassBy ptr_pass_by,
MR_std_shared_ptr_void * ptr )

Overwrite the existing instance with a non-const pointer to the same type. Parameter _this can not be null. It is a single object.

◆ MR_std_shared_ptr_const_void_AssignNonOwning()

MRC_API void MR_std_shared_ptr_const_void_AssignNonOwning ( MR_std_shared_ptr_const_void * _this,
const void * ptr )

Overwrite the existing instance with a non-owning pointer. The previously owned object, if any, has its reference count decremented. Parameter _this can not be null. It is a single object.

◆ MR_std_shared_ptr_const_void_ConstructAliasing()

MRC_API MR_std_shared_ptr_const_void * MR_std_shared_ptr_const_void_ConstructAliasing ( MR_PassBy ownership_pass_by,
MR_std_shared_ptr_const_void * ownership,
const void * ptr )

The aliasing constructor. Create a new instance, copying ownership from an existing shared pointer and storing an arbitrary raw pointer. The input pointer can be reinterpreted from any other std::shared_ptr<T> to avoid constructing a new std::shared_ptr<void>. Never returns null. Returns an instance allocated on the heap! Must call MR_std_shared_ptr_const_void_Destroy() to free it when you're done using it.

◆ MR_std_shared_ptr_const_void_ConstructFromAnother()

MRC_API MR_std_shared_ptr_const_void * MR_std_shared_ptr_const_void_ConstructFromAnother ( MR_PassBy other_pass_by,
MR_std_shared_ptr_const_void * other )

Constructs a copy of another instance. The source remains alive. Never returns null. Returns an instance allocated on the heap! Must call MR_std_shared_ptr_const_void_Destroy() to free it when you're done using it.

◆ MR_std_shared_ptr_const_void_ConstructFromMutable()

MRC_API MR_std_shared_ptr_const_void * MR_std_shared_ptr_const_void_ConstructFromMutable ( MR_PassBy ptr_pass_by,
MR_std_shared_ptr_void * ptr )

Create a new instance from a non-const pointer to the same type. Never returns null. Returns an instance allocated on the heap! Must call MR_std_shared_ptr_const_void_Destroy() to free it when you're done using it.

◆ MR_std_shared_ptr_const_void_ConstructNonOwning()

MRC_API MR_std_shared_ptr_const_void * MR_std_shared_ptr_const_void_ConstructNonOwning ( const void * ptr)

Create a new instance, storing a non-owning pointer. Never returns null. Returns an instance allocated on the heap! Must call MR_std_shared_ptr_const_void_Destroy() to free it when you're done using it.

◆ MR_std_shared_ptr_const_void_DefaultConstruct()

MRC_API MR_std_shared_ptr_const_void * MR_std_shared_ptr_const_void_DefaultConstruct ( void )

Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_std_shared_ptr_const_void_Destroy() to free it when you're done using it.

◆ MR_std_shared_ptr_const_void_DefaultConstructArray()

MRC_API MR_std_shared_ptr_const_void * MR_std_shared_ptr_const_void_DefaultConstructArray ( size_t num_elems)

Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_std_shared_ptr_const_void_DestroyArray(). Use MR_std_shared_ptr_const_void_OffsetMutablePtr() and MR_std_shared_ptr_const_void_OffsetPtr() to access the array elements.

◆ MR_std_shared_ptr_const_void_Destroy()

MRC_API void MR_std_shared_ptr_const_void_Destroy ( const MR_std_shared_ptr_const_void * _this)

Destroys a heap-allocated instance of MR_std_shared_ptr_const_void. Does nothing if the pointer is null.

◆ MR_std_shared_ptr_const_void_DestroyArray()

MRC_API void MR_std_shared_ptr_const_void_DestroyArray ( const MR_std_shared_ptr_const_void * _this)

Destroys a heap-allocated array of MR_std_shared_ptr_const_void. Does nothing if the pointer is null.

◆ MR_std_shared_ptr_const_void_Get()

MRC_API const void * MR_std_shared_ptr_const_void_Get ( const MR_std_shared_ptr_const_void * _this)

Returns the stored pointer, possibly null. Parameter _this can not be null. It is a single object.

◆ MR_std_shared_ptr_const_void_OffsetMutablePtr()

MRC_API MR_std_shared_ptr_const_void * MR_std_shared_ptr_const_void_OffsetMutablePtr ( MR_std_shared_ptr_const_void * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.

◆ MR_std_shared_ptr_const_void_OffsetPtr()

MRC_API const MR_std_shared_ptr_const_void * MR_std_shared_ptr_const_void_OffsetPtr ( const MR_std_shared_ptr_const_void * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element.

◆ MR_std_shared_ptr_const_void_UseCount()

MRC_API int MR_std_shared_ptr_const_void_UseCount ( const MR_std_shared_ptr_const_void * _this)

How many shared pointers share the managed object. Zero if no object is being managed. This being zero usually conincides with MR_std_shared_ptr_const_void_Get() returning null, but is ultimately orthogonal. Note that in multithreaded environments, the only safe way to use this number is comparing it with zero. Positive values might change by the time you get to use them. Parameter _this can not be null. It is a single object.