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 <algorithm>
5#include "Reader.hpp"
6
13namespace byteme {
14
22public:
28 ChunkedBufferReader(const unsigned char* buffer, size_t length, size_t chunk_size) : my_buffer(buffer), my_length(length), my_chunk_size(chunk_size) {
29 my_position = -my_chunk_size; // deliberate underflow so that load() overflows to zero.
30 }
31
37 ChunkedBufferReader(const char* buffer, size_t length, size_t chunk_size) :
38 ChunkedBufferReader(reinterpret_cast<const unsigned char*>(buffer), length, chunk_size) {}
39
40public:
41 bool load() {
42 my_position += my_chunk_size;
43 return (my_position < my_length);
44 }
45
46 const unsigned char * buffer () const {
47 return my_buffer + my_position;
48 }
49
50 size_t available() const {
51 return std::min(my_chunk_size, my_length - my_position);
52 }
53
54private:
55 const unsigned char* my_buffer;
56 size_t my_length;
57 size_t my_position;
58 size_t my_chunk_size;
59};
60
61}
62
63#endif
Read an input source.
Read chunks of bytes from a raw buffer.
Definition ChunkedBufferReader.hpp:21
ChunkedBufferReader(const char *buffer, size_t length, size_t chunk_size)
Definition ChunkedBufferReader.hpp:37
bool load()
Definition ChunkedBufferReader.hpp:41
size_t available() const
Definition ChunkedBufferReader.hpp:50
ChunkedBufferReader(const unsigned char *buffer, size_t length, size_t chunk_size)
Definition ChunkedBufferReader.hpp:28
const unsigned char * buffer() const
Definition ChunkedBufferReader.hpp:46
Virtual class for reading bytes from a source.
Definition Reader.hpp:15
Simple byte readers and writers.