/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2010,2011,2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2010,2011,2012,2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
namespace gmx
{
-class BooleanOption;
-class IntegerOption;
-class DoubleOption;
-class StringOption;
-
/*! \addtogroup module_options
* \{
*/
}
virtual OptionInfo &optionInfo() { return info_; }
- virtual const char *typeString() const { return "bool"; }
+ virtual std::string typeString() const { return "bool"; }
virtual std::string formatSingleValue(const bool &value) const;
+ //! \copydoc BooleanOptionInfo::defaultValue()
+ bool defaultValue() const { return valueCount() > 0 && values()[0]; }
+
private:
virtual void convertValue(const std::string &value);
}
virtual OptionInfo &optionInfo() { return info_; }
- virtual const char *typeString() const
+ virtual std::string typeString() const
{ return isVector() ? "vector" : "int"; }
virtual std::string formatSingleValue(const int &value) const;
IntegerOptionInfo info_;
};
+/*! \internal \brief
+ * Converts, validates, and stores integer values.
+ */
+class Int64OptionStorage : public OptionStorageTemplate<gmx_int64_t>
+{
+ public:
+ //! \copydoc BooleanOptionStorage::BooleanOptionStorage()
+ explicit Int64OptionStorage(const Int64Option &settings)
+ : MyBase(settings), info_(this)
+ {
+ }
+
+ virtual OptionInfo &optionInfo() { return info_; }
+ virtual std::string typeString() const { return "int"; }
+ virtual std::string formatSingleValue(const gmx_int64_t &value) const;
+
+ private:
+ virtual void convertValue(const std::string &value);
+
+ Int64OptionInfo info_;
+};
+
/*! \internal \brief
* Converts, validates, and stores floating-point (double) values.
*/
explicit DoubleOptionStorage(const DoubleOption &settings);
virtual OptionInfo &optionInfo() { return info_; }
- virtual const char *typeString() const;
+ virtual std::string typeString() const;
virtual std::string formatSingleValue(const double &value) const;
//! \copydoc DoubleOptionInfo::isTime()
private:
virtual void convertValue(const std::string &value);
virtual void processSetValues(ValueList *values);
- virtual void processAll();
DoubleOptionInfo info_;
bool bTime_;
double factor_;
};
+/*! \internal \brief
+ * Converts, validates, and stores floating-point (float) values.
+ */
+class FloatOptionStorage : public OptionStorageTemplate<float>
+{
+ public:
+ //! \copydoc IntegerOptionStorage::IntegerOptionStorage()
+ explicit FloatOptionStorage(const FloatOption &settings);
+
+ virtual OptionInfo &optionInfo() { return info_; }
+ virtual std::string typeString() const;
+ virtual std::string formatSingleValue(const float &value) const;
+
+ //! \copydoc DoubleOptionStorage::isTime()
+ bool isTime() const { return bTime_; }
+ //! \copydoc DoubleOptionStorage::setScaleFactor()
+ void setScaleFactor(double factor);
+
+ private:
+ virtual void convertValue(const std::string &value);
+ virtual void processSetValues(ValueList *values);
+
+ FloatOptionInfo info_;
+ bool bTime_;
+ double factor_;
+};
+
/*! \internal \brief
* Converts, validates, and stores string values.
*/
explicit StringOptionStorage(const StringOption &settings);
virtual OptionInfo &optionInfo() { return info_; }
- virtual const char *typeString() const { return allowed_.empty() ? "string" : "enum"; }
+ virtual std::string typeString() const
+ { return allowed_.empty() ? "string" : "enum"; }
+ virtual std::string formatExtraDescription() const;
virtual std::string formatSingleValue(const std::string &value) const;
//! \copydoc StringOptionInfo::allowedValues()
virtual void convertValue(const std::string &value);
virtual void refreshValues();
+ void refreshEnumIndexStore();
+
StringOptionInfo info_;
ValueList allowed_;
int *enumIndexStore_;