areaDetector
3-5-0
EPICS areaDetector framework
|
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 (int ndims, size_t *dims, NDDataType_t dataType, size_t dataSize, void *pData) | |
virtual | ~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 | getReferenceCount () const |
int | report (FILE *fp, int details) |
Reports on the properties of the array. More... | |
Static Public Member Functions | |
static int | computeArrayInfo (int ndims, size_t *dims, NDDataType_t dataType, NDArrayInfo *pInfo) |
Convenience method computes the total the total number of bytes in the array. More... | |
Public Attributes | |
class NDArrayPool * | pNDArrayPool |
The NDArrayPool object that created this array. More... | |
class asynNDArrayDriver * | pDriver |
The asynNDArrayDriver 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 EPICS epoch (00:00:00 UTC, January 1, 1990) 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... | |
NDAttributeList * | pAttributeList |
Linked list of attributes. More... | |
Codec_t | codec |
Definition of codec used to compress the data. More... | |
size_t | compressedSize |
Size of the compressed data. More... | |
Friends | |
class | NDArrayPool |
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.
NDArray::NDArray | ( | ) |
NDArray constructor, no parameters.
Initializes all fields to 0. Creates the attribute linked list and linked list mutex.
NDArray::NDArray | ( | int | ndims, |
size_t * | dims, | ||
NDDataType_t | dataType, | ||
size_t | dataSize, | ||
void * | pData | ||
) |
|
virtual |
NDArray destructor Frees the data array, deletes all attributes, frees the attribute list and destroys the mutex.
|
static |
Convenience method computes the total the total number of bytes in the array.
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.
[out] | pInfo | Pointer to an NDArrayInfo_t structure, must have been allocated by caller. |
|
inline |
int NDArray::initDimension | ( | NDDimension_t * | pDimension, |
size_t | size | ||
) |
Initializes the dimension structure to size=size, binning=1, reverse=0, offset=0.
[in] | pDimension | Pointer to an NDDimension_t structure, must have been allocated by caller. |
[in] | size | The 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.
[in] | fp | File pointer for the report output. |
[in] | details | Level 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.
|
friend |
Codec_t NDArray::codec |
Definition of codec used to compress the data.
size_t NDArray::compressedSize |
Size of the compressed data.
Should be equal to dataSize if pData is uncompressed.
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.
NDDimension_t NDArray::dims[ND_ARRAY_MAX_DIMS] |
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 asynNDArrayDriver* NDArray::pDriver |
The asynNDArrayDriver that created this array.
class NDArrayPool* NDArray::pNDArrayPool |
The NDArrayPool object that created this array.
double NDArray::timeStamp |
The time stamp in seconds for this array; seconds since EPICS epoch (00:00:00 UTC, January 1, 1990) 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.