/**
 * \file    Mimic_Integer.hpp
 * \author  Silvan Murer
 * \date    02 August 2022
 *
 * \brief   Integer class of genSDK GF implementation, based on Mimic_Node
 */

#ifndef INC_FEATURES_MIMIC_INTEGER
#define INC_FEATURES_MIMIC_INTEGER

#include "features/Mimic_Node.hpp"

#include <memory>
#include <string>

namespace mimic {

class Mimic_Integer : public Mimic_Node
{
private:

public:
	Mimic_Integer();
	Mimic_Integer(GenApi_3_4::INode* node);
	virtual ~Mimic_Integer();

	virtual std::variant<int64_t, double, bool, std::string> getVariant(std::string name);
	virtual void setVariant(std::string name, std::variant<int64_t, double, bool, std::string> value);

	/**
	 * \brief read the integer value
	 * \return integer value
	 * \exception GS_Access_Exception if read failed
	 */
	int64_t getValue();
	/**
	 * \brief write the integer value
	 * \param[in] value new integer value
	 * \exception GS_Access_Exception if write failed
	 */
	void setValue(int64_t value);

	/**
	 * \brief read the minimum value which could be written
	 * \return minimum value
	 * \exception GS_Access_Exception if read failed
	 */
	//int64_t getMin();
	/**
	 * \brief read the maximum value which could be written
	 * \return minimum value
	 * \exception GS_Access_Exception if read failed
	 */
	//int64_t getMax();

	//EIncMode getIncMode();
	//int64_t getInc();
	//std::vector<int64_t> getListOfValidValue();
	//ERepresentation getRepresentation();
	//std::string getUnit();
};

} /* namespace mimic */

#endif
