Isis 3.0 Programmer Reference
Back | Home
XmlStackedHandler.cpp
1 #include "IsisDebug.h"
2 #include "XmlStackedHandler.h"
3 
4 #include <QDebug>
5 #include <QStack>
6 #include <QXmlParseException>
7 
8 #include "XmlStackedHandlerReader.h"
9 
10 namespace Isis {
11  XmlStackedHandler::XmlStackedHandler() {
12  m_reader = NULL;
13  m_depth = 0;
14  }
15 
16 
17  XmlStackedHandler::~XmlStackedHandler() {
18  m_reader = NULL;
19  m_depth = 0;
20  }
21 
22 
23  void XmlStackedHandler::setReader(XmlStackedHandlerReader *reader) {
24  m_reader = reader;
25  }
26 
27 
28  void XmlStackedHandler::switchToNewHandler(XmlStackedHandler *nextHandler) {
29  nextHandler->startElement(m_lastStartNamespaceURI, m_lastStartLocalName,
30  m_lastStartQName, m_lastStartAtts);
31  }
32 
33 
34  bool XmlStackedHandler::startElement(const QString &namespaceURI, const QString &localName,
35  const QString &qName, const QXmlAttributes &atts) {
36  m_lastStartNamespaceURI = namespaceURI;
37  m_lastStartLocalName = localName;
38  m_lastStartQName = qName;
39  m_lastStartAtts = atts;
40  m_depth++;
41 
42  return true;
43  }
44 
45  bool XmlStackedHandler::endElement(const QString &namespaceURI, const QString &localName,
46  const QString &qName) {
47  m_depth--;
48 
49  ASSERT(m_depth >= 0);
50  if (m_depth == 0 && reader()) {
51  reader()->popContentHandler();
52 
53  if (reader()->topContentHandler())
54  reader()->topContentHandler()->endElement(namespaceURI, localName, qName);
55  }
56 
57  return true;
58  }
59 
60  XmlStackedHandlerReader *XmlStackedHandler::reader() {
61  return m_reader;
62  }
63 
64 
65  const XmlStackedHandlerReader *XmlStackedHandler::reader() const {
66  return m_reader;
67  }
68 
69 
70  bool XmlStackedHandler::fatalError(const QXmlParseException &exception) {
71  qDebug() << "Parse error at line " << exception.lineNumber()
72  << ", " << "column " << exception.columnNumber() << ": "
73  << qPrintable(exception.message());
74  return false;
75  }
76 
77 }

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:31:52