Skip to content

Commit b228e17

Browse files
committed
WinSDK: use computed properties more aggressively
Rather than stored properties for constants that are not imported via the clang importer, use computed properties. Although this breaks ABI, there is no guarantee of ABI stability on Windows. The remaining strings are left as stored properties as they may be interned by the system.
1 parent 949b0c0 commit b228e17

File tree

1 file changed

+102
-43
lines changed

1 file changed

+102
-43
lines changed

stdlib/public/Windows/WinSDK.swift

Lines changed: 102 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -13,47 +13,80 @@
1313
@_exported import WinSDK // Clang module
1414

1515
// WinBase.h
16-
public let HANDLE_FLAG_INHERIT: DWORD = 0x00000001
16+
public var HANDLE_FLAG_INHERIT: DWORD {
17+
0x00000001
18+
}
1719

1820
// WinBase.h
19-
public let STARTF_USESTDHANDLES: DWORD = 0x00000100
21+
public var STARTF_USESTDHANDLES: DWORD {
22+
0x00000100
23+
}
2024

2125
// WinBase.h
22-
public let INFINITE: DWORD = DWORD(bitPattern: -1)
26+
public var INFINITE: DWORD {
27+
DWORD(bitPattern: -1)
28+
}
2329

2430
// WinBase.h
25-
public let WAIT_OBJECT_0: DWORD = 0
31+
public var WAIT_OBJECT_0: DWORD {
32+
0
33+
}
2634

2735
// WinBase.h
28-
public let STD_INPUT_HANDLE: DWORD = DWORD(bitPattern: -10)
29-
public let STD_OUTPUT_HANDLE: DWORD = DWORD(bitPattern: -11)
30-
public let STD_ERROR_HANDLE: DWORD = DWORD(bitPattern: -12)
36+
public var STD_INPUT_HANDLE: DWORD {
37+
DWORD(bitPattern: -10)
38+
}
39+
public var STD_OUTPUT_HANDLE: DWORD {
40+
DWORD(bitPattern: -11)
41+
}
42+
public var STD_ERROR_HANDLE: DWORD {
43+
DWORD(bitPattern: -12)
44+
}
3145

3246
// handleapi.h
33-
public let INVALID_HANDLE_VALUE: HANDLE = HANDLE(bitPattern: -1)!
47+
public var INVALID_HANDLE_VALUE: HANDLE {
48+
HANDLE(bitPattern: -1)!
49+
}
3450

3551
// shellapi.h
36-
public let FOF_NO_UI: FILEOP_FLAGS =
37-
FILEOP_FLAGS(FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR)
52+
public var FOF_NO_UI: FILEOP_FLAGS {
53+
FILEOP_FLAGS(FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR)
54+
}
3855

3956
// winioctl.h
40-
public let FSCTL_SET_REPARSE_POINT: DWORD = 0x900a4
41-
public let FSCTL_GET_REPARSE_POINT: DWORD = 0x900a8
42-
public let FSCTL_DELETE_REPARSE_POINT: DWORD = 0x900ac
57+
public var FSCTL_SET_REPARSE_POINT: DWORD {
58+
0x900a4
59+
}
60+
public var FSCTL_GET_REPARSE_POINT: DWORD {
61+
0x900a8
62+
}
63+
public var FSCTL_DELETE_REPARSE_POINT: DWORD {
64+
0x900ac
65+
}
4366

4467
// WinSock2.h
45-
public let INVALID_SOCKET: SOCKET = SOCKET(bitPattern: -1)
46-
public let FIONBIO: Int32 = Int32(bitPattern: 0x8004667e)
68+
public var INVALID_SOCKET: SOCKET {
69+
SOCKET(bitPattern: -1)
70+
}
71+
public var FIONBIO: Int32 {
72+
Int32(bitPattern: 0x8004667e)
73+
}
4774

