29#include "ExplicitElement.h"
31#include "NCMLParser.h"
33#include "NetcdfElement.h"
37const string ExplicitElement::_sTypeName =
"explicit";
38const vector<string> ExplicitElement::_sValidAttributes = vector<string>();
40ExplicitElement::ExplicitElement() :
45ExplicitElement::ExplicitElement(
const ExplicitElement& ) :
46 RCObjectInterface(), NCMLElement(0)
50ExplicitElement::~ExplicitElement()
55ExplicitElement::getTypeName()
const
61ExplicitElement::clone()
const
70 validateAttributes(attrs, _sValidAttributes);
73void ExplicitElement::handleBegin()
76 if (!p.isScopeNetcdf()) {
77 THROW_NCML_PARSE_ERROR(_parser->getParseLineNumber(),
"Got <explicit/> while not a direct child of a <netcdf>");
83 if (dataset->getProcessedMetadataDirective()) {
84 THROW_NCML_PARSE_ERROR(_parser->getParseLineNumber(),
86 +
" element but we already got a metadata directive for the current dataset! Only one may be specified.");
89 dataset->setProcessedMetadataDirective();
90 VALID_PTR(dataset->
getDDS());
91 p.clearAllAttrTables(dataset->
getDDS());
94void ExplicitElement::handleContent(
const string& content)
96 if (!NCMLUtil::isAllWhitespace(content)) {
97 THROW_NCML_PARSE_ERROR(_parser->getParseLineNumber(),
98 "Got non-whitespace for element content and didn't expect it. Element=" + toString() +
" content=\""
103void ExplicitElement::handleEnd()
107string ExplicitElement::toString()
const
109 return "<" + _sTypeName +
">";
Concrete class for NcML <explicit> element.
Concrete class for NcML <netcdf> element.
virtual const libdap::DDS * getDDS() const
NcML Parser for adding/modifying/removing metadata (attributes) to existing local datasets using NcML...