File: iterator.h

package info (click to toggle)
c%2B%2B-annotations 13.02.02-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 13,576 kB
  • sloc: cpp: 25,297; makefile: 1,523; ansic: 165; sh: 126; perl: 90; fortran: 27
file content (72 lines) | stat: -rw-r--r-- 2,301 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
    class iterator: public Iterator
    {
        friend class StringPtr;

        std::vector<std::string *>::iterator d_current;

        iterator(std::vector<std::string *>::iterator const &current)
        :
            d_current(current)
        {}

        public:
            iterator &operator--()
            {
                --d_current;
                return *this;
            }
            iterator operator--(int)
            {
                return iterator(d_current--);
            }
            iterator &operator++()
            {
                ++d_current;
                return *this;
            }
            bool operator==(iterator const &other) const
            {
                return d_current == other.d_current;
            }
            bool operator!=(iterator const &other) const
            {
                return d_current != other.d_current;
            }
            int operator-(iterator const &rhs) const
            {
                return d_current - rhs.d_current;
            }
            std::string &operator*() const
            {
                return **d_current;
            }
            bool operator<(iterator const &other) const
            {
                return **d_current < **other.d_current;
            }
            iterator operator+(int step) const
            {
                return iterator(d_current + step);
            }
            iterator operator-(int step) const
            {
                return iterator(d_current - step);
            }

    // the following members are not used by sort(), but they
    // might come in handy in other situations:
            iterator &operator+=(int step)  // increment the iterator
            {                               // over `n' steps
                d_current += step;
                return *this;
            }
            iterator &operator-=(int step)  // decrement the iterator
            {                               // over `n' steps
                d_current -= step;
                return *this;
            }
            std::string *operator->() const // access the fields of the
            {                               // struct an iterator points
                return *d_current;          // to. E.g., it->length()
            }
    };