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