Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
iterator.h
Go to the documentation of this file.
1#ifndef MSL_ITERATOR_H_
2#define MSL_ITERATOR_H_
3
4#include <stddef.h>
5
6namespace std {
12
13template <class Iterator>
15 typedef typename Iterator::difference_type difference_type;
16 typedef typename Iterator::value_type value_type;
17 typedef typename Iterator::pointer pointer;
18 typedef typename Iterator::reference reference;
19 typedef typename Iterator::iterator_category iterator_category;
20};
21
22template <class T>
30
31template<
32 class Category,
33 class T,
34 class Distance,
35 class Pointer,
36 class Reference
37> struct iterator {
38 typedef Distance difference_type;
39 typedef T value_type;
40 typedef Pointer pointer;
41 typedef Reference reference;
42 typedef Category iterator_category;
43};
44
45template <class InputIterator, class Distance>
46inline void __advance(InputIterator& i, Distance n, input_iterator_tag) {
47 for (; n > 0; --n)
48 ++i;
49}
50
51template <class BidirectionalIterator, class Distance>
52inline void __advance(BidirectionalIterator& i, Distance n, bidirectional_iterator_tag) {
53 if (n >= 0)
54 for (; n > 0; --n)
55 ++i;
56 else
57 for (; n < 0; ++n)
58 --i;
59}
60
61template <class RandomAccessIterator, class Distance>
62inline void __advance(RandomAccessIterator& i, Distance n, random_access_iterator_tag) {
63 i += n;
64}
65
66template <class InputIterator, class Distance>
67inline void advance(InputIterator& i, Distance n) {
69}
70
71// TODO: combine this with above later
72template <class InputIt, class Distance>
73inline void advance_fake(InputIt& it, Distance n) {
74 while (n > 0) {
75 --n;
76 ++it;
77 }
78}
79
80template <class InputIterator>
82__distance(InputIterator first, InputIterator last, input_iterator_tag) {
84 for (; first != last; ++first)
85 ++result;
86 return result;
87}
88
89template <class RandomAccessIterator>
91__distance(RandomAccessIterator first, RandomAccessIterator last, random_access_iterator_tag) {
92 return last - first;
93}
94
95template <class InputIterator>
97 InputIterator last) {
99}
100
101// This needs to be defined with gcc concepts or something similar. Workaround.
102template <class InputIt, class Distance>
103inline void advance_pointer(InputIt& it, Distance n) {
104 it += n;
105}
106
107} // namespace std
108
109#endif
n
Definition e_fmod.c:112
int i
Definition e_pow.c:165
static const double T[]
Definition k_tan.c:106
Definition JMATrigonometric.cpp:12
iterator_traits< InputIterator >::difference_type __distance(InputIterator first, InputIterator last, input_iterator_tag)
Definition iterator.h:82
iterator_traits< InputIterator >::difference_type distance(InputIterator first, InputIterator last)
Definition iterator.h:96
void advance_fake(InputIt &it, Distance n)
Definition iterator.h:73
void advance(InputIterator &i, Distance n)
Definition iterator.h:67
void __advance(InputIterator &i, Distance n, input_iterator_tag)
Definition iterator.h:46
void advance_pointer(InputIt &it, Distance n)
Definition iterator.h:103
int ptrdiff_t
Definition stddef.h:10
Definition iterator.h:10
Definition iterator.h:9
Definition iterator.h:7
T value_type
Definition iterator.h:25
ptrdiff_t difference_type
Definition iterator.h:24
T & reference
Definition iterator.h:27
T * pointer
Definition iterator.h:26
random_access_iterator_tag iterator_category
Definition iterator.h:28
Definition iterator.h:14
Iterator::value_type value_type
Definition iterator.h:16
Iterator::pointer pointer
Definition iterator.h:17
Iterator::reference reference
Definition iterator.h:18
Iterator::iterator_category iterator_category
Definition iterator.h:19
Iterator::difference_type difference_type
Definition iterator.h:15
Definition iterator.h:37
Category iterator_category
Definition iterator.h:42
Reference reference
Definition iterator.h:41
T value_type
Definition iterator.h:39
Pointer pointer
Definition iterator.h:40
Distance difference_type
Definition iterator.h:38
Definition iterator.h:8
Definition iterator.h:11