CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
stream_reader.h
1
2#ifndef __StreamReader_h__
3#define __StreamReader_h__
4
5#include "system/io/text_reader.h"
6#include "system/text/string_builder.h"
7#include "system/string.h"
8
9#include "fwd.h"
10#include <mutex>
11
12namespace System { namespace IO {
13
14 //fw
15 class Stream;
16
21 class ASPOSECPP_SHARED_CLASS StreamReader : public TextReader
22 {
23 public:
27 ASPOSECPP_SHARED_API StreamReader(const SharedPtr<Stream>& stream);
32 ASPOSECPP_SHARED_API StreamReader(const SharedPtr<Stream>& stream, bool detectEncodingFromByteOrderMarks);
37 ASPOSECPP_SHARED_API StreamReader(const SharedPtr<Stream>& stream, const EncodingPtr& encoding);
43 ASPOSECPP_SHARED_API StreamReader(const SharedPtr<Stream>& stream, const EncodingPtr& encoding, bool detectEncodingFromByteOrderMarks);
50 ASPOSECPP_SHARED_API StreamReader(const SharedPtr<Stream>& stream, const EncodingPtr& encoding, bool detectEncodingFromByteOrderMarks, int bufferSize);
51
55 ASPOSECPP_SHARED_API StreamReader(const System::String & path);
60 ASPOSECPP_SHARED_API StreamReader(const System::String & path, bool detectEncodingFromByteOrderMarks);
65 ASPOSECPP_SHARED_API StreamReader(const System::String & path, const EncodingPtr& encoding);
71 ASPOSECPP_SHARED_API StreamReader(const System::String & path, const EncodingPtr& encoding, bool detectEncodingFromByteOrderMarks);
78 ASPOSECPP_SHARED_API StreamReader(const System::String & path, const EncodingPtr& encoding, bool detectEncodingFromByteOrderMarks, int bufferSize);
79
81 ASPOSECPP_SHARED_API ~StreamReader();
82
83 private:
89 void Init(const EncodingPtr& encoding, bool detectEncodingFromByteOrderMarks, int bufferSize);
90
91 public:
93
97 virtual ASPOSECPP_SHARED_API int Peek() override;
101 virtual ASPOSECPP_SHARED_API int Read() override;
108 virtual ASPOSECPP_SHARED_API int Read(ArrayPtr<char_t> buffer, int index, int count) override;
111 virtual ASPOSECPP_SHARED_API String ReadLine() override;
114 virtual ASPOSECPP_SHARED_API String ReadToEnd() override;
116 virtual ASPOSECPP_SHARED_API void Close() override;
117
119 ASPOSECPP_SHARED_API bool get_EndOfStream();
121 EncodingPtr get_CurrentEncoding() { return encoding; }
123 SharedPtr<Stream> get_BaseStream() const { return base_stream; }
124
125 protected:
128 ASPOSECPP_SHARED_API void Dispose(bool disposing) override;
129
130 private:
133 int ReadBuffer();
137 int ReadBufferCore(int cbEncoded);
138
141 int DoChecks(int count);
143 SharedPtr<Stream> base_stream;
144
146 ArrayPtr<uint8_t> input_buffer;
147
149 static ArrayPtr<uint8_t> input_buffer_recycle;
151 std::mutex input_buffer_recycle_lock;
152
154 ArrayPtr<char_t> decoded_buffer;
156 static ArrayPtr<char_t> decoded_buffer_recycle;
157
159 EncodingPtr encoding;
161 DecoderPtr decoder;
163 Text::StringBuilder line_builder;
164
166 int decoded_count;
167
169 int pos;
170
171 // The input buffer size.
172 int buffer_size;
173
175 int do_checks;
177 bool mayBlock;
179 bool foundCR;
181 int FindNextEOL();
182
184 static const int DefaultBufferSize = 1024;
186 static const int DefaultFileBufferSize = 4096;
188 static const int MinimumBufferSize = 128;
189
190 protected:
191#ifdef ASPOSE_GET_SHARED_MEMBERS
192 virtual ASPOSECPP_SHARED_API void GetSharedMembers(System::Object::shared_members_type& result) const override;
193#endif
194
195#ifdef __DBG_FOR_EACH_MEMBER
196 public:
197 ASPOSECPP_SHARED_API void DBG_for_each_member(DBG::for_each_member_visitor &visitor) const override;
198 const char* DBG_class_name() const override { return "StreamReader"; }
199#endif
200 };
201
202}}
203
204#endif
Represents a reader that reads characters from a byte stream. Objects of this class should only be al...
Definition: stream_reader.h:22
SharedPtr< Stream > get_BaseStream() const
Returns a shared pointer to an object that represents the underlying stream.
Definition: stream_reader.h:123
bool get_EndOfStream()
Returns a value that indicates if the end of of stream has been reached.
StreamReader(const SharedPtr< Stream > &stream, const EncodingPtr &encoding)
Constructs an instance of StreamReader object that reads characters from the specified underlying str...
StreamReader(const SharedPtr< Stream > &stream)
Constructs an instance of StreamReader object that reads characters from the specified underlying str...
StreamReader(const System::String &path)
Constructs an instance of StreamReader object that reads characters from the specified file using UTF...
StreamReader(const System::String &path, const EncodingPtr &encoding, bool detectEncodingFromByteOrderMarks, int bufferSize)
Constructs an instance of StreamReader object that reads characters from the specified file using the...
EncodingPtr get_CurrentEncoding()
Returns the currently used encoding.
Definition: stream_reader.h:121
StreamReader(const System::String &path, const EncodingPtr &encoding)
Constructs an instance of StreamReader object that reads characters from the specified file using the...
virtual String ReadLine() override
Reads characters from the stream until the end of the current line.
virtual int Read(ArrayPtr< char_t > buffer, int index, int count) override
Reads the specified number of characters from the stream, converts them to UTF-16 encoding and writes...
StreamReader(const SharedPtr< Stream > &stream, const EncodingPtr &encoding, bool detectEncodingFromByteOrderMarks, int bufferSize)
Constructs an instance of StreamReader object that reads characters from the specified underlying str...
virtual int Peek() override
Reads a single character from the stream without changing the stream's read cursor.
~StreamReader()
Destructor.
StreamReader(const System::String &path, const EncodingPtr &encoding, bool detectEncodingFromByteOrderMarks)
Constructs an instance of StreamReader object that reads characters from the specified underlying str...
virtual int Read() override
Reads a single character from the stream.
StreamReader(const System::String &path, bool detectEncodingFromByteOrderMarks)
Constructs an instance of StreamReader object that reads characters from the specified file using UTF...
virtual void Close() override
Closes the current and underlying streams.
StreamReader(const SharedPtr< Stream > &stream, bool detectEncodingFromByteOrderMarks)
Constructs an instance of StreamReader object that reads characters from the specified underlying str...
void Dispose(bool disposing) override
Releases all resources used by the current object and closes the undelying stream.
StreamReader(const SharedPtr< Stream > &stream, const EncodingPtr &encoding, bool detectEncodingFromByteOrderMarks)
Constructs an instance of StreamReader object that reads characters from the specified underlying str...
virtual String ReadToEnd() override
Reads characters from the stream until the end of the stream.
A base class for classes that represent readers that read sequences of characters from different sour...
Definition: text_reader.h:15
virtual void Dispose() override
Releases all resources used by the current object and closes the undelying stream.
Definition: text_reader.h:27
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:122
Buffer to accumulate string part by part. This type can be allocated either in stack as value type or...
Definition: string_builder.h:17
@ Stream
The type that supports reliable, two-way, connection-based byte streams without duplication of data a...
Definition: db_command.h:9