Vuo  1.2.6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Macros | Typedefs | Functions
Reference-counting functions

Description

Functions to manage memory for heap-allocated port and node instance data.

Macros

#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).
 
#define VuoRegisterSingleton(heapPointer)
 Registers heapPointer as a singleton, meaning that VuoRetain and VuoRelease will have no effect on it (and will not issue warnings).
 
#define VuoLocal(heapPointer)
 Immediately retains heapPointer, and automatically releases it at the end of the local scope.
 

Typedefs

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.
 

Functions

int VuoRetain (const void *heapPointer)
 Increments the reference count for heapPointer (unless heapPointer is not being reference-counted).
 
int VuoRelease (const void *heapPointer)
 Decrements the reference count for heapPointer (unless heapPointer is not being reference-counted).
 

Macro Definition Documentation

#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();
VuoRetain(thing);
// do stuff
VuoRelease(thing);
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();
VuoRetain(thing);
// do stuff
if (error)
return; // Bad: thing was leaked.
// do stuff
VuoRelease(thing);
return;

Instead, you can use this macro to simplify local reference-counting:

VuoThing thing = VuoThing_make();
VuoLocal(thing);
// do stuff
if (error)
return; // OK: VuoLocal automatically releases thing.
// do stuff
return; // OK: VuoLocal automatically releases thing.
#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
heapPointerA pointer to allocated memory on the heap.
deallocateThe 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.
#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
heapPointerA 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.

Typedef Documentation

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.

Function Documentation

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
heapPointerA 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.
int VuoRetain ( const void *  heapPointer)

Increments the reference count for heapPointer (unless heapPointer is not being reference-counted).

Parameters
heapPointerA 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.