USGS

Isis 3.0 Object Programmers' Reference

Home

XmlStackedHandlerReader.cpp
1 #include "XmlStackedHandlerReader.h"
2 
3 #include <QDebug>
4 #include <QStack>
5 
6 #include "XmlStackedHandler.h"
7 
8 namespace Isis {
9  XmlStackedHandlerReader::XmlStackedHandlerReader() {
10  m_contentHandlers = NULL;
11  m_contentHandlers = new QStack<XmlStackedHandler *>;
12  }
13 
14 
15  XmlStackedHandlerReader::~XmlStackedHandlerReader() {
16  delete m_contentHandlers;
17  m_contentHandlers = NULL;
18  }
19 
20 
21  void XmlStackedHandlerReader::popContentHandler() {
22  m_contentHandlers->pop();
23 
24  if (m_contentHandlers->size()) {
25  m_contentHandlers->top()->setReader(this);
26  setContentHandler(m_contentHandlers->top());
27  }
28  else {
29  setContentHandler(NULL);
30  }
31  }
32 
33 
34  void XmlStackedHandlerReader::pushContentHandler(XmlStackedHandler *newHandler) {
35  XmlStackedHandler *old = topContentHandler();
36 
37  newHandler->setReader(this);
38  m_contentHandlers->push(newHandler);
39 
40  setContentHandler(m_contentHandlers->top());
41 
42  if (old) {
43  old->switchToNewHandler(topContentHandler());
44  }
45  }
46 
47 
48  XmlStackedHandler *XmlStackedHandlerReader::topContentHandler() {
49  XmlStackedHandler *result = NULL;
50 
51  if (m_contentHandlers->size())
52  result = m_contentHandlers->top();
53 
54  return result;
55  }
56 }
57