source: trunk/src/xmlpatterns/api/qabstractmessagehandler.cpp@ 561

Last change on this file since 561 was 561, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.1 sources.

File size: 5.9 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtXmlPatterns module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include <QMutex>
43
44#include "private/qobject_p.h"
45#include "qabstractmessagehandler.h"
46
47QT_BEGIN_NAMESPACE
48
49class QAbstractMessageHandlerPrivate : public QObjectPrivate
50{
51public:
52 QMutex mutex;
53};
54
55/*!
56 \class QAbstractMessageHandler
57 \threadsafe
58 \since 4.4
59 \ingroup xml-tools
60
61 \brief The QAbstractMessageHandler class provides a callback interface for handling messages.
62
63 QAbstractMessageHandler is an abstract base class that provides a
64 callback interface for handling messages. For example, class
65 QXmlQuery parses and runs an XQuery. When it detects a compile
66 or runtime error, it generates an appropriate error message,
67 but rather than output the message itself, it passes the message to
68 the message() function of its QAbstractMessageHandler.
69 See QXmlQuery::setMessageHandler().
70
71 You create a message handler by subclassing QAbstractMessageHandler
72 and implementing handleMessage(). You then pass a pointer to an
73 instance of your subclass to any classes that must generate
74 messages. The messages are sent to the message handler via the
75 message() function, which forwards them to your handleMessge().
76 The effect is to serialize the handling of all messages, which
77 means your QAbstractMessageHandler subclass is thread safe.
78
79 A single instance of QAbstractMessageHandler can be called on to
80 handle messages from multiple sources. Hence, the content of a
81 message, which is the \e description parameter passed to message()
82 and handleMessage(), must be interpreted in light of the context
83 that required the message to be sent. That context is specified by
84 the \e identifier and \e sourceLocation parameters to message()
85 handleMessage().
86 */
87
88/*!
89 Constructs a QAbstractMessageHandler. The \a parent is passed
90 to the QObject base class constructor.
91 */
92QAbstractMessageHandler::QAbstractMessageHandler(QObject *parent) : QObject(*new QAbstractMessageHandlerPrivate(), parent)
93{
94}
95
96/*!
97 Destructs this QAbstractMessageHandler.
98 */
99QAbstractMessageHandler::~QAbstractMessageHandler()
100{
101}
102
103/*!
104 Sends a message to this message handler. \a type is the kind of
105 message being sent. \a description is the message content. The \a
106 identifier is a URI that identifies the message and is the key to
107 interpreting the other arguments.
108
109 Typically, this class is used for reporting errors, as is the case
110 for QXmlQuery, which uses a QAbstractMessageHandler to report
111 compile and runtime XQuery errors. Hence, using a QUrl as the
112 message \a identifier is was inspired by the explanation of \l{error
113 handling in the XQuery language}. Because the \a identifier is
114 composed of a namespace URI and a local part, identifiers with the
115 same local part are unique. The caller is responsible for ensuring
116 that \a identifier is either a valid QUrl or a default constructed
117 QUrl.
118
119 \a sourceLocation identifies a location in a resource (i.e., file or
120 document) where the need for reporting a message was detected.
121
122 This function unconditionally calls handleMessage(), passing all
123 its parameters unmodified.
124
125 \sa {http://www.w3.org/TR/xquery/#errors}
126 */
127void QAbstractMessageHandler::message(QtMsgType type,
128 const QString &description,
129 const QUrl &identifier,
130 const QSourceLocation &sourceLocation)
131{
132 Q_D(QAbstractMessageHandler);
133 QMutexLocker(&d->mutex);
134 handleMessage(type, description, identifier, sourceLocation);
135}
136
137/*!
138 \fn void QAbstractMessageHandler::handleMessage(QtMsgType type,
139 const QString &description,
140 const QUrl &identifier = QUrl(),
141 const QSourceLocation &sourceLocation = QSourceLocation()) = 0
142
143 This function must be implemented by the sub-class. message() will
144 call this function, passing in its parameters, \a type,
145 \a description, \a identifier and \a sourceLocation unmodified.
146 */
147
148QT_END_NAMESPACE
149
Note: See TracBrowser for help on using the repository browser.