8 #ifndef CSV_MULTIARRAY_COPY_HPP_ 
    9 #define CSV_MULTIARRAY_COPY_HPP_ 
   34     inline csv_col_str(std::string prp, std::stringstream & str)
 
   41 template<
typename T,
size_t N1>
 
   44     inline csv_col_str(std::string prp, std::stringstream & str)
 
   46         for (
size_t i = 0 ; i < N1 ; i++)
 
   47             str << 
"," << prp << 
"_" << 
"[" << i << 
"]";
 
   52 template<
typename T,
size_t N1,
size_t N2>
 
   55     inline csv_col_str(std::string prp, std::stringstream & str)
 
   57         for (
size_t i1 = 0 ; i1 < N1 ; i1++)
 
   59             for (
size_t i2 = 0 ; i2 < N2 ; i2++)
 
   61                 str << 
"," << prp << 
"_"  << 
"[" << i1 << 
"]" << 
"[" << i2 << 
"]";
 
   68 template<
typename T,
size_t N1,
size_t N2,
size_t N3>
 
   71     inline csv_col_str(std::string prp, std::stringstream & str)
 
   73         for (
size_t i1 = 0 ; i1 < N1 ; i1++)
 
   75             for (
size_t i2 = 0 ; i2 < N2 ; i2++)
 
   77                 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
 
   79                     str << 
"," << prp << 
"_"  << 
"[" << i1 << 
"]" << 
"[" << i2 << 
"]" << 
"[" << i3 << 
"]";
 
   87 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4>
 
   90     inline csv_col_str(std::string prp, std::stringstream & str)
 
   92         for (
size_t i1 = 0 ; i1 < N1 ; i1++)
 
   94             for (
size_t i2 = 0 ; i2 < N2 ; i2++)
 
   96                 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
 
   98                     for (
size_t i4 = 0 ; i4 < N4 ; i4++)
 
  100                         str << 
"," << prp << 
"_"  << 
"[" << i1 << 
"]" << 
"[" << i2 << 
"]" << 
"[" << i3 << 
"]" << 
"[" << i4 << 
"]";
 
  127 template<
typename T, 
bool is_writable>
 
  137 template<
typename T,
size_t N1, 
bool is_writable>
 
  142         for (
size_t i = 0 ; i < N1 ; i++)
 
  148 template<
typename T,
size_t N1,
size_t N2, 
bool is_writable>
 
  151     inline csv_value_str(
const T v[N1][N2], std::stringstream & str)
 
  153         for (
size_t i1 = 0 ; i1 < N1 ; i1++)
 
  155             for (
size_t i2 = 0 ; i2 < N2 ; i2++)
 
  157                 str << 
"," << v[i1][i2];
 
  164 template<
typename T,
size_t N1,
size_t N2,
size_t N3, 
bool is_writable>
 
  167     inline csv_value_str(
const T v[N1][N2][N3], std::stringstream & str)
 
  169         for (
size_t i1 = 0 ; i1 < N1 ; i1++)
 
  171             for (
size_t i2 = 0 ; i2 < N2 ; i2++)
 
  173                 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
 
  175                     str << 
"," <<  v[i1][i2][i3];
 
  183 template<
typename T,
size_t N1,
size_t N2,
size_t N3,
size_t N4, 
bool is_writable>
 
  186     inline csv_value_str(
const T v[N1][N2][N3][N4], std::stringstream & str)
 
  188         for (
size_t i1 = 0 ; i1 < N1 ; i1++)
 
  190             for (
size_t i2 = 0 ; i2 < N2 ; i2++)
 
  192                 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
 
  194                     for (
size_t i4 = 0 ; i4 < N4 ; i4++)
 
  196                         str << 
"," << v[i1][i2][i3][i4];
 
This class is an helper to produce csv data from multi-array. 
 
This class is an helper to produce csv headers from multi-array.