mFrame
載入中...
搜尋中...
無符合項目
Terminal.h
1
7#ifndef MFRAME_7922BF1A_6AEA_40C3_9E63_4E4FFEA751DC
8#define MFRAME_7922BF1A_6AEA_40C3_9E63_4E4FFEA751DC
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15#include "./../io/PrintStream.h"
16#include "./../lang/Object.h"
17#include "./../lang/Updatable.h"
18#include "./../term/TerminalControl.h"
19#include "./../term/TerminalIndex.h"
20#include "./../term/TerminalListener.h"
21#include "./../util/Console.h"
22#include "./../util/ElapsedTimer.h"
23#include "./../util/PArraySet.h"
24#include "./../util/Scanner.h"
25
26//----------------------------------------------------------------------------------------
27
28/* ***************************************************************************************
29 * Namespace
30 */
31namespace ufm::term {
32 class Terminal;
33} // namespace ufm::util
34
35/* ***************************************************************************************
36 * Class/Interface/Struct/Enum
37 */
43
44 /* *************************************************************************************
45 * Variable
46 */
47 private:
48 ufm::io::PrintStream& vPrintStream;
49 ufm::util::Console vConsole;
50 ufm::util::Scanner vScanner;
52
54
55 const char* vHostName;
56 bool vPasswd;
57
58 /* *************************************************************************************
59 * Abstract Method
60 */
61
62 /* *************************************************************************************
63 * Construct Method
64 */
65 public:
77 ufm::lang::Memory indexSetBuffer);
78
84 virtual ~Terminal(void) override;
85
86 /* *************************************************************************************
87 * Operator Method
88 */
89 public:
97 inline operator ufm::lang::Readable&(void) {
98 return this->vConsole;
99 }
100
108 inline operator ufm::io::PrintStream&(void) {
109 return this->vPrintStream;
110 }
111
119 inline operator ufm::util::Scanner&(void) {
120 return this->vScanner;
121 }
122
123 /* *************************************************************************************
124 * Override - ufm::term::TerminalControl
125 */
126 public:
143 ufm::util::Console::Event* consoleEvent = nullptr) override;
144
153 virtual ufm::lang::Readable& in(void) override;
154
163 virtual ufm::io::PrintStream& out(void) override;
164
173 virtual const char* getHostName(void) const override;
174
183 virtual void setHostName(const char* hostName) override;
184
194 virtual bool isPasswd(void) const override;
195
205 virtual void setPasswd(bool passwd) override;
206
216 virtual void refreshLine(bool nextLine = true) override;
217 /* *************************************************************************************
218 * Override - ufm::lang::Updatable
219 */
220 public:
228 virtual void update(void) override;
229
230 /* *************************************************************************************
231 * Override - ufm::util::Console::Event
232 */
233 public:
240 virtual void onControlKey(ufm::util::Console::KeyControl key, bool alt) override;
241
248 virtual void onFunctionKey(ufm::util::Console::KeyFunction key, bool alt) override;
249
255 virtual void onKey(char key, bool alt) override;
256
257 /* *************************************************************************************
258 * Override - ufm::lang::Appendable
259 */
260 public:
266 virtual int remaining(void) const override;
267
274 virtual int putByte(const char data) override;
275
284 virtual int put(ufm::lang::Readable& readable) override;
285
295 virtual int put(const void* pointer, int length) override;
296
297 /* *************************************************************************************
298 * Public Method
299 */
300 public:
309 return this->vConsole;
310 }
311
320 return this->vPrintStream;
321 }
322
331 return this->vScanner;
332 }
333
342 return this->vIndex;
343 }
344
345 /* *************************************************************************************
346 * Protected Method
347 */
348
349 /* *************************************************************************************
350 * Private Method
351 */
352
353 /* *************************************************************************************
354 * Static Variable
355 */
356
357 /* *************************************************************************************
358 * Static Method
359 */
360};
361
362/* ***************************************************************************************
363 * End of file
364 */
365
366#endif /* MFRAME_7922BF1A_6AEA_40C3_9E63_4E4FFEA751DC */
格式化輸出串流
Definition PrintStream.h:43
存儲資料的類別,提供動態記憶體管理功能。
Definition Memory.h:44
物件基底類別
Definition Object.h:63
Definition Terminal.h:42
virtual bool isPasswd(void) const override
檢查是否啟用密碼輸入模式
virtual void pause(ufm::func::Predicate< ufm::term::TerminalControl > *test, ufm::util::Console::Event *consoleEvent=nullptr) override
暫時暫停終端機控制處理,直到指定條件滿足
virtual void setHostName(const char *hostName) override
設定終端機主機名稱
ufm::lang::Readable & readable(void)
取得資料讀取介面
Definition Terminal.h:308
virtual int put(const void *pointer, int length) override
從記憶體指標附加資料至緩衝區
virtual ~Terminal(void) override
解構終端機物件
virtual ufm::lang::Readable & in(void) override
取得終端機輸入資料流
ufm::io::PrintStream & printStream(void)
取得列印輸出串流
Definition Terminal.h:319
Terminal(ufm::lang::Readable &readable, ufm::io::PrintStream &printStream, ufm::util::Scanner &&scanner, ufm::lang::Memory indexSetBuffer)
建構終端機物件
virtual void onKey(char key, bool alt) override
處理普通鍵事件
virtual int putByte(const char data) override
輸入單一字節至緩衝區
virtual void onFunctionKey(ufm::util::Console::KeyFunction key, bool alt) override
處理功能鍵事件
virtual void refreshLine(bool nextLine=true) override
換到下一行並重新刷新主機名稱與緩衝區資料
virtual int remaining(void) const override
取得緩衝區剩餘空閒字節數。
virtual void onControlKey(ufm::util::Console::KeyControl key, bool alt) override
處理鍵盤按鍵事件
virtual const char * getHostName(void) const override
取得終端機主機名稱
virtual int put(ufm::lang::Readable &readable) override
從 Readable 物件附加資料至緩衝區
virtual void update(void) override
物件狀態更新方法
ufm::util::Scanner & scanner(void)
取得輸入解析掃描器
Definition Terminal.h:330
ufm::term::TerminalIndex & index(void)
取得終端機索引
Definition Terminal.h:341
virtual ufm::io::PrintStream & out(void) override
取得終端機輸出列印資料流
virtual void setPasswd(bool passwd) override
設定密碼輸入模式
終端機命令索引管理類別,提供命令註冊和查找功能
Definition TerminalIndex.h:56
終端機輸入解析器
Definition Console.h:41
KeyControl
控制鍵列舉
Definition Console.h:159
KeyFunction
功能鍵列舉
Definition Console.h:199
高階緩衝區資料解析器,支援多型態資料讀取、標記、插入與迭代。
Definition Scanner.h:60
Definition Terminal.h:31
針對類型 T 的物件進行條件測試的 Predicate 介面。
Definition Predicate.h:39
資料附加介面 (Appendable)
Definition Appendable.h:43
[Interface] 定義資料讀取介面
Definition Readable.h:46
[Interface] 定義可更新的物件介面
Definition Updatable.h:38
終端機控制介面
Definition TerminalControl.h:57
鍵盤事件處理介面
Definition Console.h:230