qmimeglobpattern.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/corelib/mimetypes/qmimeglobpattern.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const QString &pattern)-
7{-
8-
9 if (weight < m_weight
weight < m_weightDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 155 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
6-155
10 return;
executed 6 times by 1 test: return;
Executed by:
  • tst_QMimeDatabase
6
11 bool replace = weight > m_weight;-
12 if (!replace
!replaceDescription
TRUEevaluated 13 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 142 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
13-142
13-
14 if (pattern.length() < m_matchingPatternLength
pattern.length...gPatternLengthDescription
TRUEnever evaluated
FALSEevaluated 13 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
0-13
15 return;
never executed: return;
0
16 else if (pattern.length() > m_matchingPatternLength
pattern.length...gPatternLengthDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 7 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
6-7
17-
18 replace = true;-
19 }
executed 6 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
6
20 }
executed 13 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
13
21 if (replace
replaceDescription
TRUEevaluated 148 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 7 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
7-148
22 m_matchingMimeTypes.clear();-
23-
24 m_matchingPatternLength = pattern.length();-
25 m_weight = weight;-
26 }
executed 148 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
148
27 if (!m_matchingMimeTypes.contains(mimeType)
!m_matchingMim...ains(mimeType)Description
TRUEevaluated 154 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
1-154
28 m_matchingMimeTypes.append(mimeType);-
29 if (pattern.startsWith(QLatin1String("*."))
pattern.starts...1String("*."))Description
TRUEevaluated 128 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 26 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
26-128
30 m_foundSuffix = pattern.mid(2);
executed 128 times by 1 test: m_foundSuffix = pattern.mid(2);
Executed by:
  • tst_QMimeDatabase
128
31 }
executed 154 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
154
32}
executed 155 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
155
33bool QMimeGlobPattern::matchFileName(const QString &inputFilename) const-
34{-
35-
36-
37-
38 const QString filename = m_caseSensitivity == Qt::CaseInsensitive
m_caseSensitiv...aseInsensitiveDescription
TRUEevaluated 6116 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 382 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
? inputFilename.toLower() : inputFilename;
382-6116
39-
40 const int pattern_len = m_pattern.length();-
41 if (!pattern_len
!pattern_lenDescription
TRUEnever evaluated
FALSEevaluated 6498 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
0-6498
42 return
never executed: return false;
false;
never executed: return false;
0
43 const int len = filename.length();-
44-
45 const int starCount = m_pattern.count(QLatin1Char('*'));-
46-
47-
48 if (m_pattern[0] == QLatin1Char('*')
m_pattern[0] =...atin1Char('*')Description
TRUEevaluated 3454 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 3044 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& m_pattern.indexOf(QLatin1Char('[')) == -1
m_pattern.inde...ar('[')) == -1Description
TRUEevaluated 3264 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 190 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& starCount == 1
starCount == 1Description
TRUEevaluated 3264 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
)
0-3454
49 {-
50 if (len + 1 < pattern_len
len + 1 < pattern_lenDescription
TRUEevaluated 686 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 2578 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) return
executed 686 times by 1 test: return false;
Executed by:
  • tst_QMimeDatabase
false;
executed 686 times by 1 test: return false;
Executed by:
  • tst_QMimeDatabase
686-2578
51-
52 const QChar *c1 = m_pattern.unicode() + pattern_len - 1;-
53 const QChar *c2 = filename.unicode() + len - 1;-
54 int cnt = 1;-
55 while (cnt < pattern_len
cnt < pattern_lenDescription
TRUEevaluated 2907 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& *
*c1-- == *c2--Description
TRUEevaluated 339 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 2568 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
c1-- == *c2--
*c1-- == *c2--Description
TRUEevaluated 339 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 2568 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
10-2907
56 ++
executed 339 times by 1 test: ++cnt;
Executed by:
  • tst_QMimeDatabase
cnt;
executed 339 times by 1 test: ++cnt;
Executed by:
  • tst_QMimeDatabase
339
57 return
executed 2578 times by 1 test: return cnt == pattern_len;
Executed by:
  • tst_QMimeDatabase
cnt == pattern_len;
executed 2578 times by 1 test: return cnt == pattern_len;
Executed by:
  • tst_QMimeDatabase
2578
58 }-
59-
60-
61 if (starCount == 1
starCount == 1Description
TRUEevaluated 570 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 2664 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& m_pattern.at(pattern_len - 1) == QLatin1Char('*')
m_pattern.at(p...atin1Char('*')Description
TRUEevaluated 380 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 190 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
190-2664
62 if (len + 1 < pattern_len
len + 1 < pattern_lenDescription
TRUEevaluated 100 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 280 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) return
executed 100 times by 1 test: return false;
Executed by:
  • tst_QMimeDatabase
false;
executed 100 times by 1 test: return false;
Executed by:
  • tst_QMimeDatabase
100-280
63 if (m_pattern.at(0) == QLatin1Char('*')
m_pattern.at(0...atin1Char('*')Description
TRUEnever evaluated
FALSEevaluated 280 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
0-280
64 return
never executed: return filename.indexOf(m_pattern.mid(1, pattern_len - 2)) != -1;
filename.indexOf(m_pattern.mid(1, pattern_len - 2)) != -1;
never executed: return filename.indexOf(m_pattern.mid(1, pattern_len - 2)) != -1;
0
65-
66 const QChar *c1 = m_pattern.unicode();-
67 const QChar *c2 = filename.unicode();-
68 int cnt = 1;-
69 while (cnt < pattern_len
cnt < pattern_lenDescription
TRUEevaluated 386 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 20 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& *
*c1++ == *c2++Description
TRUEevaluated 126 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 260 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
c1++ == *c2++
*c1++ == *c2++Description
TRUEevaluated 126 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 260 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
20-386
70 ++
executed 126 times by 1 test: ++cnt;
Executed by:
  • tst_QMimeDatabase
cnt;
executed 126 times by 1 test: ++cnt;
Executed by:
  • tst_QMimeDatabase
126
71 return
executed 280 times by 1 test: return cnt == pattern_len;
Executed by:
  • tst_QMimeDatabase
cnt == pattern_len;
executed 280 times by 1 test: return cnt == pattern_len;
Executed by:
  • tst_QMimeDatabase
280
72 }-
73-
74-
75 if (m_pattern.indexOf(QLatin1Char('[')) == -1
m_pattern.inde...ar('[')) == -1Description
TRUEevaluated 2474 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 380 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& starCount == 0
starCount == 0Description
TRUEevaluated 2474 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
&& m_pattern.indexOf(QLatin1Char('?'))
m_pattern.inde...tin1Char('?'))Description
TRUEevaluated 2474 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
)
0-2474
76 return
executed 2474 times by 1 test: return (m_pattern == filename);
Executed by:
  • tst_QMimeDatabase
(m_pattern == filename);
executed 2474 times by 1 test: return (m_pattern == filename);
Executed by:
  • tst_QMimeDatabase
2474
77-
78-
79 QRegExp rx(m_pattern, Qt::CaseSensitive, QRegExp::WildcardUnix);-
80 return
executed 380 times by 1 test: return rx.exactMatch(filename);
Executed by:
  • tst_QMimeDatabase
rx.exactMatch(filename);
executed 380 times by 1 test: return rx.exactMatch(filename);
Executed by:
  • tst_QMimeDatabase
380
81}-
82-
83static bool isFastPattern(const QString &pattern)-
84{-
85-
86 return
executed 4126 times by 1 test: return pattern.lastIndexOf(QLatin1Char('*')) == 0 && pattern.lastIndexOf(QLatin1Char('.')) == 1 && !pattern.contains(QLatin1Char('?')) && !pattern.contains(QLatin1Char('[')) ;
Executed by:
  • tst_QMimeDatabase
pattern.lastIndexOf(QLatin1Char('*')) == 0
pattern.lastIn...har('*')) == 0Description
TRUEevaluated 4056 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 70 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
executed 4126 times by 1 test: return pattern.lastIndexOf(QLatin1Char('*')) == 0 && pattern.lastIndexOf(QLatin1Char('.')) == 1 && !pattern.contains(QLatin1Char('?')) && !pattern.contains(QLatin1Char('[')) ;
Executed by:
  • tst_QMimeDatabase
70-4126
87 && pattern.lastIndexOf(QLatin1Char('.')) == 1
pattern.lastIn...har('.')) == 1Description
TRUEevaluated 3896 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 160 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
executed 4126 times by 1 test: return pattern.lastIndexOf(QLatin1Char('*')) == 0 && pattern.lastIndexOf(QLatin1Char('.')) == 1 && !pattern.contains(QLatin1Char('?')) && !pattern.contains(QLatin1Char('[')) ;
Executed by:
  • tst_QMimeDatabase
160-4126
884126
89 && !pattern.contains(QLatin1Char('?'))
!pattern.conta...tin1Char('?'))Description
TRUEevaluated 3896 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
executed 4126 times by 1 test: return pattern.lastIndexOf(QLatin1Char('*')) == 0 && pattern.lastIndexOf(QLatin1Char('.')) == 1 && !pattern.contains(QLatin1Char('?')) && !pattern.contains(QLatin1Char('[')) ;
Executed by:
  • tst_QMimeDatabase
0-4126
90 && !pattern.contains(QLatin1Char('['))
!pattern.conta...tin1Char('['))Description
TRUEevaluated 3891 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 5 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
executed 4126 times by 1 test: return pattern.lastIndexOf(QLatin1Char('*')) == 0 && pattern.lastIndexOf(QLatin1Char('.')) == 1 && !pattern.contains(QLatin1Char('?')) && !pattern.contains(QLatin1Char('[')) ;
Executed by:
  • tst_QMimeDatabase
5-4126
91 ;
executed 4126 times by 1 test: return pattern.lastIndexOf(QLatin1Char('*')) == 0 && pattern.lastIndexOf(QLatin1Char('.')) == 1 && !pattern.contains(QLatin1Char('?')) && !pattern.contains(QLatin1Char('[')) ;
Executed by:
  • tst_QMimeDatabase
4126
92}-
93-
94void QMimeAllGlobPatterns::addGlob(const QMimeGlobPattern &glob)-
95{-
96 const QString &pattern = glob.pattern();-
97 ((!(!pattern.isEmpty())) ? qt_assert("!pattern.isEmpty()",__FILE__,154) : qt_noop());-
98-
99-
100-
101-
102-
103 if (glob.weight() == 50
glob.weight() == 50Description
TRUEevaluated 4126 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& isFastPattern(pattern)
isFastPattern(pattern)Description
TRUEevaluated 3891 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 235 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
&& !glob.isCaseSensitive()
!glob.isCaseSensitive()Description
TRUEevaluated 3881 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 10 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
10-4126
104-
105 const QString extension = pattern.mid(2).toLower();-
106 QStringList &patterns = m_fastPatterns[extension];-
107 if (!patterns.contains(glob.mimeType())
!patterns.cont...ob.mimeType())Description
TRUEevaluated 3869 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
12-3869
108 patterns.append(glob.mimeType());
executed 3869 times by 1 test: patterns.append(glob.mimeType());
Executed by:
  • tst_QMimeDatabase
3869
109 }
executed 3881 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
else {
3881
110 if (glob.weight() > 50
glob.weight() > 50Description
TRUEnever evaluated
FALSEevaluated 255 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
0-255
111 if (!m_highWeightGlobs.hasPattern(glob.mimeType(), glob.pattern())
!m_highWeightG...lob.pattern())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
112 m_highWeightGlobs.append(glob);
never executed: m_highWeightGlobs.append(glob);
0
113 }
never executed: end of block
else {
0
114 if (!m_lowWeightGlobs.hasPattern(glob.mimeType(), glob.pattern())
!m_lowWeightGl...lob.pattern())Description
TRUEevaluated 255 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
)
0-255
115 m_lowWeightGlobs.append(glob);
executed 255 times by 1 test: m_lowWeightGlobs.append(glob);
Executed by:
  • tst_QMimeDatabase
255
116 }
executed 255 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
255
117 }-
118}-
119-
120void QMimeAllGlobPatterns::removeMimeType(const QString &mimeType)-
121{-
122 QMutableHashIterator<QString, QStringList> it(m_fastPatterns);-
123 while (it.hasNext()
it.hasNext()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
124 it.next().value().removeAll(mimeType);-
125 }
never executed: end of block
0
126 m_highWeightGlobs.removeMimeType(mimeType);-
127 m_lowWeightGlobs.removeMimeType(mimeType);-
128}
never executed: end of block
0
129-
130void QMimeGlobPatternList::match(QMimeGlobMatchResult &result,-
131 const QString &fileName) const-
132{-
133-
134 QMimeGlobPatternList::const_iterator it = this->constBegin();-
135 const QMimeGlobPatternList::const_iterator endIt = this->constEnd();-
136 for (; it != endIt
it != endItDescription
TRUEevaluated 4896 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 192 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
; ++it) {
192-4896
137 const QMimeGlobPattern &glob = *it;-
138 if (glob.matchFileName(fileName)
glob.matchFileName(fileName)Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 4870 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
26-4870
139 result.addMatch(glob.mimeType(), glob.weight(), glob.pattern());
executed 26 times by 1 test: result.addMatch(glob.mimeType(), glob.weight(), glob.pattern());
Executed by:
  • tst_QMimeDatabase
26
140 }
executed 4896 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
4896
141}
executed 192 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
192
142-
143QStringList QMimeAllGlobPatterns::matchingGlobs(const QString &fileName, QString *foundSuffix) const-
144{-
145-
146 QMimeGlobMatchResult result;-
147 m_highWeightGlobs.match(result, fileName);-
148 if (result.m_matchingMimeTypes.isEmpty()
result.m_match...ypes.isEmpty()Description
TRUEevaluated 96 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEnever evaluated
) {
0-96
149-
150-
151-
152 const int lastDot = fileName.lastIndexOf(QLatin1Char('.'));-
153 if (lastDot != -1
lastDot != -1Description
TRUEevaluated 71 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 25 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
) {
25-71
154 const int ext_len = fileName.length() - lastDot - 1;-
155 const QString simpleExtension = fileName.right(ext_len).toLower();-
156-
157-
158 const QStringList matchingMimeTypes = m_fastPatterns.value(simpleExtension);-
159 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(matchingMimeTypes)>::type> _container_((matchingMimeTypes)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (const QString &mime = *_container_.i; _container_.control; _container_.control = 0) {-
160 result.addMatch(mime, 50, QLatin1String("*.") + simpleExtension);-
161 }
executed 57 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
57
162-
163-
164 }
executed 71 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
71
165-
166-
167 m_lowWeightGlobs.match(result, fileName);-
168 }
executed 96 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
96
169 if (foundSuffix
foundSuffixDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
FALSEevaluated 88 times by 1 test
Evaluated by:
  • tst_QMimeDatabase
)
8-88
170 *
executed 8 times by 1 test: *foundSuffix = result.m_foundSuffix;
Executed by:
  • tst_QMimeDatabase
foundSuffix = result.m_foundSuffix;
executed 8 times by 1 test: *foundSuffix = result.m_foundSuffix;
Executed by:
  • tst_QMimeDatabase
8
171 return
executed 96 times by 1 test: return result.m_matchingMimeTypes;
Executed by:
  • tst_QMimeDatabase
result.m_matchingMimeTypes;
executed 96 times by 1 test: return result.m_matchingMimeTypes;
Executed by:
  • tst_QMimeDatabase
96
172}-
173-
174void QMimeAllGlobPatterns::clear()-
175{-
176 m_fastPatterns.clear();-
177 m_highWeightGlobs.clear();-
178 m_lowWeightGlobs.clear();-
179}
executed 5 times by 1 test: end of block
Executed by:
  • tst_QMimeDatabase
5
180-
181-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9