186 using value_type =
Int32;
187 using iterator_category = std::random_access_iterator_tag;
188 using reference = value_type&;
189 using difference_type = ptrdiff_t;
190 using pointer = void;
192 using ThatClass = IndexIterator;
196 IndexIterator() =
default;
197 ARCCORE_HOST_DEVICE
explicit IndexIterator(
Int32 v)
203 ARCCORE_HOST_DEVICE IndexIterator& operator++()
208 ARCCORE_HOST_DEVICE IndexIterator operator+(
Int32 x)
const
210 return IndexIterator(m_value + x);
212 ARCCORE_HOST_DEVICE
friend ThatClass operator+(
Int32 x,
const ThatClass& iter)
214 return ThatClass(iter.m_value + x);
216 ARCCORE_HOST_DEVICE IndexIterator operator-(
Int32 x)
const
218 return IndexIterator(m_value - x);
220 ARCCORE_HOST_DEVICE
Int32 operator-(
const ThatClass& x)
const
222 return m_value - x.m_value;
224 ARCCORE_HOST_DEVICE
Int32 operator*()
const {
return m_value; }
225 ARCCORE_HOST_DEVICE
Int32 operator[](
Int32 x)
const {
return m_value + x; }
226 ARCCORE_HOST_DEVICE
friend bool operator==(
const ThatClass& a,
const ThatClass& b)
228 return a.m_value == b.m_value;
230 ARCCORE_HOST_DEVICE
friend bool operator<(
const ThatClass& iter1,
const ThatClass& iter2)
232 return iter1.m_value < iter2.m_value;
303class GetterLambdaIterator
307 using value_type = DataType;
308 using iterator_category = std::random_access_iterator_tag;
309 using reference = DataType&;
310 using difference_type = ptrdiff_t;
311 using pointer = void;
312 using ThatClass = GetterLambdaIterator<DataType, GetterLambda>;
316 ARCCORE_HOST_DEVICE GetterLambdaIterator(
const GetterLambda& s)
319 ARCCORE_HOST_DEVICE
explicit GetterLambdaIterator(
const GetterLambda& s,
Int32 v)
326 ARCCORE_HOST_DEVICE ThatClass& operator++()
331 ARCCORE_HOST_DEVICE ThatClass& operator+=(
Int32 x)
336 ARCCORE_HOST_DEVICE
friend ThatClass operator+(
const ThatClass& iter,
Int32 x)
338 return ThatClass(iter.m_lambda, iter.m_index + x);
340 ARCCORE_HOST_DEVICE
friend ThatClass operator+(
Int32 x,
const ThatClass& iter)
342 return ThatClass(iter.m_lambda, iter.m_index + x);
344 ARCCORE_HOST_DEVICE
friend bool operator<(
const ThatClass& iter1,
const ThatClass& iter2)
346 return iter1.m_index < iter2.m_index;
349 ARCCORE_HOST_DEVICE ThatClass operator-(
Int32 x)
const
351 return ThatClass(m_lambda, m_index - x);
353 ARCCORE_HOST_DEVICE
Int32 operator-(
const ThatClass& x)
const
355 return m_index - x.m_index;
357 ARCCORE_HOST_DEVICE value_type operator*()
const
359 return m_lambda(m_index);
361 ARCCORE_HOST_DEVICE value_type operator[](
Int32 x)
const {
return m_lambda(m_index + x); }
362 ARCCORE_HOST_DEVICE
friend bool operator!=(
const ThatClass& a,
const ThatClass& b)
364 return a.m_index != b.m_index;
366 ARCCORE_HOST_DEVICE
friend bool operator==(
const ThatClass& a,
const ThatClass& b)
368 return a.m_index == b.m_index;
374 GetterLambda m_lambda;
385class SetterLambdaIterator
394 ARCCORE_HOST_DEVICE
explicit Setter(
const SetterLambda& s,
Int32 output_index)
395 : m_output_index(output_index)
398 ARCCORE_HOST_DEVICE
void operator=(
Int32 input_index)
400 m_lambda(input_index, m_output_index);
402 Int32 m_output_index = 0;
403 SetterLambda m_lambda;
406 using value_type =
Int32;
407 using iterator_category = std::random_access_iterator_tag;
409 using difference_type = ptrdiff_t;
410 using pointer = void;
412 using ThatClass = SetterLambdaIterator<SetterLambda>;
416#ifdef ARCANE_USE_LAMBDA_STORAGE
419 using StorageType = SetterLambda;
424 SetterLambdaIterator() =
default;
425 ARCCORE_HOST_DEVICE SetterLambdaIterator(
const SetterLambda& s)
435#ifdef ARCANE_USE_LAMBDA_STORAGE
436 ARCCORE_HOST_DEVICE SetterLambdaIterator(
const LambdaStorage<SetterLambda>& s,
Int32 v)
444 ARCCORE_HOST_DEVICE SetterLambdaIterator<SetterLambda>& operator++()
449 ARCCORE_HOST_DEVICE SetterLambdaIterator<SetterLambda>& operator--()
454 ARCCORE_HOST_DEVICE reference
operator*()
const
456 return Setter(m_lambda, m_index);
458 ARCCORE_HOST_DEVICE reference operator[](Int32 x)
const {
return Setter(m_lambda, m_index + x); }
459 ARCCORE_HOST_DEVICE
friend ThatClass operator+(Int32 x,
const ThatClass& iter)
461 return ThatClass(iter.m_lambda, iter.m_index + x);
463 ARCCORE_HOST_DEVICE
friend ThatClass operator+(
const ThatClass& iter, Int32 x)
465 return ThatClass(iter.m_lambda, iter.m_index + x);
467 ARCCORE_HOST_DEVICE
friend ThatClass operator-(
const ThatClass& iter, Int32 x)
469 return ThatClass(iter.m_lambda, iter.m_index - x);
471 ARCCORE_HOST_DEVICE
friend Int32 operator-(
const ThatClass& iter1,
const ThatClass& iter2)
473 return iter1.m_index - iter2.m_index;
475 ARCCORE_HOST_DEVICE
friend bool operator<(
const ThatClass& iter1,
const ThatClass& iter2)
477 return iter1.m_index < iter2.m_index;
483 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.