ESyS-Particle  2.3.4
VtkDataTypeTuple.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 
14 #ifndef ESYS_LSM_VTKDATATYPETUPLE_H
15 #define ESYS_LSM_VTKDATATYPETUPLE_H
16 
17 #include <vector>
18 #include <map>
19 #include <iostream>
20 
21 #include <boost/tuple/tuple.hpp>
22 
23 namespace esys
24 {
25  namespace lsm
26  {
27  namespace vtk
28  {
29  template <typename TmplDataType> class DataArray;
30 
32  {
33  public:
34  typedef char value_type;
35  };
36 
37  // Specialisation for the NullDataType DataArray
38  template <>
40  {
41  public:
43  DataArray(const NullDataType &dataType)
44  {
45  }
46 
47  void setData(int , const value_type &)
48  {
49  }
50 
51  void writeXml(std::ostream &)
52  {
53  }
54  };
55 
56  // Forward declaration
57  template <
58  typename DT0=NullDataType, typename DT1=NullDataType,
59  typename DT2=NullDataType, typename DT3=NullDataType,
60  typename DT4=NullDataType, typename DT5=NullDataType,
61  typename DT6=NullDataType, typename DT7=NullDataType,
62  typename DT8=NullDataType, typename DT9=NullDataType
63  >
64  class DataTypeTuple;
65 
66  // Implementation
67  template <typename DT0, typename DT1, typename DT2, typename DT3, typename DT4,
68  typename DT5, typename DT6, typename DT7, typename DT8, typename DT9>
70  {
71  public:
72  typedef
73  boost::tuple<
74  typename DT0::value_type, typename DT1::value_type,
75  typename DT2::value_type, typename DT3::value_type,
76  typename DT4::value_type, typename DT5::value_type,
77  typename DT6::value_type, typename DT7::value_type,
78  typename DT8::value_type, typename DT9::value_type
80 
91 
92  typedef
93  boost::tuple<
96 
98  const DT0 &dt0 = DT0(),
99  const DT1 &dt1 = DT1(),
100  const DT2 &dt2 = DT2(),
101  const DT3 &dt3 = DT3(),
102  const DT4 &dt4 = DT4(),
103  const DT5 &dt5 = DT5(),
104  const DT6 &dt6 = DT6(),
105  const DT7 &dt7 = DT7(),
106  const DT8 &dt8 = DT8(),
107  const DT9 &dt9 = DT9()
108  )
110  DA0(dt0), DA1(dt1), DA2(dt2), DA3(dt3), DA4(dt4),
111  DA5(dt5), DA6(dt6), DA7(dt7), DA8(dt8), DA9(dt9)
112  )
113  {
114  }
115 
116  void setData(int index, const DataValueTuple &data)
117  {
118  m_dataArrayTuple.template get<0>().setData(index, data.template get<0>());
119  m_dataArrayTuple.template get<1>().setData(index, data.template get<1>());
120  m_dataArrayTuple.template get<2>().setData(index, data.template get<2>());
121  m_dataArrayTuple.template get<3>().setData(index, data.template get<3>());
122  m_dataArrayTuple.template get<4>().setData(index, data.template get<4>());
123  m_dataArrayTuple.template get<5>().setData(index, data.template get<5>());
124  m_dataArrayTuple.template get<6>().setData(index, data.template get<6>());
125  m_dataArrayTuple.template get<7>().setData(index, data.template get<7>());
126  m_dataArrayTuple.template get<8>().setData(index, data.template get<8>());
127  m_dataArrayTuple.template get<9>().setData(index, data.template get<9>());
128  }
129 
130  void writeXml(std::ostream &oStream)
131  {
132  m_dataArrayTuple.template get<0>().writeXml(oStream);
133  m_dataArrayTuple.template get<1>().writeXml(oStream);
134  m_dataArrayTuple.template get<2>().writeXml(oStream);
135  m_dataArrayTuple.template get<3>().writeXml(oStream);
136  m_dataArrayTuple.template get<4>().writeXml(oStream);
137  m_dataArrayTuple.template get<5>().writeXml(oStream);
138  m_dataArrayTuple.template get<6>().writeXml(oStream);
139  m_dataArrayTuple.template get<7>().writeXml(oStream);
140  m_dataArrayTuple.template get<8>().writeXml(oStream);
141  m_dataArrayTuple.template get<9>().writeXml(oStream);
142  }
143 
144  private:
146  };
147  }
148  }
149 }
150 
151 #endif
esys::lsm::vtk::DataArray< NullDataType >::writeXml
void writeXml(std::ostream &)
Definition: VtkDataTypeTuple.h:51
esys::lsm::vtk::DataTypeTuple::DA6
DataArray< DT6 > DA6
Definition: VtkDataTypeTuple.h:87
esys::lsm::vtk::DataArray
Definition: VtkDataArray.h:32
esys::lsm::vtk::DataTypeTuple::DA8
DataArray< DT8 > DA8
Definition: VtkDataTypeTuple.h:89
esys::lsm::vtk::DataTypeTuple::DataArrayTuple
boost::tuple< DA0, DA1, DA2, DA3, DA4, DA5, DA6, DA7, DA8, DA9 > DataArrayTuple
Definition: VtkDataTypeTuple.h:95
esys::lsm::vtk::DataArray< NullDataType >::DataArray
DataArray(const NullDataType &dataType)
Definition: VtkDataTypeTuple.h:43
esys::lsm::vtk::DataTypeTuple::DA9
DataArray< DT9 > DA9
Definition: VtkDataTypeTuple.h:90
esys::lsm::vtk::DataArray< NullDataType >::setData
void setData(int, const value_type &)
Definition: VtkDataTypeTuple.h:47
esys
Definition: CheckPointable.cpp:17
esys::lsm::vtk::DataTypeTuple::m_dataArrayTuple
DataArrayTuple m_dataArrayTuple
Definition: VtkDataTypeTuple.h:145
esys::lsm::vtk::DataTypeTuple::DA0
DataArray< DT0 > DA0
Definition: VtkDataTypeTuple.h:81
esys::lsm::vtk::DataTypeTuple::DA5
DataArray< DT5 > DA5
Definition: VtkDataTypeTuple.h:86
esys::lsm::vtk::DataTypeTuple::DataTypeTuple
DataTypeTuple(const DT0 &dt0=DT0(), const DT1 &dt1=DT1(), const DT2 &dt2=DT2(), const DT3 &dt3=DT3(), const DT4 &dt4=DT4(), const DT5 &dt5=DT5(), const DT6 &dt6=DT6(), const DT7 &dt7=DT7(), const DT8 &dt8=DT8(), const DT9 &dt9=DT9())
Definition: VtkDataTypeTuple.h:97
esys::lsm::vtk::DataTypeTuple::DataValueTuple
boost::tuple< typename DT0::value_type, typename DT1::value_type, typename DT2::value_type, typename DT3::value_type, typename DT4::value_type, typename DT5::value_type, typename DT6::value_type, typename DT7::value_type, typename DT8::value_type, typename DT9::value_type > DataValueTuple
Definition: VtkDataTypeTuple.h:79
esys::lsm::vtk::DataTypeTuple::DA4
DataArray< DT4 > DA4
Definition: VtkDataTypeTuple.h:85
esys::lsm::vtk::NullDataType::value_type
char value_type
Definition: VtkDataTypeTuple.h:34
esys::lsm::vtk::DataTypeTuple::setData
void setData(int index, const DataValueTuple &data)
Definition: VtkDataTypeTuple.h:116
esys::lsm::vtk::NullDataType
Definition: VtkDataTypeTuple.h:32
esys::lsm::vtk::DataArray< NullDataType >::value_type
NullDataType::value_type value_type
Definition: VtkDataTypeTuple.h:42
esys::lsm::vtk::DataTypeTuple::writeXml
void writeXml(std::ostream &oStream)
Definition: VtkDataTypeTuple.h:130
esys::lsm::vtk::DataTypeTuple::DA2
DataArray< DT2 > DA2
Definition: VtkDataTypeTuple.h:83
esys::lsm::vtk::DataTypeTuple::DA1
DataArray< DT1 > DA1
Definition: VtkDataTypeTuple.h:82
VtkDataTypeTuple.h
esys::lsm::vtk::DataTypeTuple
Definition: VtkDataTypeTuple.h:70
esys::lsm::vtk::DataTypeTuple::DA3
DataArray< DT3 > DA3
Definition: VtkDataTypeTuple.h:84
esys::lsm::vtk::DataTypeTuple::DA7
DataArray< DT7 > DA7
Definition: VtkDataTypeTuple.h:88