byteme
C++ wrappers for buffered inputs
Loading...
Searching...
No Matches
SomeBufferReader.hpp
Go to the documentation of this file.
1#ifndef BYTEME_SOME_BUFFER_READER_HPP
2#define BYTEME_SOME_BUFFER_READER_HPP
3
4#include <cstddef>
5#include <memory>
6#include <cstdio>
7
8#include "Reader.hpp"
9#include "RawBufferReader.hpp"
10#include "ZlibBufferReader.hpp"
11#include "magic_numbers.hpp"
12
19namespace byteme {
20
29 std::size_t buffer_size = 65536;
30};
31
38class SomeBufferReader final : public Reader {
39public:
45 SomeBufferReader(const unsigned char* buffer, std::size_t length, const SomeBufferReaderOptions& options) {
46 if (is_zlib(buffer, length) || is_gzip(buffer, length)) {
48 zopt.buffer_size = options.buffer_size;
49 my_source.reset(new ZlibBufferReader(buffer, length, zopt));
50 } else {
51 my_source.reset(new RawBufferReader(buffer, length));
52 }
53 }
54
55public:
56 bool load() {
57 return my_source->load();
58 }
59
60 const unsigned char* buffer() const {
61 return my_source->buffer();
62 }
63
64 std::size_t available() const {
65 return my_source->available();
66 }
67
68private:
69 std::unique_ptr<Reader> my_source;
70};
71
72}
73
74#endif
Read bytes from a raw buffer without any extra transformations.
Read an input source.
Read bytes from a Zlib-compressed buffer.
Read bytes from a raw buffer, usually text.
Definition RawBufferReader.hpp:23
Virtual class for reading bytes from a source.
Definition Reader.hpp:17
Read a buffer that may or may not be Gzip/Zlib-compressed.
Definition SomeBufferReader.hpp:38
bool load()
Definition SomeBufferReader.hpp:56
std::size_t available() const
Definition SomeBufferReader.hpp:64
SomeBufferReader(const unsigned char *buffer, std::size_t length, const SomeBufferReaderOptions &options)
Definition SomeBufferReader.hpp:45
const unsigned char * buffer() const
Definition SomeBufferReader.hpp:60
Read and decompress bytes from a Zlib-compressed buffer.
Definition ZlibBufferReader.hpp:43
Simple byte readers and writers.
Options for the SomeBufferReader constructor.
Definition SomeBufferReader.hpp:24
std::size_t buffer_size
Definition SomeBufferReader.hpp:29
Options for the ZlibBufferReader constructor.
Definition ZlibBufferReader.hpp:24
std::size_t buffer_size
Definition ZlibBufferReader.hpp:35