• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • applications API Reference
  • KDE Home
  • Contact Us
 

Kate

  • kde-4.14
  • applications
  • kate
  • part
  • mode
katewildcardmatcher.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE libraries
2  Copyright (C) 2007 Sebastian Pipping <webmaster@hartwork.org>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License version 2 as published by the Free Software Foundation.
7 
8  This library is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  Library General Public License for more details.
12 
13  You should have received a copy of the GNU Library General Public License
14  along with this library; see the file COPYING.LIB. If not, write to
15  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16  Boston, MA 02110-1301, USA.
17 */
18 
19 #include "katewildcardmatcher.h"
20 #include <QString>
21 #include <QChar>
22 
23 
24 
25 namespace KateWildcardMatcher {
26 
27 
28 
29 bool exactMatch(const QString & candidate, const QString & wildcard, int candidatePosFromRight,
30  int wildcardPosFromRight, bool caseSensitive = true) {
31  for (; wildcardPosFromRight >= 0; wildcardPosFromRight--) {
32  const ushort ch = wildcard[wildcardPosFromRight].unicode();
33  switch (ch) {
34  case L'*':
35  if (candidatePosFromRight == -1) {
36  break;
37  }
38 
39  if (wildcardPosFromRight == 0) {
40  return true;
41  }
42 
43  // Eat all we can and go back as far as we have to
44  for (int j = -1; j <= candidatePosFromRight; j++) {
45  if (exactMatch(candidate, wildcard, j, wildcardPosFromRight - 1)) {
46  return true;
47  }
48  }
49  return false;
50 
51  case L'?':
52  if (candidatePosFromRight == -1) {
53  return false;
54  }
55 
56  candidatePosFromRight--;
57  break;
58 
59  default:
60  if (candidatePosFromRight == -1) {
61  return false;
62  }
63 
64  const ushort candidateCh = candidate[candidatePosFromRight].unicode();
65  const bool match = caseSensitive
66  ? (candidateCh == ch)
67  : (QChar::toLower(candidateCh) == QChar::toLower(ch));
68  if (match) {
69  candidatePosFromRight--;
70  } else {
71  return false;
72  }
73  }
74  }
75  return true;
76 }
77 
78 
79 
80 bool exactMatch(const QString & candidate, const QString & wildcard,
81  bool caseSensitive) {
82  return exactMatch(candidate, wildcard, candidate.length() - 1,
83  wildcard.length() - 1, caseSensitive);
84 }
85 
86 
87 
88 }
89 
KateWildcardMatcher::exactMatch
bool exactMatch(const QString &candidate, const QString &wildcard, int candidatePosFromRight, int wildcardPosFromRight, bool caseSensitive=true)
Definition: katewildcardmatcher.cpp:29
katewildcardmatcher.h
QString
QChar::toLower
QChar toLower() const
QString::unicode
const QChar * unicode() const
QString::length
int length() const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Sat May 9 2020 03:56:59 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Kate

Skip menu "Kate"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

applications API Reference

Skip menu "applications API Reference"
  •   kate
  •       kate
  •   KTextEditor
  •   Kate
  • Konsole

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal