MeshLib C Docs
Loading...
Searching...
No Matches
std_function_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_function_void MR_std_function_void
 

Functions

MRC_API MR_std_function_voidMR_std_function_void_DefaultConstruct (void)
 
MRC_API MR_std_function_voidMR_std_function_void_DefaultConstructArray (size_t num_elems)
 
MRC_API MR_std_function_voidMR_std_function_void_ConstructFromAnother (MR_PassBy other_pass_by, MR_std_function_void *other)
 
MRC_API void MR_std_function_void_AssignFromAnother (MR_std_function_void *_this, MR_PassBy other_pass_by, MR_std_function_void *other)
 
MRC_API void MR_std_function_void_Destroy (const MR_std_function_void *_this)
 Destroys a heap-allocated instance of MR_std_function_void. Does nothing if the pointer is null.
 
MRC_API void MR_std_function_void_DestroyArray (const MR_std_function_void *_this)
 Destroys a heap-allocated array of MR_std_function_void. Does nothing if the pointer is null.
 
MRC_API const MR_std_function_voidMR_std_function_void_OffsetPtr (const MR_std_function_void *ptr, ptrdiff_t i)
 
MRC_API MR_std_function_voidMR_std_function_void_OffsetMutablePtr (MR_std_function_void *ptr, ptrdiff_t i)
 
MRC_API MR_std_function_voidMR_std_function_void_ConstructStateless (void(*func)(void))
 
MRC_API void MR_std_function_void_Assign (MR_std_function_void *_this, void(*func)(void))
 
MRC_API MR_std_function_voidMR_std_function_void_ConstructWithDataPtr (void(*func)(void *_userdata), void *userdata, void(*userdata_callback)(void **_this_userdata, void *_other_userdata))
 
MRC_API void MR_std_function_void_AssignWithDataPtr (MR_std_function_void *_this, void(*func)(void *_userdata), void *userdata, void(*userdata_callback)(void **_this_userdata, void *_other_userdata))
 

Typedef Documentation

◆ MR_std_function_void

Stores a functor of type: void(void). Possibly stateful. 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).

Function Documentation

◆ MR_std_function_void_Assign()

MRC_API void MR_std_function_void_Assign ( MR_std_function_void * _this,
void(* func )(void) )

Assign a stateless function. Parameter _this can not be null. It is a single object.

◆ MR_std_function_void_AssignFromAnother()

MRC_API void MR_std_function_void_AssignFromAnother ( MR_std_function_void * _this,
MR_PassBy other_pass_by,
MR_std_function_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. The reference to the parameter other might be preserved in this object. When this function is called, this object will drop any object references it had previously.

◆ MR_std_function_void_AssignWithDataPtr()

MRC_API void MR_std_function_void_AssignWithDataPtr ( MR_std_function_void * _this,
void(* func )(void *_userdata),
void * userdata,
void(* userdata_callback )(void **_this_userdata, void *_other_userdata) )

Assign a function with an extra user data pointer. Parameter _this can not be null. It is a single object. The reference to the parameter userdata might be preserved in this object. When this function is called, this object will drop any object references it had previously. Parameter userdata_callback can be null. Pass null if you don't need custom behavior when destroying and/or copying the functor. How to use userdata_callback: The _this_userdata parameter will never be null. If *_this_userdata is non-null and _other_userdata is null, the functor is being destroyed. Perform any cleanup if needed. If *_this_userdata is null and _other_userdata is non-null, a copy of the functor is being constructed. Perform copying if needed and write the new userdata to *_this_userdata. If *_this_userdata is non-null and _other_userdata is non-null, the functor is being assigned. The simplest option is to destroy *_this_userdata first, and then behave as if it was null.

◆ MR_std_function_void_ConstructFromAnother()

MRC_API MR_std_function_void * MR_std_function_void_ConstructFromAnother ( MR_PassBy other_pass_by,
MR_std_function_void * other )

Constructs a copy of another instance. The source remains alive. The reference to the parameter other might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_function_void_Destroy() to free it when you're done using it. When this function is called, this object will drop any object references it had previously.

◆ MR_std_function_void_ConstructStateless()

MRC_API MR_std_function_void * MR_std_function_void_ConstructStateless ( void(* func )(void))

Construct a stateless function. Never returns null. Returns an instance allocated on the heap! Must call MR_std_function_void_Destroy() to free it when you're done using it.

◆ MR_std_function_void_ConstructWithDataPtr()

MRC_API MR_std_function_void * MR_std_function_void_ConstructWithDataPtr ( void(* func )(void *_userdata),
void * userdata,
void(* userdata_callback )(void **_this_userdata, void *_other_userdata) )

Construct a function with an extra user data pointer. The reference to the parameter userdata might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_function_void_Destroy() to free it when you're done using it. When this function is called, this object will drop any object references it had previously. Parameter userdata_callback can be null. Pass null if you don't need custom behavior when destroying and/or copying the functor. How to use userdata_callback: The _this_userdata parameter will never be null. If *_this_userdata is non-null and _other_userdata is null, the functor is being destroyed. Perform any cleanup if needed. If *_this_userdata is null and _other_userdata is non-null, a copy of the functor is being constructed. Perform copying if needed and write the new userdata to *_this_userdata. If *_this_userdata is non-null and _other_userdata is non-null, the functor is being assigned. The simplest option is to destroy *_this_userdata first, and then behave as if it was null.

◆ MR_std_function_void_DefaultConstruct()

MRC_API MR_std_function_void * MR_std_function_void_DefaultConstruct ( void )

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

◆ MR_std_function_void_DefaultConstructArray()

MRC_API MR_std_function_void * MR_std_function_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_function_void_DestroyArray(). Use MR_std_function_void_OffsetMutablePtr() and MR_std_function_void_OffsetPtr() to access the array elements.

◆ MR_std_function_void_Destroy()

MRC_API void MR_std_function_void_Destroy ( const MR_std_function_void * _this)

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

◆ MR_std_function_void_DestroyArray()

MRC_API void MR_std_function_void_DestroyArray ( const MR_std_function_void * _this)

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

◆ MR_std_function_void_OffsetMutablePtr()

MRC_API MR_std_function_void * MR_std_function_void_OffsetMutablePtr ( MR_std_function_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. The reference to the parameter ptr might be preserved in the return value.

◆ MR_std_function_void_OffsetPtr()

MRC_API const MR_std_function_void * MR_std_function_void_OffsetPtr ( const MR_std_function_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. The reference to the parameter ptr might be preserved in the return value.