// IO.h

#ifndef __IO_H__
#define __IO_H__

using namespace std;
typedef unsigned int uint;

#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <map>

class IO
{
public:
	IO();
	~IO();

	uint GetEntry(string s, uint n);

	bool FindInVector(uint a, vector<uint> v);
	uint FindInVectorCount(uint a, vector<uint> v);

	void UpDateCorrectTieErrorTotal(vector<uint>& vCorrectTieErrorTotal, uint nCorrectClass, vector<uint> vTestClasses);

	// I cannot get templates to work here though they do in SFCMain2026.cpp as global functions.
	string DumpVector(uint nSpaceType, vector<bool> v);
	string DumpVector(uint nSpaceType, vector<uint> v);
	string DumpVector(uint nDefault, uint nSpaceType, vector<uint> v);

	string DumpMapWithDefaultSpacing(uint nDefault, uint nSpaceType, map<vector<bool>, vector<uint>> m);
	string DumpMapWithDefaultSpacing(bool bClassCount, uint nDefault, uint nSpaceType, map<vector<bool>, vector<uint>> m);
	string DumpMapWithDefaultSpacing(bool bGraySums, vector<uint> vGrayStart, vector<uint> vGraySize, bool bClassCount, uint nDefault, uint nSpaceType, map<vector<bool>, vector<uint>> m);

	string DumpMap(uint nSpaceType, map< uint, vector<uint> > m);
	string DumpMap(uint nSpaceType, map<vector<uint>, uint > m);
	string DumpMap(uint nSpaceType, map<vector<bool>, vector<uint>> m);
	string DumpMap(uint nSpaceType, map<vector<uint>, vector<uint>> m);
	string DumpMap(bool bGray, uint nSpaceType0, uint nSpaceType1, map<vector<bool>, vector<uint>> m);
	string DumpMap(bool bGray, uint nDefault, uint nSpaceType0, uint nSpaceType1, map<vector<bool>, vector<uint>> m);
	string DumpMap(uint nSpaceType0, uint nSpaceType1, map<vector<uint>, vector<uint>> m);

	bool WriteFile(string sFile, string s);

	string DumpVectorMatrix(vector<bool> v);

private:
};


#endif // __IO_H__

