#ifndef morpheo_behavioural_Configuration_Parameters_h
#define morpheo_behavioural_Configuration_Parameters_h

/*
 * $Id$
 *
 * [ Description ]
 * 
 */

#include <stdint.h>
#include <iostream>
#include "Behavioural/include/XML.h"
#include "Include/ErrorMorpheo.h"
#include "Include/ToString.h"
using namespace std;

namespace morpheo     {
namespace behavioural {

  class Configuration_Parameters
  {
    // -----[ fields ]----------------------------------------------------
    // Constant
  public   : const string    _name   ;
  public   : const uint32_t  _value  ;
  public   : const uint32_t  _min    ;
  public   : const uint32_t  _max    ;
  public   : const string    _step   ;
  public   : const uint32_t  _default;
  public   : const uint32_t  _level  ;
  public   : const string    _comment;

    // -----[ methods ]---------------------------------------------------
  public   :                 Configuration_Parameters  (string   name   ,
							uint32_t value  ,
							uint32_t min    ,
							uint32_t max    ,
							string   step   ,
							uint32_t value_default,
							uint32_t level  ,
							string   comment);
  public   :                 ~Configuration_Parameters ();

    // methods to print and test parameters_configuration
  public   : string          print                      (uint32_t depth);
  public   : friend ostream& operator<<                 (ostream& output_stream,
							 morpheo::behavioural::Configuration_Parameters & x);
  };

}; // end namespace behavioural          
}; // end namespace morpheo              

#endif
