29#include <libdap/XMLWriter.h>
34#include "DmrppStructure.h"
42DmrppStructure::operator=(
const DmrppStructure &rhs)
47 dynamic_cast<Structure &
>(*this) = rhs;
49 dynamic_cast<DmrppCommon &
>(*this) = rhs;
56class PrintDAP4FieldXMLWriter :
public unary_function<BaseType *, void>
61 PrintDAP4FieldXMLWriter(XMLWriter &x,
bool c) : d_xml(x), d_constrained(c) {}
63 void operator()(BaseType *btp)
65 btp->print_dap4(d_xml, d_constrained);
70DmrppStructure::print_dap4(XMLWriter &xml,
bool constrained)
72 if (constrained && !send_p())
75 if (xmlTextWriterStartElement(xml.get_writer(), (
const xmlChar*)type_name().c_str()) < 0)
76 throw InternalErr(__FILE__, __LINE__,
"Could not write " + type_name() +
" element");
79 if (xmlTextWriterWriteAttribute(xml.get_writer(), (
const xmlChar*)
"name", (
const xmlChar*)name().c_str()) < 0)
80 throw InternalErr(__FILE__, __LINE__,
"Could not write attribute for name");
82 bool has_variables = (var_begin() != var_end());
84 for_each(var_begin(), var_end(), PrintDAP4FieldXMLWriter(xml, constrained));
86 attributes()->print_dap4(xml);
88 if (xmlTextWriterEndElement(xml.get_writer()) < 0)
89 throw InternalErr(__FILE__, __LINE__,
"Could not end " + type_name() +
" element");
93void DmrppStructure::dump(ostream & strm)
const
95 strm << BESIndent::LMarg <<
"DmrppStructure::dump - (" << (
void *)
this <<
")" << endl;
97 DmrppCommon::dump(strm);
98 Structure::dump(strm);
99 strm << BESIndent::LMarg <<
"value: " <<
"----" << endl;
100 BESIndent::UnIndent();