areaDetector  3-1
EPICS areaDetector framework
Public Member Functions | Public Attributes | Friends | List of all members
NDArray Class Reference

N-dimensional array class; each array has a set of dimensions, a data type, pointer to data, and optional attributes. More...

#include <NDArray.h>

Public Member Functions

 NDArray ()
 NDArray constructor, no parameters. More...
 
 ~NDArray ()
 NDArray destructor Frees the data array, deletes all attributes, frees the attribute list and destroys the mutex. More...
 
int initDimension (NDDimension_t *pDimension, size_t size)
 Initializes the dimension structure to size=size, binning=1, reverse=0, offset=0. More...
 
int getInfo (NDArrayInfo_t *pInfo)
 Convenience method returns information about an NDArray, including the total number of elements, the number of bytes per element, and the total number of bytes in the array. More...
 
int reserve ()
 Calls NDArrayPool::reserve() for this NDArray object; increases the reference count for this array. More...
 
int release ()
 Calls NDArrayPool::release() for this object; decreases the reference count for this array. More...
 
int report (FILE *fp, int details)
 Reports on the properties of the array. More...
 

Public Attributes

class NDArrayPoolpNDArrayPool
 The NDArrayPool object that created this array. More...
 
int uniqueId
 A number that must be unique for all NDArrays produced by a driver after is has started. More...
 
double timeStamp
 The time stamp in seconds for this array; seconds since Epoch (00:00:00 UTC, January 1, 1970) is recommended, but some drivers may use a different start time. More...
 
epicsTimeStamp epicsTS
 The epicsTimeStamp; this is set with pasynManager->updateTimeStamp(), and can come from a user-defined timestamp source. More...
 
int ndims
 The number of dimensions in this array; minimum=1. More...
 
NDDimension_t dims [ND_ARRAY_MAX_DIMS]
 Array of dimension sizes for this array; first ndims values are meaningful. More...
 
NDDataType_t dataType
 Data type for this array. More...
 
size_t dataSize
 Data size for this array; actual amount of memory allocated for *pData, may be more than required to hold the array. More...
 
void * pData
 Pointer to the array data. More...
 
NDAttributeListpAttributeList
 Linked list of attributes. More...
 

Friends

class NDArrayPool
 

Detailed Description

N-dimensional array class; each array has a set of dimensions, a data type, pointer to data, and optional attributes.

An NDArray also has a uniqueId and timeStamp that to identify it. NDArray objects can be allocated by an NDArrayPool object, which maintains a free list of NDArrays for efficient memory management.

Constructor & Destructor Documentation

NDArray::NDArray ( )

NDArray constructor, no parameters.

Initializes all fields to 0. Creates the attribute linked list and linked list mutex.

NDArray::~NDArray ( )

NDArray destructor Frees the data array, deletes all attributes, frees the attribute list and destroys the mutex.

Member Function Documentation

int NDArray::getInfo ( NDArrayInfo_t pInfo)

Convenience method returns information about an NDArray, including the total number of elements, the number of bytes per element, and the total number of bytes in the array.

Parameters
[out]pInfoPointer to an NDArrayInfo_t structure, must have been allocated by caller.
int NDArray::initDimension ( NDDimension_t pDimension,
size_t  size 
)

Initializes the dimension structure to size=size, binning=1, reverse=0, offset=0.

Parameters
[in]pDimensionPointer to an NDDimension_t structure, must have been allocated by caller.
[in]sizeThe size of this dimension.
int NDArray::release ( )

Calls NDArrayPool::release() for this object; decreases the reference count for this array.

int NDArray::report ( FILE *  fp,
int  details 
)

Reports on the properties of the array.

Parameters
[in]fpFile pointer for the report output.
[in]detailsLevel of report details desired; if >5 calls NDAttributeList::report().
int NDArray::reserve ( )

Calls NDArrayPool::reserve() for this NDArray object; increases the reference count for this array.

Friends And Related Function Documentation

friend class NDArrayPool
friend

Member Data Documentation

size_t NDArray::dataSize

Data size for this array; actual amount of memory allocated for *pData, may be more than required to hold the array.

NDDataType_t NDArray::dataType

Data type for this array.

Array of dimension sizes for this array; first ndims values are meaningful.

epicsTimeStamp NDArray::epicsTS

The epicsTimeStamp; this is set with pasynManager->updateTimeStamp(), and can come from a user-defined timestamp source.

int NDArray::ndims

The number of dimensions in this array; minimum=1.

NDAttributeList* NDArray::pAttributeList

Linked list of attributes.

void* NDArray::pData

Pointer to the array data.

The data is assumed to be stored in the order of dims[0] changing fastest, and dims[ndims-1] changing slowest.

class NDArrayPool* NDArray::pNDArrayPool

The NDArrayPool object that created this array.

double NDArray::timeStamp

The time stamp in seconds for this array; seconds since Epoch (00:00:00 UTC, January 1, 1970) is recommended, but some drivers may use a different start time.

int NDArray::uniqueId

A number that must be unique for all NDArrays produced by a driver after is has started.


The documentation for this class was generated from the following files: