File: insert.cc

package info (click to toggle)
oxref 2.02.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 692 kB
  • sloc: cpp: 1,282; makefile: 131; sh: 48
file content (40 lines) | stat: -rw-r--r-- 996 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
37
38
39
40
#include "store.ih"

void Store::insert(ostream &out, string const &name, bool doSelect) const
{
    auto iter = d_defIdx.begin();
    auto end = d_defIdx.end();

    Pattern namePattern;

    if (not doSelect)
        namePattern.setPattern(name);

    while (true)
    {
        iter = doSelect ?
                    find_if(
                        iter, end, 
                        [&](size_t idx)
                        {
                            return string(d_xrefVector[idx].name()).find(name) 
                                    == 0;
                        }
                    )
                :
                    find_if(
                        iter, end, 
                        [&](size_t idx)
                        {
                            return namePattern << d_xrefVector[idx].symbol();
                        }
                    );

        if (iter == end)
            break;

        insertDefined(*iter, out, d_xrefVector);
        ++iter;
    }
}