mFrame
載入中...
搜尋中...
無符合項目
Scanner.h
1
7#ifndef MFRAME_0D9BA3BA_2E87_41FB_A948_02CAC4832E3B
8#define MFRAME_0D9BA3BA_2E87_41FB_A948_02CAC4832E3B
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15
16//----------------------------------------------------------------------------------------
17#include "./../io/ByteBuffer.h"
18#include "./../io/SimpleWriter.h"
19#include "./../lang/Markable.h"
20#include "./../util/LineReader.h"
21
22/* ***************************************************************************************
23 * Namespace
24 */
25namespace ufm::util {
26 class Scanner;
27} // namespace ufm::util
28
29/* ***************************************************************************************
30 * Class/Interface/Struct/Enum
31 */
32
60 public ufm::lang::Markable {
61 /* *************************************************************************************
62 * Variable
63 */
64 protected:
65 int vInsert;
66 int vMark;
67
68 /* *************************************************************************************
69 * Abstract Method
70 */
71
72 /* *************************************************************************************
73 * Construct Method
74 */
75 public:
84 Scanner(ufm::lang::Memory buffer) noexcept;
85
94 inline Scanner(int bufferSize = 128) : Scanner(ufm::lang::Memory(bufferSize)) {
95 return;
96 }
97
106 inline Scanner(Scanner&& other) noexcept
107 : LineReader(static_cast<LineReader&&>(other)),
108 vInsert(other.vInsert),
109 vMark(other.vMark) {
110 return;
111 }
112
119 virtual ~Scanner(void) override;
120
121 /* *************************************************************************************
122 * Operator Method
123 */
124
125 /* *************************************************************************************
126 * Override Method - ufm::lang::Appendable
127 */
128 public:
134 virtual int remaining(void) const override;
135
142 virtual int putByte(const char data) override;
143
152 virtual int put(ufm::lang::Readable& readable) override;
153
163 virtual int put(const void* pointer, int length) override;
164
165 /* *************************************************************************************
166 * Override Method - ufm::lang::Markable
167 */
168 public:
178 virtual void mark(void) override;
179
190 virtual void reset(void) override;
191
192 /* *************************************************************************************
193 * Public Method
194 */
195 public:
209 void compact(void);
210
217 void clear(void);
218
228 int setCursor(int insert);
229
238 inline int getCursor(void) {
239 return this->vInsert;
240 }
241
252 inline bool cursorRight(void) {
253 int target = this->vInsert - 1;
254 return (target == this->setCursor(target));
255 }
256
267 inline bool cursorLeft(void) {
268 int target = this->vInsert + 1;
269 return (target == this->setCursor(target));
270 }
271
282 bool backspace(void);
283
293 bool deleteChar(void);
294
295 /* *************************************************************************************
296 * Protected Method
297 */
298
299 /* *************************************************************************************
300 * Private Method
301 */
302
303 /* *************************************************************************************
304 * Static Variable
305 */
306
307 /* *************************************************************************************
308 * Static Method
309 */
310};
311
312/* ***************************************************************************************
313 * End of file
314 */
315
316#endif /* MFRAME_0D9BA3BA_2E87_41FB_A948_02CAC4832E3B */
存儲資料的類別,提供動態記憶體管理功能。
Definition Memory.h:44
行資料讀取器,提供從緩衝區解析字串、數值、布林等多種型態的資料。
Definition LineReader.h:58
LineReader(ufm::lang::Memory buffer) noexcept
使用現有緩衝區構造 LineReader 物件
高階緩衝區資料解析器,支援多型態資料讀取、標記、插入與迭代。
Definition Scanner.h:60
int setCursor(int insert)
設定下次寫入資料的插入位置。
Scanner(ufm::lang::Memory buffer) noexcept
使用現有緩衝區構造 Scanner 物件。
bool deleteChar(void)
刪除當前游標位置的字元。
virtual void mark(void) override
設定流標記位置。
bool cursorRight(void)
將游標向右移動一個位置。
Definition Scanner.h:252
Scanner(Scanner &&other) noexcept
移動建構子。
Definition Scanner.h:106
int vInsert
下次插入資料的緩衝區索引位置
Definition Scanner.h:65
bool backspace(void)
回退指定字元數。
bool cursorLeft(void)
將游標向左移動一個位置。
Definition Scanner.h:267
Scanner(int bufferSize=128)
使用指定緩衝區大小構造 Scanner 物件。
Definition Scanner.h:94
virtual void reset(void) override
重置流位置至上次標記點。
virtual int put(ufm::lang::Readable &readable) override
從 Readable 物件附加資料至緩衝區
virtual int remaining(void) const override
取得緩衝區剩餘空閒字節數。
virtual int put(const void *pointer, int length) override
從記憶體指標附加資料至緩衝區
virtual ~Scanner(void) override
解構子,釋放資源。
void compact(void)
將未讀取資料移至緩衝區開頭,釋放已消耗空間。
virtual int putByte(const char data) override
輸入單一字節至緩衝區
void clear(void)
清除 Scanner 緩衝區並重置狀態。
int getCursor(void)
取得目前的插入位置。
Definition Scanner.h:238
int vMark
標記位置,用於重置操作
Definition Scanner.h:66
Definition Iterable.h:28
資料附加介面 (Appendable)
Definition Appendable.h:43
[Interface] 定義可標記流介面
Definition Markable.h:40
[Interface] 定義資料讀取介面
Definition Readable.h:46