189 using value_type =
Int32;
190 using iterator_category = std::random_access_iterator_tag;
191 using reference = value_type&;
192 using difference_type = ptrdiff_t;
193 using pointer = void;
195 using ThatClass = IndexIterator;
199 IndexIterator() =
default;
200 ARCCORE_HOST_DEVICE
explicit IndexIterator(
Int32 v)
206 ARCCORE_HOST_DEVICE IndexIterator& operator++()
211 ARCCORE_HOST_DEVICE IndexIterator operator+(
Int32 x)
const
213 return IndexIterator(m_value + x);
215 ARCCORE_HOST_DEVICE
friend ThatClass operator+(
Int32 x,
const ThatClass& iter)
217 return ThatClass(iter.m_value + x);
219 ARCCORE_HOST_DEVICE IndexIterator operator-(
Int32 x)
const
221 return IndexIterator(m_value - x);
223 ARCCORE_HOST_DEVICE
Int32 operator-(
const ThatClass& x)
const
225 return m_value - x.m_value;
227 ARCCORE_HOST_DEVICE
Int32 operator*()
const {
return m_value; }
228 ARCCORE_HOST_DEVICE
Int32 operator[](
Int32 x)
const {
return m_value + x; }
229 ARCCORE_HOST_DEVICE
friend bool operator==(
const ThatClass& a,
const ThatClass& b)
231 return a.m_value == b.m_value;
233 ARCCORE_HOST_DEVICE
friend bool operator<(
const ThatClass& iter1,
const ThatClass& iter2)
235 return iter1.m_value < iter2.m_value;
306class GetterLambdaIterator
310 using value_type = DataType;
311 using iterator_category = std::random_access_iterator_tag;
312 using reference = DataType&;
313 using difference_type = ptrdiff_t;
314 using pointer = void;
315 using ThatClass = GetterLambdaIterator<DataType, GetterLambda>;
319 ARCCORE_HOST_DEVICE GetterLambdaIterator(
const GetterLambda& s)
322 ARCCORE_HOST_DEVICE
explicit GetterLambdaIterator(
const GetterLambda& s,
Int32 v)
329 ARCCORE_HOST_DEVICE ThatClass& operator++()
334 ARCCORE_HOST_DEVICE ThatClass& operator+=(
Int32 x)
339 ARCCORE_HOST_DEVICE
friend ThatClass operator+(
const ThatClass& iter,
Int32 x)
341 return ThatClass(iter.m_lambda, iter.m_index + x);
343 ARCCORE_HOST_DEVICE
friend ThatClass operator+(
Int32 x,
const ThatClass& iter)
345 return ThatClass(iter.m_lambda, iter.m_index + x);
347 ARCCORE_HOST_DEVICE
friend bool operator<(
const ThatClass& iter1,
const ThatClass& iter2)
349 return iter1.m_index < iter2.m_index;
352 ARCCORE_HOST_DEVICE ThatClass operator-(
Int32 x)
const
354 return ThatClass(m_lambda, m_index - x);
356 ARCCORE_HOST_DEVICE
Int32 operator-(
const ThatClass& x)
const
358 return m_index - x.m_index;
360 ARCCORE_HOST_DEVICE value_type operator*()
const
362 return m_lambda(m_index);
364 ARCCORE_HOST_DEVICE value_type operator[](
Int32 x)
const {
return m_lambda(m_index + x); }
365 ARCCORE_HOST_DEVICE
friend bool operator!=(
const ThatClass& a,
const ThatClass& b)
367 return a.m_index != b.m_index;
369 ARCCORE_HOST_DEVICE
friend bool operator==(
const ThatClass& a,
const ThatClass& b)
371 return a.m_index == b.m_index;
377 GetterLambda m_lambda;
388class SetterLambdaIterator
397 ARCCORE_HOST_DEVICE
explicit Setter(
const SetterLambda& s,
Int32 output_index)
398 : m_output_index(output_index)
401 ARCCORE_HOST_DEVICE
void operator=(
Int32 input_index)
403 m_lambda(input_index, m_output_index);
405 Int32 m_output_index = 0;
406 SetterLambda m_lambda;
409 using value_type =
Int32;
410 using iterator_category = std::random_access_iterator_tag;
412 using difference_type = ptrdiff_t;
413 using pointer = void;
415 using ThatClass = SetterLambdaIterator<SetterLambda>;
419#ifdef ARCANE_USE_LAMBDA_STORAGE
422 using StorageType = SetterLambda;
427 SetterLambdaIterator() =
default;
428 ARCCORE_HOST_DEVICE SetterLambdaIterator(
const SetterLambda& s)
438#ifdef ARCANE_USE_LAMBDA_STORAGE
439 ARCCORE_HOST_DEVICE SetterLambdaIterator(
const LambdaStorage<SetterLambda>& s,
Int32 v)
447 ARCCORE_HOST_DEVICE SetterLambdaIterator<SetterLambda>& operator++()
452 ARCCORE_HOST_DEVICE SetterLambdaIterator<SetterLambda>& operator--()
457 ARCCORE_HOST_DEVICE reference operator*()
const
459 return Setter(m_lambda, m_index);
461 ARCCORE_HOST_DEVICE reference operator[](Int32 x)
const {
return Setter(m_lambda, m_index + x); }
462 ARCCORE_HOST_DEVICE
friend ThatClass operator+(Int32 x,
const ThatClass& iter)
464 return ThatClass(iter.m_lambda, iter.m_index + x);
466 ARCCORE_HOST_DEVICE
friend ThatClass operator+(
const ThatClass& iter, Int32 x)
468 return ThatClass(iter.m_lambda, iter.m_index + x);
470 ARCCORE_HOST_DEVICE
friend ThatClass operator-(
const ThatClass& iter, Int32 x)
472 return ThatClass(iter.m_lambda, iter.m_index - x);
474 ARCCORE_HOST_DEVICE
friend Int32 operator-(
const ThatClass& iter1,
const ThatClass& iter2)
476 return iter1.m_index - iter2.m_index;
478 ARCCORE_HOST_DEVICE
friend bool operator<(
const ThatClass& iter1,
const ThatClass& iter2)
480 return iter1.m_index < iter2.m_index;
486 StorageType m_lambda;
Impl::SpanTypeFromSize< std::byte, SizeType >::SpanType asWritableBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets modifiables.