aboutsummaryrefslogtreecommitdiffstats
path: root/doc/codesnippets/doc/src/snippets/xml/simpleparse/handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'doc/codesnippets/doc/src/snippets/xml/simpleparse/handler.cpp')
-rw-r--r--doc/codesnippets/doc/src/snippets/xml/simpleparse/handler.cpp139
1 files changed, 139 insertions, 0 deletions
diff --git a/doc/codesnippets/doc/src/snippets/xml/simpleparse/handler.cpp b/doc/codesnippets/doc/src/snippets/xml/simpleparse/handler.cpp
new file mode 100644
index 000000000..214451e4e
--- /dev/null
+++ b/doc/codesnippets/doc/src/snippets/xml/simpleparse/handler.cpp
@@ -0,0 +1,139 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://www.qtsoftware.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*
+handler.cpp
+
+Provides a handler for processing XML elements found by the reader.
+
+The handler stores the names of elements it finds and their indentation
+levels. The indentation level is initially set to zero.
+When a starting element is found, the indentation level is increased;
+when an ending element is found, the indentation level is decreased.
+*/
+
+#include <QDebug>
+#include "handler.h"
+
+/*!
+ Reset the state of the handler to ensure that new documents are
+ read correctly.
+
+ We return true to indicate that parsing should continue.
+*/
+
+bool Handler::startDocument()
+{
+ elementName.clear();
+ elementIndentation.clear();
+ indentationLevel = 0;
+
+ return true;
+}
+
+/*!
+ Process each starting element in the XML document.
+
+ Append the element name to the list of elements found; add its
+ corresponding indentation level to the list of indentation levels.
+
+ Increase the level of indentation by one column.
+
+ We return true to indicate that parsing should continue.
+*/
+
+bool Handler::startElement(const QString &, const QString &,
+ const QString & qName, const QXmlAttributes &)
+{
+ elementName.append(qName);
+ elementIndentation.append(indentationLevel);
+ indentationLevel += 1;
+
+ return true;
+}
+
+/*!
+ Process each ending element in the XML document.
+
+ Decrease the level of indentation by one column.
+
+ We return true to indicate that parsing should continue.
+*/
+
+bool Handler::endElement(const QString &, const QString &,
+ const QString &)
+{
+ indentationLevel -= 1;
+
+ return true;
+}
+
+/*!
+ Report a fatal parsing error, and return false to indicate to the reader
+ that parsing should stop.
+*/
+
+bool Handler::fatalError (const QXmlParseException & exception)
+{
+ qWarning() << QString("Fatal error on line %1, column %2: %3").arg(
+ exception.lineNumber()).arg(exception.columnNumber()).arg(
+ exception.message());
+
+ return false;
+}
+
+/*!
+ Return the list of element names found.
+*/
+
+QStringList& Handler::names ()
+{
+ return elementName;
+}
+
+/*!
+ Return the list of indentations used for each element found.
+*/
+
+QList<int>& Handler::indentations ()
+{
+ return elementIndentation;
+}