#ifndef __PARAMETERS_H_
#define __PARAMETERS_H_

#include "Definitions.h"

class Parameters {
  private:
    Parameters();
    static const Parameters *instance;
    static const FloatType default_mutationRate, default_reward, default_penalty, default_convergenceThreshold;
    static const unsigned default_pollingInterval;

    FloatType mutationRate, reward, penalty, convergenceThreshold;
    unsigned pollingInterval;

  public:
    static const Parameters * const getInstance();
    static void deleteInstance();

    void setMutationRate( const FloatType& value );
    FloatType getMutationRate() const;
    void setReward( const FloatType& value );
    FloatType getReward() const;
    void setPenalty( const FloatType& value );
    FloatType getPenalty() const;
    void setConvergenceThreshold( const FloatType& value );
    FloatType getConvergenceThreshold() const;
    void setPollingInterval( const unsigned& value );
    unsigned getPollingInterval() const;
};

#endif /* __PARAMETERS_H_ */
