8 #ifndef INCL_evo_impl_iter_h 9 #define INCL_evo_impl_iter_h 45 typedef typename T::Size
Size;
46 typedef typename T::IterKey
Key;
48 const typename T::IterItem,
78 { memcpy(
this, &src,
sizeof(src)); init(); }
85 { memcpy(
this, &src,
sizeof(src)); init();
return *
this; }
156 template<
typename T_>
164 template<
typename T_>
178 const Key& getKey()
const 186 void set(
const Key& key,
const Item* data) {
193 void setData(
const Item* item)
194 {
data_ = (Item*)item; }
198 static const IterBaseType&
end()
199 {
static const IterBaseType End;
return End; }
376 default:
end_ =
true;
data_ = NULL;
break;
434 default:
end_ =
true;
data_ = NULL;
break;
443 { next();
return *
this; }
449 { IterType tmp(*
this); next();
return tmp; }
650 default:
end_ =
true;
data_ = NULL;
break;
706 default:
end_ =
true;
data_ = NULL;
break;
715 { prev();
return *
this; }
721 { IterType tmp(*
this); prev();
return tmp; }
1016 { next(count);
return *
this; }
1023 { prev(count);
return *
this; }
1032 { IterType tmp(*
this); tmp.
next(count);
return tmp; }
1041 { IterType tmp(*
this); tmp.prev(count);
return tmp; }
1049 return (
end_ ? 0 : -1);
1052 else if (
key_ == iter.getKey())
1055 return (
key_ < iter.getKey() ? -1 : 1);
1064 return (
end_ ? 0 : -1);
1067 else if (
key_ == num)
1070 return (
key_ < num ? -1 : 1);
1078 {
return (compare(iter) < 0); }
1085 {
return (compare(num) < 0); }
1092 {
return (compare(iter) <= 0); }
1099 {
return (compare(num) <= 0); }
1106 {
return (compare(iter) > 0); }
1113 {
return (compare(num) > 0); }
1120 {
return (compare(iter) >= 0); }
1127 {
return (compare(num) >= 0); }
1138 {
return (compare(num) == 0); }
1145 {
return (compare(num) != 0); }
1151 {
return obj_->iterCount(); }
1226 template<
class T,
int F,
int L>
1231 static const T FIRST = (T)F;
1232 static const T LAST = (T)L;
1384 if (value_ <= FIRST)
1387 value_ = (EnumType)((
int)value_ - 1);
1396 value_ = (EnumType)((
int)value_ + 1);
IterType & operator=(IteratorPos pos)
Assignment operator to set position.
Definition: iter.h:431
IteratorRa()
Constructor.
Definition: iter.h:926
T Target
Iterator target type.
Definition: iter.h:58
IteratorBase()
Constructor (used internally).
Definition: iter.h:208
Item * data_
Item pointer.
Definition: iter.h:205
This & operator=(EnumType value)
Assignment operator to set at explicit enum value.
Definition: iter.h:1271
IteratorRa< const T > Const
Random access const iterator type.
Definition: iter.h:918
IterType & operator-=(Size count)
In-place subtraction (multi decrement) operator.
Definition: iter.h:1022
IteratorRa< typename RemoveConst< T >::Type > Mutable
Random access mutable iterator type.
Definition: iter.h:919
bool operator!() const
Check whether iterator is at end.
Definition: iter.h:1289
bool operator<(Key num) const
Less-than operator.
Definition: iter.h:1084
IteratorBase< T >::Key Key
Iterator key type.
Definition: iter.h:915
IterType & operator=(IteratorPos pos)
Assignment operator to set position.
Definition: iter.h:997
IteratorBi(T &obj)
Constructor.
Definition: iter.h:639
IterBaseType & operator=(const IterBaseType &src)
Copy/Assignment operator to copy from source iterator.
Definition: iter.h:84
StaticIf< IsConst< T >::value, Mutable, Const >::Type ToggleConst
Used for converting between Const/Mutable iterators.
Definition: iter.h:923
This & operator--()
Pre decrement operator, moves to previous enum value or end.
Definition: iter.h:1332
Static conditional type.
Definition: meta.h:134
IterType & operator=(const typename IterBaseType::ToggleConst &src)
Assignment operator to copy from source iterator.
Definition: iter.h:414
IteratorBase< T > IterBaseType
Iterator base type for parameter passing.
Definition: iter.h:921
StaticIf< IsConst< T >::value, const typename T::IterItem, typename T::IterItem >::Type Item
Iterator item type.
Definition: iter.h:50
T * obj_
Container object pointer.
Definition: iter.h:202
IteratorBi(T &obj, IteratorPos pos)
Constructor setting position.
Definition: iter.h:646
bool next(Size count)
Go to next item, skipping given count (used internally).
Definition: iter.h:1164
bool operator==(const IterBaseType &iter) const
Equality operator.
Definition: iter.h:142
IteratorBi(const IterType &src)
Copy constructor.
Definition: iter.h:665
bool operator>(const IterBaseType &iter) const
Greater-than operator.
Definition: iter.h:1105
This & operator++()
Pre increment operator, moves to next enum value or end.
Definition: iter.h:1315
This & operator=(const This &src)
Assignment operator.
Definition: iter.h:1261
IteratorBi(T *obj)
Constructor (used internally).
Definition: iter.h:732
IteratorBi< T > IterType
Iterator type.
Definition: iter.h:627
IteratorBase< T > IterBaseType
Iterator base type for parameter passing.
Definition: iter.h:628
T first(T val1, T val2)
Definition: alg.h:85
IterType & operator=(const IterType &src)
Copy/Assignment operator to copy from source iterator.
Definition: iter.h:971
Random access iterator.
Definition: iter.h:904
This & operator=(IteratorPos pos)
Assignment operator to set at given position.
Definition: iter.h:1281
IterType & operator++()
Pre increment operator.
Definition: iter.h:442
IteratorBi()
Constructor.
Definition: iter.h:633
bool operator!() const
Check whether iterator is at end (not valid).
Definition: iter.h:135
This operator--(int)
Post decrement operator, moves to previous enum value or end.
Definition: iter.h:1340
IterType & operator=(const ToggleConst &src)
Assignment operator to copy from source iterator.
Definition: iter.h:979
bool operator!=(const IteratorBase< T_ > &oth) const
Check inequality with another iterator.
Definition: iter.h:165
IteratorPos
Iterator position value.
Definition: iter.h:20
bool operator!=(Key num) const
Inequality operator.
Definition: iter.h:1144
int compare(const IterBaseType &iter) const
Compare to another iterator.
Definition: iter.h:1047
IterType operator--(int)
Post decrement operator.
Definition: iter.h:720
IteratorFw(T &obj, const Key &key, Item *data)
Constructor.
Definition: iter.h:385
bool operator>(Key num) const
Greater-than operator.
Definition: iter.h:1112
T::IterKey Key
Iterator key type.
Definition: iter.h:46
IterType & operator=(const IterBaseType &src)
Copy/Assignment operator to copy from source iterator.
Definition: iter.h:403
IteratorBase(T &obj, const Key &key, Item *data)
Constructor.
Definition: iter.h:71
bool operator<=(Key num) const
Less-than-or-equal operator.
Definition: iter.h:1098
bool first()
Go to first item (used internally).
Definition: iter.h:465
IteratorBase(T &obj)
Constructor.
Definition: iter.h:63
StaticIf< IsConst< T >::value, Mutable, Const >::Type ToggleConst
Used for converting between Const/Mutable iterators.
Definition: iter.h:56
IterBaseType & operator=(IteratorPos pos)
Assignment operator to set position.
Definition: iter.h:111
EnumType value_
Definition: iter.h:1362
bool end_
End flag.
Definition: iter.h:203
bool operator==(const IteratorBase< T_ > &oth) const
Check equality with another iterator.
Definition: iter.h:157
bool prev(Size count)
Go to previous item, skipping given count (used internally).
Definition: iter.h:1177
IteratorBase(const IterBaseType &src)
Copy constructor.
Definition: iter.h:77
EnumIterator()
Constructor, sets to first enum value.
Definition: iter.h:1235
IterType & operator+=(Size count)
In-place addition (multi increment) operator.
Definition: iter.h:1015
Last item iterator position.
Definition: iter.h:22
T::Size Size
Size type to use.
Definition: iter.h:45
IterType & operator=(Key num)
Assignment operator for random access position index.
Definition: iter.h:1004
Check if type is const.
Definition: meta.h:215
IterType & operator--()
Pre decrement operator.
Definition: iter.h:714
IterBaseType & operator=(const ToggleConst &src)
Assignment operator to copy from source iterator.
Definition: iter.h:94
IteratorBase< T > IterBaseType
Iterator base type for parameter passing.
Definition: iter.h:52
T Type
Translated type.
Definition: meta.h:331
bool next()
Go to next item (used internally).
Definition: iter.h:473
IteratorFw(const IterBaseType &src)
Copy constructor.
Definition: iter.h:395
IteratorBase< T > IterBaseType
Iterator base type for parameter passing.
Definition: iter.h:355
Safe bool base class.
Definition: type.h:73
IteratorBase< T >::Item Item
Iterator item type.
Definition: iter.h:350
IterType & operator=(const typename IterBaseType::ToggleConst &src)
Assignment operator to copy from source iterator.
Definition: iter.h:688
First item iterator position.
Definition: iter.h:21
Key key_
Iterator key.
Definition: iter.h:204
Size count() const
Get container item count.
Definition: iter.h:1150
Bidirectional iterator.
Definition: iter.h:611
IteratorRa(T &obj, Key num)
Constructor setting position.
Definition: iter.h:946
void setpos(IteratorPos pos)
Definition: iter.h:1365
Iterator template for sequential enum values.
Definition: iter.h:1227
void prev()
Definition: iter.h:1382
T EnumType
Definition: iter.h:1230
static const EndT END
Special integer value for indicating end of items or no item.
Definition: type.h:1846
bool operator<=(const IterBaseType &iter) const
Less-than-or-equal operator.
Definition: iter.h:1091
EnumIterator< T, F, L > This
Definition: iter.h:1229
IterType operator++(int)
Post increment operator.
Definition: iter.h:448
IterType & operator=(const IterType &src)
Copy/Assignment operator to copy from source iterator.
Definition: iter.h:673
bool last()
Go to last item.
Definition: iter.h:738
Forward iterator.
Definition: iter.h:340
IterType & operator=(const IterBaseType &src)
Copy/Assignment operator to copy from source iterator.
Definition: iter.h:975
IteratorFw< typename RemoveConst< T >::Type > Mutable
Forward mutable iterator type.
Definition: iter.h:353
bool operator==(const This &oth) const
Equality operator to compare with another iterator to same enum.
Definition: iter.h:1302
IteratorDir
Iterator direction value.
Definition: iter.h:27
IteratorBi(const IterBaseType &src)
Copy constructor.
Definition: iter.h:669
int compare(Key num) const
Compare to a position index.
Definition: iter.h:1062
Item * operator->()
Dereference iterator to access data member.
Definition: iter.h:129
IteratorBase< typename RemoveConst< T >::Type > Mutable
Mutable iterator type.
Definition: iter.h:55
bool operator!=(const IterBaseType &iter) const
Inequality operator.
Definition: iter.h:149
IterType & operator=(T &obj)
Assignment operator.
Definition: iter.h:695
IterType & operator=(const ToggleConst &src)
Assignment operator to copy from source iterator.
Definition: iter.h:681
EnumIterator(const This &src)
Copy constructor.
Definition: iter.h:1241
void next()
Definition: iter.h:1391
Reverse iterator direction.
Definition: iter.h:30
IteratorBase< const T > Const
Const iterator type.
Definition: iter.h:54
IterType & operator=(const IterType &src)
Copy/Assignment operator to copy from source iterator.
Definition: iter.h:399
Evo C++ Library namespace.
Definition: alg.h:11
No iterator direction.
Definition: iter.h:28
EnumIterator(IteratorPos pos)
Constructor to start at given position.
Definition: iter.h:1253
IteratorFw(const IterType &src)
Copy constructor.
Definition: iter.h:391
IterType operator+(Size count) const
Addition (multi increment) operator.
Definition: iter.h:1031
bool operator!=(const This &oth) const
Inequality operator to compare with another iterator to same enum.
Definition: iter.h:1309
bool prev()
Go to previous item.
Definition: iter.h:746
EnumIterator(EnumType value)
Constructor to start at explicit enum value.
Definition: iter.h:1247
IteratorRa(const IterType &src)
Copy constructor.
Definition: iter.h:963
IteratorRa(T &obj)
Constructor.
Definition: iter.h:932
IteratorRa< T > IterType
Iterator type.
Definition: iter.h:920
IteratorBase< T >::Key Key
Iterator key type.
Definition: iter.h:622
IteratorRa(T &obj, IteratorPos pos)
Constructor setting position.
Definition: iter.h:939
EnumType operator*() const
Dereference iterator to get current enum value.
Definition: iter.h:1295
StaticIf< IsConst< T >::value, Mutable, Const >::Type ToggleConst
Used for converting between Const/Mutable iterators.
Definition: iter.h:630
IteratorFw()
Constructor.
Definition: iter.h:360
End iterator position.
Definition: iter.h:23
IteratorBase< T >::Item Item
Iterator item type.
Definition: iter.h:916
Base iterator (used internally).
Definition: iter.h:43
bool operator==(Key num) const
Equality operator.
Definition: iter.h:1137
bool operator<(const IterBaseType &iter) const
Less-than operator.
Definition: iter.h:1077
bool operator>=(const IterBaseType &iter) const
Greater-than-or-equal operator.
Definition: iter.h:1119
Forward iterator direction.
Definition: iter.h:29
Item & operator*()
Dereference iterator to get item data reference.
Definition: iter.h:121
IteratorFw(T *obj)
Constructor (used internally).
Definition: iter.h:459
IterType & operator=(const typename IterBaseType::ToggleConst &src)
Assignment operator to copy from source iterator.
Definition: iter.h:986
IteratorBase< T >::Size Size
Size type to use.
Definition: iter.h:914
IteratorFw< T > IterType
Iterator type for parameter passing.
Definition: iter.h:354
IteratorBi< const T > Const
Bidirectional const iterator type.
Definition: iter.h:625
IteratorRa(const IterBaseType &src)
Copy constructor.
Definition: iter.h:967
IteratorBi(T &obj, const Key &key, Item *data)
Constructor.
Definition: iter.h:659
IteratorBase< T >::Item Item
Iterator item type.
Definition: iter.h:623
IteratorBase< T >::Key Key
Iterator key type.
Definition: iter.h:349
IteratorRa(T &obj, const Key &key, Item *data)
Constructor.
Definition: iter.h:957
IterType & operator=(const ToggleConst &src)
Assignment operator to copy from source iterator.
Definition: iter.h:407
This operator++(int)
Post increment operator, moves to next enum value or end.
Definition: iter.h:1323
IteratorFw(T &obj, IteratorPos pos)
Constructor.
Definition: iter.h:373
IterBaseType & operator=(T &obj)
Assignment operator to reset with new object, at end.
Definition: iter.h:104
IteratorBi< typename RemoveConst< T >::Type > Mutable
Bidirectional mutable iterator type.
Definition: iter.h:626
static const IterBaseType & end()
Get iterator at end position.
Definition: iter.h:198
bool end_
Definition: iter.h:1363
IteratorBase< T >::Size Size
Size type to use.
Definition: iter.h:621
IteratorBase< T >::Size Size
Size type to use.
Definition: iter.h:348
IterType & operator=(const IterBaseType &src)
Copy/Assignment operator to copy from source iterator.
Definition: iter.h:677
EnumType value() const
Get current enum value.
Definition: iter.h:1349
Key index() const
Get iterator position index.
Definition: iter.h:1156
IteratorFw< const T > Const
Forward const iterator type.
Definition: iter.h:352
IteratorFw(T &obj)
Constructor.
Definition: iter.h:366
#define EVO_PARAM_UNUSED(NAME)
Mark function parameter as unused to suppress "unreferenced parameter" compiler warnings on it...
Definition: sys.h:427
bool operator>=(Key num) const
Greater-than-or-equal operator.
Definition: iter.h:1126
IterType operator-(Size count) const
Subtraction (multi decrement) operator.
Definition: iter.h:1040
IterType & operator=(T &obj)
Assignment operator.
Definition: iter.h:993
IteratorBase(T *obj)
Constructor (used internally).
Definition: iter.h:215
StaticIf< IsConst< T >::value, Mutable, Const >::Type ToggleConst
Used for converting between Const/Mutable iterators.
Definition: iter.h:357
int value_num(int endvalue=0) const
Get current enum number value.
Definition: iter.h:1355
IterType & operator=(T &obj)
Assignment operator.
Definition: iter.h:424
IterType & operator=(IteratorPos pos)
Assignment operator to set position.
Definition: iter.h:702