/* * * * * * * * * * * * * * * * 
 * 	 ______     __  __     ______     __  __     ______     ______     __  __    
 *	/\  __ \   /\ \/\ \   /\  == \   /\ \_\ \   /\  __ \   /\  ___\   /\ \/ /    
 *	\ \ \/\ \  \ \ \_\ \  \ \  __<   \ \  __ \  \ \  __ \  \ \ \____  \ \  _"-.  
 *	 \ \_____\  \ \_____\  \ \_____\  \ \_\ \_\  \ \_\ \_\  \ \_____\  \ \_\ \_\ 
 *	  \/_____/   \/_____/   \/_____/   \/_/\/_/   \/_/\/_/   \/_____/   \/_/\/_/ 
 *
 *  - Version : 3L
 *  - By Oubliette
 * * * * * * * * * * * * * * * */

#ifndef _FILEIO

#define _FILEIO

#undef Verify

#include "oubhack_aes.h"

#include "md5.h"
#include "hex.h"

class IFileIO {

public:

	IFileIO();

	std::string					ReadFile( const char* );
	void						WriteFile( const char*, const char*, const char* ccMode = "w" );

	void						FileDump( const char*, const char * );

	std::string					ReadDecryptedFile( const char* );

	std::vector<std::string>	GetFiles( const char*, int* );
	std::vector<std::string>	GetDirectories( const char*, int* );

	void						CreateDirectories( const char* );

	bool						FileExists( const char* );

	// Need to move these
	std::string					DoMD5( std::string );
	byte*						DoMD5B( std::string );

};

#endif