4#include "system/collections/ienumerator.h"
6namespace System {
namespace Collections {
namespace Generic {
16template <
typename Container,
typename Element>
25 typename Container::iterator
m_it;
41 return m_inited && m_it != m_data.end();
49 m_it = m_data.begin();
52 else if (m_it != m_data.end())
57 return m_it != m_data.end();
60 void Reset()
override { m_inited =
false; }
63#ifdef ASPOSE_GET_SHARED_MEMBERS
65 virtual void GetSharedMembers(System::Object::shared_members_type& result)
const override
67 Object::GetSharedMembers(result);
68 result.Add(
"System::Collections::Generic::BaseEnumerator<Container,Element>::m_owner", m_owner);
79template <
typename Container,
typename Element =
typename Container::value_type>
92 return this->
IsValid() ? *(this->
m_it) : System::Default<Element>();
97 System::Details::VirtualizedIteratorBase<Element>*
CloneIterator()
const override
107template <
typename KVPair,
typename Container>
117 KVPairIterator(
typename Container::const_iterator current) : mCurrent(std::move(current)) {}
121 return lhs.mCurrent == rhs.mCurrent;
126 return lhs.mCurrent != rhs.mCurrent;
131 return KVPair(*mCurrent);
160 typename Container::const_iterator mCurrent;
170template <
typename Container,
typename Element =
typename Container::value_type>
179 typename Container::reverse_iterator
m_it;
218 return this->
IsValid() ? *(this->
m_it) : System::Default<Element>();
224#ifdef ASPOSE_GET_SHARED_MEMBERS
226 virtual void GetSharedMembers(System::Object::shared_members_type& result)
const override
228 Object::GetSharedMembers(result);
229 result.Add(
"System::Collections::Generic::ReverseEnumerator<Container,Element>::m_owner",
m_owner);
Enumerator definition to wrap STL-styled types for C#-styled usage. Makes no assertions on container ...
Definition: base_enumerator.h:18
Object::ptr m_owner
Pointer to owner container object to make sure it is not deleted before enumerator is.
Definition: base_enumerator.h:21
BaseEnumerator(const Object::ptr &owner, Container &cont)
Initializes iterator.
Definition: base_enumerator.h:34
void Reset() override
Resets enumerator to allow re-enumerating elements.
Definition: base_enumerator.h:60
bool IsValid() const
Checks whether MoveNext() was called and end was not reached.
Definition: base_enumerator.h:39
Container::iterator m_it
Actual STL iterator.
Definition: base_enumerator.h:25
Container & m_data
Container inner data structure reference.
Definition: base_enumerator.h:23
bool MoveNext() override
Enumerator-style increment.
Definition: base_enumerator.h:45
bool m_inited
Whether MoveNext() was ever called.
Definition: base_enumerator.h:27
Interface of enumerator which can be used to iterate through some elements. Objects of this class sho...
Definition: ienumerator.h:63
Adapting iterator, wraps std::pair into KVPair expected from Dictionary.
Definition: base_enumerator.h:109
value_type & reference
Definition: base_enumerator.h:115
KVPairIterator & operator--()
Definition: base_enumerator.h:147
KVPairIterator operator++(int)
Definition: base_enumerator.h:140
std::bidirectional_iterator_tag iterator_category
Definition: base_enumerator.h:111
KVPair value_type
Definition: base_enumerator.h:112
std::ptrdiff_t difference_type
Definition: base_enumerator.h:113
friend bool operator==(const KVPairIterator &lhs, const KVPairIterator &rhs)
Definition: base_enumerator.h:119
value_type * pointer
Definition: base_enumerator.h:114
KVPairIterator & operator++()
Definition: base_enumerator.h:134
KVPair operator*() const
Definition: base_enumerator.h:129
KVPairIterator(typename Container::const_iterator current)
Definition: base_enumerator.h:117
friend bool operator!=(const KVPairIterator &lhs, const KVPairIterator &rhs)
Definition: base_enumerator.h:124
KVPairIterator operator--(int)
Definition: base_enumerator.h:153
Enumerator that reverse-iterates through container. Objects of this class should only be allocated us...
Definition: base_enumerator.h:172
Container & m_data
Container inner data structure reference.
Definition: base_enumerator.h:177
virtual MakeConstRef_t< Element > get_Current() const override
Gets 'current' element.
Definition: base_enumerator.h:216
Container::reverse_iterator m_it
Actual STL iterator.
Definition: base_enumerator.h:179
bool IsValid() const
Checks whether MoveNext() was called and end was not reached.
Definition: base_enumerator.h:194
ReverseEnumerator(const Object::ptr &owner, Container &cont)
Initializes iterator.
Definition: base_enumerator.h:188
virtual ~ReverseEnumerator()
Destructor.
Definition: base_enumerator.h:190
void Reset() override
Resets enumerator to allow re-enumerating elements.
Definition: base_enumerator.h:221
Object::ptr m_owner
Pointer to owner container object to make sure it is not deleted before enumerator is.
Definition: base_enumerator.h:175
bool m_inited
Whether MoveNext() was ever called.
Definition: base_enumerator.h:181
bool MoveNext() override
Enumerator-style increment.
Definition: base_enumerator.h:200
Iterator class for simple containers holding elements directly using rbegin() and rend() functions....
Definition: base_enumerator.h:81
System::Details::VirtualizedIteratorBase< Element > * CloneIterator() const override
Clones current iterator.
Definition: base_enumerator.h:97
MakeConstRef_t< Element > get_Current() const override
Gets 'current' element.
Definition: base_enumerator.h:90
SimpleEnumerator(Object::ptr owner, Container &cont)
Creates simple iterator.
Definition: base_enumerator.h:86
Definition: db_command.h:9
typename MakeConstRef< T >::type MakeConstRef_t
Helper type for MakeConstRef modifier.
Definition: make_const_ref.h:20