]> git.cworth.org Git - apitrace/blob - specs/winapi.py
Specify constant array lengths as integers.
[apitrace] / specs / winapi.py
1 ##########################################################################
2 #
3 # Copyright 2008-2009 VMware, Inc.
4 # All Rights Reserved.
5 #
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included in
14 # all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 # THE SOFTWARE.
23 #
24 ##########################################################################/
25
26 """Win32 API type description."""
27
28 from stdapi import *
29
30 SHORT = Alias("SHORT", Short)
31 USHORT = Alias("USHORT", UShort)
32 INT = Alias("INT", Int)
33 UINT = Alias("UINT", UInt)
34 LONG = Alias("LONG", Long)
35 ULONG = Alias("ULONG", ULong)
36 LONGLONG = Alias("LONGLONG", LongLong)
37 FLOAT = Alias("FLOAT", Float)
38
39 INT8 = Alias("INT8", Int8)
40 UINT8 = Alias("UINT8", UInt8)
41 INT16 = Alias("INT16", Int16)
42 UINT16 = Alias("UINT16", UInt16)
43 INT32 = Alias("INT32", Int32)
44 UINT32 = Alias("UINT32", UInt32)
45 INT64 = Alias("INT64", Int64)
46 UINT64 = Alias("UINT64", UInt64)
47
48 BYTE = Literal("BYTE", "UInt", base=16)
49 WORD = Literal("WORD", "UInt", base=16)
50 DWORD = Literal("DWORD", "UInt", base=16)
51
52 WCHAR = Literal("WCHAR", "SInt")
53
54 BOOL = Alias("BOOL", Bool)
55
56 LPLONG = Pointer(LONG)
57 LPWORD = Pointer(WORD)
58 LPDWORD = Pointer(DWORD)
59 LPBOOL = Pointer(BOOL)
60
61 LPSTR = CString
62 LPCSTR = Const(CString)
63 LPWSTR = WString
64 LPCWSTR = Const(WString)
65
66 LARGE_INTEGER = Struct("LARGE_INTEGER", [
67     (LONGLONG, 'QuadPart'),
68 ])
69
70 SIZE_T = Alias("SIZE_T", SizeT)
71
72 HRESULT = Alias("HRESULT", Int)
73
74 VOID = Void
75 PVOID = Opaque("PVOID")
76 LPVOID = PVOID
77 HANDLE = Opaque("HANDLE")
78 HWND = Opaque("HWND")
79 HDC = Opaque("HDC")
80 HMONITOR = Opaque("HMONITOR")
81
82 GUID = Struct("GUID", [
83     (DWORD, "Data1"),
84     (WORD, "Data2"),
85     (WORD, "Data3"),
86     (Array(BYTE, 8), "Data4"),
87 ])
88 LPGUID = Pointer(GUID)
89
90 #REFGUID = Alias("REFGUID", Pointer(GUID))
91 REFGUID = Alias("REFGUID", GUID)
92
93 IID = Alias("IID", GUID)
94 #REFIID = Alias("REFIID", Pointer(IID))
95 REFIID = Alias("REFIID", IID)
96
97 CLSID = Alias("CLSID", GUID)
98 #REFCLSID = Alias("REFCLSID", Pointer(CLSID))
99 REFCLSID = Alias("REFCLSID", CLSID)
100
101 LUID = Struct("LUID", [
102     (DWORD, "LowPart"),
103     (LONG, "HighPart"),
104 ])
105
106 POINT = Struct("POINT", (
107   (LONG, "x"),
108   (LONG, "y"),
109 )) 
110 LPPOINT = Pointer(POINT)
111
112 SIZE = Struct("SIZE", (
113   (LONG, "cx"),
114   (LONG, "cy"),
115 )) 
116 LPSIZE = Pointer(SIZE)
117
118 RECT = Struct("RECT", (
119   (LONG, "left"),
120   (LONG, "top"),
121   (LONG, "right"), 
122   (LONG, "bottom"), 
123 )) 
124 LPRECT = Pointer(RECT)
125
126 PALETTEENTRY = Struct("PALETTEENTRY", (
127   (BYTE, "peRed"),
128   (BYTE, "peGreen"),
129   (BYTE, "peBlue"), 
130   (BYTE, "peFlags"), 
131 )) 
132 LPPALETTEENTRY = Pointer(PALETTEENTRY)
133
134
135 RGNDATAHEADER = Struct("RGNDATAHEADER", [
136     (DWORD, "dwSize"),
137     (DWORD, "iType"),
138     (DWORD, "nCount"),
139     (DWORD, "nRgnSize"),
140     (RECT, "rcBound"),
141 ])
142
143 RGNDATA = Struct("RGNDATA", [
144     (RGNDATAHEADER, "rdh"),
145     #(Char, "Buffer[1]"),
146 ])
147 LPRGNDATA = Pointer(RGNDATA)
148
149 HMODULE = Opaque("HMODULE")
150
151 IUnknown = Interface("IUnknown")
152
153 HRESULT_com = FakeEnum(HRESULT, [
154     "S_OK",
155     "E_NOINTERFACE",
156     "E_POINTER",
157 ])
158
159 IUnknown.methods = (
160         Method(HRESULT_com, "QueryInterface", ((REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppvObj"))),
161         Method(ULONG, "AddRef", ()),
162         Method(ULONG, "Release", ()),
163 )
164
165