4875
// WinUser.h
49-
public let CW_USEDEFAULT: Int32 = Int32(bitPattern: 2147483648)
50-
public let WS_OVERLAPPEDWINDOW: UINT =
51-
UINT(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
52-
public let WS_POPUPWINDOW: UINT =
53-
UINT(numericCast(WS_POPUP) | WS_BORDER | WS_SYSMENU)
76+
public var CW_USEDEFAULT: Int32 {
77+
Int32(bitPattern: 2147483648)
78+
}
79+
public var WS_OVERLAPPEDWINDOW: UINT {
80+
UINT(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
81+
}
82+
public var WS_POPUPWINDOW: UINT {
83+
UINT(numericCast(WS_POPUP) | WS_BORDER | WS_SYSMENU)
84+
}
5485

5586
// fileapi.h
56-
public let INVALID_FILE_ATTRIBUTES: DWORD = DWORD(bitPattern: -1)
87+
public var INVALID_FILE_ATTRIBUTES: DWORD {
88+
DWORD(bitPattern: -1)
89+
}
5790

5891
// CommCtrl.h
5992
public let WC_BUTTONW: [WCHAR] = Array<WCHAR>("Button".utf16)
@@ -76,32 +109,58 @@ public let TRACKBAR_CLASSW: [WCHAR] = Array<WCHAR>("msctls_trackbar32".utf16)
76109
public let UPDOWN_CLASSW: [WCHAR] = Array<WCHAR>("msctls_updown32".utf16)
77110

78111
// consoleapi.h
79-
public let PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE: DWORD_PTR = 0x00020016
112+
public var PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE: DWORD_PTR {
113+
0x00020016
114+
}
80115

81116
// windef.h
82-
public let DPI_AWARENESS_CONTEXT_UNAWARE: DPI_AWARENESS_CONTEXT =
83-
DPI_AWARENESS_CONTEXT(bitPattern: -1)!
84-
public let DPI_AWARENESS_CONTEXT_SYSTEM_AWARE: DPI_AWARENESS_CONTEXT =
85-
DPI_AWARENESS_CONTEXT(bitPattern: -2)!
86-
public let DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE: DPI_AWARENESS_CONTEXT =
87-
DPI_AWARENESS_CONTEXT(bitPattern: -3)!
88-
public let DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2: DPI_AWARENESS_CONTEXT =
89-
DPI_AWARENESS_CONTEXT(bitPattern: -4)!
90-
public let DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED: DPI_AWARENESS_CONTEXT =
91-
DPI_AWARENESS_CONTEXT(bitPattern: -5)!
117+
public var DPI_AWARENESS_CONTEXT_UNAWARE: DPI_AWARENESS_CONTEXT {
118+
DPI_AWARENESS_CONTEXT(bitPattern: -1)!
119+
}
120+
public var DPI_AWARENESS_CONTEXT_SYSTEM_AWARE: DPI_AWARENESS_CONTEXT {
121+
DPI_AWARENESS_CONTEXT(bitPattern: -2)!
122+
}
123+
public var DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE: DPI_AWARENESS_CONTEXT {
124+
DPI_AWARENESS_CONTEXT(bitPattern: -3)!
125+
}
126+
public var DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2: DPI_AWARENESS_CONTEXT {
127+
DPI_AWARENESS_CONTEXT(bitPattern: -4)!
128+
}
129+
public var DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED: DPI_AWARENESS_CONTEXT {
130+
DPI_AWARENESS_CONTEXT(bitPattern: -5)!
131+
}
92132

93133
// winreg.h
94-
public let HKEY_CLASSES_ROOT: HKEY = HKEY(bitPattern: UInt(0x80000000))!
95-
public let HKEY_CURRENT_USER: HKEY = HKEY(bitPattern: UInt(0x80000001))!
96-
public let HKEY_LOCAL_MACHINE: HKEY = HKEY(bitPattern: UInt(0x80000002))!
97-
public let HKEY_USERS: HKEY = HKEY(bitPattern: UInt(0x80000003))!
98-
public let HKEY_PERFORMANCE_DATA: HKEY = HKEY(bitPattern: UInt(0x80000004))!
99-
public let HKEY_PERFORMANCE_TEXT: HKEY = HKEY(bitPattern: UInt(0x80000050))!
100-
public let HKEY_PERFORMANCE_NLSTEXT: HKEY = HKEY(bitPattern: UInt(0x80000060))!
101-
public let HKEY_CURRENT_CONFIG: HKEY = HKEY(bitPattern: UInt(0x80000005))!
102-
public let HKEY_DYN_DATA: HKEY = HKEY(bitPattern: UInt(0x80000006))!
103-
public let HKEY_CURRENT_USER_LOCAL_SETTINGS: HKEY =
104-
HKEY(bitPattern: UInt(0x80000007))!
134+
public var HKEY_CLASSES_ROOT: HKEY {
135+
HKEY(bitPattern: UInt(0x80000000))!
136+
}
137+
public var HKEY_CURRENT_USER: HKEY {
138+
HKEY(bitPattern: UInt(0x80000001))!
139+
}
140+
public var HKEY_LOCAL_MACHINE: HKEY {
141+
HKEY(bitPattern: UInt(0x80000002))!
142+
}
143+
public var HKEY_USERS: HKEY {
144+
HKEY(bitPattern: UInt(0x80000003))!
145+
}
146+
public var HKEY_PERFORMANCE_DATA: HKEY {
147+
HKEY(bitPattern: UInt(0x80000004))!
148+
}
149+
public var HKEY_PERFORMANCE_TEXT: HKEY {
150+
HKEY(bitPattern: UInt(0x80000050))!
151+
}
152+
public var HKEY_PERFORMANCE_NLSTEXT: HKEY {
153+
HKEY(bitPattern: UInt(0x80000060))!
154+
}
155+
public var HKEY_CURRENT_CONFIG: HKEY {
156+
HKEY(bitPattern: UInt(0x80000005))!
157+
}
158+
public var HKEY_DYN_DATA: HKEY {
159+
HKEY(bitPattern: UInt(0x80000006))!
160+
}
161+
public var HKEY_CURRENT_USER_LOCAL_SETTINGS: HKEY {
162+
HKEY(bitPattern: UInt(0x80000007))!
163+
}
105164

106165
// Richedit.h
107166
public let MSFTEDIT_CLASS: [WCHAR] = Array<WCHAR>("RICHEDIT50W".utf16)

0 commit comments

Comments
 (0)