30 #include <libxml/encoding.h>
31 #include <libxml/xmlwriter.h>
56 BaseType *btp =
dynamic_cast<BaseType *
>(
this);
58 if (xmlTextWriterStartElement(writer->get_writer(),
59 (element != 0) ? (
const xmlChar*) element : (
const xmlChar*) btp->type_name().c_str()) < 0)
60 throw InternalErr(__FILE__, __LINE__,
"Could not write element for " + btp->name());
62 if (xmlTextWriterWriteAttribute(writer->get_writer(), (
const xmlChar*)
"name",
63 (
const xmlChar*) (btp->name().c_str())) < 0)
64 throw InternalErr(__FILE__, __LINE__,
"Could not write attribute 'name' for " + btp->name());
69 BaseType *btp =
dynamic_cast<BaseType *
>(
this);
71 if (xmlTextWriterEndElement(writer->get_writer()) < 0)
72 throw InternalErr(__FILE__, __LINE__,
"Could not end element for " + btp->name());
77 BESDEBUG(
"xd",
"Entering XDOutput::print_xml_data" << endl);
79 BaseType *btp = d_redirect;
82 btp =
dynamic_cast<BaseType *
>(
this);
85 throw InternalErr(__FILE__, __LINE__,
"d_redirect is null.");
89 start_xml_declaration(writer);
93 btp->print_val(oss,
"",
false);
94 BESDEBUG(
"xd",
"XDOutput::print_xml_data, value = '" << oss.str() <<
"'." << endl);
95 if (xmlTextWriterWriteElement(writer->get_writer(), (
const xmlChar*)
"value", (
const xmlChar*) oss.str().c_str())
97 throw InternalErr(__FILE__, __LINE__,
"Could not write value element for " + btp->name());
100 end_xml_declaration(writer);
127 DBG(cerr <<
"Entering increment_state" << endl);
129 vector<int>::reverse_iterator state_riter;
130 vector<int>::const_reverse_iterator shape_riter;
131 for (state_riter = state->rbegin(), shape_riter = shape.rbegin(); state_riter < state->rend();
132 state_riter++, shape_riter++) {
133 if (*state_riter == *shape_riter - 1) {
137 *state_riter = *state_riter + 1;
139 cerr <<
"New value of state: ";
140 copy(state->begin(), state->end(),
141 ostream_iterator<int>(cerr,
", "));
virtual void start_xml_declaration(libdap::XMLWriter *writer, const char *element=0)
virtual bool increment_state(vector< int > *state, const vector< int > &shape)
Increment #state# to the next value given #shape#.
static class NCMLUtil overview
virtual void end_xml_declaration(libdap::XMLWriter *writer)
#define BESDEBUG(x, y)
macro used to send debug information to the debug stream
virtual void print_xml_data(libdap::XMLWriter *writer, bool show_type)