xtd 0.2.0
Loading...
Searching...
No Matches
binary_reader.hpp
Go to the documentation of this file.
1
4#pragma once
5#include "../optional.hpp"
6#include "../object.hpp"
7#include "../string.hpp"
8#include <iostream>
9#include <fstream>
10#include <vector>
11#include <stack>
12
14namespace xtd {
16 namespace io {
41 public:
43
49 explicit binary_reader(const xtd::string& path);
56 explicit binary_reader(std::istream& stream);
59 binary_reader(const binary_reader&) = delete;
60 binary_reader& operator =(const binary_reader&) = delete;
63
65
71 std::optional<std::reference_wrapper<std::istream>> base_stream() const;
72
75 bool end_of_stream() const;
77
79
82 void close();
83
89
91 std::streampos pop();
92
95 void push(std::streampos pos = 0);
96
102 virtual int32 read();
103
113 virtual size_t read(std::vector<xtd::byte>& buffer, size_t index, size_t count);
114
123 virtual size_t read(std::vector<char>& buffer, size_t index, size_t count);
124
131 virtual bool read_boolean();
132
140
148 virtual std::vector<xtd::byte> read_bytes(size_t count);
149
156 virtual char read_char();
157
165 virtual std::vector<char> read_chars(size_t count);
166
173 virtual double read_double();
174
181 virtual int16 read_int16();
182
189 virtual int32 read_int32();
190
197 virtual int64 read_int64();
198
205 virtual sbyte read_sbyte();
206
213 virtual float read_single();
214
221 virtual string read_string();
222
230
238
246
248 void rewind();
249
253 void seekg(std::streamoff off, std::ios_base::seekdir dir = std::ios_base::cur);
254
257 std::streampos tellg();
259
261 binary_reader& operator >>(bool& value) {value = read_boolean(); return *this;}
262 binary_reader& operator >>(xtd::byte& value) {value = read_byte(); return *this;}
263 binary_reader& operator >>(char& value) {value = read_char(); return *this;}
264 binary_reader& operator >>(double& value) {value = read_double(); return *this;}
265 binary_reader& operator >>(int16& value) {value = read_int16(); return *this;}
266 binary_reader& operator >>(int32& value) {value = read_int32(); return *this;}
267 binary_reader& operator >>(int64& value) {value = read_int64(); return *this;}
268 binary_reader& operator >>(sbyte& value) {value = read_sbyte(); return *this;}
269 binary_reader& operator >>(float& value) {value = read_single(); return *this;}
270 binary_reader& operator >>(string& value) {value = read_string(); return *this;}
271 binary_reader& operator >>(uint16& value) {value = read_uint16(); return *this;}
272 binary_reader& operator >>(uint32& value) {value = read_uint32(); return *this;}
273 binary_reader& operator >>(uint64& value) {value = read_uint64(); return *this;}
275
276 private:
277 std::istream* stream_ = nullptr;
278 std::stack<std::streampos> pos_stack_;
279 bool delete_when_destroy_ = false;
280 };
281 }
282}
Represents text as a sequence of character units.
Definition basic_string.hpp:79
Reads primitive data types as binary values in a specific encoding.
Definition binary_reader.hpp:40
binary_reader(const xtd::string &path)
Initializes a new instance of the xtd::io::binary_reader class for the specified file name.
virtual bool read_boolean()
Reads a boolean value from the current stream and advances the current position of the stream by one ...
void seekg(std::streamoff off, std::ios_base::seekdir dir=std::ios_base::cur)
Change the position of the readers stream.
void close()
Closes the xtd::io::binary_reader object and the underlying stream, and releases any system resources...
void push(std::streampos pos=0)
Push the current position.
virtual float read_single()
Reads an 4-byte floating point value from the current stream and advances the current position of the...
virtual size_t read(std::vector< xtd::byte > &buffer, size_t index, size_t count)
Reads the specified number of bytes from the stream, starting from a specified point in the byte arra...
virtual double read_double()
Reads an 8-byte floating point value from the current stream and advances the current position of the...
virtual uint32 read_uint32()
Reads a 4-byte unsigned integer from the current stream and advances the current position of the stre...
virtual uint64 read_uint64()
Reads a 8-byte unsigned integer from the current stream and advances the current position of the stre...
virtual size_t read(std::vector< char > &buffer, size_t index, size_t count)
Reads the specified number of characters from the stream, starting from a specified point in the char...
virtual sbyte read_sbyte()
Reads the a signed byte from the current stream and advances the current position of the stream by on...
binary_reader(std::istream &stream)
Initializes a new instance of the xtd::io::binary_reader class for the specified stream.
virtual int16 read_int16()
Reads a 2-byte signed integer from the current stream and advances the current position of the stream...
void rewind()
Rewind stream.
virtual xtd::byte read_byte()
Reads the next byte from the current stream and advances the current position of the stream by one by...
virtual std::vector< char > read_chars(size_t count)
Reads the specified number of characters from the current stream into a byte array and advances the c...
virtual uint16 read_uint16()
Reads a 2-byte unsigned integer from the current stream and advances the current position of the stre...
bool end_of_stream() const
Gets a value that indicates whether the current stream position is at the end of the stream.
virtual char read_char()
Reads the next character from the current stream and advances the current position of the stream by o...
int32 peek_char() const
Returns the next available character and does not advance the byte or character position.
virtual string read_string()
Reads a string from the current stream. The string is prefixed with the length.
virtual int32 read_int32()
Reads a 4-byte signed integer from the current stream and advances the current position of the stream...
virtual std::vector< xtd::byte > read_bytes(size_t count)
Reads the specified number of bytes from the current stream into a byte array and advances the curren...
std::streampos pop()
Pop the current top position.
virtual int32 read()
Reads characters from the underlying stream and advances the current position of the stream in accord...
virtual int64 read_int64()
Reads a 8-byte signed integer from the current stream and advances the current position of the stream...
std::optional< std::reference_wrapper< std::istream > > base_stream() const
Returns the underlying stream.
std::streampos tellg()
Tell the current seek position of the readers stream;.
Performs operations on std::basic_string instances that contain file or directory path information....
Definition path.hpp:36
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:42
#define core_export_
Define shared library export.
Definition core_export.hpp:13
int16_t int16
Represents a 16-bit signed integer.
Definition int16.hpp:23
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
int64_t int64
Represents a 64-bit signed integer.
Definition int64.hpp:23
int8_t sbyte
Represents a 8-bit signed integer.
Definition sbyte.hpp:23
uint32_t uint32
Represents a 32-bit unsigned integer.
Definition uint32.hpp:23
uint64_t uint64
Represents a 64-bit unsigned integer.
Definition uint64.hpp:23
uint8_t byte
Represents a 8-bit unsigned integer.
Definition byte.hpp:23
uint16_t uint16
Represents a 16-bit unsigned integer.
Definition uint16.hpp:23
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.hpp:10