8 use vars qw(@ISA @EXPORT @EXPORT_OK);
14 my $module_declarations = {
15 "DllGetClassObject" => ["long", ["ptr", "ptr", "ptr"]],
16 "SysAllocString" => ["wstr", ["str"]],
17 "SysReAllocString" => ["long", ["ptr", "str"]],
18 "SysAllocStringLen" => ["wstr", ["ptr", "long"]],
19 "SysReAllocStringLen" => ["long", ["ptr", "ptr", "long"]],
20 "SysFreeString" => ["void", ["wstr"]],
21 "SysStringLen" => ["long", ["wstr"]],
22 "VariantInit" => ["void", ["ptr"]],
23 "VariantClear" => ["long", ["ptr"]],
24 "VariantCopy" => ["long", ["ptr", "ptr"]],
25 "VariantCopyInd" => ["long", ["ptr", "ptr"]],
26 "VariantChangeType" => ["long", ["ptr", "ptr", "long", "long"]],
27 "VariantTimeToDosDateTime" => ["long", ["double", "ptr", "ptr"]],
28 "DosDateTimeToVariantTime" => ["long", ["long", "long", "ptr"]],
29 "SafeArrayCreate" => ["ptr", ["long", "long", "ptr"]],
30 "SafeArrayDestroy" => ["long", ["ptr"]],
31 "SafeArrayGetDim" => ["long", ["ptr"]],
32 "SafeArrayGetElemsize" => ["long", ["ptr"]],
33 "SafeArrayGetUBound" => ["long", ["ptr", "long", "ptr"]],
34 "SafeArrayGetLBound" => ["long", ["ptr", "long", "ptr"]],
35 "SafeArrayLock" => ["long", ["ptr"]],
36 "SafeArrayUnlock" => ["long", ["ptr"]],
37 "SafeArrayAccessData" => ["long", ["ptr", "ptr"]],
38 "SafeArrayUnaccessData" => ["long", ["ptr"]],
39 "SafeArrayGetElement" => ["long", ["ptr", "ptr", "ptr"]],
40 "SafeArrayPutElement" => ["long", ["ptr", "ptr", "ptr"]],
41 "SafeArrayCopy" => ["long", ["ptr", "ptr"]],
42 "DispGetParam" => ["long", ["ptr", "long", "long", "ptr", "ptr"]],
43 "DispGetIDsOfNames" => ["long", ["ptr", "ptr", "long", "ptr"]],
44 "DispInvoke" => ["long", ["ptr", "ptr", "long", "long", "ptr", "ptr", "ptr", "ptr"]],
45 "CreateDispTypeInfo" => ["long", ["ptr", "long", "ptr"]],
46 "CreateStdDispatch" => ["long", ["ptr", "ptr", "ptr", "ptr"]],
47 "RegisterActiveObject" => ["long", ["ptr", "ptr", "long", "ptr"]],
48 "RevokeActiveObject" => ["long", ["long", "ptr"]],
49 "GetActiveObject" => ["long", ["ptr", "ptr", "ptr"]],
50 "SafeArrayAllocDescriptor" => ["long", ["long", "ptr"]],
51 "SafeArrayAllocData" => ["long", ["ptr"]],
52 "SafeArrayDestroyDescriptor" => ["long", ["ptr"]],
53 "SafeArrayDestroyData" => ["long", ["ptr"]],
54 "SafeArrayRedim" => ["long", ["ptr", "ptr"]],
55 "SafeArrayAllocDescriptorEx" => ["long", ["long", "long", "ptr"]],
56 "VarParseNumFromStr" => ["long", ["ptr", "long", "long", "ptr", "ptr"]],
57 "VarNumFromParseNum" => ["long", ["ptr", "ptr", "long", "ptr"]],
58 "VarI2FromUI1" => ["long", ["long", "ptr"]],
59 "VarI2FromI4" => ["long", ["long", "ptr"]],
60 "VarI2FromR4" => ["long", ["long", "ptr"]],
61 "VarI2FromR8" => ["long", ["double", "ptr"]],
62 "VarI2FromCy" => ["long", ["double", "ptr"]],
63 "VarI2FromDate" => ["long", ["double", "ptr"]],
64 "VarI2FromStr" => ["long", ["ptr", "long", "long", "ptr"]],
65 "VarI2FromBool" => ["long", ["long", "ptr"]],
66 "VarI4FromUI1" => ["long", ["long", "ptr"]],
67 "VarI4FromI2" => ["long", ["long", "ptr"]],
68 "VarI4FromR4" => ["long", ["long", "ptr"]],
69 "VarI4FromR8" => ["long", ["double", "ptr"]],
70 "VarI4FromCy" => ["long", ["double", "ptr"]],
71 "VarI4FromDate" => ["long", ["double", "ptr"]],
72 "VarI4FromStr" => ["long", ["ptr", "long", "long", "ptr"]],
73 "VarI4FromBool" => ["long", ["long", "ptr"]],
74 "VarR4FromUI1" => ["long", ["long", "ptr"]],
75 "VarR4FromI2" => ["long", ["long", "ptr"]],
76 "VarR4FromI4" => ["long", ["long", "ptr"]],
77 "VarR4FromR8" => ["long", ["double", "ptr"]],
78 "VarR4FromCy" => ["long", ["double", "ptr"]],
79 "VarR4FromDate" => ["long", ["double", "ptr"]],
80 "VarR4FromStr" => ["long", ["ptr", "long", "long", "ptr"]],
81 "VarR4FromBool" => ["long", ["long", "ptr"]],
82 "SafeArrayGetVartype" => ["long", ["ptr", "ptr"]],
83 "VarR8FromUI1" => ["long", ["long", "ptr"]],
84 "VarR8FromI2" => ["long", ["long", "ptr"]],
85 "VarR8FromI4" => ["long", ["long", "ptr"]],
86 "VarR8FromR4" => ["long", ["long", "ptr"]],
87 "VarR8FromCy" => ["long", ["double", "ptr"]],
88 "VarR8FromDate" => ["long", ["double", "ptr"]],
89 "VarR8FromStr" => ["long", ["ptr", "long", "long", "ptr"]],
90 "VarR8FromBool" => ["long", ["long", "ptr"]],
91 "VarFormat" => ["long", ["ptr", "str", "long", "long", "long", "ptr"]],
92 "VarDateFromUI1" => ["long", ["long", "ptr"]],
93 "VarDateFromI2" => ["long", ["long", "ptr"]],
94 "VarDateFromI4" => ["long", ["long", "ptr"]],
95 "VarDateFromR4" => ["long", ["long", "ptr"]],
96 "VarDateFromR8" => ["long", ["double", "ptr"]],
97 "VarDateFromCy" => ["long", ["double", "ptr"]],
98 "VarDateFromStr" => ["long", ["ptr", "long", "long", "ptr"]],
99 "VarDateFromBool" => ["long", ["long", "ptr"]],
100 "VarFormatDateTime" => ["long", ["ptr", "long", "long", "ptr"]],
101 "VarCyFromUI1" => ["long", ["long", "ptr"]],
102 "VarCyFromI2" => ["long", ["long", "ptr"]],
103 "VarCyFromI4" => ["long", ["long", "ptr"]],
104 "VarCyFromR4" => ["long", ["long", "ptr"]],
105 "VarCyFromR8" => ["long", ["double", "ptr"]],
106 "VarCyFromDate" => ["long", ["double", "ptr"]],
107 "VarCyFromStr" => ["long", ["ptr", "long", "long", "ptr"]],
108 "VarCyFromBool" => ["long", ["long", "ptr"]],
109 "VarBstrFromUI1" => ["long", ["long", "long", "long", "ptr"]],
110 "VarBstrFromI2" => ["long", ["long", "long", "long", "ptr"]],
111 "VarBstrFromI4" => ["long", ["long", "long", "long", "ptr"]],
112 "VarBstrFromR4" => ["long", ["long", "long", "long", "ptr"]],
113 "VarBstrFromR8" => ["long", ["double", "long", "long", "ptr"]],
114 "VarBstrFromCy" => ["long", ["double", "long", "long", "ptr"]],
115 "VarBstrFromDate" => ["long", ["double", "long", "long", "ptr"]],
116 "VarBstrFromBool" => ["long", ["long", "long", "long", "ptr"]],
117 "VarBoolFromUI1" => ["long", ["long", "ptr"]],
118 "VarBoolFromI2" => ["long", ["long", "ptr"]],
119 "VarBoolFromI4" => ["long", ["long", "ptr"]],
120 "VarBoolFromR4" => ["long", ["long", "ptr"]],
121 "VarBoolFromR8" => ["long", ["double", "ptr"]],
122 "VarBoolFromDate" => ["long", ["double", "ptr"]],
123 "VarBoolFromCy" => ["long", ["double", "ptr"]],
124 "VarBoolFromStr" => ["long", ["ptr", "long", "long", "ptr"]],
125 "VarFormatCurrency" => ["long", ["ptr", "long", "long", "long", "long", "long", "ptr"]],
126 "VarUI1FromI2" => ["long", ["long", "ptr"]],
127 "VarUI1FromI4" => ["long", ["long", "ptr"]],
128 "VarUI1FromR4" => ["long", ["long", "ptr"]],
129 "VarUI1FromR8" => ["long", ["double", "ptr"]],
130 "VarUI1FromCy" => ["long", ["double", "ptr"]],
131 "VarUI1FromDate" => ["long", ["double", "ptr"]],
132 "VarUI1FromStr" => ["long", ["ptr", "long", "long", "ptr"]],
133 "VarUI1FromBool" => ["long", ["long", "ptr"]],
134 "VarFormatFromTokens" => ["long", ["ptr", "str", "ptr", "long", "ptr", "long"]],
135 "VarTokenizeFormatString" => ["long", ["str", "ptr", "long", "long", "long", "long", "ptr"]],
136 "VarAnd" => ["long", ["ptr", "ptr", "ptr"]],
137 "VariantChangeTypeEx" => ["long", ["ptr", "ptr", "long", "long", "long"]],
138 "SafeArrayPtrOfIndex" => ["long", ["ptr", "ptr", "ptr"]],
139 "SysStringByteLen" => ["long", ["wstr"]],
140 "SysAllocStringByteLen" => ["wstr", ["str", "long"]],
141 "CreateTypeLib" => ["long", ["long", "str", "ptr"]],
142 "LoadTypeLib" => ["long", ["ptr", "ptr"]],
143 "LoadRegTypeLib" => ["long", ["ptr", "long", "long", "long", "ptr"]],
144 "RegisterTypeLib" => ["long", ["ptr", "ptr", "ptr"]],
145 "QueryPathOfRegTypeLib" => ["long", ["ptr", "long", "long", "long", "ptr"]],
146 "LHashValOfNameSys" => ["long", ["long", "long", "str"]],
147 "LHashValOfNameSysA" => ["long", ["long", "long", "str"]],
148 "OaBuildVersion" => ["long", ["undef"]],
149 "VarNot" => ["long", ["ptr", "ptr"]],
150 "VarCmp" => ["long", ["ptr", "ptr", "long", "long"]],
151 "LoadTypeLibEx" => ["long", ["str", "long", "ptr"]],
152 "SystemTimeToVariantTime" => ["long", ["ptr", "ptr"]],
153 "VariantTimeToSystemTime" => ["long", ["double", "ptr"]],
154 "UnRegisterTypeLib" => ["long", ["ptr", "long", "long", "long", "long"]],
155 "VarI2FromI1" => ["long", ["long", "ptr"]],
156 "VarI2FromUI2" => ["long", ["long", "ptr"]],
157 "VarI2FromUI4" => ["long", ["long", "ptr"]],
158 "VarI4FromI1" => ["long", ["long", "ptr"]],
159 "VarI4FromUI2" => ["long", ["long", "ptr"]],
160 "VarI4FromUI4" => ["long", ["long", "ptr"]],
161 "VarR4FromI1" => ["long", ["long", "ptr"]],
162 "VarR4FromUI2" => ["long", ["long", "ptr"]],
163 "VarR4FromUI4" => ["long", ["long", "ptr"]],
164 "VarR8FromI1" => ["long", ["long", "ptr"]],
165 "VarR8FromUI2" => ["long", ["long", "ptr"]],
166 "VarR8FromUI4" => ["long", ["long", "ptr"]],
167 "VarDateFromI1" => ["long", ["long", "ptr"]],
168 "VarDateFromUI2" => ["long", ["long", "ptr"]],
169 "VarDateFromUI4" => ["long", ["long", "ptr"]],
170 "VarCyFromI1" => ["long", ["long", "ptr"]],
171 "VarCyFromUI2" => ["long", ["long", "ptr"]],
172 "VarCyFromUI4" => ["long", ["long", "ptr"]],
173 "VarBstrFromI1" => ["long", ["long", "long", "long", "ptr"]],
174 "VarBstrFromUI2" => ["long", ["long", "long", "long", "ptr"]],
175 "VarBstrFromUI4" => ["long", ["long", "long", "long", "ptr"]],
176 "VarBoolFromI1" => ["long", ["long", "ptr"]],
177 "VarBoolFromUI2" => ["long", ["long", "ptr"]],
178 "VarBoolFromUI4" => ["long", ["long", "ptr"]],
179 "VarUI1FromI1" => ["long", ["long", "ptr"]],
180 "VarUI1FromUI2" => ["long", ["long", "ptr"]],
181 "VarUI1FromUI4" => ["long", ["long", "ptr"]],
182 "VarI1FromUI1" => ["long", ["long", "ptr"]],
183 "VarI1FromI2" => ["long", ["long", "ptr"]],
184 "VarI1FromI4" => ["long", ["long", "ptr"]],
185 "VarI1FromR4" => ["long", ["long", "ptr"]],
186 "VarI1FromR8" => ["long", ["double", "ptr"]],
187 "VarI1FromDate" => ["long", ["double", "ptr"]],
188 "VarI1FromCy" => ["long", ["double", "ptr"]],
189 "VarI1FromStr" => ["long", ["ptr", "long", "long", "ptr"]],
190 "VarI1FromBool" => ["long", ["long", "ptr"]],
191 "VarI1FromUI2" => ["long", ["long", "ptr"]],
192 "VarI1FromUI4" => ["long", ["long", "ptr"]],
193 "VarUI2FromUI1" => ["long", ["long", "ptr"]],
194 "VarUI2FromI2" => ["long", ["long", "ptr"]],
195 "VarUI2FromI4" => ["long", ["long", "ptr"]],
196 "VarUI2FromR4" => ["long", ["long", "ptr"]],
197 "VarUI2FromR8" => ["long", ["double", "ptr"]],
198 "VarUI2FromDate" => ["long", ["double", "ptr"]],
199 "VarUI2FromCy" => ["long", ["double", "ptr"]],
200 "VarUI2FromStr" => ["long", ["ptr", "long", "long", "ptr"]],
201 "VarUI2FromBool" => ["long", ["long", "ptr"]],
202 "VarUI2FromI1" => ["long", ["long", "ptr"]],
203 "VarUI2FromUI4" => ["long", ["long", "ptr"]],
204 "VarUI4FromUI1" => ["long", ["long", "ptr"]],
205 "VarUI4FromI2" => ["long", ["long", "ptr"]],
206 "VarUI4FromI4" => ["long", ["long", "ptr"]],
207 "VarUI4FromR4" => ["long", ["long", "ptr"]],
208 "VarUI4FromR8" => ["long", ["double", "ptr"]],
209 "VarUI4FromDate" => ["long", ["double", "ptr"]],
210 "VarUI4FromCy" => ["long", ["double", "ptr"]],
211 "VarUI4FromStr" => ["long", ["ptr", "long", "long", "ptr"]],
212 "VarUI4FromBool" => ["long", ["long", "ptr"]],
213 "VarUI4FromI1" => ["long", ["long", "ptr"]],
214 "VarUI4FromUI2" => ["long", ["long", "ptr"]],
215 "VarCyMulI4" => ["long", ["double", "long", "ptr"]],
216 "VarBstrCat" => ["long", ["wstr", "wstr", "ptr"]],
217 "VarBstrCmp" => ["long", ["wstr", "wstr", "long", "long"]],
218 "VarCat" => ["long", ["ptr", "ptr", "ptr"]],
219 "DllRegisterServer" => ["long", ["undef"]],
220 "VarDateFromUdate" => ["long", ["ptr", "long", "ptr"]],
221 "VarUdateFromDate" => ["long", ["double", "long", "ptr"]],
222 "OleLoadPictureEx" => ["long", ["ptr", "long", "long", "ptr", "long", "long", "long", "ptr"]],
223 "DllCanUnloadNow" => ["long", ["undef"]],
224 "SafeArrayCreateVector" => ["ptr", ["long", "long", "long"]],
225 "SafeArrayCopyData" => ["long", ["ptr", "ptr"]],
226 "OleIconToCursor" => ["long", ["long", "long"]],
227 "OleCreatePropertyFrameIndirect" => ["long", ["ptr"]],
228 "OleCreatePropertyFrame" => ["long", ["long", "long", "long", "str", "long", "ptr", "long", "ptr", "long", "long", "ptr"]],
229 "OleLoadPicture" => ["long", ["ptr", "long", "long", "ptr", "ptr"]],
230 "OleCreatePictureIndirect" => ["long", ["ptr", "ptr", "long", "ptr"]],
231 "OleCreateFontIndirect" => ["long", ["ptr", "ptr", "ptr"]],
232 "OleTranslateColor" => ["long", ["long", "long", "ptr"]]
235 &wine::declare("oleaut32",%$module_declarations);
236 push @EXPORT, map { "&" . $_; } sort(keys(%$module_declarations));