| 126 | } |
| 127 | |
| 128 | af_err af_save_array(int *index, const char *key, const af_array arr, |
| 129 | const char *filename, const bool append) { |
| 130 | try { |
| 131 | ARG_ASSERT(0, key != NULL); |
| 132 | ARG_ASSERT(2, filename != NULL); |
| 133 | |
| 134 | const ArrayInfo &info = getInfo(arr); |
| 135 | af_dtype type = info.getType(); |
| 136 | int id = -1; |
| 137 | switch (type) { |
| 138 | case f32: id = save<float>(key, arr, filename, append); break; |
| 139 | case c32: id = save<cfloat>(key, arr, filename, append); break; |
| 140 | case f64: id = save<double>(key, arr, filename, append); break; |
| 141 | case c64: id = save<cdouble>(key, arr, filename, append); break; |
| 142 | case b8: id = save<char>(key, arr, filename, append); break; |
| 143 | case s32: id = save<int>(key, arr, filename, append); break; |
| 144 | case u32: id = save<unsigned>(key, arr, filename, append); break; |
| 145 | case s8: id = save<schar>(key, arr, filename, append); break; |
| 146 | case u8: id = save<uchar>(key, arr, filename, append); break; |
| 147 | case s64: id = save<intl>(key, arr, filename, append); break; |
| 148 | case u64: id = save<uintl>(key, arr, filename, append); break; |
| 149 | case s16: id = save<short>(key, arr, filename, append); break; |
| 150 | case u16: id = save<ushort>(key, arr, filename, append); break; |
| 151 | default: TYPE_ERROR(1, type); |
| 152 | } |
| 153 | std::swap(*index, id); |
| 154 | } |
| 155 | CATCHALL; |
| 156 | return AF_SUCCESS; |
| 157 | } |
| 158 | |
| 159 | template<typename T> |
| 160 | static af_array readDataToArray(std::fstream &fs) { |