24 #ifndef ARM_COMPUTE_TEST_DATASET_CARTESIAN_PRODUCT 25 #define ARM_COMPUTE_TEST_DATASET_CARTESIAN_PRODUCT 46 template <
typename T,
typename U>
52 using iter1_type =
typename T_noref::iterator;
53 using iter2_type =
typename U_noref::iterator;
62 : _dataset1{ std::forward<T>(dataset1) },
63 _dataset2{ std::forward<U>(dataset2) }
71 using type = decltype(std::tuple_cat(*std::declval<iter1_type>(), *std::declval<iter2_type>()));
81 iterator(
const T_noref *dataset1,
const U_noref *dataset2)
82 : _iter1{ dataset1->begin() },
83 _dataset2{ dataset2 },
84 _iter2{ dataset2->begin() }
106 return _iter1.description() +
":" + _iter2.description();
115 return std::tuple_cat(*_iter1, *_iter2);
126 if(_second_pos < _dataset2->
size())
133 _iter2 = _dataset2->begin();
143 const U_noref *_dataset2;
146 int _second_pos{ 0 };
155 return iterator(&_dataset1, &_dataset2);
164 return _dataset1.size() * _dataset2.size();
179 template <
typename T,
typename U>
192 template <
typename T,
typename U>
std::string description() const
Get the description of the current value.
Implementation of a dataset representing all combinations of values of the input datasets.
CartesianProductDataset::type operator*() const
Get the value of the iterator.
iterator begin() const
Iterator pointing at the begin of the dataset.
CartesianProductDataset(T &&dataset1, U &&dataset2)
Construct dataset from the given datasets.
decltype(strategy::transforms) typedef type
Copyright (c) 2017-2021 Arm Limited.
decltype(std::tuple_cat(*std::declval< iter1_type >(), *std::declval< iter2_type >())) type
Type of the dataset.
Abstract dataset base class.
iterator(const T_noref *dataset1, const U_noref *dataset2)
Construct an iterator.
int size() const
Size of the dataset.
CartesianProductDataset< T, U > combine(T &&dataset1, U &&dataset2)
Helper function to create a CartesianProductDataset.
Iterator for the dataset.
~iterator()=default
Default destructor.
iterator & operator++()
Inrement the iterator.
iterator & operator=(const iterator &)=default
Allow instances of this class to be copied.