]> gitweb.factorcode.org Git - factor.git/blob - library/windows/types.factor
fix win32 type errors
[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 TYPEDEF: void* LPWNDCLASS
217 TYPEDEF: void* LPWNDCLASSEX
218
219 TYPEDEF: void* WNDPROC
220
221 ! typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
222
223 BEGIN-STRUCT: WNDCLASS
224     FIELD: UINT style
225     FIELD: WNDPROC lpfnWndProc
226     FIELD: int cbClsExtra
227     FIELD: int cbWndExtra
228     FIELD: HINSTANCE hInstance
229     FIELD: HICON hIcon
230     FIELD: HCURSOR hCursor
231     FIELD: HBRUSH hbrBackground
232     FIELD: LPCTSTR lpszMenuName
233     FIELD: LPCTSTR lpszClassName
234 END-STRUCT
235
236 BEGIN-STRUCT: WNDCLASSEX
237     FIELD: UINT cbSize
238     FIELD: UINT style
239     FIELD: WNDPROC lpfnWndProc
240     FIELD: int cbClsExtra
241     FIELD: int cbWndExtra
242     FIELD: HINSTANCE hInstance
243     FIELD: HICON hIcon
244     FIELD: HCURSOR hCursor
245     FIELD: HBRUSH hbrBackground
246     FIELD: LPCTSTR lpszMenuName
247     FIELD: LPCTSTR lpszClassName
248     FIELD: HICON hIconSm
249 END-STRUCT
250
251 BEGIN-STRUCT: RECT
252     FIELD: LONG left
253     FIELD: LONG top
254     FIELD: LONG right
255     FIELD: LONG bottom
256 END-STRUCT
257
258 ! BEGIN-STRUCT: PAINTSTRUCT
259     ! FIELD: HDC  hdc
260     ! FIELD: BOOL fErase
261     ! FIELD: RECT rcPaint
262     ! FIELD: BOOL fRestore
263     ! FIELD: BOOL fIncUpdate
264     ! FIELD: BYTE[32] rgbReserved
265 ! END-STRUCT
266
267 TYPEDEF: void* LPPAINTSTRUCT
268 TYPEDEF: void* PAINTSTRUCT
269
270 BEGIN-STRUCT: POINT
271     FIELD: LONG x
272     FIELD: LONG y
273 END-STRUCT 
274
275 BEGIN-STRUCT: MSG
276     FIELD: HWND        hWnd
277     FIELD: UINT        message
278     FIELD: WPARAM      wParam
279     FIELD: LPARAM      lParam
280     FIELD: DWORD       time
281     FIELD: POINT       pt
282 END-STRUCT
283 TYPEDEF: MSG*                LPMSG
284
285 BEGIN-STRUCT: PIXELFORMATDESCRIPTOR
286   FIELD: WORD  nSize
287   FIELD: WORD  nVersion
288   FIELD: DWORD dwFlags 
289   FIELD: BYTE  iPixelType
290   FIELD: BYTE  cColorBits
291   FIELD: BYTE  cRedBits
292   FIELD: BYTE  cRedShift
293   FIELD: BYTE  cGreenBits
294   FIELD: BYTE  cGreenShift
295   FIELD: BYTE  cBlueBits
296   FIELD: BYTE  cBlueShift
297   FIELD: BYTE  cAlphaBits
298   FIELD: BYTE  cAlphaShift
299   FIELD: BYTE  cAccumBits
300   FIELD: BYTE  cAccumRedBits
301   FIELD: BYTE  cAccumGreenBits
302   FIELD: BYTE  cAccumBlueBits
303   FIELD: BYTE  cAccumAlphaBits
304   FIELD: BYTE  cDepthBits
305   FIELD: BYTE  cStencilBits
306   FIELD: BYTE  cAuxBuffers
307   FIELD: BYTE  iLayerType
308   FIELD: BYTE  bReserved
309   FIELD: DWORD dwLayerMask
310   FIELD: DWORD dwVisibleMask
311   FIELD: DWORD dwDamageMask
312 END-STRUCT
313
314 BEGIN-STRUCT: RECT
315     FIELD: LONG left
316     FIELD: LONG top
317     FIELD: LONG right
318     FIELD: LONG bottom
319 END-STRUCT
320
321 TYPEDEF: RECT* PRECT
322 TYPEDEF: RECT* LPRECT
323 TYPEDEF: PIXELFORMATDESCRIPTOR PFD
324 TYPEDEF: PFD* LPPFD
325 TYPEDEF: HANDLE HGLRC
326 TYPEDEF: HANDLE HRGN