OLEAUT32.DllGetClassObject and support for the Ole StdFont added (just
[wine] / dlls / oleaut32 / oleaut32.spec
1 name oleaut32
2 type win32
3 rsrc version.res
4
5 import ole32.dll
6 import user32.dll
7 import gdi32.dll
8 import advapi32.dll
9 import kernel32.dll
10 import ntdll.dll
11
12 debug_channels (ole typelib)
13
14 1 stdcall DllGetClassObject(ptr ptr ptr) OLEAUT32_DllGetClassObject
15 2 stdcall SysAllocString(wstr) SysAllocString
16 3 stdcall SysReAllocString(ptr wstr) SysReAllocString
17 4 stdcall SysAllocStringLen(wstr long) SysAllocStringLen
18 5 stdcall SysReAllocStringLen(ptr ptr long) SysReAllocStringLen
19 6 stdcall SysFreeString(wstr) SysFreeString
20 7 stdcall SysStringLen(wstr) SysStringLen
21 8 stdcall VariantInit(ptr) VariantInit
22 9 stdcall VariantClear(ptr) VariantClear
23 10 stdcall VariantCopy(ptr ptr) VariantCopy
24 11 stdcall VariantCopyInd(ptr ptr) VariantCopyInd
25 12 stdcall VariantChangeType(ptr ptr long long) VariantChangeType
26 13 stub VariantTimeToDosDateTime
27 14 stdcall DosDateTimeToVariantTime(long long ptr) DosDateTimeToVariantTime
28 15 stdcall SafeArrayCreate(long long ptr) SafeArrayCreate
29 16 stdcall SafeArrayDestroy(ptr) SafeArrayDestroy
30 17 stdcall SafeArrayGetDim(ptr) SafeArrayGetDim
31 18 stdcall SafeArrayGetElemsize(ptr) SafeArrayGetElemsize
32 19 stdcall SafeArrayGetUBound(ptr long long) SafeArrayGetUBound
33 20 stdcall SafeArrayGetLBound(ptr long long) SafeArrayGetLBound
34 21 stdcall SafeArrayLock(ptr) SafeArrayLock
35 22 stdcall SafeArrayUnlock(ptr) SafeArrayUnlock
36 23 stdcall SafeArrayAccessData(ptr ptr) SafeArrayAccessData
37 24 stdcall SafeArrayUnaccessData(ptr) SafeArrayUnaccessData
38 25 stdcall SafeArrayGetElement(ptr ptr ptr) SafeArrayGetElement
39 26 stdcall SafeArrayPutElement(ptr ptr ptr) SafeArrayPutElement
40 27 stdcall SafeArrayCopy(ptr ptr) SafeArrayCopy
41 28 stdcall DispGetParam(ptr long long ptr ptr) DispGetParam
42 29 stdcall DispGetIDsOfNames(ptr ptr long ptr) DispGetIDsOfNames
43 30 stdcall DispInvoke(ptr ptr long long ptr ptr ptr ptr) DispInvoke
44 31 stdcall CreateDispTypeInfo(ptr long ptr) CreateDispTypeInfo
45 32 stdcall CreateStdDispatch(ptr ptr ptr ptr) CreateStdDispatch
46 33 stdcall RegisterActiveObject(ptr ptr long ptr) RegisterActiveObject
47 34 stdcall RevokeActiveObject(long ptr) RevokeActiveObject
48 35 stdcall GetActiveObject(ptr ptr ptr) GetActiveObject
49 36 stdcall SafeArrayAllocDescriptor(long ptr) SafeArrayAllocDescriptor
50 37 stdcall SafeArrayAllocData(ptr) SafeArrayAllocData
51 38 stdcall SafeArrayDestroyDescriptor(ptr) SafeArrayDestroyDescriptor
52 39 stdcall SafeArrayDestroyData(ptr) SafeArrayDestroyData
53 40 stdcall SafeArrayRedim(ptr ptr) SafeArrayRedim
54 41 stub OACreateTypeLib2
55 46 stub VarParseNumFromStr
56 47 stub VarNumFromParseNum
57 48 stdcall VarI2FromUI1(long ptr) VarI2FromUI1
58 49 stdcall VarI2FromI4(long ptr) VarI2FromI4
59 50 stdcall VarI2FromR4(long ptr) VarI2FromR4
60 51 stdcall VarI2FromR8(double ptr) VarI2FromR8
61 52 stdcall VarI2FromCy(double ptr) VarI2FromCy
62 53 stdcall VarI2FromDate(double ptr) VarI2FromDate
63 54 stdcall VarI2FromStr(wstr long long ptr) VarI2FromStr
64 55 stub VarI2FromDisp
65 56 stdcall VarI2FromBool(long ptr) VarI2FromBool
66 58 stdcall VarI4FromUI1(long ptr) VarI4FromUI1
67 59 stdcall VarI4FromI2(long ptr) VarI4FromI2
68 60 stdcall VarI4FromR4(long ptr) VarI4FromR4
69 61 stdcall VarI4FromR8(double ptr) VarI4FromR8
70 62 stdcall VarI4FromCy(double ptr) VarI4FromCy
71 63 stdcall VarI4FromDate(double ptr) VarI4FromDate
72 64 stdcall VarI4FromStr(wstr long long ptr) VarI4FromStr
73 65 stub VarI4FromDisp
74 66 stdcall VarI4FromBool(long ptr) VarI4FromBool
75 68 stdcall VarR4FromUI1(long ptr) VarR4FromUI1
76 69 stdcall VarR4FromI2(long ptr) VarR4FromI2
77 70 stdcall VarR4FromI4(long ptr) VarR4FromI4
78 71 stdcall VarR4FromR8(double ptr) VarR4FromR8
79 72 stdcall VarR4FromCy(double ptr) VarR4FromCy
80 73 stdcall VarR4FromDate(double ptr) VarR4FromDate
81 74 stdcall VarR4FromStr(wstr long long ptr) VarR4FromStr
82 75 stub VarR4FromDisp
83 76 stdcall VarR4FromBool(long ptr) VarR4FromBool
84 77 stdcall SafeArrayGetVarType(ptr ptr) SafeArrayGetVarType
85 78 stdcall VarR8FromUI1(long ptr) VarR8FromUI1
86 79 stdcall VarR8FromI2(long ptr) VarR8FromI2
87 80 stdcall VarR8FromI4(long ptr) VarR8FromI4
88 81 stdcall VarR8FromR4(long ptr) VarR8FromR4
89 82 stdcall VarR8FromCy(double ptr) VarR8FromCy
90 83 stdcall VarR8FromDate(double ptr) VarR8FromDate
91 84 stdcall VarR8FromStr(wstr long long ptr) VarR8FromStr
92 85 stub VarR8FromDisp
93 86 stdcall VarR8FromBool(long ptr) VarR8FromBool
94 88 stdcall VarDateFromUI1(long ptr) VarDateFromUI1
95 89 stdcall VarDateFromI2(long ptr) VarDateFromI2
96 90 stdcall VarDateFromI4(long ptr) VarDateFromI4
97 91 stdcall VarDateFromR4(long ptr) VarDateFromR4
98 92 stdcall VarDateFromR8(double ptr) VarDateFromR8
99 93 stdcall VarDateFromCy(double ptr) VarDateFromCy
100 94 stdcall VarDateFromStr(wstr long long ptr) VarDateFromStr
101 95 stub VarDateFromDisp
102 96 stdcall VarDateFromBool(long ptr) VarDateFromBool
103 98 stdcall VarCyFromUI1(long ptr) VarCyFromUI1
104 99 stdcall VarCyFromI2(long ptr) VarCyFromI2
105 100 stdcall VarCyFromI4(long ptr) VarCyFromI4
106 101 stdcall VarCyFromR4(long ptr) VarCyFromR4
107 102 stdcall VarCyFromR8(double ptr) VarCyFromR8
108 103 stdcall VarCyFromDate(double ptr) VarCyFromDate
109 104 stdcall VarCyFromStr(ptr long long ptr) VarCyFromStr
110 105 stub VarCyFromDisp
111 106 stdcall VarCyFromBool(long ptr) VarCyFromBool
112 108 stdcall VarBstrFromUI1(long long long ptr) VarBstrFromUI1
113 109 stdcall VarBstrFromI2(long long long ptr) VarBstrFromI2
114 110 stdcall VarBstrFromI4(long long long ptr) VarBstrFromI4
115 111 stdcall VarBstrFromR4(long long long ptr) VarBstrFromR4
116 112 stdcall VarBstrFromR8(double long long ptr) VarBstrFromR8
117 113 stdcall VarBstrFromCy(double long long ptr) VarBstrFromCy
118 114 stdcall VarBstrFromDate(double long long ptr) VarBstrFromDate
119 115 stub VarBstrFromDisp
120 116 stdcall VarBstrFromBool(long long long ptr) VarBstrFromBool
121 118 stdcall VarBoolFromUI1(long ptr) VarBoolFromUI1
122 119 stdcall VarBoolFromI2(long ptr) VarBoolFromI2
123 120 stdcall VarBoolFromI4(long ptr) VarBoolFromI4
124 121 stdcall VarBoolFromR4(long ptr) VarBoolFromR4
125 122 stdcall VarBoolFromR8(double ptr) VarBoolFromR8
126 123 stdcall VarBoolFromDate(double ptr) VarBoolFromDate
127 124 stdcall VarBoolFromCy(double ptr) VarBoolFromCy
128 125 stdcall VarBoolFromStr(wstr long long ptr) VarBoolFromStr
129 126 stub VarBoolFromDisp
130 130 stdcall VarUI1FromI2(long ptr) VarUI1FromI2
131 131 stdcall VarUI1FromI4(long ptr) VarUI1FromI4
132 132 stdcall VarUI1FromR4(long ptr) VarUI1FromR4
133 133 stdcall VarUI1FromR8(double ptr) VarUI1FromR8
134 134 stdcall VarUI1FromCy(double ptr) VarUI1FromCy
135 135 stdcall VarUI1FromDate(double ptr) VarUI1FromDate
136 136 stdcall VarUI1FromStr(wstr long long ptr) VarUI1FromStr
137 137 stub VarUI1FromDisp
138 138 stdcall VarUI1FromBool(long ptr) VarUI1FromBool
139 146 stub DispCallFunc
140 147 stdcall VariantChangeTypeEx(ptr ptr long long long) VariantChangeTypeEx
141 148 stdcall SafeArrayPtrOfIndex(ptr ptr ptr) SafeArrayPtrOfIndex
142 149 stdcall SysStringByteLen(ptr) SysStringByteLen
143 150 stdcall SysAllocStringByteLen(ptr long) SysAllocStringByteLen
144 160 stdcall CreateTypeLib(long wstr ptr) CreateTypeLib
145 161 stdcall LoadTypeLib (wstr ptr) LoadTypeLib
146 162 stdcall LoadRegTypeLib (ptr long long long ptr) LoadRegTypeLib
147 163 stdcall RegisterTypeLib(ptr str str) RegisterTypeLib
148 164 stdcall QueryPathOfRegTypeLib(ptr long long long ptr) QueryPathOfRegTypeLib
149 165 stdcall LHashValOfNameSys(long long wstr) LHashValOfNameSys
150 166 stdcall LHashValOfNameSysA(long long str) LHashValOfNameSysA
151 170 stdcall OaBuildVersion() OaBuildVersion
152 171 stub ClearCustData
153 180 stub CreateTypeLib2
154 183 stdcall LoadTypeLibEx (ptr long ptr) LoadTypeLibEx
155 184 stub SystemTimeToVariantTime
156 185 stub VariantTimeToSystemTime
157 186 stdcall UnRegisterTypeLib (ptr long long long long) UnRegisterTypeLib
158 190 stub VarDecFromUI1
159 191 stub VarDecFromI2
160 192 stub VarDecFromI4
161 193 stub VarDecFromR4
162 194 stub VarDecFromR8
163 195 stub VarDecFromDate
164 196 stub VarDecFromCy
165 197 stub VarDecFromStr
166 198 stub VarDecFromDisp
167 199 stub VarDecFromBool
168 200 forward GetErrorInfo ole32.GetErrorInfo
169 201 forward SetErrorInfo ole32.SetErrorInfo
170 202 forward CreateErrorInfo ole32.CreateErrorInfo
171 205 stdcall VarI2FromI1(long ptr) VarI2FromI1
172 206 stdcall VarI2FromUI2(long ptr) VarI2FromUI2
173 207 stdcall VarI2FromUI4(long ptr) VarI2FromUI4
174 208 stub VarI2FromDec
175 209 stdcall VarI4FromI1(long ptr) VarI4FromI1
176 210 stdcall VarI4FromUI2(long ptr) VarI4FromUI2
177 211 stdcall VarI4FromUI4(long ptr) VarI4FromUI4
178 212 stub VarI4FromDec
179 213 stdcall VarR4FromI1(long ptr) VarR4FromI1
180 214 stdcall VarR4FromUI2(long ptr) VarR4FromUI2
181 215 stdcall VarR4FromUI4(long ptr) VarR4FromUI4
182 216 stub VarR4FromDec
183 217 stdcall VarR8FromI1(long ptr) VarR8FromI1
184 218 stdcall VarR8FromUI2(long ptr) VarR8FromUI2
185 219 stdcall VarR8FromUI4(long ptr) VarR8FromUI4
186 220 stub VarR8FromDec
187 221 stdcall VarDateFromI1(long ptr) VarDateFromI1
188 222 stdcall VarDateFromUI2(long ptr) VarDateFromUI2
189 223 stdcall VarDateFromUI4(long ptr) VarDateFromUI4
190 224 stub VarDateFromDec
191 225 stdcall VarCyFromI1(long ptr) VarCyFromI1
192 226 stdcall VarCyFromUI2(long ptr) VarCyFromUI2
193 227 stdcall VarCyFromUI4(long ptr) VarCyFromUI4
194 228 stub VarCyFromDec
195 229 stdcall VarBstrFromI1(long long long ptr) VarBstrFromI1
196 230 stdcall VarBstrFromUI2(long long long ptr) VarBstrFromUI2
197 231 stdcall VarBstrFromUI4(long long long ptr) VarBstrFromUI4
198 232 stub VarBstrFromDec
199 233 stdcall VarBoolFromI1(long ptr) VarBoolFromI1
200 234 stdcall VarBoolFromUI2(long ptr) VarBoolFromUI2
201 235 stdcall VarBoolFromUI4(long ptr) VarBoolFromUI4
202 236 stub VarBoolFromDec
203 237 stdcall VarUI1FromI1(long ptr) VarUI1FromI1
204 238 stdcall VarUI1FromUI2(long ptr) VarUI1FromUI2
205 239 stdcall VarUI1FromUI4(long ptr) VarUI1FromUI4
206 240 stub VarUI1FromDec
207 241 stub VarDecFromI1
208 242 stub VarDecFromUI2
209 243 stub VarDecFromUI4
210 244 stdcall VarI1FromUI1(long ptr) VarI1FromUI1
211 245 stdcall VarI1FromI2(long ptr) VarI1FromI2
212 246 stdcall VarI1FromI4(long ptr) VarI1FromI4
213 247 stdcall VarI1FromR4(long ptr) VarI1FromR4
214 248 stdcall VarI1FromR8(double ptr) VarI1FromR8
215 249 stdcall VarI1FromDate(double ptr) VarI1FromDate
216 250 stdcall VarI1FromCy(double ptr) VarI1FromCy
217 251 stdcall VarI1FromStr(wstr long long ptr) VarI1FromStr
218 252 stub VarI1FromDisp
219 253 stdcall VarI1FromBool(long ptr) VarI1FromBool
220 254 stdcall VarI1FromUI2(long ptr) VarI1FromUI2
221 255 stdcall VarI1FromUI4(long ptr) VarI1FromUI4
222 256 stub VarI1FromDec
223 257 stdcall VarUI2FromUI1(long ptr) VarUI2FromUI1
224 258 stdcall VarUI2FromI2(long ptr) VarUI2FromI2
225 259 stdcall VarUI2FromI4(long ptr) VarUI2FromI4
226 260 stdcall VarUI2FromR4(long ptr) VarUI2FromR4
227 261 stdcall VarUI2FromR8(double ptr) VarUI2FromR8
228 262 stdcall VarUI2FromDate(double ptr) VarUI2FromDate
229 263 stdcall VarUI2FromCy(double ptr) VarUI2FromCy
230 264 stdcall VarUI2FromStr(wstr long long ptr) VarUI2FromStr
231 265 stub VarUI2FromDisp
232 266 stdcall VarUI2FromBool(long ptr) VarUI2FromBool
233 267 stdcall VarUI2FromI1(long ptr) VarUI2FromI1
234 268 stdcall VarUI2FromUI4(long ptr) VarUI2FromUI4
235 269 stub VarUI2FromDec
236 270 stdcall VarUI4FromUI1(long ptr) VarUI4FromUI1
237 271 stdcall VarUI4FromI2(long ptr) VarUI4FromI2
238 272 stdcall VarUI4FromI4(long ptr) VarUI4FromI4
239 273 stdcall VarUI4FromR4(long ptr) VarUI4FromR4
240 274 stdcall VarUI4FromR8(double ptr) VarUI4FromR8
241 275 stdcall VarUI4FromDate(double ptr) VarUI4FromDate
242 276 stdcall VarUI4FromCy(double ptr) VarUI4FromCy
243 277 stdcall VarUI4FromStr(wstr long long ptr) VarUI4FromStr
244 278 stub VarUI4FromDisp
245 279 stdcall VarUI4FromBool(long ptr) VarUI4FromBool
246 280 stdcall VarUI4FromI1(long ptr) VarUI4FromI1
247 281 stdcall VarUI4FromUI2(long ptr) VarUI4FromUI2
248 282 stub VarUI4FromDec
249 283 stub BSTR_UserSize
250 284 stub BSTR_UserMarshal
251 285 stub BSTR_UserUnmarshal
252 286 stub BSTR_UserFree
253 287 stub VARIANT_UserSize
254 288 stub VARIANT_UserMarshal
255 289 stub VARIANT_UserUnmarshal
256 290 stub VARIANT_UserFree
257 291 stub LPSAFEARRAY_UserSize
258 292 stub LPSAFEARRAY_UserMarshal
259 293 stub LPSAFEARRAY_UserUnmarshal
260 294 stub LPSAFEARRAY_UserFree
261 295 stub LPSAFEARRAY_Size
262 296 stub LPSAFEARRAY_Marshal
263 297 stub LPSAFEARRAY_Unmarshal
264 320 stdcall DllRegisterServer() OLEAUT32_DllRegisterServer
265 321 stdcall DllUnregisterServer() OLEAUT32_DllUnregisterServer
266 330 stub VarDateFromUdate
267 331 stub VarUdateFromDate
268 332 stub GetAltMonthNames
269 380 stub UserHWND_from_local
270 381 stub UserHWND_to_local
271 382 stub UserHWND_free_inst
272 383 stub UserHWND_free_local
273 384 stub UserBSTR_from_local
274 385 stub UserBSTR_to_local
275 386 stub UserBSTR_free_inst
276 387 stub UserBSTR_free_local
277 388 stub UserVARIANT_from_local
278 389 stub UserVARIANT_to_local
279 390 stub UserVARIANT_free_inst
280 391 stub UserVARIANT_free_local
281 392 stub UserEXCEPINFO_from_local
282 393 stub UserEXCEPINFO_to_local
283 394 stub UserEXCEPINFO_free_inst
284 395 stub UserEXCEPINFO_free_local
285 396 stub UserMSG_from_local
286 397 stub UserMSG_to_local
287 398 stub UserMSG_free_inst
288 399 stub UserMSG_free_local
289 410 stdcall DllCanUnloadNow() OLEAUT32_DllCanUnloadNow
290 411 stdcall SafeArrayCreateVector(long long long) SafeArrayCreateVector
291 412 stdcall SafeArrayCopyData(ptr ptr) SafeArrayCopyData
292 413 stub VectorFromBstr
293 414 stub BstrFromVector
294 415 stdcall OleIconToCursor(long long) OleIconToCursor
295 416 stdcall OleCreatePropertyFrameIndirect(ptr) OleCreatePropertyFrameIndirect
296 417 stdcall OleCreatePropertyFrame(ptr long long ptr long ptr long ptr ptr long ptr) OleCreatePropertyFrame
297 418 stdcall OleLoadPicture(ptr long long ptr ptr) OleLoadPicture
298 419 stdcall OleCreatePictureIndirect(ptr ptr long ptr) OleCreatePictureIndirect
299 420 stdcall OleCreateFontIndirect(ptr ptr ptr) OleCreateFontIndirect
300 421 stdcall OleTranslateColor(long long long) OleTranslateColor
301 422 stub OleLoadPictureFile
302 423 stub OleSavePictureFile
303 424 stub OleLoadPicturePath
304 425 stdcall OleLoadPictureEx(ptr long long long long long long ptr) OleLoadPictureEx
305
306 #Win98 and higher (NT4.0sp4)
307 426 stub GetRecordInfoFromGuids # stdcall (ptr long long long ptr ptr)
308 427 stub GetRecordInfoFromTypeInfo # stdcall (ptr ptr)
309 428 stub OleLoadPictureFileEx
310 429 stub SafeArrayAllocDescriptorEx
311 430 stub SafeArrayCreateEx
312 431 stub SafeArrayCreateVectorEx
313 432 stub SafeArrayGetIID
314 433 stub SafeArrayGetRecordInfo
315 434 stub SafeArraySetIID
316 435 stub SafeArraySetRecordInfo
317 436 stub VarAbs # stdcall (ptr ptr)
318 437 stub VarAdd # stdcall (ptr ptr ptr)
319 438 stub VarAnd # stdcall (ptr ptr ptr)
320 439 stub VarBstrCat # stdcall (ptr ptr ptr)
321 440 stub VarBstrCmp # stdcall (ptr ptr long long)
322 441 stub VarCat # stdcall (ptr ptr ptr)
323 442 stub VarCmp # stdcall (ptr ptr long long)
324 443 stub VarCyAbs
325 444 stub VarCyAdd
326 445 stub VarCyCmp
327 446 stub VarCyCmpR8
328 447 stub VarCyFix
329 448 stub VarCyInt
330 449 stub VarCyMul
331 450 stub VarCyMulI4
332 451 stub VarCyNeg
333 452 stub VarCyRound
334 453 stub VarCySub
335 454 stub VarDateFromUdateEx # stdcall (ptr long long ptr)
336 455 stub VarDecAbs # stdcall (ptr ptr)
337 456 stub VarDecAdd # stdcall (ptr ptr ptr)
338 457 stub VarDecCmp # stdcall (ptr ptr)
339 458 stub VarDecCmpR8 # stdcall (ptr double)
340 459 stub VarDecDiv # stdcall (ptr ptr ptr)
341 460 stub VarDecFix # stdcall (ptr ptr)
342 461 stub VarDecInt # stdcall (ptr ptr)
343 462 stub VarDecMul # stdcall (ptr ptr ptr)
344 463 stub VarDecNeg # stdcall (ptr ptr)
345 464 stub VarDecRound # stdcall (ptr long ptr)
346 465 stub VarDecSub # stdcall (ptr ptr ptr)
347 466 stub VarDiv # stdcall (ptr ptr ptr)
348 467 stub VarEqv # stdcall (ptr ptr ptr)
349 468 stub VarFix # stdcall (ptr ptr)
350 469 stub VarFormat # stdcall (ptr ptr long long long ptr)
351 470 stub VarFormatCurrency # stdcall (ptr long long long long long ptr)
352 471 stub VarFormatDateTime # stdcall (ptr long long ptr)
353 472 stub VarFormatFromTokens # stdcall (ptr ptr ptr long ptr long)
354 473 stub VarFormatNumber # stdcall (ptr long long long long long ptr)
355 474 stub VarFormatPercent # stdcall (ptr long long long long long ptr)
356 475 stub VarIdiv # stdcall (ptr ptr ptr)
357 476 stub VarImp # stdcall (ptr ptr ptr)
358 477 stub VarInt # stdcall (ptr ptr)
359 478 stub VarMod # stdcall (ptr ptr ptr)
360 479 stub VarMonthName # stdcall (long long long ptr)
361 480 stub VarMul # stdcall (ptr ptr ptr)
362 481 stub VarNeg # stdcall (ptr ptr)
363 482 stub VarNot # stdcall (ptr ptr)
364 483 stub VarOr # stdcall (ptr ptr ptr)
365 484 stub VarPow # stdcall (ptr ptr ptr)
366 485 stub VarR4CmpR8
367 486 stub VarR8Pow # stdcall (double double ptr)
368 487 stub VarR8Round # stdcall (double long ptr)
369 488 stub VarRound # stdcall (ptr long ptr)
370 489 stub VarSub # stdcall (ptr ptr ptr)
371 490 stub VarTokenizeFormatString # stdcall (ptr ptr long long long long ptr)
372 491 stub VarWeekdayName # stdcall (long long long long ptr)
373 492 stub VarXor # stdcall (ptr ptr ptr)