
D front-end changes: - Import dmd v2.101.0-beta.1. - Add predefined version `D_Optimized' when compiling with `-O'. - Shortened method syntax (DIP1043) is now enabled by default. - Array literals assigned to `scope' array variables are now allocated on the stack. - Implement `@system' variables (DIP1035), available behind the preview feature flag `-fpreview=systemvariables'. D runtime changes: - Import druntime v2.101.0-beta.1. Phobos changes: - Import phobos v2.101.0-beta.1. - Added `std.typecons.SafeRefCounted', that can be used in `@safe' code with `-fpreview=dip1000'. gcc/d/ChangeLog: * d-attribs.cc (apply_user_attributes): Update for new front-end interface. * d-builtins.cc (d_init_versions): Predefine `D_Optimized' with compiling with optimizations enabled. * d-lang.cc (d_handle_option): Update for new front-end interface. Handle new option `-fpreview=systemvariables'. * dmd/MERGE: Merge upstream dmd e4f8919591. * dmd/VERSION: Bump version to v2.101.0-beta.1. * expr.cc (ExprVisitor::visit (AssignExp *)): Treat construction of static arrays from a call expression as a simple assignment. (ExprVisitor::visit (ArrayLiteralExp *)): Handle array literals with `scope' storage. * gdc.texi: Update documentation of `-fpreview=' options. * lang.opt (fpreview=shortenedmethods): Remove. (fpreview=systemvariables): New option. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime e4f8919591. * src/MERGE: Merge upstream phobos 3ad507b51. gcc/testsuite/ChangeLog: * gdc.dg/simd19630.d: Move tests with errors to ... * gdc.dg/simd19630b.d: ... here. New test. * gdc.dg/simd19630c.d: New test. * gdc.dg/simd_ctfe.d: Removed. * gdc.dg/simd18867.d: New test. * gdc.dg/simd19788.d: New test. * gdc.dg/simd21469.d: New test. * gdc.dg/simd21672.d: New test. * gdc.dg/simd23077.d: New test. * gdc.dg/simd23084.d: New test. * gdc.dg/simd23085.d: New test. * gdc.dg/torture/simd19632.d: New test. * gdc.dg/torture/simd20041.d: New test. * gdc.dg/torture/simd21673.d: New test. * gdc.dg/torture/simd21676.d: New test. * gdc.dg/torture/simd22438.d: New test. * gdc.dg/torture/simd23009.d: New test. * gdc.dg/torture/simd23077.d: New test. * gdc.dg/torture/simd8.d: New test. * gdc.dg/torture/simd9.d: New test. * gdc.dg/torture/simd_prefetch.d: New test.
316 lines
9.6 KiB
D
316 lines
9.6 KiB
D
/**
|
|
* Windows API header module
|
|
*
|
|
* Translated from MinGW Windows headers
|
|
*
|
|
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
|
|
* Source: $(DRUNTIMESRC core/sys/windows/_wincon.d)
|
|
*/
|
|
module core.sys.windows.wincon;
|
|
version (Windows):
|
|
|
|
version (ANSI) {} else version = Unicode;
|
|
pragma(lib, "kernel32");
|
|
|
|
import core.sys.windows.w32api, core.sys.windows.windef;
|
|
|
|
// FIXME: clean up Windows version support
|
|
|
|
enum {
|
|
FOREGROUND_BLUE = 0x0001,
|
|
FOREGROUND_GREEN = 0x0002,
|
|
FOREGROUND_RED = 0x0004,
|
|
FOREGROUND_INTENSITY = 0x0008,
|
|
BACKGROUND_BLUE = 0x0010,
|
|
BACKGROUND_GREEN = 0x0020,
|
|
BACKGROUND_RED = 0x0040,
|
|
BACKGROUND_INTENSITY = 0x0080,
|
|
|
|
COMMON_LVB_LEADING_BYTE = 0x0100,
|
|
COMMON_LVB_TRAILING_BYTE = 0x0200,
|
|
COMMON_LVB_GRID_HORIZONTAL = 0x0400,
|
|
COMMON_LVB_GRID_LVERTICAL = 0x0800,
|
|
COMMON_LVB_GRID_RVERTICAL = 0x1000,
|
|
COMMON_LVB_REVERSE_VIDEO = 0x4000,
|
|
COMMON_LVB_UNDERSCORE = 0x8000,
|
|
|
|
COMMON_LVB_SBCSDBCS = 0x0300,
|
|
}
|
|
|
|
static if (_WIN32_WINNT >= 0x501) {
|
|
enum {
|
|
CONSOLE_FULLSCREEN_MODE = 1,
|
|
CONSOLE_WINDOWED_MODE = 0
|
|
}
|
|
}
|
|
|
|
enum {
|
|
CTRL_C_EVENT = 0,
|
|
CTRL_BREAK_EVENT = 1,
|
|
CTRL_CLOSE_EVENT = 2,
|
|
CTRL_LOGOFF_EVENT = 5,
|
|
CTRL_SHUTDOWN_EVENT = 6
|
|
}
|
|
|
|
enum {
|
|
ENABLE_PROCESSED_INPUT = 1,
|
|
ENABLE_LINE_INPUT = 2,
|
|
ENABLE_ECHO_INPUT = 4,
|
|
ENABLE_WINDOW_INPUT = 8,
|
|
ENABLE_MOUSE_INPUT = 16,
|
|
ENABLE_INSERT_MODE = 32,
|
|
ENABLE_QUICK_EDIT_MODE = 64,
|
|
ENABLE_EXTENDED_FLAGS = 128,
|
|
ENABLE_AUTO_POSITION = 256,
|
|
ENABLE_VIRTUAL_TERMINAL_INPUT = 512
|
|
}
|
|
|
|
enum {
|
|
ENABLE_PROCESSED_OUTPUT = 1,
|
|
ENABLE_WRAP_AT_EOL_OUTPUT = 2,
|
|
ENABLE_VIRTUAL_TERMINAL_PROCESSING = 4,
|
|
DISABLE_NEWLINE_AUTO_RETURN = 8,
|
|
ENABLE_LVB_GRID_WORLDWIDE = 16
|
|
}
|
|
|
|
enum {
|
|
KEY_EVENT = 1,
|
|
MOUSE_EVENT = 2,
|
|
WINDOW_BUFFER_SIZE_EVENT = 4,
|
|
MENU_EVENT = 8,
|
|
FOCUS_EVENT = 16
|
|
}
|
|
enum {
|
|
RIGHT_ALT_PRESSED = 1,
|
|
LEFT_ALT_PRESSED = 2,
|
|
RIGHT_CTRL_PRESSED = 4,
|
|
LEFT_CTRL_PRESSED = 8,
|
|
SHIFT_PRESSED = 16,
|
|
NUMLOCK_ON = 32,
|
|
SCROLLLOCK_ON = 64,
|
|
CAPSLOCK_ON = 128,
|
|
ENHANCED_KEY = 256
|
|
}
|
|
enum {
|
|
FROM_LEFT_1ST_BUTTON_PRESSED = 1,
|
|
RIGHTMOST_BUTTON_PRESSED = 2,
|
|
FROM_LEFT_2ND_BUTTON_PRESSED = 4,
|
|
FROM_LEFT_3RD_BUTTON_PRESSED = 8,
|
|
FROM_LEFT_4TH_BUTTON_PRESSED = 16
|
|
}
|
|
|
|
enum {
|
|
MOUSE_MOVED = 1,
|
|
DOUBLE_CLICK = 2,
|
|
MOUSE_WHEELED = 4
|
|
}
|
|
|
|
struct CHAR_INFO {
|
|
union _Char {
|
|
WCHAR UnicodeChar = 0;
|
|
CHAR AsciiChar;
|
|
}
|
|
union {
|
|
_Char Char;
|
|
WCHAR UnicodeChar;
|
|
CHAR AsciiChar;
|
|
}
|
|
WORD Attributes;
|
|
}
|
|
alias CHAR_INFO* PCHAR_INFO;
|
|
|
|
struct SMALL_RECT {
|
|
SHORT Left;
|
|
SHORT Top;
|
|
SHORT Right;
|
|
SHORT Bottom;
|
|
}
|
|
alias SMALL_RECT* PSMALL_RECT;
|
|
|
|
struct CONSOLE_CURSOR_INFO {
|
|
DWORD dwSize;
|
|
BOOL bVisible;
|
|
}
|
|
alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO;
|
|
|
|
struct COORD {
|
|
SHORT X;
|
|
SHORT Y;
|
|
}
|
|
alias COORD* PCOORD;
|
|
|
|
struct CONSOLE_FONT_INFO {
|
|
DWORD nFont;
|
|
COORD dwFontSize;
|
|
}
|
|
alias CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO;
|
|
|
|
struct CONSOLE_SCREEN_BUFFER_INFO {
|
|
COORD dwSize;
|
|
COORD dwCursorPosition;
|
|
WORD wAttributes;
|
|
SMALL_RECT srWindow;
|
|
COORD dwMaximumWindowSize;
|
|
}
|
|
alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO;
|
|
|
|
alias extern(Windows) BOOL function(DWORD) nothrow PHANDLER_ROUTINE;
|
|
|
|
struct KEY_EVENT_RECORD {
|
|
BOOL bKeyDown;
|
|
WORD wRepeatCount;
|
|
WORD wVirtualKeyCode;
|
|
WORD wVirtualScanCode;
|
|
union _uChar {
|
|
WCHAR UnicodeChar = 0;
|
|
CHAR AsciiChar;
|
|
}
|
|
union {
|
|
WCHAR UnicodeChar = 0;
|
|
CHAR AsciiChar;
|
|
_uChar uChar;
|
|
}
|
|
DWORD dwControlKeyState;
|
|
}
|
|
alias KEY_EVENT_RECORD* PKEY_EVENT_RECORD;
|
|
|
|
struct MOUSE_EVENT_RECORD {
|
|
COORD dwMousePosition;
|
|
DWORD dwButtonState;
|
|
DWORD dwControlKeyState;
|
|
DWORD dwEventFlags;
|
|
}
|
|
alias MOUSE_EVENT_RECORD* PMOUSE_EVENT_RECORD;
|
|
|
|
struct WINDOW_BUFFER_SIZE_RECORD {
|
|
COORD dwSize;
|
|
}
|
|
alias WINDOW_BUFFER_SIZE_RECORD* PWINDOW_BUFFER_SIZE_RECORD;
|
|
|
|
struct MENU_EVENT_RECORD {
|
|
UINT dwCommandId;
|
|
}
|
|
alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD;
|
|
|
|
struct FOCUS_EVENT_RECORD {
|
|
BOOL bSetFocus;
|
|
}
|
|
alias FOCUS_EVENT_RECORD* PFOCUS_EVENT_RECORD;
|
|
|
|
struct INPUT_RECORD {
|
|
WORD EventType;
|
|
union _Event {
|
|
KEY_EVENT_RECORD KeyEvent;
|
|
MOUSE_EVENT_RECORD MouseEvent;
|
|
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
|
MENU_EVENT_RECORD MenuEvent;
|
|
FOCUS_EVENT_RECORD FocusEvent;
|
|
}
|
|
union {
|
|
KEY_EVENT_RECORD KeyEvent;
|
|
MOUSE_EVENT_RECORD MouseEvent;
|
|
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
|
MENU_EVENT_RECORD MenuEvent;
|
|
FOCUS_EVENT_RECORD FocusEvent;
|
|
_Event Event;
|
|
}
|
|
}
|
|
alias INPUT_RECORD* PINPUT_RECORD;
|
|
|
|
extern (Windows) nothrow @nogc:
|
|
|
|
BOOL AllocConsole();
|
|
HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, const(SECURITY_ATTRIBUTES)*, DWORD, LPVOID);
|
|
BOOL FillConsoleOutputAttribute(HANDLE, WORD, DWORD, COORD, PDWORD);
|
|
BOOL FillConsoleOutputCharacterA(HANDLE, CHAR, DWORD, COORD, PDWORD);
|
|
BOOL FillConsoleOutputCharacterW(HANDLE, WCHAR, DWORD, COORD, PDWORD);
|
|
BOOL FlushConsoleInputBuffer(HANDLE);
|
|
BOOL FreeConsole();
|
|
BOOL GenerateConsoleCtrlEvent(DWORD, DWORD);
|
|
UINT GetConsoleCP();
|
|
BOOL GetConsoleCursorInfo(HANDLE, PCONSOLE_CURSOR_INFO);
|
|
BOOL GetConsoleMode(HANDLE,PDWORD);
|
|
UINT GetConsoleOutputCP();
|
|
BOOL GetConsoleScreenBufferInfo(HANDLE, PCONSOLE_SCREEN_BUFFER_INFO);
|
|
DWORD GetConsoleTitleA(LPSTR, DWORD);
|
|
DWORD GetConsoleTitleW(LPWSTR, DWORD);
|
|
COORD GetLargestConsoleWindowSize(HANDLE);
|
|
BOOL GetNumberOfConsoleInputEvents(HANDLE, PDWORD);
|
|
BOOL GetNumberOfConsoleMouseButtons(PDWORD);
|
|
BOOL PeekConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD);
|
|
BOOL PeekConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD);
|
|
BOOL ReadConsoleA(HANDLE, PVOID, DWORD, PDWORD, PVOID);
|
|
BOOL ReadConsoleW(HANDLE, PVOID, DWORD, PDWORD, PVOID);
|
|
BOOL ReadConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD);
|
|
BOOL ReadConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD);
|
|
BOOL ReadConsoleOutputAttribute(HANDLE, LPWORD, DWORD, COORD, LPDWORD);
|
|
BOOL ReadConsoleOutputCharacterA(HANDLE, LPSTR, DWORD, COORD, PDWORD);
|
|
BOOL ReadConsoleOutputCharacterW(HANDLE, LPWSTR, DWORD, COORD, PDWORD);
|
|
BOOL ReadConsoleOutputA(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT);
|
|
BOOL ReadConsoleOutputW(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT);
|
|
BOOL ScrollConsoleScreenBufferA(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*);
|
|
BOOL ScrollConsoleScreenBufferW(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*);
|
|
BOOL SetConsoleActiveScreenBuffer(HANDLE);
|
|
BOOL SetConsoleCP(UINT);
|
|
BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE, BOOL);
|
|
BOOL SetConsoleCursorInfo(HANDLE, const(CONSOLE_CURSOR_INFO)*);
|
|
BOOL SetConsoleCursorPosition(HANDLE, COORD);
|
|
|
|
|
|
static if (_WIN32_WINNT >= 0x500) {
|
|
BOOL GetConsoleDisplayMode(LPDWORD);
|
|
HWND GetConsoleWindow();
|
|
}
|
|
|
|
static if (_WIN32_WINNT >= 0x501) {
|
|
BOOL AttachConsole(DWORD);
|
|
BOOL SetConsoleDisplayMode(HANDLE, DWORD, PCOORD);
|
|
enum DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1;
|
|
}
|
|
|
|
BOOL SetConsoleMode(HANDLE, DWORD);
|
|
BOOL SetConsoleOutputCP(UINT);
|
|
BOOL SetConsoleScreenBufferSize(HANDLE, COORD);
|
|
BOOL SetConsoleTextAttribute(HANDLE, WORD);
|
|
BOOL SetConsoleTitleA(LPCSTR);
|
|
BOOL SetConsoleTitleW(LPCWSTR);
|
|
BOOL SetConsoleWindowInfo(HANDLE, BOOL, const(SMALL_RECT)*);
|
|
BOOL WriteConsoleA(HANDLE, PCVOID, DWORD, PDWORD, PVOID);
|
|
BOOL WriteConsoleW(HANDLE, PCVOID, DWORD, PDWORD, PVOID);
|
|
BOOL WriteConsoleInputA(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD);
|
|
BOOL WriteConsoleInputW(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD);
|
|
BOOL WriteConsoleOutputA(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT);
|
|
BOOL WriteConsoleOutputW(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT);
|
|
BOOL WriteConsoleOutputAttribute(HANDLE, const(WORD)*, DWORD, COORD, PDWORD);
|
|
BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD);
|
|
BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD);
|
|
|
|
version (Unicode) {
|
|
alias FillConsoleOutputCharacterW FillConsoleOutputCharacter;
|
|
alias GetConsoleTitleW GetConsoleTitle;
|
|
alias PeekConsoleInputW PeekConsoleInput;
|
|
alias ReadConsoleW ReadConsole;
|
|
alias ReadConsoleInputW ReadConsoleInput;
|
|
alias ReadConsoleOutputW ReadConsoleOutput;
|
|
alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter;
|
|
alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer;
|
|
alias SetConsoleTitleW SetConsoleTitle;
|
|
alias WriteConsoleW WriteConsole;
|
|
alias WriteConsoleInputW WriteConsoleInput;
|
|
alias WriteConsoleOutputW WriteConsoleOutput;
|
|
alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter;
|
|
} else {
|
|
alias FillConsoleOutputCharacterA FillConsoleOutputCharacter;
|
|
alias GetConsoleTitleA GetConsoleTitle;
|
|
alias PeekConsoleInputA PeekConsoleInput;
|
|
alias ReadConsoleA ReadConsole;
|
|
alias ReadConsoleInputA ReadConsoleInput;
|
|
alias ReadConsoleOutputA ReadConsoleOutput;
|
|
alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter;
|
|
alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer;
|
|
alias SetConsoleTitleA SetConsoleTitle;
|
|
alias WriteConsoleA WriteConsole;
|
|
alias WriteConsoleInputA WriteConsoleInput;
|
|
alias WriteConsoleOutputA WriteConsoleOutput;
|
|
alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter;
|
|
}
|