summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@digia.com>2014-02-25 15:44:54 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-13 13:26:36 +0100
commit19693362e7b345d417554c6497e5117f2b189be5 (patch)
tree70c43012ba53d23a47e84ff8d1361d7af65adeca /src/corelib/io
parent2350c7e35c7b21ab86e54e43d1e1bfddb1746922 (diff)
Use QStringRef for parsing of logging rules
Use QStringRef to speed up the parsing of the left side of logging rules. Change-Id: Idd4d75496e3865d092f2802c45928a414c14c615 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io')
-rw-r--r--src/corelib/io/qloggingregistry.cpp34
-rw-r--r--src/corelib/io/qloggingregistry_p.h4
2 files changed, 23 insertions, 15 deletions
diff --git a/src/corelib/io/qloggingregistry.cpp b/src/corelib/io/qloggingregistry.cpp
index ab29c42325..c5405d698c 100644
--- a/src/corelib/io/qloggingregistry.cpp
+++ b/src/corelib/io/qloggingregistry.cpp
@@ -64,7 +64,7 @@ QLoggingRule::QLoggingRule() :
\internal
Constructs a logging rule.
*/
-QLoggingRule::QLoggingRule(const QString &pattern, bool enabled) :
+QLoggingRule::QLoggingRule(const QStringRef &pattern, bool enabled) :
messageType(-1),
flags(Invalid),
enabled(enabled)
@@ -119,36 +119,44 @@ int QLoggingRule::pass(const QString &cat, QtMsgType msgType) const
*.io.warning RightFilter, QtWarningMsg
*.core.* MidFilter
*/
-void QLoggingRule::parse(const QString &pattern)
+void QLoggingRule::parse(const QStringRef &pattern)
{
- category = pattern;
+ QStringRef p;
+
// strip trailing ".messagetype"
if (pattern.endsWith(QLatin1String(".debug"))) {
- category.chop(strlen(".debug"));
+ p = QStringRef(pattern.string(), pattern.position(),
+ pattern.length() - strlen(".debug"));
messageType = QtDebugMsg;
} else if (pattern.endsWith(QLatin1String(".warning"))) {
- category.chop(strlen(".warning"));
+ p = QStringRef(pattern.string(), pattern.position(),
+ pattern.length() - strlen(".warning"));
messageType = QtWarningMsg;
} else if (pattern.endsWith(QLatin1String(".critical"))) {
- category.chop(strlen(".critical"));
+ p = QStringRef(pattern.string(), pattern.position(),
+ pattern.length() - strlen(".critical"));
messageType = QtCriticalMsg;
+ } else {
+ p = pattern;
}
flags = Invalid;
- if (!category.contains(QLatin1Char('*'))) {
+ if (!p.contains(QLatin1Char('*'))) {
flags = FullText;
} else {
- if (category.endsWith(QLatin1Char('*'))) {
+ if (p.endsWith(QLatin1Char('*'))) {
flags |= LeftFilter;
- category.chop(1);
+ p = QStringRef(p.string(), p.position(), p.length() - 1);
}
- if (category.startsWith(QLatin1Char('*'))) {
+ if (p.startsWith(QLatin1Char('*'))) {
flags |= RightFilter;
- category.remove(0, 1);
+ p = QStringRef(p.string(), p.position() + 1, p.length() - 1);
}
- if (category.contains(QLatin1Char('*'))) // '*' only supported at start/end
+ if (p.contains(QLatin1Char('*'))) // '*' only supported at start/end
flags = Invalid;
}
+
+ category = p.toString();
}
/*!
@@ -205,7 +213,7 @@ void QLoggingSettingsParser::setContent(QTextStream &stream)
int equalPos = line.indexOf(QLatin1Char('='));
if ((equalPos != -1)
&& (line.lastIndexOf(QLatin1Char('=')) == equalPos)) {
- const QString pattern = line.left(equalPos);
+ const QStringRef pattern = line.leftRef(equalPos);
const QStringRef value = line.midRef(equalPos + 1);
bool enabled = (value.compare(QLatin1String("true"),
Qt::CaseInsensitive) == 0);
diff --git a/src/corelib/io/qloggingregistry_p.h b/src/corelib/io/qloggingregistry_p.h
index 70d728228c..21896bb268 100644
--- a/src/corelib/io/qloggingregistry_p.h
+++ b/src/corelib/io/qloggingregistry_p.h
@@ -68,7 +68,7 @@ class Q_AUTOTEST_EXPORT QLoggingRule
{
public:
QLoggingRule();
- QLoggingRule(const QString &pattern, bool enabled);
+ QLoggingRule(const QStringRef &pattern, bool enabled);
int pass(const QString &categoryName, QtMsgType type) const;
enum PatternFlag {
@@ -86,7 +86,7 @@ public:
bool enabled;
private:
- void parse(const QString &pattern);
+ void parse(const QStringRef &pattern);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QLoggingRule::PatternFlags)