From: Yurii R. <yr...@us...> - 2003-01-27 06:07:44
|
Update of /cvsroot/eas-dev/eas-dev/libs/libsxmlstream/src In directory sc8-pr-cvs1:/tmp/cvs-serv4058/libs/libsxmlstream/src Modified Files: sxmlstream.cxx Log Message: A bit updated libsxmlstream (still broken) Index: sxmlstream.cxx =================================================================== RCS file: /cvsroot/eas-dev/eas-dev/libs/libsxmlstream/src/sxmlstream.cxx,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- sxmlstream.cxx 25 Jan 2003 21:51:28 -0000 1.1 +++ sxmlstream.cxx 27 Jan 2003 06:07:41 -0000 1.2 @@ -18,26 +18,113 @@ /* $Id$ */ +#include <ostream> +#include <iterator> +#include <vector> #include <sxmlstream.hxx> using namespace std; +/* SXmlStream */ + +SXmlStream::SXmlStream() +{ + m_queue = new queue<SXml>(); +} + +SXmlStream::~SXmlStream() +{ + delete m_queue; +} + +bool SXmlStream::queueIsEmpty() +{ + return m_queue->empty(); +} + +SXml SXmlStream::pop() +{ + SXml e = m_queue->front(); + m_queue->pop(); + return e; +} + +void SXmlStream::push(SXml e) +{ + m_queue->push(e); +} + + + /* SXmlTextStream operators */ -ostream& operator<<(ostream& os, const SXmlTextStream& s) +ostream& SXml_TextOutput(ostream& os, SXml e) { - SXml e; - while (!m_queue.empty()) - { - e = m_queue.front(); - switch (e.type) + iterator iter; + switch (e.type) { case SXml_Element_t: - os << "(" << e.data << ")"; + os << "(" << e.data << " "; + + // Output attributes + iter = (e.childs)->begin(); + while (iter!=(e.childs)->end()) + { + if (Is_SXml_Attribute(iter)) + { + os << "(@ "; + SXml_TextOutput(os,iter); + os >> ")"; + } + it++; + } + // Output childs + iter = (e.childs)->begin(); + while (iter!=(e.childs)->end()) + { + if (!Is_SXml_Attribute(iter)) + { + SXml_TextOutput(os,iter); + } + iter++; + } + + os << ")"; + break; + case SXml_Attribute_t: + if (SXml_has_property(e)) + { + os << "( " << e.data << " \"" << + SXml_get_property(e) << "\") "; + } else + { + os << "( " << e.data << " )"; + + } + break; + case SXml_Char_t: + os << " \"" << e.data << "\" "; + break; + case SXml_Namespace_t: + os << "(@@ "; + os << e.data << " "; + if (SXml_has_property(e)) + os << "\"" << SXml_get_property(e) << "\""; + os << " )"; break; default: break; } - m_queue.pop(); + delete iter; + return os; +} + +ostream& operator<<(ostream& os, SXmlTextStream& s) +{ + SXml e; + while (!s.queueIsEmpty()) + { + e = s.pop(); + os << SXml_OutputText(os,e); } return os; }; |