Coverage Report

Created: 2026-01-25 07:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/syntax-highlighting/src/lib/worddelimiters.cpp
Line
Count
Source
1
/*
2
    SPDX-FileCopyrightText: 2020 Jonathan Poelen <jonathan.poelen@gmail.com>
3
4
    SPDX-License-Identifier: MIT
5
*/
6
7
#include "worddelimiters_p.h"
8
9
using namespace KSyntaxHighlighting;
10
11
WordDelimiters::WordDelimiters()
12
5.51M
    : asciiDelimiters{}
13
5.51M
{
14
154M
    for (const char *p = "\t !%&()*+,-./:;<=>?[\\]^{|}~"; *p; ++p) {
15
148M
        asciiDelimiters.set(*p);
16
148M
    }
17
5.51M
}
18
19
WordDelimiters::WordDelimiters(QStringView str)
20
12
    : asciiDelimiters{}
21
12
{
22
12
    append(str);
23
12
}
24
25
bool WordDelimiters::contains(QChar c) const
26
0
{
27
0
    if (c.unicode() < 128) {
28
0
        return asciiDelimiters.test(c.unicode());
29
0
    }
30
    // perf tells contains is MUCH faster than binary search here, very short array
31
0
    return notAsciiDelimiters.contains(c);
32
0
}
33
34
void WordDelimiters::append(QStringView s)
35
28
{
36
88
    for (QChar c : s) {
37
88
        if (c.unicode() < 128) {
38
84
            asciiDelimiters.set(c.unicode());
39
84
        } else {
40
4
            notAsciiDelimiters.append(c);
41
4
        }
42
88
    }
43
28
}
44
45
void WordDelimiters::remove(QStringView s)
46
16
{
47
28
    for (QChar c : s) {
48
28
        if (c.unicode() < 128) {
49
28
            asciiDelimiters.set(c.unicode(), false);
50
28
        } else {
51
0
            notAsciiDelimiters.remove(c);
52
0
        }
53
28
    }
54
16
}