1#ifndef DYSCO_TIME_BLOCK_BUFFER_H
2#define DYSCO_TIME_BLOCK_BUFFER_H
9template <
typename data_t>
29 void SetData(
size_t blockRow,
size_t antenna1,
size_t antenna2,
const data_t *data) {
30 if (
_data.size() <= blockRow)
_data.resize(blockRow + 1);
31 DataRow &newRow =
_data[blockRow];
32 newRow.antenna1 = antenna1;
33 newRow.antenna2 = antenna2;
35 for (
size_t i = 0; i !=
_nPol *
_nChannels; ++i) newRow.visibilities[i] = data[i];
38 void GetData(
size_t blockRow, data_t *destination)
const {
39 const data_t *srcPtr =
_data[blockRow].visibilities.data();
40 memcpy(destination, srcPtr,
sizeof(data_t) *
_data[blockRow].visibilities.size());
46 size_t maxAntennaIndex = 0;
47 for (
const DataRow &row :
_data) {
48 maxAntennaIndex = std::max(maxAntennaIndex, std::max(row.antenna1, row.antenna2));
50 return maxAntennaIndex;
56 template <
typename other_t>
58 vector.resize(
_data.size());
59 for (
size_t i = 0; i !=
_data.size(); ++i) {
60 const DataRow &rowIn =
_data[i];
64 rowOut.
visibilities.assign(rowIn.visibilities.begin(), rowIn.visibilities.end());
const std::vector< DataRow > & GetVector() const
std::vector< DataRow > _data
std::vector< DataRow > & GetVector()
DataRow & operator[](size_t rowIndex)
void SetData(size_t blockRow, size_t antenna1, size_t antenna2, const data_t *data)
size_t MaxAntennaIndex() const
TimeBlockBuffer(size_t nPol, size_t nChannels)
void ConvertVector(std::vector< typename TimeBlockBuffer< other_t >::DataRow > &vector) const
void GetData(size_t blockRow, data_t *destination) const
void resize(size_t nRows)
std::vector< data_t > visibilities
Header file for UVector and its relational and swap functions.