#ifndef _MARKOV
#define _MARKOV


struct MarkovState	{
	int id;
	int label;
	int action;
};


class Markov	{
	
	private:
		int numstates;
		int **table;
		MarkovState *states;
		int currentState;
	
	public:
		Markov();
		~Markov();
		Markov(const Markov &copy);
		Markov& operator=(const Markov &copy);

		void setup(int nstates);
		void setTransition(int state, int nextstate, int weight);
		void update();
	
		int nextEvent(int input) ;
};

#endif