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