/*************************************************************************** * GApplicationPar.hpp - Application parameter class * * ----------------------------------------------------------------------- * * copyright (C) 2010-2015 by Juergen Knoedlseder * * ----------------------------------------------------------------------- * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * ***************************************************************************/ /** * @file GApplicationPar.hpp * @brief Application parameter class definition * @author Juergen Knoedlseder */ #ifndef GPAR_HPP #define GPAR_HPP /* __ Includes ___________________________________________________________ */ #include #include "GBase.hpp" /***********************************************************************//** * @class GApplicationPar * * @brief Application parameter class ***************************************************************************/ class GApplicationPar : public GBase { // Friend classes friend class GApplicationPars; friend class GApplication; public: // Constructors and destructors GApplicationPar(void); GApplicationPar(const std::string& name, const std::string& type, const std::string& mode, const std::string& value, const std::string& min, const std::string& max, const std::string& prompt); GApplicationPar(const GApplicationPar& par); virtual ~GApplicationPar(void); // Operators GApplicationPar& operator=(const GApplicationPar& par); // Methods void clear(void); GApplicationPar* clone(void) const; std::string classname(void) const; void type(const std::string& type); void mode(const std::string& mode); void value(const std::string& value); void string(const std::string& value); void filename(const std::string& value); void boolean(const bool& value); void integer(const int& value); void real(const double& value); const std::string& name(void) const; const std::string& type(void) const; const std::string& mode(void) const; std::string value(void); std::string string(void); std::string filename(void); bool boolean(void); int integer(void); double real(void); const std::string& min(void) const; const std::string& max(void) const; const std::string& prompt(void) const; bool is_learn(void) const; bool is_query(void) const; bool is_filename(void) const; bool is_valid(void); bool is_undefined(void); bool is_notanumber(void); std::string print(const GChatter& chatter = NORMAL) const; protected: // Protected enumerators enum Status { ST_VALID, ST_UNDEFINED, ST_NAN, ST_UNDERFLOW, ST_OVERFLOW }; // Protected methods void init_members(void); void copy_members(const GApplicationPar& par); void free_members(void); void check_type(const std::string& type) const; void check_mode(const std::string& mode) const; void check_value(const std::string& value) const; void check_value_bool(const std::string& value) const; void check_value_int(const std::string& value) const; void check_value_real(const std::string& value) const; void check_value_string(const std::string& value) const; void check_value_filename(const std::string& value) const; bool check_options(const std::string& value) const; std::string set_status(const std::string& value); void set_value(const std::string& value); void query(void); void stop_query(void); std::string par_type_string(const std::string& type) const; std::string par_status_string(void) const; // Protected data members bool m_update; //!< Signal value updating std::string m_name; //!< Parameter name std::string m_type; //!< Parameter type std::string m_mode; //!< Parameter mode std::string m_value; //!< Parameter value std::string m_min; //!< Parameter minimum std::string m_max; //!< Parameter maximum std::string m_prompt; //!< Parameter prompt Status m_status; //!< Parameter status }; /***********************************************************************//** * @brief Return class name * * @return String containing the class name ("GApplicationPar"). ***************************************************************************/ inline std::string GApplicationPar::classname(void) const { return ("GApplicationPar"); } /***********************************************************************//** * @brief Returns parameter name * * @return Parameter name ***************************************************************************/ inline const std::string& GApplicationPar::name(void) const { return m_name; } /***********************************************************************//** * @brief Returns parameter type * * @return Parameter type ***************************************************************************/ inline const std::string& GApplicationPar::type(void) const { return m_type; } /***********************************************************************//** * @brief Returns parameter mode * * @return Parameter mode ***************************************************************************/ inline const std::string& GApplicationPar::mode(void) const { return m_mode; } /***********************************************************************//** * @brief Returns parameter minimum * * @return Parameter minimum ***************************************************************************/ inline const std::string& GApplicationPar::min(void) const { return m_min; } /***********************************************************************//** * @brief Returns parameter maximum * * @return Parameter maximum ***************************************************************************/ inline const std::string& GApplicationPar::max(void) const { return m_max; } /***********************************************************************//** * @brief Returns parameter prompt * * @return Parameter prompt ***************************************************************************/ inline const std::string& GApplicationPar::prompt(void) const { return m_prompt; } #endif /* GPAR_HPP */