Plasma Engine  2.0
Loading...
Searching...
No Matches
plRangeView< ValueType, IteratorType > Class Template Reference

This class uses delegates to define a range of values that can be enumerated using a forward iterator. More...

#include <RangeView.h>

Classes

struct  ConstIterator
 Const iterator, don't use directly, use ranged based for loops or call begin() end(). More...
 
struct  Iterator
 Iterator, don't use directly, use ranged based for loops or call begin() end(). More...
 

Public Types

using BeginCallback = plDelegate<IteratorType()>
 
using EndCallback = plDelegate<IteratorType()>
 
using NextCallback = plDelegate<void(IteratorType&)>
 
using ValueCallback = plDelegate<ValueType(const IteratorType&)>
 

Public Member Functions

PL_ALWAYS_INLINE plRangeView (BeginCallback begin, EndCallback end, NextCallback next, ValueCallback value)
 Initializes the plRangeView with the delegates used to enumerate the range.
 
Iterator begin ()
 
Iterator end ()
 
ConstIterator begin () const
 
ConstIterator end () const
 
ConstIterator cbegin () const
 
ConstIterator cend () const
 

Friends

struct Iterator
 
struct ConstIterator
 

Detailed Description

template<typename ValueType, typename IteratorType>
class plRangeView< ValueType, IteratorType >

This class uses delegates to define a range of values that can be enumerated using a forward iterator.

Can be used to create a contiguous view to elements of a certain type without the need for them to actually exist in the same space or format. Think of IEnumerable in c# using composition via plDelegate instead of derivation. ValueType defines the value type we are iterating over and IteratorType is the internal key to identify an element. An example that creates a RangeView of strings that are stored in a linear array of structs.

[this]()-> plUInt32 { return 0; },
[this]()-> plUInt32 { return array.GetCount(); },
[this](plUInt32& it) { ++it; },
[this](const plUInt32& it)-> const char* { return array[it].m_String; });
for (const char* szValue : range)
{
}
PL_ALWAYS_INLINE plRangeView(BeginCallback begin, EndCallback end, NextCallback next, ValueCallback value)
Initializes the plRangeView with the delegates used to enumerate the range.
Definition RangeView_inl.h:3

The documentation for this class was generated from the following files: