MCRO
C++23 utilities for Unreal Engine.
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Mcro::Range::TExtendedIterator< Iterator, Policy > Struct Template Reference

Unreal's own iterators are not STL compliant (they are only compatible with range-for loops) so they cannot be used with more advanced STL algorithms or other third-party libraries which may expect the full iterator interface compatibility. For that TExtendedIterator fills in the missing components and wraps Unreal iterators to be fully STL iterator compliant. More...

#include <Iterators.h>

Inheritance diagram for Mcro::Range::TExtendedIterator< Iterator, Policy >:

Public Types

using value_type = TIteratorElementType<Iterator>
 
using iterator_category = TIteratorCategory<Iterator>
 
using difference_type = TIteratorDifference<Iterator>
 
using pointer = value_type*
 
using reference = value_type&
 

Public Member Functions

 TExtendedIterator ()
 
template<CConvertibleToDecayed< Iterator > InputIterator>
 TExtendedIterator (InputIterator &&input)
 
 TExtendedIterator (TExtendedIterator const &other)
 
 TExtendedIterator (TExtendedIterator &&other) noexcept
 
auto operator= (TExtendedIterator other) -> TExtendedIterator &
 
auto operator++ () -> TExtendedIterator &
 
auto operator++ (int) -> TExtendedIterator
 
template<CBasicBidirectionalIterator = Iterator>
auto operator-- () -> TExtendedIterator &
 
template<CBasicBidirectionalIterator = Iterator>
auto operator-- (int) -> TExtendedIterator
 
template<CHasMemberAccessOperator = Iterator>
auto operator-> ()
 
template<CHasMemberAccessOperator = Iterator>
auto operator-> () const
 
auto operator* () -> value_type const &
 
auto operator* () const -> value_type const &
 
auto operator+= (int steps) -> TExtendedIterator &
 
auto operator+ (int steps) const -> TExtendedIterator
 
template<CBasicBidirectionalIterator = Iterator>
auto operator-= (int steps) -> TExtendedIterator &
 
template<CBasicBidirectionalIterator = Iterator>
auto operator- (int steps) const -> TExtendedIterator
 

Friends

auto operator- (TExtendedIterator const &l, TExtendedIterator const &r) -> difference_type
 
bool operator== (TExtendedIterator const &l, TExtendedIterator const &r)
 
bool operator!= (TExtendedIterator const &l, TExtendedIterator const &r)
 
template<CIteratorComparable = Iterator>
auto operator<=> (TExtendedIterator const &l, TExtendedIterator const &r)
 

Detailed Description

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
struct Mcro::Range::TExtendedIterator< Iterator, Policy >

Unreal's own iterators are not STL compliant (they are only compatible with range-for loops) so they cannot be used with more advanced STL algorithms or other third-party libraries which may expect the full iterator interface compatibility. For that TExtendedIterator fills in the missing components and wraps Unreal iterators to be fully STL iterator compliant.

TExtendedIterator makes a copy of the Unreal iterator it wraps for internal storage, which should not have significant side effects, but emphasis is on SHOULD.

Definition at line 278 of file Iterators.h.

Member Typedef Documentation

◆ difference_type

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
using Mcro::Range::TExtendedIterator< Iterator, Policy >::difference_type = TIteratorDifference<Iterator>

Definition at line 284 of file Iterators.h.

◆ iterator_category

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
using Mcro::Range::TExtendedIterator< Iterator, Policy >::iterator_category = TIteratorCategory<Iterator>

Definition at line 283 of file Iterators.h.

◆ pointer

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
using Mcro::Range::TExtendedIterator< Iterator, Policy >::pointer = value_type*

Definition at line 285 of file Iterators.h.

◆ reference

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
using Mcro::Range::TExtendedIterator< Iterator, Policy >::reference = value_type&

Definition at line 286 of file Iterators.h.

◆ value_type

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
using Mcro::Range::TExtendedIterator< Iterator, Policy >::value_type = TIteratorElementType<Iterator>

Definition at line 282 of file Iterators.h.

Constructor & Destructor Documentation

◆ TExtendedIterator() [1/4]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
Mcro::Range::TExtendedIterator< Iterator, Policy >::TExtendedIterator ( )
inline

