#ifndef PARAMOBJ_H_
#define PARAMOBJ_H_

#include <string>
#include <vector>
#include <map>

using namespace std;

// this class represents definable parameters
class paramObj
{
public:
  friend class paramParser;
  friend class parseObj;
  // not default constructor (empty) allowed!
  paramObj(string);
  paramObj(string, string);
  paramObj(string, string, int);
  paramObj(string, string, int, int);
  paramObj(string, int);
  paramObj(string, int, int);
  virtual ~paramObj();
  void init(string, string p2="", int mi=0, int ma=0);
	
  paramObj& operator=(const paramObj&);
	
  int getMinNumberOfValues() { return min; }
  int getMaxNumberOfValues() { return max; }
  string getParamName1() { return par1; }
  string getParamName2() { return par2; }
  bool used() { return isUsed; }
  int instances () { return inst; }
  
protected:
  void setUsed();
  string par1;			// 1st parameter name (e.g. long style)
  string par2;			// 2nd parameter name (e.g. short style)
  int min;                      // minimal number of values (def. 1)
  int max;                      // maximal number of value (def. 1)
  bool isUsed;
  int inst;                     // number of instances
};

#endif /*PARAMOBJ_H_*/
