byteme
C++ wrappers for buffered inputs
Loading...
Searching...
No Matches
ChunkedBufferReader.hpp
Go to the documentation of this file.
1#ifndef BYTEME_CHUNKED_BUFFER_READER_HPP
2#define BYTEME_CHUNKED_BUFFER_READER_HPP
3
4#include <cstddef>
5#include <algorithm>
6
7#include "Reader.hpp"
8
15namespace byteme {
16
23class ChunkedBufferReader final : public byteme::Reader {
24public:
30 ChunkedBufferReader(const unsigned char* buffer, std::size_t length, std::size_t chunk_size) : my_buffer(buffer), my_length(length), my_chunk_size(chunk_size) {
31 my_position = -my_chunk_size; // deliberate underflow so that load() overflows to zero.
32 }
33
34public:
35 bool load() {
36 my_position += my_chunk_size;
37 return (my_position < my_length);
38 }
39
40 const unsigned char * buffer () const {
41 return my_buffer + my_position;
42 }
43
44 std::size_t available() const {
45 return std::min(my_chunk_size, my_length - my_position);
46 }
47
48private:
49 const unsigned char* my_buffer;
50 std::size_t my_length;
51 std::size_t my_position;
52 std::size_t my_chunk_size;
53};
54
55}
56
57#endif
Read an input source.
Read chunks of bytes from a raw buffer.
Definition ChunkedBufferReader.hpp:23
std::size_t available() const
Definition ChunkedBufferReader.hpp:44
ChunkedBufferReader(const unsigned char *buffer, std::size_t length, std::size_t chunk_size)
Definition ChunkedBufferReader.hpp:30
bool load()
Definition ChunkedBufferReader.hpp:35
const unsigned char * buffer() const
Definition ChunkedBufferReader.hpp:40
Virtual class for reading bytes from a source.
Definition Reader.hpp:17
Simple byte readers and writers.