#ifndef INPUT_OUTPUT_H
#define INPUT_OUTPUT_H

#include "basefunctions.h"
#include "trie.h"
#include <fstream>
#include <string>

bool	getContinue();
string	getFileName();
int		getMinimumSupport(const int totalTransactionCount);
void	initializeTransactionArray(bool** &transactions, ArrayInfo2D &arrayInfo, int sizeI, int sizeJ);
bool    loadData(bool** &transactions, ArrayInfo2D &arrayInfo, const string &filename, string numTransactions, string numItems);
void	outputResults(double time, const Trie& largeItemsets);
void	WriteOutputResults(double time, const Trie& largeItemsets);
void	parseFileName(int &transactions, int &items, const string &filename);
void CreateData(char *fn);
void WriteData(char *fn, int nbThreads, int numTransactions, int numItems, int minSupport, float timeExec, float speedUp, float efficacity, float realEfficacity);
void	readFile(bool **transactions, const ArrayInfo2D &arrayInfo, ifstream& fin);
void	readDataFile(bool **transactions, const ArrayInfo2D &arrayInfo, ifstream& fin);
#endif