/*
    Copyright (C) 2012 Bartosz Broda, Jacek Bochenek, Łukasz Biłeńkij, 
    Damian Jaworski, Wojciech Mazur, Dominik Piasecki, Maciej Piasecki, 
    Radosław Ramocki
    
    This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.

    This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. 

    See the LICENSE and COPYING files for more details.
*/

#ifndef CLUSTERING_CBC_CONFIG_H
#define CLUSTERING_CBC_CONFIG_H
#include <string>

namespace clustering
{
	namespace cbc
	{
		enum REMOVE_FEATURES {NORMAL, MIN, WEIGHTED};

		struct Config
		{
			static std::string cluto_exe;
			static std::string dir;
			static std::string matrix_name;
			static std::string kbest_file;
			static std::string workdir;
			static size_t k;//k-best for clustering
			static double theta1;
			static double theta2;
			static double sigma;
			static double not_similiar_threshold;
			static size_t phase_3_top_x;
			static size_t simmatrix_top_x;
			static std::string committee_output_file;
			static std::string committee_output_suffix;
			static size_t committee_min_tf;
			static size_t committee_min_nz;
			static double committee_sum_tf_threshold;
			static std::string clmethod;
			static std::string crfun;
			static REMOVE_FEATURES remove_features;
			static bool verbose;
			static bool cluto_verbose;
			static bool intermediate;
			static bool cluto_intermediate;
			static std::string cluto_file;
		};

		class Options
		{
		public:

			Options(int argc, char **argv);

		private:

			void ParseOptions(int argc, char **argv);

			void SetRemoveFeaturesType(const std::string & type);
		};

	}//namespace cbc
}//namespace clustering

#endif
