| 42 | |
| 43 | template<typename T> |
| 44 | static inline af_array join_many(const int dim, const unsigned n_arrays, |
| 45 | const af_array *inputs) { |
| 46 | vector<Array<T>> inputs_; |
| 47 | inputs_.reserve(n_arrays); |
| 48 | |
| 49 | dim_t dim_size{0}; |
| 50 | for (unsigned i{0}; i < n_arrays; ++i) { |
| 51 | const Array<T> &iArray = getArray<T>(inputs[i]); |
| 52 | if (!iArray.isEmpty()) { |
| 53 | inputs_.push_back(iArray); |
| 54 | dim_size += iArray.dims().dims[dim]; |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | // All dimensions except join dimension must be equal |
| 59 | // calculate odims size |
| 60 | af::dim4 odims{inputs_[0].dims()}; |
| 61 | odims.dims[dim] = dim_size; |
| 62 | |
| 63 | Array<T> out{createEmptyArray<T>(odims)}; |
| 64 | join<T>(out, dim, inputs_); |
| 65 | return getHandle(out); |
| 66 | } |
| 67 | |
| 68 | af_err af_join(af_array *out, const int dim, const af_array first, |
| 69 | const af_array second) { |