Vuo  0.4
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions | Variables
VuoHeap.cc File Reference

Description

VuoHeap implementation.

Functions

void sendErrorWrapper (const char *message)
 Calls the sendError() function defined in VuoRuntime (without introducing a direct dependency on VuoRuntime).
 
void finalizeReferenceCounts (void)
 Cleans up the reference-counting system.
 
int vuoRegister (const void *heapPointer, DeallocateFunctionType deallocate)
 Registers heapPointer to be reference-counted and stores its deallocate function (unless heapPointer is null or is already being reference-counted).
 
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).
 

Variables

map< const void *, int > referenceCounts
 The reference count for each pointer.
 
map< const void
*, DeallocateFunctionType
deallocateFunctions
 The function to be used for deallocating each pointer.
 
dispatch_semaphore_t referenceCountsSemaphore = NULL
 Synchronizes access to referenceCounts.
 

Function Documentation

void finalizeReferenceCounts ( void  )

Cleans up the reference-counting system.

To be called once, after all other reference-counting function calls.

int vuoRegister ( const void *  heapPointer,
DeallocateFunctionType  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.
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.