Definition at line 288 of file Iterators.h.

◆ TExtendedIterator() [2/4]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
template<CConvertibleToDecayed< Iterator > InputIterator>
Mcro::Range::TExtendedIterator< Iterator, Policy >::TExtendedIterator ( InputIterator && input)
inline

Definition at line 291 of file Iterators.h.

◆ TExtendedIterator() [3/4]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
Mcro::Range::TExtendedIterator< Iterator, Policy >::TExtendedIterator ( TExtendedIterator< Iterator, Policy > const & other)
inline

Definition at line 293 of file Iterators.h.

◆ TExtendedIterator() [4/4]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
Mcro::Range::TExtendedIterator< Iterator, Policy >::TExtendedIterator ( TExtendedIterator< Iterator, Policy > && other)
inlinenoexcept

Definition at line 296 of file Iterators.h.

Member Function Documentation

◆ operator*() [1/2]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator* ( ) -> value_type const&
inline

Definition at line 340 of file Iterators.h.

◆ operator*() [2/2]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator* ( ) const -> value_type const&
inline

Definition at line 347 of file Iterators.h.

◆ operator+()

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator+ ( int steps) const -> TExtendedIterator
inline

Definition at line 359 of file Iterators.h.

◆ operator++() [1/2]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator++ ( ) -> TExtendedIterator&
inline

Definition at line 306 of file Iterators.h.

◆ operator++() [2/2]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator++ ( int ) -> TExtendedIterator
inline

Definition at line 312 of file Iterators.h.

◆ operator+=()

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator+= ( int steps) -> TExtendedIterator&
inline

Definition at line 354 of file Iterators.h.

◆ operator-()

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
template<CBasicBidirectionalIterator = Iterator>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator- ( int steps) const -> TExtendedIterator
inline

Definition at line 373 of file Iterators.h.

◆ operator--() [1/2]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
template<CBasicBidirectionalIterator = Iterator>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator-- ( ) -> TExtendedIterator&
inline

Definition at line 320 of file Iterators.h.

◆ operator--() [2/2]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
template<CBasicBidirectionalIterator = Iterator>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator-- ( int ) -> TExtendedIterator
inline

Definition at line 327 of file Iterators.h.

◆ operator-=()

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
template<CBasicBidirectionalIterator = Iterator>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator-= ( int steps) -> TExtendedIterator&
inline

Definition at line 367 of file Iterators.h.

◆ operator->() [1/2]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
template<CHasMemberAccessOperator = Iterator>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator-> ( )
inline

Definition at line 335 of file Iterators.h.

◆ operator->() [2/2]

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
template<CHasMemberAccessOperator = Iterator>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator-> ( ) const
inline

Definition at line 338 of file Iterators.h.

◆ operator=()

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
auto Mcro::Range::TExtendedIterator< Iterator, Policy >::operator= ( TExtendedIterator< Iterator, Policy > other) -> TExtendedIterator&
inline

Definition at line 299 of file Iterators.h.

Friends And Related Symbol Documentation

◆ operator!=

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
bool operator!= ( TExtendedIterator< Iterator, Policy > const & l,
TExtendedIterator< Iterator, Policy > const & r )
friend

Definition at line 390 of file Iterators.h.

◆ operator-

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
auto operator- ( TExtendedIterator< Iterator, Policy > const & l,
TExtendedIterator< Iterator, Policy > const & r ) -> difference_type
friend

Definition at line 380 of file Iterators.h.

◆ operator<=>

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
template<CIteratorComparable = Iterator>
auto operator<=> ( TExtendedIterator< Iterator, Policy > const & l,
TExtendedIterator< Iterator, Policy > const & r )
friend

Definition at line 396 of file Iterators.h.

◆ operator==

template<CBasicForwardIterator Iterator, FExtendedIteratorPolicy Policy = {}>
bool operator== ( TExtendedIterator< Iterator, Policy > const & l,
TExtendedIterator< Iterator, Policy > const & r )
friend

Definition at line 385 of file Iterators.h.


The documentation for this struct was generated from the following file: