www.pudn.com > potemkin_sourceforPSP.rar > BlockDevices.h


#pragma once 
 
#include "../../Globals.h" 
 
 
class BlockDevice 
{ 
public: 
	virtual ~BlockDevice() {} 
	virtual bool ReadBlock(int blockNumber, u8 *outPtr) = 0; 
	int GetBlockSize() const { return 2048;} //implied, it cannot be changed 
	virtual int GetNumBlocks() = 0; 
}; 
 
 
class CISOFileBlockDevice : public BlockDevice 
{ 
	std::string filename; 
	FILE *f; 
	u32 *index; 
	int indexShift; 
	u32 blockSize; 
	int numBlocks; 
public: 
	CISOFileBlockDevice(std::string _filename); 
	~CISOFileBlockDevice(); 
	bool ReadBlock(int blockNumber, u8 *outPtr); 
	int GetNumBlocks() { return numBlocks;} 
}; 
 
 
 
class FileBlockDevice : public BlockDevice 
{ 
	std::string filename; 
	FILE *f; 
	size_t filesize; 
public: 
	FileBlockDevice(std::string _filename); 
	~FileBlockDevice(); 
	bool ReadBlock(int blockNumber, u8 *outPtr); 
	int GetNumBlocks() {return filesize/GetBlockSize();} 
};