File indexing completed on 2024-05-12 15:50:07
0001 /* 0002 SPDX-FileCopyrightText: 2020 Jonathan Poelen <jonathan.poelen@gmail.com> 0003 0004 SPDX-License-Identifier: MIT 0005 */ 0006 0007 #include "worddelimiters_p.h" 0008 0009 using namespace KSyntaxHighlighting; 0010 0011 WordDelimiters::WordDelimiters() 0012 : asciiDelimiters{} 0013 { 0014 for (const char *p = "\t !%&()*+,-./:;<=>?[\\]^{|}~"; *p; ++p) { 0015 asciiDelimiters.set(*p); 0016 } 0017 } 0018 0019 bool WordDelimiters::contains(QChar c) const 0020 { 0021 if (c.unicode() < 128) { 0022 return asciiDelimiters.test(c.unicode()); 0023 } 0024 // perf tells contains is MUCH faster than binary search here, very short array 0025 return notAsciiDelimiters.contains(c); 0026 } 0027 0028 void WordDelimiters::append(QStringView s) 0029 { 0030 for (QChar c : s) { 0031 if (c.unicode() < 128) { 0032 asciiDelimiters.set(c.unicode()); 0033 } else { 0034 notAsciiDelimiters.append(c); 0035 } 0036 } 0037 } 0038 0039 void WordDelimiters::remove(QStringView s) 0040 { 0041 for (QChar c : s) { 0042 if (c.unicode() < 128) { 0043 asciiDelimiters.set(c.unicode(), false); 0044 } else { 0045 notAsciiDelimiters.remove(c); 0046 } 0047 } 0048 }