File: foreach.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 (45 lines) | stat: -rw-r--r-- 1,069 bytes parent folder | download | duplicates (11)
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

//FOREACH1
    template <typename Iterator, typename Class, typename Data>
    Class &ForEach(Iterator begin, Iterator end, Class &object,
                        void (Class::*member)(Data &))
    {
        while (begin != end)
            (object.*member)(*begin++);

        return object;
    }
//=

//FOREACH2
    template <typename Iterator, typename Class, typename Data>
    Class &ForEach(Iterator begin, Iterator end, Class &object,
                    void (Class::*member)(Data &) const)
    {
        while (begin != end)
            (object.*member)(*begin++);

        return object;
    }
//=

//FOREACH3
    template <typename Iterator, typename Class>
    Class &ForEach(Iterator begin, Iterator end, Class &object)
    {
        while (begin != end)
            object(*begin++);

        return object;
    }
//=

//FOREACH4
    template <typename Iterator, typename Data>
    void ForEach(Iterator begin, Iterator end,
            Data(*function)(Data))
    {
        for (; begin != end; ++begin)
            *begin = function(*begin);
    }
//=