]> gitweb.factorcode.org Git - factor.git/blob - library/windows/types.factor
a1ecfadcf0fa964567c2d8c2c4e4749eff5e075f
[factor.git] / library / windows / types.factor
1 ! Copyright (C) 2005, 2006 Doug Coleman.
2 ! See http://factor.sf.net/license.txt for BSD license.
3 USING: alien namespaces kernel words ;
4 IN: win32-api
5
6 ! http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_data_types.asp
7
8 SYMBOL: unicode f unicode set
9 : unicode-exec ( unicode-func ascii-func -- func )
10         unicode get [
11                 drop execute
12         ] [
13                 nip execute
14         ] if ; inline
15
16 : unicode? unicode get ; inline
17
18 : win64? f ;
19
20 ! win64
21 ! char uchar short ushort int uint long ulong longlong ulonglong
22 ! 1    1     2     2      *   *    ?
23 ! win32
24 ! char uchar short ushort int uint long ulong longlong ulonglong
25 ! 1    1     2     2      *   *    4    4     8        8
26
27
28 TYPEDEF: char                CHAR
29 TYPEDEF: uchar               UCHAR
30 TYPEDEF: uchar               BYTE
31
32 TYPEDEF: short               wchar_t
33 TYPEDEF: wchar_t             WCHAR
34
35 TYPEDEF: short               SHORT
36 TYPEDEF: ushort              USHORT
37
38 TYPEDEF: ushort              WORD
39 TYPEDEF: ulong               DWORD
40
41 TYPEDEF: int                 INT
42 TYPEDEF: uint                UINT
43
44 TYPEDEF: int                 BOOL
45
46 TYPEDEF: int*                PINT
47 TYPEDEF: int*                LPINT
48 TYPEDEF: int                 HFILE
49
50 TYPEDEF: long                LONG
51 TYPEDEF: long*               LPLONG
52 TYPEDEF: long                LONG_PTR
53 TYPEDEF: long*               PLONG_PTR
54
55 TYPEDEF: int                 ULONG
56 TYPEDEF: void*               ULONG_PTR
57 TYPEDEF: void*               PULONG_PTR
58
59 TYPEDEF: void                VOID
60 TYPEDEF: void*               PVOID
61 TYPEDEF: void*               LPVOID
62 TYPEDEF: void*               LPCVOID
63
64 TYPEDEF: float               FLOAT
65 TYPEDEF: short       HALF_PTR
66 TYPEDEF: ushort      UHALF_PTR
67 TYPEDEF: int         INT_PTR
68 TYPEDEF: uint        UINT_PTR
69
70 TYPEDEF: int         LONG_PTR
71 TYPEDEF: ulong       ULONG_PTR
72
73 TYPEDEF: int         INT32
74 TYPEDEF: uint        UINT32
75 TYPEDEF: uint        DWORD32
76 TYPEDEF: ulong       ULONG32
77 TYPEDEF: ulonglong   ULONG64
78 TYPEDEF: long*       POINTER_32
79 TYPEDEF: longlong*   POINTER_64
80 TYPEDEF: longlong    INT64
81 TYPEDEF: ulonglong   UINT64
82 TYPEDEF: longlong    LONGLONG
83 TYPEDEF: ulonglong   ULONGLONG
84 TYPEDEF: longlong    LONG64
85 TYPEDEF: ulonglong   DWORD64
86
87 TYPEDEF: uchar       TBYTE
88 TYPEDEF: char        TCHAR
89
90
91 TYPEDEF: WORD                ATOM
92 TYPEDEF: BYTE                BOOLEAN
93 TYPEDEF: DWORD               COLORREF
94 TYPEDEF: ULONGLONG           DWORDLONG
95 TYPEDEF: ULONG_PTR           DWORD_PTR
96 TYPEDEF: PVOID               HANDLE
97 TYPEDEF: HANDLE              HACCEL
98 TYPEDEF: HANDLE              HBITMAP
99 TYPEDEF: HANDLE              HBRUSH
100 TYPEDEF: HANDLE              HCOLORSPACE
101 TYPEDEF: HANDLE              HCONV
102 TYPEDEF: HANDLE              HCONVLIST
103 TYPEDEF: HANDLE              HICON
104 TYPEDEF: HICON               HCURSOR
105 TYPEDEF: HANDLE              HDC
106 TYPEDEF: HANDLE              HDDEDATA
107 TYPEDEF: HANDLE              HDESK
108 TYPEDEF: HANDLE              HDROP
109 TYPEDEF: HANDLE              HDWP
110 TYPEDEF: HANDLE              HENMETAFILE
111 TYPEDEF: HANDLE              HFONT
112 TYPEDEF: HANDLE              HGDIOBJ
113 TYPEDEF: HANDLE              HGLOBAL
114 TYPEDEF: HANDLE              HHOOK
115 TYPEDEF: HANDLE              HINSTANCE
116 TYPEDEF: HANDLE              HKEY
117 TYPEDEF: HANDLE              HKL
118 TYPEDEF: HANDLE              HLOCAL
119 TYPEDEF: HANDLE              HMENU
120 TYPEDEF: HANDLE              HMETAFILE
121 TYPEDEF: HINSTANCE           HMODULE
122 TYPEDEF: HANDLE              HMONITOR
123 TYPEDEF: HANDLE              HPALETTE
124 TYPEDEF: HANDLE              HPEN
125 TYPEDEF: LONG                HRESULT
126 TYPEDEF: HANDLE              HRGN
127 TYPEDEF: HANDLE              HRSRC
128 TYPEDEF: HANDLE              HSZ
129 TYPEDEF: HANDLE              WINSTA   ! MS docs say  typedef HANDLE WINSTA ;
130 TYPEDEF: HANDLE              HWINSTA  ! typo??
131 TYPEDEF: HANDLE              HWND
132 TYPEDEF: WORD                LANGID
133 TYPEDEF: DWORD               LCID
134 TYPEDEF: DWORD               LCTYPE
135 TYPEDEF: DWORD               LGRPID
136 TYPEDEF: LONG_PTR            LPARAM
137 TYPEDEF: BOOL*               LPBOOL
138 TYPEDEF: BYTE*               LPBYTE
139 TYPEDEF: DWORD*              LPCOLORREF
140 ! TYPEDEF: CHAR*               LPCSTR
141 TYPEDEF: VOID*               LPCSTR
142 TYPEDEF: WCHAR*              LPCWSTR
143 TYPEDEF: WCHAR*              LPWSTR
144
145 TYPEDEF: LPCWSTR     LPCTSTR
146 TYPEDEF: LPWSTR      LPTSTR
147 TYPEDEF: LPCWSTR     PCTSTR
148 TYPEDEF: LPWSTR      PTSTR
149 TYPEDEF: LPCSTR      LPCTSTR
150 TYPEDEF: LPSTR       LPTSTR
151 TYPEDEF: LPCSTR      PCTSTR
152 TYPEDEF: LPSTR       PTSTR
153
154 TYPEDEF: DWORD*              LPDWORD
155 TYPEDEF: HANDLE*             LPHANDLE
156 TYPEDEF: CHAR*               LPSTR
157 TYPEDEF: WORD*               LPWORD
158 TYPEDEF: WCHAR*              LPWSTR
159 TYPEDEF: LONG_PTR            LRESULT
160 TYPEDEF: BOOL*               PBOOL
161 TYPEDEF: BOOLEAN*            PBOOLEAN
162 TYPEDEF: BYTE*               PBYTE
163 TYPEDEF: CHAR*               PCHAR
164 TYPEDEF: CHAR*               PCSTR
165 TYPEDEF: WCHAR*              PCWSTR
166 TYPEDEF: DWORD*              PDWORD
167 TYPEDEF: DWORDLONG*          PDWORDLONG
168 TYPEDEF: DWORD_PTR*          PDWORD_PTR
169 TYPEDEF: DWORD32*            PDWORD32
170 TYPEDEF: DWORD64*            PDWORD64
171 TYPEDEF: FLOAT*              PFLOAT
172 TYPEDEF: HALF_PTR*           PHALF_PTR
173 TYPEDEF: HANDLE*             PHANDLE
174 TYPEDEF: HKEY*               PHKEY
175 TYPEDEF: INT_PTR*            PINT_PTR
176 TYPEDEF: INT32*              PINT32
177 TYPEDEF: INT64*              PINT64
178 TYPEDEF: PDWORD              PLCID
179 TYPEDEF: LONG*               PLONG
180 TYPEDEF: LONGLONG*           PLONGLONG
181 TYPEDEF: LONG_PTR*           PLONG_PTR
182 TYPEDEF: LONG32*             PLONG32
183 TYPEDEF: LONG64*             PLONG64
184 TYPEDEF: SHORT*              PSHORT
185 TYPEDEF: SIZE_T*             PSIZE_T
186 TYPEDEF: SSIZE_T*            PSSIZE_T
187 TYPEDEF: CHAR*               PSTR
188 TYPEDEF: TBYTE*              PTBYTE
189 TYPEDEF: TCHAR*              PTCHAR
190 TYPEDEF: UCHAR*              PUCHAR
191 TYPEDEF: UHALF_PTR*          PUHALF_PTR
192 TYPEDEF: UINT*               PUINT
193 TYPEDEF: UINT_PTR*           PUINT_PTR
194 TYPEDEF: UINT32*             PUINT32
195 TYPEDEF: UINT64*             PUINT64
196 TYPEDEF: ULONG*              PULONG
197 TYPEDEF: ULONGLONG*          PULONGLONG
198 TYPEDEF: ULONG_PTR*          PULONG_PTR
199 TYPEDEF: ULONG32*            PULONG32
200 TYPEDEF: ULONG64*            PULONG64
201 TYPEDEF: USHORT*             PUSHORT
202 TYPEDEF: WCHAR*              PWCHAR
203 TYPEDEF: WORD*               PWORD
204 TYPEDEF: WCHAR*              PWSTR
205 TYPEDEF: HANDLE              SC_HANDLE
206 TYPEDEF: LPVOID              SC_LOCK
207 TYPEDEF: HANDLE              SERVICE_STATUS_HANDLE
208 TYPEDEF: ULONG_PTR           SIZE_T
209 TYPEDEF: LONG_PTR            SSIZE_T
210 TYPEDEF: LONGLONG            USN
211 TYPEDEF: UINT_PTR            WPARAM
212
213 TYPEDEF: RECT* LPRECT
214 TYPEDEF: void* PWNDCLASS
215 TYPEDEF: void* PWNDCLASSEX
216
217 TYPEDEF: void* WNDPROC
218
219 ! typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
220
221 BEGIN-STRUCT: WNDCLASS
222     FIELD: UINT style
223     FIELD: WNDPROC lpfnWndProc
224     FIELD: int cbClsExtra
225     FIELD: int cbWndExtra
226     FIELD: HINSTANCE hInstance
227     FIELD: HICON hIcon
228     FIELD: HCURSOR hCursor
229     FIELD: HBRUSH hbrBackground
230     FIELD: LPCTSTR lpszMenuName
231     FIELD: LPCTSTR lpszClassName
232 END-STRUCT
233
234 BEGIN-STRUCT: WNDCLASSEX
235     FIELD: UINT cbSize
236     FIELD: UINT style
237     FIELD: WNDPROC lpfnWndProc
238     FIELD: int cbClsExtra
239     FIELD: int cbWndExtra
240     FIELD: HINSTANCE hInstance
241     FIELD: HICON hIcon
242     FIELD: HCURSOR hCursor
243     FIELD: HBRUSH hbrBackground
244     FIELD: LPCTSTR lpszMenuName
245     FIELD: LPCTSTR lpszClassName
246     FIELD: HICON hIconSm
247 END-STRUCT
248
249 BEGIN-STRUCT: RECT
250     FIELD: LONG left
251     FIELD: LONG top
252     FIELD: LONG right
253     FIELD: LONG bottom
254 END-STRUCT
255
256 ! BEGIN-STRUCT: PAINTSTRUCT
257     ! FIELD: HDC  hdc
258     ! FIELD: BOOL fErase
259     ! FIELD: RECT rcPaint
260     ! FIELD: BOOL fRestore
261     ! FIELD: BOOL fIncUpdate
262     ! FIELD: BYTE[32] rgbReserved
263 ! END-STRUCT
264
265 TYPEDEF: PAINTSTRUCT* LPPAINTSTRUCT
266
267 BEGIN-STRUCT: POINT
268     FIELD: LONG x
269     FIELD: LONG y
270 END-STRUCT 
271
272 BEGIN-STRUCT: MSG
273     FIELD: HWND        hWnd
274     FIELD: UINT        message
275     FIELD: WPARAM      wParam
276     FIELD: LPARAM      lParam
277     FIELD: DWORD       time
278     FIELD: POINT       pt
279 END-STRUCT
280 TYPEDEF: MSG*                LPMSG
281
282 BEGIN-STRUCT: PIXELFORMATDESCRIPTOR
283   FIELD: WORD  nSize
284   FIELD: WORD  nVersion
285   FIELD: DWORD dwFlags 
286   FIELD: BYTE  iPixelType
287   FIELD: BYTE  cColorBits
288   FIELD: BYTE  cRedBits
289   FIELD: BYTE  cRedShift
290   FIELD: BYTE  cGreenBits
291   FIELD: BYTE  cGreenShift
292   FIELD: BYTE  cBlueBits
293   FIELD: BYTE  cBlueShift
294   FIELD: BYTE  cAlphaBits
295   FIELD: BYTE  cAlphaShift
296   FIELD: BYTE  cAccumBits
297   FIELD: BYTE  cAccumRedBits
298   FIELD: BYTE  cAccumGreenBits
299   FIELD: BYTE  cAccumBlueBits
300   FIELD: BYTE  cAccumAlphaBits
301   FIELD: BYTE  cDepthBits
302   FIELD: BYTE  cStencilBits
303   FIELD: BYTE  cAuxBuffers
304   FIELD: BYTE  iLayerType
305   FIELD: BYTE  bReserved
306   FIELD: DWORD dwLayerMask
307   FIELD: DWORD dwVisibleMask
308   FIELD: DWORD dwDamageMask
309 END-STRUCT
310
311 BEGIN-STRUCT: RECT
312     FIELD: LONG left
313     FIELD: LONG top
314     FIELD: LONG right
315     FIELD: LONG bottom
316 END-STRUCT
317
318 TYPEDEF: RECT* PRECT
319 TYPEDEF: RECT* LPRECT
320 TYPEDEF: PIXELFORMATDESCRIPTOR PFD
321 TYPEDEF: PFD* LPPFD
322 TYPEDEF: HANDLE HGLRC
323 TYPEDEF: HANDLE HRGN