/*
    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 OPTIONS_H
#define OPTIONS_H
#include "matrices_all.h"
#include <boost/program_options.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>


/**
  * Structure holding input parameters
  */
struct Params
{
	std::vector< std::pair<std::string, std::string> > m_vMatrixNameToPath;
	std::string m_sMatrixOutName;
	std::string m_sOutputDir;

	size_t m_stUnitCount;
	std::string m_sCorpusInfo;
	bool appendTF;

};

class Options
{
		public:
	/**
	  * Constructor initializing options
	  * \param ac Number of input parameters
	  * \param av Input parameters
	  */
	Options(int ac, char *av[]);
	/**
	  * \returns Parameters
	  */
	Params& GetParams();
		private:
	/**
	  * Function initializing options
	  * \param ac Number of input parameters
	  * \param av Input parameters
	  */
	void InitOptions(int ac, char*av[]);
	/**
	  * Function checking if matrices given in input file exist
	  */
	void CheckMatrices();
	/**
	  * Function checking (and - if possible - creating) output directory
	  */
	void CheckOutDir();

	std::vector<std::string> m_vMatrices;
	Params m_Params;
};
#endif // OPTIONS_H
