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 "Reader.hpp"
5#include "RawBufferReader.hpp"
7#include "magic_numbers.hpp"
8#include <memory>
9#include <cstdio>
10
17namespace byteme {
18
25class SomeBufferReader : public Reader {
26public:
32 SomeBufferReader(const unsigned char* buffer, size_t length, size_t buffer_size = 65536) {
33 if (is_zlib(buffer, length) || is_gzip(buffer, length)) {
34 my_source.reset(new ZlibBufferReader(buffer, length, 3, buffer_size));
35 } else {
36 my_source.reset(new RawBufferReader(buffer, length));
37 }
38 }
39
45 SomeBufferReader(const char* buffer, size_t length, size_t buffer_size = 65536) :
46 SomeBufferReader(reinterpret_cast<const unsigned char*>(buffer), length, buffer_size) {}
47
48public:
49 bool load() {
50 return my_source->load();
51 }
52
53 const unsigned char* buffer() const {
54 return my_source->buffer();
55 }
56
57 size_t available() const {
58 return my_source->available();
59 }
60
61private:
62 std::unique_ptr<Reader> my_source;
63};
64
65}
66
67#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:21
Virtual class for reading bytes from a source.
Definition Reader.hpp:15
Read a buffer that may or may not be Gzip/Zlib-compressed.
Definition SomeBufferReader.hpp:25
bool load()
Definition SomeBufferReader.hpp:49
SomeBufferReader(const char *buffer, size_t length, size_t buffer_size=65536)
Definition SomeBufferReader.hpp:45
const unsigned char * buffer() const
Definition SomeBufferReader.hpp:53
size_t available() const
Definition SomeBufferReader.hpp:57
SomeBufferReader(const unsigned char *buffer, size_t length, size_t buffer_size=65536)
Definition SomeBufferReader.hpp:32
Read and decompress bytes from a Zlib-compressed buffer.
Definition ZlibBufferReader.hpp:22
Simple byte readers and writers.