MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_text_stream.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_TEXT_STREAM_H_1538586799
12#define INCGUARD_MGL_TEXT_STREAM_H_1538586799
13
14#include <cstddef>
15
20
21namespace MGL::Text
22{
25{
26public:
27 /* ------------------------------------------------------------------------- */
31 /* ------------------------------------------------------------------------- */
32 constexpr TextStream() noexcept = default;
33
34 TextStream(const uint8_t *buffer, size_t size, Encoding encoding = Encoding::Auto, bool existBOM = false) noexcept;
35
36 void Set(const uint8_t *buffer, size_t size, Encoding encoding = Encoding::Auto, bool existBOM = false) noexcept;
37 bool Load(const File::PathView &filepath, Encoding encoding = Encoding::Auto) noexcept;
38
39 /* ------------------------------------------------------------------------- */
48 /* ------------------------------------------------------------------------- */
49 [[nodiscard]] Encoding GetEncoding() const noexcept
50 {
51 return _encoding;
52 }
53
54 Character Read() noexcept;
55
56 int Read(CharacterArray &array) noexcept;
57 int ReadLine(CharacterArray &array) noexcept;
58
59 void PrintInfo() const noexcept;
60
61
62 /* ------------------------------------------------------------------------- */
68 /* ------------------------------------------------------------------------- */
69 [[nodiscard]] constexpr bool IsTerminated() const noexcept
70 {
71 return (_offset >= _size);
72 }
73
74private:
75 Encoding CheckEncoding(bool &existBOM) const noexcept;
76 [[nodiscard]] size_t GetStartOffset() const noexcept;
77
78 Character ReadUTF8() noexcept;
79 Character ReadUTF16() noexcept;
80 Character ReadUTF32() noexcept;
81
82 const uint8_t *_buffer{nullptr};
83 size_t _size{0};
84 Encoding _encoding{Encoding::Auto};
85 size_t _offset{0};
86 bool _existBOM{false};
87 STL::unique_ptr<uint8_t[]> _loadBuffer{nullptr};
88};
89} // namespace MGL::Text
90
91
92#endif // INCGUARD_MGL_TEXT_STREAM_H_1538586799
93
94// vim: et ts=4 sw=4 sts=4
文字の集合体クラス
Definition mgl_text_character.h:160
文字クラス
Definition mgl_text_character.h:24
テキストストリームクラス
Definition mgl_text_stream.h:25
Encoding GetEncoding() const noexcept
エンコードタイプの取得
Definition mgl_text_stream.h:49
constexpr TextStream() noexcept=default
コンストラクタ
void Set(const uint8_t *buffer, size_t size, Encoding encoding=Encoding::Auto, bool existBOM=false) noexcept
バッファの設定
Definition mgl_text_stream.cc:45
int ReadLine(CharacterArray &array) noexcept
現在位置から行末まで読み込み
Definition mgl_text_stream.cc:396
Character Read() noexcept
文字の取得
Definition mgl_text_stream.cc:116
bool Load(const File::PathView &filepath, Encoding encoding=Encoding::Auto) noexcept
ファイルから読み込み
Definition mgl_text_stream.cc:74
void PrintInfo() const noexcept
情報の表示
Definition mgl_text_stream.cc:340
constexpr bool IsTerminated() const noexcept
終了判定
Definition mgl_text_stream.h:69
文字列の参照のみを行うファイルパスクラス
MGL STLのメモリ関連の代替
文字クラス
MGL テキスト関連各種宣言
Encoding
テキストのエンコードタイプ
Definition mgl_text_defs.h:20