DIPlib Documentation - ©1995-2017 Quantitative Imaging Group, Delft University of Technology.

PixelQueueNew

Create a new queue structure

SYNOPSIS

#include "dip_pixelqueue.h"

dip_Error dip_PixelQueueNew ( queue, ndims, blocksize, resources )

FUNCTION

This function allocates space for a new dip_PixelQueue structure. Memory allocated is tracked in resources. The queue is dimensioned to hold pixels from an ndims-dimensional image, and initially enough space is allocated for blocksize elements. The queue will be expanded as necessary when used.

The queue stores the coordinates, and the pointer to a pixel in an image. ndims can be set to zero, in which case no coordinates are stored; this does not affect the function of the pointer.

A queue is a data structure to which items can be added (pushed) to the back, and subtracted (popped) from the front (FIFO - First In, First Out).

ARGUMENTS

Data typeNameDescription
dip_PixelQueue *queueThe newly allocated queue structure
dip_intndimsImage dimensionality
dip_intblocksizeSize of each allocation block
dip_ResourcesresourcesResources tracking structure. See ResourcesNew

IMPLEMENTATION

The queue is stored in an array whose size can be incresed at will. This is accomplished by a linked list of blocks, each one holds blocksize elements. When more space is needed, a new block is simply allocated. No data needs to be moved as would be necessary when using realloc to change the size of the array. Blocks on the front of the queue that become empty are freed.

SEE ALSO

PixelHeapNew, StablePixelHeapNew, PixelQueueFree, PixelQueuePush, PixelQueuePop, PixelQueueIsEmpty