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;
};
|