xtd 0.2.0
Loading...
Searching...
No Matches
binary_reader.h
Go to the documentation of this file.
1
4#pragma once
5#include "../optional.h"
6#include "../object.h"
7#include "../ustring.h"
8#include <iostream>
9#include <fstream>
10#include <vector>
11#include <stack>
12
14namespace xtd {
16 namespace io {
39 public:
41
54 explicit binary_reader(std::istream& stream);
57 binary_reader(const binary_reader&) = delete;
58 binary_reader& operator =(const binary_reader&) = delete;
61
63
69 std::optional<std::reference_wrapper<std::istream>> base_stream() const;
70
73 bool end_of_stream() const;
75
77
80 void close();
81
87
89 std::streampos pop();
90
93 void push(std::streampos pos = 0);
94
100 virtual int32 read();
101
111 virtual size_t read(std::vector<xtd::byte>& buffer, size_t index, size_t count);
112
121 virtual size_t read(std::vector<char>& buffer, size_t index, size_t count);
122
129 virtual bool read_boolean();
130
138
146 virtual std::vector<xtd::byte> read_bytes(size_t count);
147
154 virtual char read_char();
155
163 virtual std::vector<char> read_chars(size_t count);
164
171 virtual double read_double();
172
179 virtual int16 read_int16();
180
187 virtual int32 read_int32();
188
195 virtual int64 read_int64();
196
203 virtual sbyte read_sbyte();
204
211 virtual float read_single();
212
220
228
236
244
246 void rewind();
247
251 void seekg(std::streamoff off, std::ios_base::seekdir dir = std::ios_base::cur);
252
255 std::streampos tellg();
257
259 binary_reader& operator >>(bool& value) {value = read_boolean(); return *this;}
260 binary_reader& operator >>(xtd::byte& value) {value = read_byte(); return *this;}
261 binary_reader& operator >>(char& value) {value = read_char(); return *this;}
262 binary_reader& operator >>(double& value) {value = read_double(); return *this;}
263 binary_reader& operator >>(int16& value) {value = read_int16(); return *this;}
264 binary_reader& operator >>(int32& value) {value = read_int32(); return *this;}
265 binary_reader& operator >>(int64& value) {value = read_int64(); return *this;}
266 binary_reader& operator >>(sbyte& value) {value = read_sbyte(); return *this;}
267 binary_reader& operator >>(float& value) {value = read_single(); return *this;}
268 binary_reader& operator >>(ustring& value) {value = read_string(); return *this;}
269 binary_reader& operator >>(uint16& value) {value = read_uint16(); return *this;}
270 binary_reader& operator >>(uint32& value) {value = read_uint32(); return *this;}
271 binary_reader& operator >>(uint64& value) {value = read_uint64(); return *this;}
273
274 private:
275 std::istream* stream_ = nullptr;
276 std::stack<std::streampos> pos_stack_;
277 bool delete_when_destroy_ = false;
278 };
279 }
280}
Reads primitive data types as binary values in a specific encoding.
Definition binary_reader.h:38
virtual ustring read_string()
Reads a string from the current stream. The string is prefixed with the length.
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.
binary_reader(const xtd::ustring &path)
Initializes a new instance of the xtd::io::binary_reader class for the specified file name.
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 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.h:34
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:32
Represents text as a sequence of UTF-8 code units.
Definition ustring.h:47
#define core_export_
Define shared library export.
Definition core_export.h:13
int_least16_t int16
Represents a 16-bit signed integer.
Definition types.h:120
int_least8_t sbyte
Represents a 8-bit signed integer.
Definition types.h:175
int_least64_t int64
Represents a 64-bit signed integer.
Definition types.h:142
uint_least16_t uint16
Represents a 16-bit unsigned integer.
Definition types.h:230
int_least32_t int32
Represents a 32-bit signed integer.
Definition types.h:131
uint_least64_t uint64
Represents a 64-bit unsigned integer.
Definition types.h:252
uint_least32_t uint32
Represents a 32-bit unsigned integer.
Definition types.h:241
uint_least8_t byte
Represents a 8-bit unsigned integer.
Definition types.h:41
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10