File: recursivecoro.cc

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 (36 lines) | stat: -rw-r--r-- 608 bytes parent folder | download | duplicates (3)
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
#include "main.ih"

namespace
{
    size_t s_value = 0;
}

//def
Recursive recursiveCoro(bool recurse)
{
    while (true)
    {
        for (size_t idx = 0; idx != 2; ++idx)
            co_yield ++s_value;

        // here recursiveCoro will recursively be called

        if (not recurse)
            break;

        Recursive rec = recursiveCoro(false);

        while (true)
        {
            size_t value = rec.next();
            if (rec.done())
                break;

            co_yield value;
        }

        for (size_t idx = 0; idx != 2; ++idx)
            co_yield ++s_value;
    }
}
//=