Functions to manage memory for heap-allocated port and node instance data.
|
#define | VuoRegister(heapPointer, deallocate) |
| Registers heapPointer to be reference-counted and stores its deallocate function (unless heapPointer is null or is already being reference-counted). More...
|
|
#define | VuoRegisterSingleton(heapPointer) |
| Registers heapPointer as a singleton, meaning that VuoRetain and VuoRelease will have no effect on it (and will not issue warnings). More...
|
|
#define | VuoLocal(heapPointer) |
| Immediately retains heapPointer , and automatically releases it at the end of the local scope. More...
|
|
|
typedef void(* | DeallocateFunctionType) (void *) |
| A type for destructor functions, such as free(void *) , which are used to deallocate reference-counted memory when it's no longer in use. More...
|
|
|
int | VuoRetain (const void *heapPointer) |
| Increments the reference count for heapPointer (unless heapPointer is not being reference-counted). More...
|
|
int | VuoRelease (const void *heapPointer) |
| Decrements the reference count for heapPointer (unless heapPointer is not being reference-counted). More...
|
|
◆ VuoLocal
#define VuoLocal |
( |
|
heapPointer | ) |
|
Immediately retains heapPointer
, and automatically releases it at the end of the local scope.
When working with local reference-counted variables, typically you make the object, retain it, work with it, then release it:
VuoThing thing = VuoThing_make();
return;
But if this code has multiple exit points (for example, returning early upon encountering a runtime error), it can be tricky to remember to release at all the right times:
VuoThing thing = VuoThing_make();
if (error)
return;
return;
Instead, you can use this macro to simplify local reference-counting:
VuoThing thing = VuoThing_make();
if (error)
return;
return;
◆ VuoRegister
#define VuoRegister |
( |
|
heapPointer, |
|
|
|
deallocate |
|
) |
| |
Registers heapPointer to be reference-counted and stores its deallocate function (unless heapPointer is null or is already being reference-counted).
- Parameters
-
heapPointer | A pointer to allocated memory on the heap. |
deallocate | The function to be used to deallocate the memory when the reference count gets back to its original value of 0. |
- Returns
- The updated reference count of heapPointer. This is 0 if heapPointer is not already being reference-counted, greater than 0 if it is, or -1 if heapPointer is null.
◆ VuoRegisterSingleton
#define VuoRegisterSingleton |
( |
|
heapPointer | ) |
|
Registers heapPointer as a singleton, meaning that VuoRetain and VuoRelease will have no effect on it (and will not issue warnings).
- Parameters
-
heapPointer | A pointer to allocated memory on the heap. |
- Returns
- The updated reference count of heapPointer. This is 0 if heapPointer is not already being reference-counted, 1 if it is, or -1 if heapPointer is null.
◆ DeallocateFunctionType
typedef void(* DeallocateFunctionType) (void *) |
A type for destructor functions, such as free(void *)
, which are used to deallocate reference-counted memory when it's no longer in use.
◆ VuoRelease()
int VuoRelease |
( |
const void * |
heapPointer | ) |
|
Decrements the reference count for heapPointer (unless heapPointer is not being reference-counted).
If the reference count becomes 0, heapPointer is deallocated and is no longer reference-counted.
- Parameters
-
heapPointer | A pointer to allocated memory on the heap. |
- Returns
- The updated reference count of heapPointer, or -1 if heapPointer is not being reference-counted, has never been retained, or is null.
◆ VuoRetain()
int VuoRetain |
( |
const void * |
heapPointer | ) |
|
Increments the reference count for heapPointer (unless heapPointer is not being reference-counted).
- Parameters
-
heapPointer | A pointer to allocated memory on the heap. |
- Returns
- The updated reference count of heapPointer, or -1 if heapPointer is not being reference-counted or is null.