29 #ifndef __NCML_MODULE__VALUESELEMENT_H__ 30 #define __NCML_MODULE__VALUESELEMENT_H__ 32 #include "NCMLElement.h" 33 #include "NCMLDebug.h" 47 class VariableElement;
54 static const string _sTypeName;
55 static const vector<string> _sValidAttributes;
75 bool shouldAutoGenerateValues()
const 77 return ((!_start.empty()) && (!_increment.empty()));
85 void validateStartAndIncrementForVariableTypeOrThrow(libdap::BaseType& var)
const;
97 void setVariableValuesFromTokens(
NCMLParser& p, libdap::BaseType& var);
106 void setScalarVariableValuesFromTokens(
NCMLParser& p, libdap::BaseType& var);
121 void setVectorVariableValuesFromTokens(
NCMLParser& p, libdap::BaseType& var);
132 template<
typename DAPType>
void generateAndSetVectorValues(
NCMLParser& p, libdap::Array* pArray);
139 void autogenerateAndSetVariableValues(
NCMLParser& p, libdap::BaseType& var);
150 template<
class DAPType,
typename ValueType>
void setScalarValue(libdap::BaseType& var,
const string& valueAsToken);
162 template<
typename DAPType>
void setVectorValues(libdap::Array* pArray,
const std::vector<string>& valueTokens);
165 void parseAndSetCharValue(libdap::BaseType& var,
const string& valueAsToken);
171 void parseAndSetCharValueArray(
NCMLParser& p, libdap::Array* pVecVar,
const std::vector<string>& tokens);
177 std::string getNCMLTypeForVariable(
NCMLParser& p)
const;
183 void setGotValuesOnOurVariableElement(
NCMLParser& p);
188 void dealWithEmptyStringValues();
190 static vector<string> getValidAttributes();
202 std::string _accumulated_content;
204 std::vector<string> _tokens;
NcML Parser for adding/modifying/removing metadata (attributes) to existing local datasets using NcML...
virtual void setAttributes(const XMLAttributeMap &attrs)
virtual const string & getTypeName() const
virtual string toString() const
Base class for NcML element concrete classes.
virtual void handleBegin()
Concrete class for NcML <variable> element.
virtual void handleContent(const string &content)
virtual ValuesElement * clone() const