Go to the documentation of this file.
21 #ifndef __MIA_2DDATAFIELD_HH
22 #define __MIA_2DDATAFIELD_HH 1
35 #include <miaconfig.h>
37 #ifndef EXPORT_2DDATAFIELD
38 # define EXPORT_2DDATAFIELD EXPORT_2D
44 #define DECLARE_EXTERN_ITERATORS(TYPE) \
45 extern template class EXPORT_2D range2d_iterator<std::vector<TYPE>::iterator>; \
46 extern template class EXPORT_2D range2d_iterator<std::vector<TYPE>::const_iterator>; \
47 extern template class EXPORT_2D range2d_iterator_with_boundary_flag<std::vector<TYPE>::iterator>; \
48 extern template class EXPORT_2D range2d_iterator_with_boundary_flag<std::vector<TYPE>::const_iterator>;
51 #pragma GCC diagnostic push
53 #pragma GCC diagnostic ignored "-Wattributes"
73 #undef DECLARE_EXTERN_ITERATORS
76 #pragma GCC diagnostic pop
95 typedef ::std::vector<typename __holder_type_dispatch<T>::type>
data_array;
100 typedef typename data_array::iterator iterator;
101 typedef typename data_array::const_iterator const_iterator;
102 typedef typename data_array::const_reference const_reference;
103 typedef typename data_array::reference reference;
104 typedef typename data_array::const_pointer const_pointer;
105 typedef typename data_array::pointer pointer;
106 typedef typename data_array::value_type value_type;
107 typedef typename data_array::difference_type difference_type;
108 typedef typename data_array::size_type size_type;
227 const_reference operator()(
size_t x,
size_t y) const;
234 reference operator()(
size_t x,
size_t y);
244 const_reference operator[](
size_t idx)
const
305 return m_data.begin();
320 return m_data.begin();
341 const_iterator b =
begin();
342 advance(b, x + y * m_size.x);
353 iterator b =
begin();
354 advance(b, x + y * m_size.x);
382 const static value_type Zero;
428 #define DEFINE_2DFIELD_TEMPLATE(TYPE) \
429 extern template class EXPORT_2D T2DDatafield<TYPE>; \
430 extern template class EXPORT_2D range2d_iterator<T2DDatafield<TYPE>::iterator>; \
431 extern template class EXPORT_2D range2d_iterator<T2DDatafield<TYPE>::const_iterator>; \
432 extern template class EXPORT_2D range2d_iterator_with_boundary_flag<T2DDatafield<TYPE>::iterator>; \
433 extern template class EXPORT_2D range2d_iterator_with_boundary_flag<T2DDatafield<TYPE>::const_iterator>;
437 #pragma GCC diagnostic push
439 #pragma GCC diagnostic ignored "-Wattributes"
444 DEFINE_2DFIELD_TEMPLATE(
double);
445 DEFINE_2DFIELD_TEMPLATE(
float);
446 DEFINE_2DFIELD_TEMPLATE(int64_t);
447 DEFINE_2DFIELD_TEMPLATE(uint64_t);
448 DEFINE_2DFIELD_TEMPLATE(uint32_t);
449 DEFINE_2DFIELD_TEMPLATE(int32_t);
450 DEFINE_2DFIELD_TEMPLATE(uint16_t);
451 DEFINE_2DFIELD_TEMPLATE(int16_t);
452 DEFINE_2DFIELD_TEMPLATE(uint8_t);
453 DEFINE_2DFIELD_TEMPLATE(int8_t);
464 #pragma GCC diagnostic pop
CTParameter< C2DFVector > C2DFVectorParameter
Parameter type for 2D vector.
T2DDatafield(T2DDatafield< T > &&org)
T2DDatafield< uint16_t > C2DUSDatafield
2D scalar field that holds unsigned short values
reference operator[](size_t idx)
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
const_reference operator()(const C2DBounds &l) const
void get_data_line_x(size_t y, std::vector< T > &buffer) const
range_iterator begin_range(const C2DBounds &begin, const C2DBounds &end)
T2DDatafield< int8_t > C2DSBDatafield
2D scalar field that holds signed char values
::std::vector< typename __holder_type_dispatch< T >::type > data_array
type for the flat reprentation of the 2D data field
void get_data_line_y(size_t x, std::vector< T > &buffer) const
void put_data_line_y(size_t x, const std::vector< T > &buffer)
CTParameter< C2DBounds > C2DBoundsParameter
Parameter type for 2D size definitions.
iterator begin_at(size_t x, size_t y)
#define NS_MIA_END
conveniance define to end the mia namespace
const_iterator end() const
T2DDatafield< T >::range_iterator iterator
const C2DBounds & get_size() const
void make_single_ref() __attribute__((deprecated))
T2DDatafield< bool > C2DBitDatafield
2D scalar field that holds bool values
const_range_iterator end_range(const C2DBounds &begin, const C2DBounds &end) const
T2DDatafield< T > & operator=(const T2DDatafield< T > &org)
const_iterator begin() const
Class of an attribute that holds data of type T.
T2DDatafield(const C2DBounds &size, const T *_data)
TTranslator< C2DFVector > C2DFVectorTranslator
typedef for the C2DFVector to std::string translator
T2DDatafield< double > C2DDDatafield
2D scalar field that holds double values
T2DDatafield(const C2DBounds &size)
T2DDatafield< int32_t > C2DSIDatafield
2D scalar field that holds signed int values
T2DDatafield< float > C2DFDatafield
2D scalar field that holds float values
T2DDatafield< uint8_t > C2DUBDatafield
2D scalar field that holds unsigned char (=byte) values
#define DECLARE_EXTERN_ITERATORS(TYPE)
A class to hold data on a regular 2D grid.
const_iterator begin_at(size_t x, size_t y) const
a 2D iterator that knows its position in the 2D grid ans supports iterating over sub-ranges
T2DDatafield< uint64_t > C2DULDatafield
void put_data_line_x(size_t y, const std::vector< T > &buffer)
const_range_iterator begin_range(const C2DBounds &begin, const C2DBounds &end) const
Generic type of a complex paramter.
Generic string vs. attribute translator singleton.
#define EXPORT_2DDATAFIELD
define used export 2D symbols
range_iterator end_range(const C2DBounds &begin, const C2DBounds &end)
reference operator()(const C2DBounds &l)
T2DDatafield< int64_t > C2DSLDatafield
long instanziation of a 2D data field
T2DDatafield(const C2DBounds &size, const std::vector< T > &data)
T2DDatafield< uint32_t > C2DUIDatafield
2D scalar field that holds unsigned int values
Range get_range(const C2DBounds &start, const C2DBounds &end)
T2DDatafield(const T2DDatafield< T > &org)
T2DDatafield< T >::const_range_iterator iterator
T2DDatafield< int16_t > C2DSSDatafield
2D scalar field that holds signed short values
ConstRange get_range(const C2DBounds &start, const C2DBounds &end) const