// header file:   FileIO.hpp
// description:   Module as class with static functions for reading from and writing to files.
//                Design scheme for bad cases: Action-query.
// author:        Karlheinz Hug
// creation date: 2012-07-05
// last update:   2012-07-31

#ifndef FILE_IO_HPP_
#define FILE_IO_HPP_

#include <string>
#include <vector>

	class FileIO
	{
		public:
			static void read_from_file_to_buffer (const std::string & filename, std::vector<char> & buffer);
				// precondition: filename.size() > 0
				// 'result()' may be 'failed_open'.

			static void write_from_buffer_to_file (const std::vector<char> & buffer, const std::string & filename);
				// precondition: filename.size() > 0
				// 'result()' may be 'failed_open', 'failed_write'.

			static int result () {return a_result;}

			static const int done         = 0;
			static const int failed_open  = 1;
			static const int failed_write = 2;
				// Values for 'result()'.

		protected:
			static int a_result;
	};

#endif // FILE_IO_HPP_
