(1) INTRODUCTION

	Coskel is a simple library for easy and efficient vector and matrix object management.
	It provides some basic I/O functionality on files that allows to load vectors and
	matrices from files with a single call.
	
(2) PACKAGE

	The whole package contains file files:
	
	@ coskel_vector.h - vector decralaration with I/O methods and some simple operators
	@ coskel_matrix.h - matrix declaration using a std::vector of coskel::vector objects
	@ coskel_confparser.h - simple key=value couples configuration file reader
	@ coskel_clparser.h - command-line parser
	@ coskel_utils.h - some auxiliary functions and declarations
	
(3) QUICK CLASS OVERVIEW

	WARNING: Precise information can be found inside header files!

	(3.1) coskel_vector:
		
		Constructors:
		
				vector();
				vector(unsigned int size);
				vector(const vector<T> &source);
				vector(const vector<T> &source,int beg,int end);
				
		Methods:
		
				bool resize(unsigned int newsize);
				
				unsigned int size() const;	
					
				bool load_from_file(const std::string &file_name,int beg,int end); 
				
				bool save_to_file(const std::string &file_name,const std::string &extra_info,int beg,int end);
				
				std::valarray<T>& get_valarray() const;
				
				void zero_vector();
				
				vector<std::complex<double> > to_complex_vector() const;
				
				
		
		Operators:
		
				const vector<T>& operator=(const vector<T> &op);
				
				T& operator[](unsigned int index);
				
				T operator[](unsigned int index) const;
				
				vector<T>& operator<<(const T &op);
				
				(vector<T>& operator>>(T &op);
				
		
	(3.2) coskel_matrix:
		
		Constructors:
		
				matrix();
				matrix(unsigned int rows,unsigned int cols);
				matrix(const matrix<T> &source);
				matrix(const matrix<T> &source,int row_beg,int row_end,int col_beg,int col_end);
				
		Methods:
		
				bool resize(unsigned int rows,unsigned int cols);
				
				unsigned int rows();		
		
				unsigned int cols();
		
				bool load_from_file(const std::string &file_name,int row_beg,int row_end,int col_beg,int col_end);
		
				bool save_to_file(const std::string &file_name,const std::string &extra_info,int row_beg,int row_end,int col_beg,int col_end);
				
				std::vector<coskel::vector<T> >& get_vector() const;
				
				void zero_matrix();
		
		Operators:
		
				const matrix<T>& operator=(matrix<T> &op);	
		
				coskel::vector<T>& operator[](unsigned int index);
				
				coskel::vector<T>& operator[](unsigned int index) const;
				
				coskel::matrix<T>& operator<<(const coskel::vector<T> &op);
				
				coskel::matrix<T>& operator>>(coskel::vector<T> &op);
				
		
	(3.3) coskel_confparser:
		
		Constructors:
		
				confparser(){}
				confparser(const std::string &filename) { load_file(filename); }
				
		Methods:
		
				bool load_file(const std::string &filename);
				
				std::string operator[](const std::string &key);
				
				std::string get_info();
				

	(3.2) coskel_clparser:
		
		Constructors:
		
				clparser() {}
				
		Methods:
		
				bool register_noname_arg(const std::string &name,const std::string &desc);
				
				bool register_arg(const std::string &name,const std::string &desc,bool is_parametric,bool is_required);
				
				bool parse(int argc,char *argv[]);
	
				bool check_presence(const std::string &name);
				
				std::string get_value(const std::string &name);
				
				std::string get_noname_value(const std::string &name);
				
				std::string get_info(const std::string &progname); 
	

	(3.2) coskel_utils:
		
		Functions:
		
				std::complex<double> string_to_complex(const std::string &str);

				std::string complex_to_string(const std::complex<double> &cnum);

				std::string prepare_info(int argc,char *argv[],const std::string &title,const std::string &author,const confparser &cp,struct EXECTIME *et);

				void tic(struct EXECTIME *et);
				
				void toc(struct EXECTIME *et);

(4) DISCLAIMER

	This is a free package and is distributed as it is. I do not take any responsibility for any problems
	connected with this library including data loss, hardware failure or armageddon. Use it at your own risk.
	
(5) LICENSE

	Ok this will be short. Do WHATEVER you want... I really don't care, you can change the code, even sign with your name :)
	Maybe this point will change IF this thing will get a bit bigger.
	
(6) CONTACT

	If you found any bugs or want me to start developing this library (because so far it's written only for a couple of people)
	just email me: rezzywoo@gmail.com
