47class ValuesElement:
public NCMLElement {
49 ValuesElement& operator=(
const ValuesElement& rhs);
52 static const std::string _sTypeName;
53 static const std::vector<std::string> _sValidAttributes;
56 ValuesElement(
const ValuesElement& proto);
57 virtual ~ValuesElement();
59 virtual ValuesElement*
clone()
const;
73 bool shouldAutoGenerateValues()
const
75 return ((!_start.empty()) && (!_increment.empty()));
83 void validateStartAndIncrementForVariableTypeOrThrow(libdap::BaseType& var)
const;
95 void setVariableValuesFromTokens(
NCMLParser& p, libdap::BaseType& var);
104 void setScalarVariableValuesFromTokens(
NCMLParser& p, libdap::BaseType& var);
119 void setVectorVariableValuesFromTokens(
NCMLParser& p, libdap::BaseType& var);
130 template<
typename DAPType>
void generateAndSetVectorValues(
NCMLParser& p, libdap::Array* pArray);
137 void autogenerateAndSetVariableValues(
NCMLParser& p, libdap::BaseType& var);
148 template<
class DAPType,
typename ValueType>
void setScalarValue(libdap::BaseType& var,
const std::string& valueAsToken);
160 template<
typename DAPType>
void setVectorValues(libdap::Array* pArray,
const std::vector<std::string>& valueTokens);
163 void parseAndSetCharValue(libdap::BaseType& var,
const std::string& valueAsToken);
169 void parseAndSetCharValueArray(
NCMLParser& p, libdap::Array* pVecVar,
const std::vector<std::string>& tokens);
175 std::string getNCMLTypeForVariable(
NCMLParser& p)
const;
181 void setGotValuesOnOurVariableElement(
NCMLParser& p);
186 void dealWithEmptyStringValues();
188 static std::vector<std::string> getValidAttributes();
193 std::string _increment;
194 std::string _separator;
200 std::string _accumulated_content;
202 std::vector<std::string> _tokens;