OpenFPM_pdata  1.1.0
Project that contain the implementation of distributed structures
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Friends Pages
csv_multiarray.hpp
1 /*
2  * csv_multiarray_copy.hpp
3  *
4  * Created on: Jun 20, 2015
5  * Author: i-bird
6  */
7 
8 #ifndef CSV_MULTIARRAY_COPY_HPP_
9 #define CSV_MULTIARRAY_COPY_HPP_
10 
11 
12 
31 template<typename T>
33 {
34  inline csv_col_str(std::string prp, std::stringstream & str)
35  {
36  str << "," << prp;
37  }
38 };
39 
41 template<typename T,size_t N1>
42 struct csv_col_str<T[N1]>
43 {
44  inline csv_col_str(std::string prp, std::stringstream & str)
45  {
46  for (size_t i = 0 ; i < N1 ; i++)
47  str << "," << prp << "_" << "[" << i << "]";
48  }
49 };
50 
52 template<typename T,size_t N1,size_t N2>
53 struct csv_col_str<T[N1][N2]>
54 {
55  inline csv_col_str(std::string prp, std::stringstream & str)
56  {
57  for (size_t i1 = 0 ; i1 < N1 ; i1++)
58  {
59  for (size_t i2 = 0 ; i2 < N2 ; i2++)
60  {
61  str << "," << prp << "_" << "[" << i1 << "]" << "[" << i2 << "]";
62  }
63  }
64  }
65 };
66 
68 template<typename T,size_t N1,size_t N2,size_t N3>
69 struct csv_col_str<T[N1][N2][N3]>
70 {
71  inline csv_col_str(std::string prp, std::stringstream & str)
72  {
73  for (size_t i1 = 0 ; i1 < N1 ; i1++)
74  {
75  for (size_t i2 = 0 ; i2 < N2 ; i2++)
76  {
77  for (size_t i3 = 0 ; i3 < N3 ; i3++)
78  {
79  str << "," << prp << "_" << "[" << i1 << "]" << "[" << i2 << "]" << "[" << i3 << "]";
80  }
81  }
82  }
83  }
84 };
85 
87 template<typename T,size_t N1,size_t N2,size_t N3,size_t N4>
88 struct csv_col_str<T[N1][N2][N3][N4]>
89 {
90  inline csv_col_str(std::string prp, std::stringstream & str)
91  {
92  for (size_t i1 = 0 ; i1 < N1 ; i1++)
93  {
94  for (size_t i2 = 0 ; i2 < N2 ; i2++)
95  {
96  for (size_t i3 = 0 ; i3 < N3 ; i3++)
97  {
98  for (size_t i4 = 0 ; i4 < N4 ; i4++)
99  {
100  str << "," << prp << "_" << "[" << i1 << "]" << "[" << i2 << "]" << "[" << i3 << "]" << "[" << i4 << "]";
101  }
102  }
103  }
104  }
105  }
106 };
107 
108 
127 template<typename T, bool is_writable>
129 {
130  inline csv_value_str(T & v, std::stringstream & str)
131  {
132  str << "," << v;
133  }
134 };
135 
137 template<typename T,size_t N1, bool is_writable>
138 struct csv_value_str<T[N1], is_writable>
139 {
140  inline csv_value_str(const T v[N1], std::stringstream & str)
141  {
142  for (size_t i = 0 ; i < N1 ; i++)
143  str << "," << v[i];
144  }
145 };
146 
148 template<typename T,size_t N1,size_t N2, bool is_writable>
149 struct csv_value_str<T[N1][N2], is_writable>
150 {
151  inline csv_value_str(const T v[N1][N2], std::stringstream & str)
152  {
153  for (size_t i1 = 0 ; i1 < N1 ; i1++)
154  {
155  for (size_t i2 = 0 ; i2 < N2 ; i2++)
156  {
157  str << "," << v[i1][i2];
158  }
159  }
160  }
161 };
162 
164 template<typename T,size_t N1,size_t N2,size_t N3, bool is_writable>
165 struct csv_value_str<T[N1][N2][N3], is_writable>
166 {
167  inline csv_value_str(const T v[N1][N2][N3], std::stringstream & str)
168  {
169  for (size_t i1 = 0 ; i1 < N1 ; i1++)
170  {
171  for (size_t i2 = 0 ; i2 < N2 ; i2++)
172  {
173  for (size_t i3 = 0 ; i3 < N3 ; i3++)
174  {
175  str << "," << v[i1][i2][i3];
176  }
177  }
178  }
179  }
180 };
181 
183 template<typename T,size_t N1,size_t N2,size_t N3,size_t N4, bool is_writable>
184 struct csv_value_str<T[N1][N2][N3][N4],is_writable>
185 {
186  inline csv_value_str(const T v[N1][N2][N3][N4], std::stringstream & str)
187  {
188  for (size_t i1 = 0 ; i1 < N1 ; i1++)
189  {
190  for (size_t i2 = 0 ; i2 < N2 ; i2++)
191  {
192  for (size_t i3 = 0 ; i3 < N3 ; i3++)
193  {
194  for (size_t i4 = 0 ; i4 < N4 ; i4++)
195  {
196  str << "," << v[i1][i2][i3][i4];
197  }
198  }
199  }
200  }
201  }
202 };
203 
205 template<typename T>
206 struct csv_value_str<T,false>
207 {
208  inline csv_value_str(const T v, std::stringstream & str)
209  {
210  str << "," << 0.0;
211  }
212 };
213 
214 #endif /* CSV_MULTIARRAY_COPY_HPP_ */
This class is an helper to produce csv data from multi-array.
This class is an helper to produce csv headers from multi-array.