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