@@ -71,8 +71,10 @@ namespace etl
71
71
typedef T* pointer;
72
72
typedef const T* const_pointer;
73
73
74
- typedef T* iterator;
75
- typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
74
+ typedef T* iterator;
75
+ typedef const T* const_iterator;
76
+ typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
77
+ typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
76
78
77
79
typedef etl::circular_iterator<pointer> circular_iterator;
78
80
typedef etl::circular_iterator<ETL_OR_STD::reverse_iterator<pointer> > reverse_circular_iterator;
@@ -185,6 +187,14 @@ namespace etl
185
187
return pbegin;
186
188
}
187
189
190
+ // *************************************************************************
191
+ // / Returns a const iterator to the beginning of the span.
192
+ // *************************************************************************
193
+ ETL_NODISCARD ETL_CONSTEXPR const_iterator cbegin () const ETL_NOEXCEPT
194
+ {
195
+ return pbegin;
196
+ }
197
+
188
198
// *************************************************************************
189
199
// / Returns an iterator to the beginning of the span.
190
200
// *************************************************************************
@@ -201,6 +211,14 @@ namespace etl
201
211
return circular_iterator (begin (), end ());
202
212
}
203
213
214
+ // *************************************************************************
215
+ // / Returns a const iterator to the end of the span.
216
+ // *************************************************************************
217
+ ETL_NODISCARD ETL_CONSTEXPR const_iterator cend () const ETL_NOEXCEPT
218
+ {
219
+ return (pbegin + Extent);
220
+ }
221
+
204
222
// *************************************************************************
205
223
// / Returns an iterator to the end of the span.
206
224
// *************************************************************************
@@ -209,6 +227,14 @@ namespace etl
209
227
return (pbegin + Extent);
210
228
}
211
229
230
+ // *************************************************************************
231
+ // Returns a const reverse iterator to the reverse beginning of the span.
232
+ // *************************************************************************
233
+ ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crbegin () const ETL_NOEXCEPT
234
+ {
235
+ return const_reverse_iterator ((pbegin + Extent));
236
+ }
237
+
212
238
// *************************************************************************
213
239
// Returns an reverse iterator to the reverse beginning of the span.
214
240
// *************************************************************************
@@ -225,6 +251,14 @@ namespace etl
225
251
return reverse_circular_iterator (rbegin (), rend ());
226
252
}
227
253
254
+ // *************************************************************************
255
+ // / Returns a const reverse iterator to the end of the span.
256
+ // *************************************************************************
257
+ ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crend () const ETL_NOEXCEPT
258
+ {
259
+ return const_reverse_iterator (pbegin);
260
+ }
261
+
228
262
// *************************************************************************
229
263
// / Returns a reverse iterator to the end of the span.
230
264
// *************************************************************************
@@ -413,8 +447,10 @@ namespace etl
413
447
typedef T* pointer;
414
448
typedef const T* const_pointer;
415
449
416
- typedef T* iterator;
417
- typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
450
+ typedef T* iterator;
451
+ typedef const T* const_iterator;
452
+ typedef ETL_OR_STD::reverse_iterator<iterator> reverse_iterator;
453
+ typedef ETL_OR_STD::reverse_iterator<const_iterator> const_reverse_iterator;
418
454
419
455
typedef etl::circular_iterator<pointer> circular_iterator;
420
456
typedef etl::circular_iterator<ETL_OR_STD::reverse_iterator<pointer> > reverse_circular_iterator;
@@ -544,6 +580,14 @@ namespace etl
544
580
return pbegin;
545
581
}
546
582
583
+ // *************************************************************************
584
+ // / Returns a const iterator to the beginning of the span.
585
+ // *************************************************************************
586
+ ETL_NODISCARD ETL_CONSTEXPR const_iterator cbegin () const ETL_NOEXCEPT
587
+ {
588
+ return pbegin;
589
+ }
590
+
547
591
// *************************************************************************
548
592
// / Returns an iterator to the beginning of the span.
549
593
// *************************************************************************
@@ -560,6 +604,14 @@ namespace etl
560
604
return circular_iterator (begin (), end ());
561
605
}
562
606
607
+ // *************************************************************************
608
+ // / Returns a const iterator to the end of the span.
609
+ // *************************************************************************
610
+ ETL_NODISCARD ETL_CONSTEXPR const_iterator cend () const ETL_NOEXCEPT
611
+ {
612
+ return pend;
613
+ }
614
+
563
615
// *************************************************************************
564
616
// / Returns an iterator to the end of the span.
565
617
// *************************************************************************
@@ -576,6 +628,14 @@ namespace etl
576
628
return reverse_iterator (pend);
577
629
}
578
630
631
+ // *************************************************************************
632
+ // Returns a const reverse iterator to the reverse beginning of the span.
633
+ // *************************************************************************
634
+ ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crbegin () const ETL_NOEXCEPT
635
+ {
636
+ return const_reverse_iterator (pend);
637
+ }
638
+
579
639
// *************************************************************************
580
640
// / Returns a reverse circular iterator to the end of the span.
581
641
// *************************************************************************
@@ -584,6 +644,14 @@ namespace etl
584
644
return reverse_circular_iterator (rbegin (), rend ());
585
645
}
586
646
647
+ // *************************************************************************
648
+ // / Returns a const reverse iterator to the end of the span.
649
+ // *************************************************************************
650
+ ETL_NODISCARD ETL_CONSTEXPR const_reverse_iterator crend () const ETL_NOEXCEPT
651
+ {
652
+ return const_reverse_iterator (pbegin);
653
+ }
654
+
587
655
// *************************************************************************
588
656
// / Returns a reverse iterator to the end of the span.
589
657
// *************************************************************************
0 commit comments