diff options
| author | Jan Sucan <jan@jansucan.com> | 2025-01-18 07:57:57 +0100 |
|---|---|---|
| committer | Ján Sučan <jan@jansucan.com> | 2025-01-18 12:44:04 +0100 |
| commit | 8b51499900e125a55dcdc425d29550b98a8064b4 (patch) | |
| tree | 938545b3b612bcacd3599785be3f4a23ec08bea7 /src/buffered_file.h | |
| parent | a7e8d00f5140d250e339736eb49e20609bffa47f (diff) | |
Initial implementation of diff file format v2
Diffstat (limited to 'src/buffered_file.h')
| -rw-r--r-- | src/buffered_file.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/buffered_file.h b/src/buffered_file.h index 1bcbb73..4e5219d 100644 --- a/src/buffered_file.h +++ b/src/buffered_file.h @@ -44,19 +44,20 @@ class BufferedFileError : public DiffddError class BufferedFileReader { public: - BufferedFileReader(std::filesystem::path path, size_t buffer_capacity); + BufferedFileReader(std::istream &istream, size_t buffer_capacity); virtual ~BufferedFileReader() = default; size_t read(char *data, size_t data_size); + size_t tryRead(size_t data_size, char **return_data); private: - std::ifstream m_file; + std::istream &m_istream; std::unique_ptr<char[]> m_buffer; size_t m_buffer_offset; size_t m_buffer_size; const size_t m_buffer_capacity; - size_t read_buffer(char *data, size_t data_size); + size_t read_buffer(size_t data_size, char **return_data); void refill_buffer(); size_t read_file(char *data, size_t data_size); }; @@ -64,13 +65,13 @@ class BufferedFileReader class BufferedFileWriter { public: - BufferedFileWriter(std::filesystem::path path, size_t buffer_capacity); + BufferedFileWriter(std::ostream &ostream, size_t buffer_capacity); virtual ~BufferedFileWriter(); void write(const char *data, size_t data_size); private: - std::fstream m_file; + std::ostream &m_ostream; std::unique_ptr<char[]> m_buffer; size_t m_buffer_size; const size_t m_buffer_capacity; |
