xref: /aosp_15_r20/external/lzma/CPP/Windows/Console.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1 // Windows/Console.h
2 
3 #ifndef ZIP7_INC_WINDOWS_CONSOLE_H
4 #define ZIP7_INC_WINDOWS_CONSOLE_H
5 
6 #include "Defs.h"
7 
8 namespace NWindows {
9 namespace NConsole {
10 
11 class CBase
12 {
13 protected:
14   HANDLE m_Object;
15 public:
Attach(HANDLE handle)16   void Attach(HANDLE handle) { m_Object = handle; }
GetMode(DWORD & mode)17   bool GetMode(DWORD &mode)
18     { return BOOLToBool(::GetConsoleMode(m_Object, &mode)); }
SetMode(DWORD mode)19   bool SetMode(DWORD mode)
20     { return BOOLToBool(::SetConsoleMode(m_Object, mode)); }
21 };
22 
23 class CIn: public CBase
24 {
25 public:
PeekEvents(PINPUT_RECORD events,DWORD numEvents,DWORD & numEventsRead)26   bool PeekEvents(PINPUT_RECORD events, DWORD numEvents, DWORD &numEventsRead)
27     {  return BOOLToBool(::PeekConsoleInput(m_Object, events, numEvents, &numEventsRead)); }
PeekEvent(INPUT_RECORD & event,DWORD & numEventsRead)28   bool PeekEvent(INPUT_RECORD &event, DWORD &numEventsRead)
29     {  return PeekEvents(&event, 1, numEventsRead); }
ReadEvents(PINPUT_RECORD events,DWORD numEvents,DWORD & numEventsRead)30   bool ReadEvents(PINPUT_RECORD events, DWORD numEvents, DWORD &numEventsRead)
31     {  return BOOLToBool(::ReadConsoleInput(m_Object, events, numEvents, &numEventsRead)); }
ReadEvent(INPUT_RECORD & event,DWORD & numEventsRead)32   bool ReadEvent(INPUT_RECORD &event, DWORD &numEventsRead)
33     {  return ReadEvents(&event, 1, numEventsRead); }
GetNumberOfEvents(DWORD & numEvents)34   bool GetNumberOfEvents(DWORD &numEvents)
35     {  return BOOLToBool(::GetNumberOfConsoleInputEvents(m_Object, &numEvents)); }
36 
WriteEvents(const INPUT_RECORD * events,DWORD numEvents,DWORD & numEventsWritten)37   bool WriteEvents(const INPUT_RECORD *events, DWORD numEvents, DWORD &numEventsWritten)
38     {  return BOOLToBool(::WriteConsoleInput(m_Object, events, numEvents, &numEventsWritten)); }
WriteEvent(const INPUT_RECORD & event,DWORD & numEventsWritten)39   bool WriteEvent(const INPUT_RECORD &event, DWORD &numEventsWritten)
40     {  return WriteEvents(&event, 1, numEventsWritten); }
41 
Read(LPVOID buffer,DWORD numChars,DWORD & numCharsRead)42   bool Read(LPVOID buffer, DWORD numChars, DWORD &numCharsRead)
43     {  return BOOLToBool(::ReadConsole(m_Object, buffer, numChars, &numCharsRead, NULL)); }
44 
Flush()45   bool Flush()
46     {  return BOOLToBool(::FlushConsoleInputBuffer(m_Object)); }
47 
48 };
49 
50 }}
51 
52 #endif
53