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
18
19namespace MGL::Text
20{
23{
24public:
25 /* ------------------------------------------------------------------------- */
29 /* ------------------------------------------------------------------------- */
30 constexpr TextStream() noexcept = default;
31
32 TextStream(const uint8_t *buffer, size_t size, Encoding encoding = Encoding::Auto, bool existBOM = false) noexcept;
33
34 void Set(const uint8_t *buffer, size_t size, Encoding encoding = Encoding::Auto, bool existBOM = false) noexcept;
35 bool Load(const File::PathView &filepath, Encoding encoding = Encoding::Auto) noexcept;
36
37 /* ------------------------------------------------------------------------- */
46 /* ------------------------------------------------------------------------- */
47 [[nodiscard]] Encoding GetEncoding() const noexcept
48 {
49 return _encoding;
50 }
51
52 Character Read() noexcept;
53
54 int Read(CharacterArray &array) noexcept;
55 int ReadLine(CharacterArray &array) noexcept;
56
57 void PrintInfo() const noexcept;
58
59
60 /* ------------------------------------------------------------------------- */
66 /* ------------------------------------------------------------------------- */
67 [[nodiscard]] constexpr bool IsTerminated() const noexcept
68 {
69 return (_offset >= _size);
70 }
71
72private:
73 Encoding CheckEncoding(bool &existBOM) const noexcept;
74 [[nodiscard]] size_t GetStartOffset() const noexcept;
75
76 Character ReadUTF8() noexcept;
77 Character ReadUTF16() noexcept;
78 Character ReadUTF32() noexcept;
79
80 const uint8_t *_buffer{nullptr};
81 size_t _size{0};
82 Encoding _encoding{Encoding::Auto};
83 size_t _offset{0};
84 bool _existBOM{false};
85 STL::unique_ptr<uint8_t[]> _loadBuffer{nullptr};
86};
87} // namespace MGL::Text
88
89
90#endif // INCGUARD_MGL_TEXT_STREAM_H_1538586799
91
92// 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:23
Encoding GetEncoding() const noexcept
エンコードタイプの取得
Definition mgl_text_stream.h:47
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:67
文字列の参照のみを行うファイルパスクラス
MGL STLのメモリ関連の代替
文字クラス
MGL テキスト関連各種宣言
Encoding
テキストのエンコードタイプ
Definition mgl_text_defs.h:20