/
githubmirror
/
omim
Обзор
Документация
Войти
/
githubmirror
/
omim
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
py-modules-0.2.7
coding/zip_reader.hpp
53 строки
2 KB
Maxim Pimenov
[coding] Inherit default cache sizes in ZipFileReader from FileReader.
21 июн 2018, 15:05
21 июн 2018, 15:05
0fd0375
Код
Авторство
О чём код?
#pragma once #include "coding/file_reader.hpp" #include "coding/file_writer.hpp" #include "base/exception.hpp" #include "std/function.hpp" #include "std/utility.hpp" class ZipFileReader : public FileReader { private: uint64_t m_uncompressedFileSize; public: struct Delegate { virtual ~Delegate() = default; // When |size| is zero, end of file is reached. virtual void OnBlockUnzipped(size_t size, char const * data) = 0; virtual void OnStarted() {} virtual void OnCompleted() {} }; typedef function<void(uint64_t, uint64_t)> ProgressFn; /// Contains file name inside zip and it's uncompressed size typedef vector<pair<string, uint32_t> > FileListT; DECLARE_EXCEPTION(OpenZipException, OpenException); DECLARE_EXCEPTION(LocateZipException, OpenException); DECLARE_EXCEPTION(InvalidZipException, OpenException); ZipFileReader(string const & container, string const & file, uint32_t logPageSize = FileReader::kDefaultLogPageSize, uint32_t logPageCount = FileReader::kDefaultLogPageCount); /// @note Size() returns compressed file size inside zip uint64_t UncompressedSize() const { return m_uncompressedFileSize; } /// @warning Can also throw Writer::OpenException and Writer::WriteException static void UnzipFile(string const & zipContainer, string const & fileInZip, Delegate & delegate); static void UnzipFile(string const & zipContainer, string const & fileInZip, string const & outPath); static void FilesList(string const & zipContainer, FileListT & filesList); /// Quick version without exceptions static bool IsZip(string const & zipContainer); };