KSyntaxHighlighting

worddelimiters.cpp
1 /*
2  SPDX-FileCopyrightText: 2020 Jonathan Poelen <[email protected]>
3 
4  SPDX-License-Identifier: MIT
5 */
6 
7 #include "worddelimiters_p.h"
8 
9 using namespace KSyntaxHighlighting;
10 
11 WordDelimiters::WordDelimiters()
12  : asciiDelimiters{}
13 {
14  for (const char *p = "\t !%&()*+,-./:;<=>?[\\]^{|}~"; *p; ++p) {
15  asciiDelimiters.set(*p);
16  }
17 }
18 
19 bool WordDelimiters::contains(QChar c) const
20 {
21  if (c.unicode() < 128) {
22  return asciiDelimiters.test(c.unicode());
23  }
24  // perf tells contains is MUCH faster than binary search here, very short array
25  return notAsciiDelimiters.contains(c);
26 }
27 
28 void WordDelimiters::append(QStringView s)
29 {
30  for (QChar c : s) {
31  if (c.unicode() < 128) {
32  asciiDelimiters.set(c.unicode());
33  } else {
34  notAsciiDelimiters.append(c);
35  }
36  }
37 }
38 
39 void WordDelimiters::remove(QStringView s)
40 {
41  for (QChar c : s) {
42  if (c.unicode() < 128) {
43  asciiDelimiters.set(c.unicode(), false);
44  } else {
45  notAsciiDelimiters.remove(c);
46  }
47  }
48 }
ushort unicode() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sun Mar 26 2023 04:09:17 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.