]> gitweb.factorcode.org Git - factor.git/blob - core/windows/types.factor
more sql changes
[factor.git] / core / windows / types.factor
1 ! Copyright (C) 2005, 2006 Doug Coleman.
2 ! See http://factorcode.org/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: WCHAR*              LPCWSTR
141 TYPEDEF: WCHAR*              LPWSTR
142
143 ! TYPEDEF: LPCWSTR     LPCTSTR
144 ! TYPEDEF: LPWSTR      LPTSTR
145 ! TYPEDEF: LPCWSTR     PCTSTR
146 ! TYPEDEF: LPWSTR      PTSTR
147
148 TYPEDEF: WCHAR*              LPWSTR
149 TYPEDEF: CHAR*               LPSTR
150 ! TYPEDEF: CHAR*               LPCSTR
151 TYPEDEF: VOID*               LPCSTR
152
153 TYPEDEF: LPCSTR      LPCTSTR
154 TYPEDEF: LPSTR       LPTSTR
155 TYPEDEF: LPCSTR      PCTSTR
156 TYPEDEF: LPSTR       PTSTR
157
158 TYPEDEF: DWORD*              LPDWORD
159 TYPEDEF: HANDLE*             LPHANDLE
160 TYPEDEF: WORD*               LPWORD
161 TYPEDEF: LONG_PTR            LRESULT
162 TYPEDEF: BOOL*               PBOOL
163 TYPEDEF: BOOLEAN*            PBOOLEAN
164 TYPEDEF: BYTE*               PBYTE
165 TYPEDEF: CHAR*               PCHAR
166 TYPEDEF: CHAR*               PCSTR
167 TYPEDEF: WCHAR*              PCWSTR
168 TYPEDEF: DWORD*              PDWORD
169 TYPEDEF: DWORDLONG*          PDWORDLONG
170 TYPEDEF: DWORD_PTR*          PDWORD_PTR
171 TYPEDEF: DWORD32*            PDWORD32
172 TYPEDEF: DWORD64*            PDWORD64
173 TYPEDEF: FLOAT*              PFLOAT
174 TYPEDEF: HALF_PTR*           PHALF_PTR
175 TYPEDEF: HANDLE*             PHANDLE
176 TYPEDEF: HKEY*               PHKEY
177 TYPEDEF: INT_PTR*            PINT_PTR
178 TYPEDEF: INT32*              PINT32
179 TYPEDEF: INT64*              PINT64
180 TYPEDEF: PDWORD              PLCID
181 TYPEDEF: LONG*               PLONG
182 TYPEDEF: LONGLONG*           PLONGLONG
183 TYPEDEF: LONG_PTR*           PLONG_PTR
184 TYPEDEF: LONG32*             PLONG32
185 TYPEDEF: LONG64*             PLONG64
186 TYPEDEF: SHORT*              PSHORT
187 TYPEDEF: SIZE_T*             PSIZE_T
188 TYPEDEF: SSIZE_T*            PSSIZE_T
189 TYPEDEF: CHAR*               PSTR
190 TYPEDEF: TBYTE*              PTBYTE
191 TYPEDEF: TCHAR*              PTCHAR
192 TYPEDEF: UCHAR*              PUCHAR
193 TYPEDEF: UHALF_PTR*          PUHALF_PTR
194 TYPEDEF: UINT*               PUINT
195 TYPEDEF: UINT_PTR*           PUINT_PTR
196 TYPEDEF: UINT32*             PUINT32
197 TYPEDEF: UINT64*             PUINT64
198 TYPEDEF: ULONG*              PULONG
199 TYPEDEF: ULONGLONG*          PULONGLONG
200 TYPEDEF: ULONG_PTR*          PULONG_PTR
201 TYPEDEF: ULONG32*            PULONG32
202 TYPEDEF: ULONG64*            PULONG64
203 TYPEDEF: USHORT*             PUSHORT
204 TYPEDEF: WCHAR*              PWCHAR
205 TYPEDEF: WORD*               PWORD
206 TYPEDEF: WCHAR*              PWSTR
207 TYPEDEF: HANDLE              SC_HANDLE
208 TYPEDEF: LPVOID              SC_LOCK
209 TYPEDEF: HANDLE              SERVICE_STATUS_HANDLE
210 TYPEDEF: ULONG_PTR           SIZE_T
211 TYPEDEF: LONG_PTR            SSIZE_T
212 TYPEDEF: LONGLONG            USN
213 TYPEDEF: UINT_PTR            WPARAM
214
215 TYPEDEF: RECT* LPRECT
216 TYPEDEF: void* PWNDCLASS
217 TYPEDEF: void* PWNDCLASSEX
218 TYPEDEF: void* LPWNDCLASS
219 TYPEDEF: void* LPWNDCLASSEX
220
221 TYPEDEF: void* WNDPROC
222
223 ! typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
224
225 BEGIN-STRUCT: WNDCLASS
226     FIELD: UINT style
227     FIELD: WNDPROC lpfnWndProc
228     FIELD: int cbClsExtra
229     FIELD: int cbWndExtra
230     FIELD: HINSTANCE hInstance
231     FIELD: HICON hIcon
232     FIELD: HCURSOR hCursor
233     FIELD: HBRUSH hbrBackground
234     FIELD: LPCTSTR lpszMenuName
235     FIELD: LPCTSTR lpszClassName
236 END-STRUCT
237
238 BEGIN-STRUCT: WNDCLASSEX
239     FIELD: UINT cbSize
240     FIELD: UINT style
241     FIELD: WNDPROC lpfnWndProc
242     FIELD: int cbClsExtra
243     FIELD: int cbWndExtra
244     FIELD: HINSTANCE hInstance
245     FIELD: HICON hIcon
246     FIELD: HCURSOR hCursor
247     FIELD: HBRUSH hbrBackground
248     FIELD: LPCTSTR lpszMenuName
249     FIELD: LPCTSTR lpszClassName
250     FIELD: HICON hIconSm
251 END-STRUCT
252
253 BEGIN-STRUCT: RECT
254     FIELD: LONG left
255     FIELD: LONG top
256     FIELD: LONG right
257     FIELD: LONG bottom
258 END-STRUCT
259
260 ! BEGIN-STRUCT: PAINTSTRUCT
261     ! FIELD: HDC  hdc
262     ! FIELD: BOOL fErase
263     ! FIELD: RECT rcPaint
264     ! FIELD: BOOL fRestore
265     ! FIELD: BOOL fIncUpdate
266     ! FIELD: BYTE[32] rgbReserved
267 ! END-STRUCT
268
269 TYPEDEF: void* LPPAINTSTRUCT
270 TYPEDEF: void* PAINTSTRUCT
271
272 BEGIN-STRUCT: POINT
273     FIELD: LONG x
274     FIELD: LONG y
275 END-STRUCT 
276
277 BEGIN-STRUCT: MSG
278     FIELD: HWND        hWnd
279     FIELD: UINT        message
280     FIELD: WPARAM      wParam
281     FIELD: LPARAM      lParam
282     FIELD: DWORD       time
283     FIELD: POINT       pt
284 END-STRUCT
285 TYPEDEF: MSG*                LPMSG
286
287 BEGIN-STRUCT: PIXELFORMATDESCRIPTOR
288   FIELD: WORD  nSize
289   FIELD: WORD  nVersion
290   FIELD: DWORD dwFlags 
291   FIELD: BYTE  iPixelType
292   FIELD: BYTE  cColorBits
293   FIELD: BYTE  cRedBits
294   FIELD: BYTE  cRedShift
295   FIELD: BYTE  cGreenBits
296   FIELD: BYTE  cGreenShift
297   FIELD: BYTE  cBlueBits
298   FIELD: BYTE  cBlueShift
299   FIELD: BYTE  cAlphaBits
300   FIELD: BYTE  cAlphaShift
301   FIELD: BYTE  cAccumBits
302   FIELD: BYTE  cAccumRedBits
303   FIELD: BYTE  cAccumGreenBits
304   FIELD: BYTE  cAccumBlueBits
305   FIELD: BYTE  cAccumAlphaBits
306   FIELD: BYTE  cDepthBits
307   FIELD: BYTE  cStencilBits
308   FIELD: BYTE  cAuxBuffers
309   FIELD: BYTE  iLayerType
310   FIELD: BYTE  bReserved
311   FIELD: DWORD dwLayerMask
312   FIELD: DWORD dwVisibleMask
313   FIELD: DWORD dwDamageMask
314 END-STRUCT
315
316 BEGIN-STRUCT: RECT
317     FIELD: LONG left
318     FIELD: LONG top
319     FIELD: LONG right
320     FIELD: LONG bottom
321 END-STRUCT
322
323 TYPEDEF: RECT* PRECT
324 TYPEDEF: RECT* LPRECT
325 TYPEDEF: PIXELFORMATDESCRIPTOR PFD
326 TYPEDEF: PFD* LPPFD
327 TYPEDEF: HANDLE HGLRC
328 TYPEDEF: HANDLE HRGN