6 #ifndef LOFAR_BLOB_BLOBARRAY_H
7 #define LOFAR_BLOB_BLOBARRAY_H
12 #if defined(HAVE_BLITZ)
13 #include <blitz/array.h>
15 #if defined(HAVE_AIPSPP)
16 #include <casacore/casa/Arrays/Array.h>
51 uint16_t ndim,
bool fortranOrder);
68 unsigned int alignment = 0);
71 uint64_t size1,
bool fortranOrder,
72 unsigned int alignment = 0);
75 uint64_t size1, uint64_t size2,
bool fortranOrder,
76 unsigned int alignment = 0);
79 uint64_t size1, uint64_t size2, uint64_t size3,
80 bool fortranOrder,
unsigned int alignment = 0);
83 const std::vector<uint64_t>& shape,
84 bool fortranOrder,
unsigned int alignment = 0);
87 const uint64_t* shape, uint16_t ndim,
88 bool fortranOrder,
unsigned int alignment = 0);
91 #if defined(HAVE_BLITZ)
93 template <
typename T,
unsigned int N>
100 template <
typename T,
unsigned int N>
104 #if defined(HAVE_AIPSPP)
106 template <
typename T>
112 template <
typename T>
125 template <
typename T>
134 template <
typename T>
142 template <
typename T>
144 std::vector<uint64_t>& shape,
bool fortranOrder);
155 template <
typename T>
157 std::vector<uint64_t>& shape,
bool fortranOrder);
160 template <
typename T>
162 uint64_t size0,
unsigned int alignment) {
163 return setSpaceBlobArray<T>(bs, useBlobHeader, &size0, 1,
true, alignment);
167 template <
typename T>
173 template <
typename T>
183 const std::string& headerName,
184 const uint64_t* shape, uint16_t ndim,
185 bool fortranOrder,
unsigned int alignment);
192 unsigned char nalign;
193 bs >> fortranOrder >> nalign >> ndim;
204 bool swapAxes,
unsigned int nalign);
208 template <
typename T>
212 template <
typename T>
216 #define BLOBARRAY_PUTGET_SPEC(TP) \
218 inline void putBlobArrayData(BlobOStream& bs, const TP* data, uint64_t nr) { \
222 inline void getBlobArrayData(BlobIStream& bs, TP* data, uint64_t nr) { \
245 #include "BlobArray.tcc"
247 using dp3::blob::operator<<;
248 using dp3::blob::operator>>;
Input stream for a blob.
Definition: BlobIStream.h:43
Output stream for a blob.
Definition: BlobOStream.h:40
uint64_t size() const
Get the total size.
Definition: BlobOStream.h:54
void getBlobArrayData(BlobIStream &bs, T *data, uint64_t nr)
Helper function to get an array of data.
uint64_t setSpaceBlobArray4(BlobOStream &bs, bool useBlobHeader, uint64_t size0, uint64_t size1, uint64_t size2, uint64_t size3, bool fortranOrder, unsigned int alignment=0)
uint64_t getSpaceBlobArray(BlobIStream &bs, bool useBlobHeader, std::vector< uint64_t > &shape, bool fortranOrder)
BlobOStream & operator<<(BlobOStream &, const std::vector< bool > &)
void convertArrayHeader(common::DataFormat, char *header, bool useBlobHeader)
Convert the array header data.
BlobOStream & putBlobVector(BlobOStream &bs, const T *data, uint64_t size)
Put a C-style vector of values as an array.
Definition: BlobArray.h:174
BlobOStream & putBlobArray(BlobOStream &bs, const T *data, const uint64_t *shape, uint16_t ndim, bool fortranOrder)
unsigned int getBlobArrayStart(BlobIStream &bs, bool &fortranOrder, uint16_t &ndim)
Definition: BlobArray.h:190
uint64_t getBlobArrayShape(BlobIStream &bs, uint64_t *shape, unsigned int ndim, bool swapAxes, unsigned int nalign)
void putBlobArrayData(BlobOStream &bs, const T *data, uint64_t nr)
uint64_t setSpaceBlobArray1(BlobOStream &bs, bool useBlobHeader, uint64_t size0, unsigned int alignment=0)
Reserve space for a 1-dim array of the given size.
Definition: BlobArray.h:161
uint64_t putBlobArrayHeader(BlobOStream &bs, bool useBlobHeader, const std::string &headerName, const uint64_t *shape, uint16_t ndim, bool fortranOrder, unsigned int alignment)
BlobIStream & getBlobArray(BlobIStream &bs, T *&arr, std::vector< uint64_t > &shape, bool fortranOrder)
uint64_t setSpaceBlobArray(BlobOStream &bs, bool useBlobHeader, const std::vector< uint64_t > &shape, bool fortranOrder, unsigned int alignment=0)
uint64_t setSpaceBlobArray2(BlobOStream &bs, bool useBlobHeader, uint64_t size0, uint64_t size1, bool fortranOrder, unsigned int alignment=0)
#define BLOBARRAY_PUTGET_SPEC(TP)
Specializations for the standard types (including complex and string).
Definition: BlobArray.h:216
BlobIStream & operator>>(BlobIStream &, std::vector< bool > &)
uint64_t setSpaceBlobArray3(BlobOStream &bs, bool useBlobHeader, uint64_t size0, uint64_t size1, uint64_t size2, bool fortranOrder, unsigned int alignment=0)
DataFormat
This file defines an enum for the possible machine data formats.
Definition: DataFormat.h:24
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53