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