mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-24 10:24:35 +00:00
Fix for mingw (#1462)
This commit is contained in:
parent
503db28849
commit
d2c59b8ba4
@ -578,6 +578,37 @@ void console_set_color(console_state & con_st, console_color_t color) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char32_t getchar32() {
|
char32_t getchar32() {
|
||||||
|
#if defined(_WIN32)
|
||||||
|
HANDLE hConsole = GetStdHandle(STD_INPUT_HANDLE);
|
||||||
|
wchar_t high_surrogate = 0;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
INPUT_RECORD record;
|
||||||
|
DWORD count;
|
||||||
|
if (!ReadConsoleInputW(hConsole, &record, 1, &count) || count == 0) {
|
||||||
|
return WEOF;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (record.EventType == KEY_EVENT && record.Event.KeyEvent.bKeyDown) {
|
||||||
|
wchar_t wc = record.Event.KeyEvent.uChar.UnicodeChar;
|
||||||
|
if (wc == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((wc >= 0xD800) && (wc <= 0xDBFF)) { // Check if wc is a high surrogate
|
||||||
|
high_surrogate = wc;
|
||||||
|
continue;
|
||||||
|
} else if ((wc >= 0xDC00) && (wc <= 0xDFFF)) { // Check if wc is a low surrogate
|
||||||
|
if (high_surrogate != 0) { // Check if we have a high surrogate
|
||||||
|
return ((high_surrogate - 0xD800) << 10) + (wc - 0xDC00) + 0x10000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
high_surrogate = 0; // Reset the high surrogate
|
||||||
|
return static_cast<char32_t>(wc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
wchar_t wc = getwchar();
|
wchar_t wc = getwchar();
|
||||||
if (static_cast<wint_t>(wc) == WEOF) {
|
if (static_cast<wint_t>(wc) == WEOF) {
|
||||||
return WEOF;
|
return WEOF;
|
||||||
@ -596,6 +627,7 @@ char32_t getchar32() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
return static_cast<char32_t>(wc);
|
return static_cast<char32_t>(wc);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void pop_cursor(console_state & con_st) {
|
void pop_cursor(console_state & con_st) {
|
||||||
|
Loading…
Reference in New Issue
Block a user