• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KDECore

  • kdecore
  • services
kmimeglobsfileparser_p.h
Go to the documentation of this file.
1/* This file is part of the KDE libraries
2 * Copyright 2007, 2010 David Faure <faure@kde.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 as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18 */
19
20#ifndef KMIMEGLOBSFILEPARSER_P_H
21#define KMIMEGLOBSFILEPARSER_P_H
22
23#include <kdebug.h>
24#include <QtCore/QStringList>
25#include <QtCore/QHash>
26class QIODevice;
27class QString;
28
32class KMimeGlobsFileParser
33{
34public:
35 explicit KMimeGlobsFileParser();
36
37 class AllGlobs;
38
39 // Read globs (patterns) files
40 AllGlobs parseGlobs();
41
42 // Separate method, for unit test
43 AllGlobs parseGlobs(const QStringList&);
44
45 struct Glob {
46 Glob(const QString& mime, int w = 50, const QString& pat = QString(), int _flags = 0)
47 : weight(w), flags(_flags), pattern(pat), mimeType(mime) {}
48 int weight;
49 int flags;
50 QString pattern;
51 QString mimeType;
52 };
53
54 class GlobList : public QList<Glob>
55 {
56 public:
57 bool hasPattern(const QString& mime, const QString& pattern) const {
58 const_iterator it = begin();
59 const const_iterator myend = end();
60 for (; it != myend; ++it)
61 if ((*it).pattern == pattern && (*it).mimeType == mime)
62 return true;
63 return false;
64 }
65 // "noglobs" is very rare occurrence, so it's ok if it's slow
66 void removeMime(const QString& mime) {
67 QMutableListIterator<Glob> it(*this);
68 while (it.hasNext()) {
69 if (it.next().mimeType == mime)
70 it.remove();
71 }
72 }
73 };
74
75 typedef QHash<QString, QStringList> PatternsMap; // mimetype -> patterns
76
85 class AllGlobs
86 {
87 public:
88 void addGlob(const Glob& glob);
89 void removeMime(const QString& mime);
90 PatternsMap patternsMap() const; // for KMimeTypeFactory
91
92 QHash<QString, QStringList> m_fastPatterns; // example: "doc" -> "application/msword", "text/plain"
93 GlobList m_highWeightGlobs;
94 GlobList m_lowWeightGlobs; // <= 50, including the non-fast 50 patterns
95 };
96 enum Format { OldGlobs, Globs2WithWeight };
97
98 static AllGlobs parseGlobFiles(const QStringList& globFiles, QStringList& parsedFiles);
99 static bool parseGlobFile(QIODevice* file, Format format, AllGlobs& globs);
100
101private:
102 AllGlobs m_mimeTypeGlobs;
103};
104
105#endif /* KMIMEFILEPARSER_H */
106
KMimeGlobsFileParser::AllGlobs
Result of the globs parsing, as data structures ready for efficient mimetype matching.
Definition: kmimeglobsfileparser_p.h:86
KMimeGlobsFileParser::AllGlobs::patternsMap
PatternsMap patternsMap() const
Definition: kmimeglobsfileparser.cpp:193
KMimeGlobsFileParser::AllGlobs::m_highWeightGlobs
GlobList m_highWeightGlobs
Definition: kmimeglobsfileparser_p.h:93
KMimeGlobsFileParser::AllGlobs::m_fastPatterns
QHash< QString, QStringList > m_fastPatterns
Definition: kmimeglobsfileparser_p.h:92
KMimeGlobsFileParser::AllGlobs::removeMime
void removeMime(const QString &mime)
Definition: kmimeglobsfileparser.cpp:216
KMimeGlobsFileParser::AllGlobs::m_lowWeightGlobs
GlobList m_lowWeightGlobs
Definition: kmimeglobsfileparser_p.h:94
KMimeGlobsFileParser::AllGlobs::addGlob
void addGlob(const Glob &glob)
Definition: kmimeglobsfileparser.cpp:158
KMimeGlobsFileParser::GlobList
Definition: kmimeglobsfileparser_p.h:55
KMimeGlobsFileParser::GlobList::hasPattern
bool hasPattern(const QString &mime, const QString &pattern) const
Definition: kmimeglobsfileparser_p.h:57
KMimeGlobsFileParser::GlobList::removeMime
void removeMime(const QString &mime)
Definition: kmimeglobsfileparser_p.h:66
KMimeGlobsFileParser
Definition: kmimeglobsfileparser_p.h:33
KMimeGlobsFileParser::parseGlobFiles
static AllGlobs parseGlobFiles(const QStringList &globFiles, QStringList &parsedFiles)
Definition: kmimeglobsfileparser.cpp:47
KMimeGlobsFileParser::PatternsMap
QHash< QString, QStringList > PatternsMap
Definition: kmimeglobsfileparser_p.h:75
KMimeGlobsFileParser::parseGlobs
AllGlobs parseGlobs()
Definition: kmimeglobsfileparser.cpp:34
KMimeGlobsFileParser::parseGlobFile
static bool parseGlobFile(QIODevice *file, Format format, AllGlobs &globs)
Definition: kmimeglobsfileparser.cpp:71
KMimeGlobsFileParser::Format
Format
Definition: kmimeglobsfileparser_p.h:96
KMimeGlobsFileParser::Globs2WithWeight
@ Globs2WithWeight
Definition: kmimeglobsfileparser_p.h:96
KMimeGlobsFileParser::OldGlobs
@ OldGlobs
Definition: kmimeglobsfileparser_p.h:96
KMimeGlobsFileParser::KMimeGlobsFileParser
KMimeGlobsFileParser()
Definition: kmimeglobsfileparser.cpp:30
QHash
Definition: ksycocafactory.h:28
QIODevice
QList
Definition: kaboutdata.h:33
QStringList
QString
kdebug.h
KMimeGlobsFileParser::Glob
Definition: kmimeglobsfileparser_p.h:45
KMimeGlobsFileParser::Glob::pattern
QString pattern
Definition: kmimeglobsfileparser_p.h:50
KMimeGlobsFileParser::Glob::mimeType
QString mimeType
Definition: kmimeglobsfileparser_p.h:51
KMimeGlobsFileParser::Glob::Glob
Glob(const QString &mime, int w=50, const QString &pat=QString(), int _flags=0)
Definition: kmimeglobsfileparser_p.h:46
KMimeGlobsFileParser::Glob::weight
int weight
Definition: kmimeglobsfileparser_p.h:48
KMimeGlobsFileParser::Glob::flags
int flags
Definition: kmimeglobsfileparser_p.h:49
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

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

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
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