/*
    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 FILTRATOR2_OPTIONS_H
#define FILTRATOR2_OPTIONS_H
#include "matrices_all.h"

namespace filtrator2
{
	struct Params
	{
		std::string inMatrixName;
		std::string inMatrixDir;
		bool rowsOnly;
		bool columnsOnly;
		std::string m_sWordsFile;
		std::string outMatrixName;
		std::string outMatrixDir;
		bool untilStable;
		size_t max_iters;
		std::string mode;

		size_t min_tf;
		size_t max_tf;
		size_t min_TF;
		size_t max_TF;
		size_t min_nz;
		size_t max_nz;
		double min_entropy;
		double max_entropy;
	};

	class Options
	{
		public:
			Options(int ac, char *av[]);
			Params& GetParams();
		private:
			void InitOptions(int ac, char*av[]);
			std::string NormalizeDir(const std::string &s);
			void CheckMatrix();

			Params m_Params;
	};
}//namespace vectore_extractor

#endif //FILTRATOR_OPTIONS_H

