1/*
2 SPDX-FileCopyrightText: 2020 Jonathan Poelen <jonathan.poelen@gmail.com>
3
4 SPDX-License-Identifier: MIT
5*/
6
7#ifndef KSYNTAXHIGHLIGHTING_WORDDELIMITERS_P_H
8#define KSYNTAXHIGHLIGHTING_WORDDELIMITERS_P_H
9
10#include <QString>
11
12#include <bitset>
13
14namespace KSyntaxHighlighting
15{
16/**
17 * Represents a list of character that separates 2 words.
18 *
19 * Default delimiters are .():!+*,-<=>%&/;?[]^{|}~\, space (' ') and tabulator ('\t').
20 *
21 * @see Rule
22 * @since 5.74
23 */
24class WordDelimiters
25{
26public:
27 WordDelimiters();
28
29 /**
30 * Initialize with a default delimiters.
31 */
32 explicit WordDelimiters(QStringView str);
33
34 /**
35 * Returns @c true if @p c is a word delimiter; otherwise returns @c false.
36 */
37 bool contains(QChar c) const;
38
39 /**
40 * Appends each character of @p s to word delimiters.
41 */
42 void append(QStringView s);
43
44 /**
45 * Removes each character of @p s from word delimiters.
46 */
47 void remove(QStringView c);
48
49private:
50 /**
51 * An array which represents ascii characters for very fast lookup.
52 * The character is used as an index and the value @c true indicates a word delimiter.
53 */
54 std::bitset<128> asciiDelimiters;
55
56 /**
57 * Contains characters that are not ascii and is empty for most syntax definition.
58 */
59 QString notAsciiDelimiters;
60};
61}
62
63#endif
64

source code of syntax-highlighting/src/lib/worddelimiters_p.h