Skip to content

Instantly share code, notes, and snippets.

@shanewfx
Created January 6, 2013 03:04
Show Gist options
  • Save shanewfx/4464955 to your computer and use it in GitHub Desktop.
Save shanewfx/4464955 to your computer and use it in GitHub Desktop.
[C++] FileReader.h
#ifndef AVM_FILE_READER_H
#define AVM_FILE_READER_H
#include "DemuxUtil.h"
//#define FILE_MAPPING_READER
#ifndef FILE_MAPPING_READER
class CFileReader
{
public:
CFileReader();
virtual ~CFileReader();
virtual bool Open(const WCHAR* lpFileName);
virtual bool Close();
virtual DWORD Read(LONGLONG llReadPosition, DWORD dwBytesToRead, BYTE* pBuffer);
virtual LONGLONG GetFileSize() const
{
#ifdef _MAC_
return m_llFileSize;
#else
return m_liFileSize.QuadPart;
#endif
}
protected:
#ifdef _MAC_
OSStatus ConvertUTF8NameToHFSUniStr255(const char* inName, HFSUniStr255* uniStr);
OSStatus OpenFileAndGetDataForkRef(const char* fileName, SInt8 permissions, SInt16* forkRefNum);
SInt16 m_hFile;
SInt64 m_llFileSize;
#else
HANDLE m_hFile;
LARGE_INTEGER m_liFileSize;
#endif
};
#else
class CFileReader
{
public:
CFileReader();
virtual ~CFileReader();
virtual bool Open(const WCHAR* lpFileName);
virtual bool Close();
virtual DWORD Read(LONGLONG llReadPosition, DWORD dwBytesToRead, BYTE* pBuffer);
virtual LONGLONG GetFileSize() const
{
return m_llFileSize;
}
private:
HANDLE m_hFileMapping;
HANDLE m_hFile;
LONGLONG m_llFileSize;
};
#endif
#endif//AVM_FILE_READER_H
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment