24 #ifndef ARM_COMPUTE_TEST_DATASET_ZIP 25 #define ARM_COMPUTE_TEST_DATASET_ZIP 46 template <
typename T,
typename U>
50 using iter1_type =
typename T::iterator;
51 using iter2_type =
typename U::iterator;
60 : _dataset1{ std::forward<T>(dataset1) },
61 _dataset2{ std::forward<U>(dataset2) }
69 using type = decltype(std::tuple_cat(*std::declval<iter1_type>(), *std::declval<iter2_type>()));
80 : _iter1{ std::move(iter1) }, _iter2{ std::move(iter2) }
90 return _iter1.description() +
":" + _iter2.description();
99 return std::tuple_cat(*_iter1, *_iter2);
124 return iterator(_dataset1.begin(), _dataset2.begin());
133 return std::min(_dataset1.size(), _dataset2.size());
148 template <
typename T,
typename U>
151 return ZipDataset<T, U>(std::forward<T>(dataset1), std::forward<U>(dataset2));
fixed_point< T > min(fixed_point< T > x, fixed_point< T > y)
ZipDataset::type operator*() const
Get the value of the iterator.
iterator & operator++()
Inrement the iterator.
This file contains all available output stages for GEMMLowp on OpenCL.
Implementation of a dataset representing pairs of values of the input datasets.
Iterator for the dataset.
iterator begin() const
Iterator pointing at the begin of the dataset.
std::string description() const
Get the description of the current value.
int size() const
Size of the dataset.
Abstract dataset base class.
iterator(iter1_type iter1, iter2_type iter2)
Construct an iterator.
decltype(std::tuple_cat(*std::declval< iter1_type >(),*std::declval< iter2_type >())) type
Type of the dataset.
ZipDataset(T &&dataset1, U &&dataset2)
Construct dataset from the given datasets.
ZipDataset< T, U > zip(T &&dataset1, U &&dataset2)
Helper function to create a ZipDataset.