| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #ifndef _DataFile_h_
- #define _DataFile_h_
- #include "..\..\common_h\FileService.h"
- #include "Archivator.h"
- class PackFile;
- //Файл для чтения данных
- class DataFileBase : public IDataFile
- {
- protected:
- DataFileBase(const char * _cppFileName, long _cppFileLine);
- virtual ~DataFileBase();
- public:
- //Закрыть файл сообщив об ошибке
- void ErrorRelease();
- public:
- //Закрыть файл
- virtual void Release();
- //Получить размер файла
- virtual dword Size() const;
- protected:
- dword size;
- #ifndef STOP_DEBUG
- const char * cppFileName;
- long cppFileLine;
- #endif
- };
- //Файл для чтения данных
- class DataFile : public DataFileBase
- {
- public:
- DataFile(const char * cppFileName, long cppFileLine);
- virtual ~DataFile();
- //Открыть файл
- bool Open(const char * realPath);
- //Прочитать данные, возвращает количество прочитаных байт
- //если поинтер null то читать во внутрений буффер
- //если режим noReadAccess, то память буфера не кэшируемая
- virtual dword Read(void * buffer, dword size, bool noReadAccess);
- private:
- HANDLE handle;
- };
- //Файл для чтения данных из неупакованного файла
- class DataFileMemUnpack : public DataFileBase
- {
- public:
- DataFileMemUnpack(const char * cppFileName, long cppFileLine, const byte * data, dword fileSize);
- virtual ~DataFileMemUnpack();
- public:
- //Прочитать данные, возвращает количество прочитаных байт
- //если поинтер null то читать во внутрений буффер
- //если режим noReadAccess, то память буфера не кэшируемая
- virtual dword Read(void * buffer, dword size, bool noReadAccess);
- private:
- const byte * ptr;
- const byte * stopPtr;
- ClassThread
- };
- //Файл для чтения данных из упакованного файла
- class DataFileMemPack : public DataFileBase
- {
- public:
- DataFileMemPack(const char * cppFileName, long cppFileLine, const byte * mem, dword packedSize, dword realSize);
- virtual ~DataFileMemPack();
- public:
- //Прочитать данные, возвращает количество прочитаных байт
- //если поинтер null то читать во внутрений буффер
- //если режим noReadAccess, то память буфера не кэшируемая
- virtual dword Read(void * buffer, dword size, bool noReadAccess);
- private:
- const byte * sourceData;
- dword sourceSize;
- XStreamDecompressor * decompressor;
- ClassThread
- };
- #endif
|