aboutsummaryrefslogtreecommitdiff
path: root/src/buffered_file.h
diff options
context:
space:
mode:
authorJan Sucan <jan@jansucan.com>2025-01-18 07:57:57 +0100
committerJán Sučan <jan@jansucan.com>2025-01-18 12:44:04 +0100
commit8b51499900e125a55dcdc425d29550b98a8064b4 (patch)
tree938545b3b612bcacd3599785be3f4a23ec08bea7 /src/buffered_file.h
parenta7e8d00f5140d250e339736eb49e20609bffa47f (diff)
Initial implementation of diff file format v2
Diffstat (limited to 'src/buffered_file.h')
-rw-r--r--src/buffered_file.h11
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;