#ifndef RANGE_HEADERFILE
#define RANGE_HEADERFILE

class Range {

	private:
		int score;
		Range* range_below;
		Range* range_upon;
		float lower_boundary;
		float upper_boundary;
		bool lower_boundary_included;
		bool upper_boundary_included;

		static unsigned int range_counter;
		

	public:
		Range();
		Range(int score, float lower_boundary, bool lower_boundary_included, float upper_boundary, bool upper_boundary_included);
		
		void set_score(int score);
		int get_score();

		void set_range_below(Range* range_below);
		Range* get_range_below();

		void set_range_upon(Range* range_upon);
		Range* get_range_upon();

		void set_lower_boundary(float lower_boundary);
		float get_lower_boundary();

		void set_upper_boundary(float upper_boundary);
		float get_upper_boundary();

		void set_lower_boundary_included(bool lower_boundary_included);
		bool get_lower_boundary_included();

		void set_upper_boundary_included(bool upper_boundary_included);
		bool get_upper_boundary_included();

		bool check_lut_correctness(unsigned int num_of_ranges);
		bool check_lut_correctness_down();
		bool check_lut_correctness_up();

		int check_belong_to_range(float input);
};

#endif