| 1046 | */ |
| 1047 | template <int sample_ndim, typename T> |
| 1048 | void calculate_pointers(std::vector<T*> &pointers, T *base, |
| 1049 | const TensorListShape<sample_ndim> &tls) { |
| 1050 | pointers.resize(tls.size()); |
| 1051 | if (base != nullptr) { |
| 1052 | pointers[0] = base; |
| 1053 | for (int i = 0; i < tls.size() - 1; i++) { |
| 1054 | auto sample_shape_span = tls.tensor_shape_span(i); |
| 1055 | pointers[i + 1] = pointers[i] + volume(sample_shape_span); |
| 1056 | } |
| 1057 | } else { |
| 1058 | for (auto &ptr : pointers) |
| 1059 | ptr = nullptr; |
| 1060 | } |
| 1061 | } |
| 1062 | |
| 1063 | /** |
| 1064 | * @brief Calculate pointers for Tensors stored in contigous buffer whose shapes |