mirror of
https://github.com/reactos/reactos.git
synced 2025-07-23 09:03:50 +00:00
Sync to Wine-20050830:
Francois Gouget <fgouget@free.fr> - Change some Dll* functions so they are exported by name like on Windows. Update the documentation accordingly. Robert Shearman <rob@codeweavers.com> - Remove redundant QueryInterface in marshal_interface - the object is always queried later on for the correct interface of the object. - Make sure to Release the marshaled pointer in the typelib marshaler once it is no longer required. - Shunt some trace statements over to the typelib channel that aren't really much use except in debugging typelib parsing. - Make sure to release a reference to being returned as VariantCopyInd takes one for us. - Revert to previous behaviour of detecting names with non-alphanumeric characters as ones with offsets, but add in a special case for an empty name. - A name in an SLTG typelib only beginning with 0xff is the indicator of an offset, instead of any non alpha-numeric character. - Any dispatch interface should have the fixed vtable size, not just dual ones. - Warn when ITypeInfo_GetDocumentation fails. - Make typelib marshaler use IRpcChannelBuffer::GetBuffer if possible. Alexandre Julliard <julliard@winehq.org> - Replace the ICOM_THIS_From macros by inline functions. - Moved a number of definitions that are not needed in other files into vartype.c - Removed some unnecessary macros, and make some functions static. - Get rid of the almost empty tmarshal.h file. Vincent Beron <vberon@mecano.gme.usherb.ca> - Uniformize DllMain TRACEing across dlls. Mike McCormack <mike@codeweavers.com> - Fix gcc 4.0 warnings. - gcc 4.0 warning fixes. Michael Stefaniuc <mstefani@redhat.de> - Implement IPicture::get_hPal for PICTYPE_BITMAP. - VarAdd, VarMul: I4 overflows to R8 and not I8 even if the result would fit in I8. Fix tests. - Document a brokeness in the handling of I8 numbers in VarNumFromParseNum. Fix tests. Walt Ogburn <reuben@ugcs.caltech.edu> - When applying logical / himetric ratio to olefont sizes, must divide by the standard ratio 72 / 2540. svn path=/trunk/; revision=17679
This commit is contained in:
parent
05aeafcb9c
commit
52a92a993f
16 changed files with 1187 additions and 1237 deletions
|
@ -1,135 +1,135 @@
|
||||||
1 stub DLLGETCLASSOBJECT
|
1 stub DLLGETCLASSOBJECT
|
||||||
2 pascal SysAllocString(str) SysAllocString16
|
2 pascal SysAllocString(str) SysAllocString16
|
||||||
3 pascal SysReallocString(ptr str) SysReAllocString16
|
3 pascal SysReallocString(ptr str) SysReAllocString16
|
||||||
4 pascal SysAllocStringLen(str word) SysAllocStringLen16
|
4 pascal SysAllocStringLen(str word) SysAllocStringLen16
|
||||||
5 pascal SysReAllocStringLen(ptr str word) SysReAllocStringLen16
|
5 pascal SysReAllocStringLen(ptr str word) SysReAllocStringLen16
|
||||||
6 pascal SysFreeString(segstr) SysFreeString16
|
6 pascal SysFreeString(segstr) SysFreeString16
|
||||||
7 pascal SysStringLen(segstr) SysStringLen16
|
7 pascal SysStringLen(segstr) SysStringLen16
|
||||||
8 stub VARIANTINIT
|
8 stub VARIANTINIT
|
||||||
9 stub VARIANTCLEAR
|
9 stub VARIANTCLEAR
|
||||||
10 stub VARIANTCOPY
|
10 stub VARIANTCOPY
|
||||||
11 stub VARIANTCOPYIND
|
11 stub VARIANTCOPYIND
|
||||||
12 stub VARIANTCHANGETYPE
|
12 stub VARIANTCHANGETYPE
|
||||||
13 stub VARIANTTIMETODOSDATETIME
|
13 stub VARIANTTIMETODOSDATETIME
|
||||||
14 stub DOSDATETIMETOVARIANTTIME
|
14 stub DOSDATETIMETOVARIANTTIME
|
||||||
15 stub SAFEARRAYCREATE
|
15 stub SAFEARRAYCREATE
|
||||||
16 stub SAFEARRAYDESTROY
|
16 stub SAFEARRAYDESTROY
|
||||||
17 stub SAFEARRAYGETDIM
|
17 stub SAFEARRAYGETDIM
|
||||||
18 stub SAFEARRAYGETELEMSIZE
|
18 stub SAFEARRAYGETELEMSIZE
|
||||||
19 stub SAFEARRAYGETUBOUND
|
19 stub SAFEARRAYGETUBOUND
|
||||||
20 stub SAFEARRAYGETLBOUND
|
20 stub SAFEARRAYGETLBOUND
|
||||||
21 stub SAFEARRAYLOCK
|
21 stub SAFEARRAYLOCK
|
||||||
22 stub SAFEARRAYUNLOCK
|
22 stub SAFEARRAYUNLOCK
|
||||||
23 stub SAFEARRAYACCESSDATA
|
23 stub SAFEARRAYACCESSDATA
|
||||||
24 stub SAFEARRAYUNACCESSDATA
|
24 stub SAFEARRAYUNACCESSDATA
|
||||||
25 stub SAFEARRAYGETELEMENT
|
25 stub SAFEARRAYGETELEMENT
|
||||||
26 stub SAFEARRAYPUTELEMENT
|
26 stub SAFEARRAYPUTELEMENT
|
||||||
27 stub SAFEARRAYCOPY
|
27 stub SAFEARRAYCOPY
|
||||||
28 stub DISPGETPARAM
|
28 stub DISPGETPARAM
|
||||||
29 stub DISPGETIDSOFNAMES
|
29 stub DISPGETIDSOFNAMES
|
||||||
30 stub DISPINVOKE
|
30 stub DISPINVOKE
|
||||||
31 pascal CreateDispTypeInfo(ptr long ptr) CreateDispTypeInfo16
|
31 pascal CreateDispTypeInfo(ptr long ptr) CreateDispTypeInfo16
|
||||||
32 pascal CreateStdDispatch(ptr ptr ptr ptr) CreateStdDispatch16
|
32 pascal CreateStdDispatch(ptr ptr ptr ptr) CreateStdDispatch16
|
||||||
33 stub _IID_IDISPATCH
|
33 stub _IID_IDISPATCH
|
||||||
34 stub _IID_IENUMVARIANT
|
34 stub _IID_IENUMVARIANT
|
||||||
35 pascal RegisterActiveObject(ptr ptr long ptr) RegisterActiveObject16
|
35 pascal RegisterActiveObject(ptr ptr long ptr) RegisterActiveObject16
|
||||||
36 stub REVOKEACTIVEOBJECT
|
36 stub REVOKEACTIVEOBJECT
|
||||||
37 stub GETACTIVEOBJECT
|
37 stub GETACTIVEOBJECT
|
||||||
38 stub SAFEARRAYALLOCDESCRIPTOR
|
38 stub SAFEARRAYALLOCDESCRIPTOR
|
||||||
39 stub SAFEARRAYALLOCDATA
|
39 stub SAFEARRAYALLOCDATA
|
||||||
40 stub SAFEARRAYDESTROYDESCRIPTOR
|
40 stub SAFEARRAYDESTROYDESCRIPTOR
|
||||||
41 stub SAFEARRAYDESTROYDATA
|
41 stub SAFEARRAYDESTROYDATA
|
||||||
42 stub SAFEARRAYREDIM
|
42 stub SAFEARRAYREDIM
|
||||||
43 stub VARI2FROMI4
|
43 stub VARI2FROMI4
|
||||||
44 stub VARI2FROMR4
|
44 stub VARI2FROMR4
|
||||||
45 stub VARI2FROMR8
|
45 stub VARI2FROMR8
|
||||||
46 stub VARI2FROMCY
|
46 stub VARI2FROMCY
|
||||||
47 stub VARI2FROMDATE
|
47 stub VARI2FROMDATE
|
||||||
48 stub VARI2FROMSTR
|
48 stub VARI2FROMSTR
|
||||||
49 stub VARI2FROMDISP
|
49 stub VARI2FROMDISP
|
||||||
50 stub VARI2FROMBOOL
|
50 stub VARI2FROMBOOL
|
||||||
51 stub VARI4FROMI2
|
51 stub VARI4FROMI2
|
||||||
52 stub VARI4FROMR4
|
52 stub VARI4FROMR4
|
||||||
53 stub VARI4FROMR8
|
53 stub VARI4FROMR8
|
||||||
54 stub VARI4FROMCY
|
54 stub VARI4FROMCY
|
||||||
55 stub VARI4FROMDATE
|
55 stub VARI4FROMDATE
|
||||||
56 stub VARI4FROMSTR
|
56 stub VARI4FROMSTR
|
||||||
57 stub VARI4FROMDISP
|
57 stub VARI4FROMDISP
|
||||||
58 stub VARI4FROMBOOL
|
58 stub VARI4FROMBOOL
|
||||||
59 stub VARR4FROMI2
|
59 stub VARR4FROMI2
|
||||||
60 stub VARR4FROMI4
|
60 stub VARR4FROMI4
|
||||||
61 stub VARR4FROMR8
|
61 stub VARR4FROMR8
|
||||||
62 stub VARR4FROMCY
|
62 stub VARR4FROMCY
|
||||||
63 stub VARR4FROMDATE
|
63 stub VARR4FROMDATE
|
||||||
64 stub VARR4FROMSTR
|
64 stub VARR4FROMSTR
|
||||||
65 stub VARR4FROMDISP
|
65 stub VARR4FROMDISP
|
||||||
66 stub VARR4FROMBOOL
|
66 stub VARR4FROMBOOL
|
||||||
67 stub VARR8FROMI2
|
67 stub VARR8FROMI2
|
||||||
68 stub VARR8FROMI4
|
68 stub VARR8FROMI4
|
||||||
69 stub VARR8FROMR4
|
69 stub VARR8FROMR4
|
||||||
70 stub VARR8FROMCY
|
70 stub VARR8FROMCY
|
||||||
71 stub VARR8FROMDATE
|
71 stub VARR8FROMDATE
|
||||||
72 stub VARR8FROMSTR
|
72 stub VARR8FROMSTR
|
||||||
73 stub VARR8FROMDISP
|
73 stub VARR8FROMDISP
|
||||||
74 stub VARR8FROMBOOL
|
74 stub VARR8FROMBOOL
|
||||||
75 stub VARDATEFROMI2
|
75 stub VARDATEFROMI2
|
||||||
76 stub VARDATEFROMI4
|
76 stub VARDATEFROMI4
|
||||||
77 stub VARDATEFROMR4
|
77 stub VARDATEFROMR4
|
||||||
78 stub VARDATEFROMR8
|
78 stub VARDATEFROMR8
|
||||||
79 stub VARDATEFROMCY
|
79 stub VARDATEFROMCY
|
||||||
80 stub VARDATEFROMSTR
|
80 stub VARDATEFROMSTR
|
||||||
81 stub VARDATEFROMDISP
|
81 stub VARDATEFROMDISP
|
||||||
82 stub VARDATEFROMBOOL
|
82 stub VARDATEFROMBOOL
|
||||||
83 stub VARCYFROMI2
|
83 stub VARCYFROMI2
|
||||||
84 stub VARCYFROMI4
|
84 stub VARCYFROMI4
|
||||||
85 stub VARCYFROMR4
|
85 stub VARCYFROMR4
|
||||||
86 stub VARCYFROMR8
|
86 stub VARCYFROMR8
|
||||||
87 stub VARCYFROMDATE
|
87 stub VARCYFROMDATE
|
||||||
88 stub VARCYFROMSTR
|
88 stub VARCYFROMSTR
|
||||||
89 stub VARCYFROMDISP
|
89 stub VARCYFROMDISP
|
||||||
90 stub VARCYFROMBOOL
|
90 stub VARCYFROMBOOL
|
||||||
91 stub VARBSTRFROMI2
|
91 stub VARBSTRFROMI2
|
||||||
92 stub VARBSTRFROMI4
|
92 stub VARBSTRFROMI4
|
||||||
93 stub VARBSTRFROMR4
|
93 stub VARBSTRFROMR4
|
||||||
94 stub VARBSTRFROMR8
|
94 stub VARBSTRFROMR8
|
||||||
95 stub VARBSTRFROMCY
|
95 stub VARBSTRFROMCY
|
||||||
96 stub VARBSTRFROMDATE
|
96 stub VARBSTRFROMDATE
|
||||||
97 stub VARBSTRFROMDISP
|
97 stub VARBSTRFROMDISP
|
||||||
98 stub VARBSTRFROMBOOL
|
98 stub VARBSTRFROMBOOL
|
||||||
99 stub VARBOOLFROMI2
|
99 stub VARBOOLFROMI2
|
||||||
100 stub VARBOOLFROMI4
|
100 stub VARBOOLFROMI4
|
||||||
101 stub VARBOOLFROMR4
|
101 stub VARBOOLFROMR4
|
||||||
102 stub VARBOOLFROMR8
|
102 stub VARBOOLFROMR8
|
||||||
103 stub VARBOOLFROMDATE
|
103 stub VARBOOLFROMDATE
|
||||||
104 stub VARBOOLFROMCY
|
104 stub VARBOOLFROMCY
|
||||||
105 stub VARBOOLFROMSTR
|
105 stub VARBOOLFROMSTR
|
||||||
106 stub VARBOOLFROMDISP
|
106 stub VARBOOLFROMDISP
|
||||||
107 stub DOINVOKEMETHOD
|
107 stub DOINVOKEMETHOD
|
||||||
108 stub VARIANTCHANGETYPEEX
|
108 stub VARIANTCHANGETYPEEX
|
||||||
109 stub SAFEARRAYPTROFINDEX
|
109 stub SAFEARRAYPTROFINDEX
|
||||||
110 stub SETERRORINFO
|
110 stub SETERRORINFO
|
||||||
111 stub GETERRORINFO
|
111 stub GETERRORINFO
|
||||||
112 stub CREATEERRORINFO
|
112 stub CREATEERRORINFO
|
||||||
113 stub _IID_IERRORINFO
|
113 stub _IID_IERRORINFO
|
||||||
114 stub _IID_ICREATEERRORINFO
|
114 stub _IID_ICREATEERRORINFO
|
||||||
115 stub _IID_ISUPPORTERRORINFO
|
115 stub _IID_ISUPPORTERRORINFO
|
||||||
116 stub VARUI1FROMI2
|
116 stub VARUI1FROMI2
|
||||||
117 stub VARUI1FROMI4
|
117 stub VARUI1FROMI4
|
||||||
118 stub VARUI1FROMR4
|
118 stub VARUI1FROMR4
|
||||||
119 stub VARUI1FROMR8
|
119 stub VARUI1FROMR8
|
||||||
120 stub VARUI1FROMCY
|
120 stub VARUI1FROMCY
|
||||||
121 stub VARUI1FROMDATE
|
121 stub VARUI1FROMDATE
|
||||||
122 stub VARUI1FROMSTR
|
122 stub VARUI1FROMSTR
|
||||||
123 stub VARUI1FROMDISP
|
123 stub VARUI1FROMDISP
|
||||||
124 stub VARUI1FROMBOOL
|
124 stub VARUI1FROMBOOL
|
||||||
125 stub VARI2FROMUI1
|
125 stub VARI2FROMUI1
|
||||||
126 stub VARI4FROMUI1
|
126 stub VARI4FROMUI1
|
||||||
127 stub VARR4FROMUI1
|
127 stub VARR4FROMUI1
|
||||||
128 stub VARR8FROMUI1
|
128 stub VARR8FROMUI1
|
||||||
129 stub VARDATEFROMUI1
|
129 stub VARDATEFROMUI1
|
||||||
130 stub VARCYFROMUI1
|
130 stub VARCYFROMUI1
|
||||||
131 stub VARBSTRFROMUI1
|
131 stub VARBSTRFROMUI1
|
||||||
132 stub VARBOOLFROMUI1
|
132 stub VARBOOLFROMUI1
|
||||||
133 stub DLLCANUNLOADNOW
|
133 stub DLLCANUNLOADNOW
|
||||||
#134 stub WEP
|
#134 stub WEP
|
||||||
#135 stub ___EXPORTEDSTUB
|
#135 stub ___EXPORTEDSTUB
|
||||||
|
|
|
@ -32,8 +32,7 @@
|
||||||
#include "ole2.h"
|
#include "ole2.h"
|
||||||
#include "olectl.h"
|
#include "olectl.h"
|
||||||
#include "oleauto.h"
|
#include "oleauto.h"
|
||||||
|
#include "typelib.h"
|
||||||
#include "tmarshal.h"
|
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
|
||||||
|
@ -701,7 +700,7 @@ extern void _get_STDFONT_CF(LPVOID);
|
||||||
extern void _get_STDPIC_CF(LPVOID);
|
extern void _get_STDPIC_CF(LPVOID);
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DllGetClassObject (OLEAUT32.1)
|
* DllGetClassObject (OLEAUT32.@)
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
||||||
{
|
{
|
||||||
|
@ -727,7 +726,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
||||||
return OLEAUTPS_DllGetClassObject(&CLSID_PSDispatch, iid, ppv);
|
return OLEAUTPS_DllGetClassObject(&CLSID_PSDispatch, iid, ppv);
|
||||||
}
|
}
|
||||||
if (IsEqualGUID(rclsid,&CLSID_PSOAInterface)) {
|
if (IsEqualGUID(rclsid,&CLSID_PSOAInterface)) {
|
||||||
if (S_OK==TypeLibFac_DllGetClassObject(rclsid,iid,ppv))
|
if (S_OK==TMARSHAL_DllGetClassObject(rclsid,iid,ppv))
|
||||||
return S_OK;
|
return S_OK;
|
||||||
/*FALLTHROUGH*/
|
/*FALLTHROUGH*/
|
||||||
}
|
}
|
||||||
|
@ -736,7 +735,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DllCanUnloadNow (OLEAUT32.410)
|
* DllCanUnloadNow (OLEAUT32.@)
|
||||||
*
|
*
|
||||||
* Determine if this dll can be unloaded from the callers address space.
|
* Determine if this dll can be unloaded from the callers address space.
|
||||||
*
|
*
|
||||||
|
@ -756,7 +755,7 @@ HRESULT WINAPI DllCanUnloadNow(void)
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved)
|
BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved)
|
||||||
{
|
{
|
||||||
TRACE("(%p,%lu,%p)\n", hInstDll, fdwReason, lpvReserved);
|
TRACE("(%p,%ld,%p)\n", hInstDll, fdwReason, lpvReserved);
|
||||||
|
|
||||||
switch (fdwReason) {
|
switch (fdwReason) {
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
|
|
|
@ -1,416 +1,417 @@
|
||||||
1 stdcall -private DllGetClassObject(ptr ptr ptr)
|
2 stdcall SysAllocString(wstr)
|
||||||
2 stdcall SysAllocString(wstr)
|
3 stdcall SysReAllocString(ptr wstr)
|
||||||
3 stdcall SysReAllocString(ptr wstr)
|
4 stdcall SysAllocStringLen(wstr long)
|
||||||
4 stdcall SysAllocStringLen(wstr long)
|
5 stdcall SysReAllocStringLen(ptr ptr long)
|
||||||
5 stdcall SysReAllocStringLen(ptr ptr long)
|
6 stdcall SysFreeString(wstr)
|
||||||
6 stdcall SysFreeString(wstr)
|
7 stdcall SysStringLen(wstr)
|
||||||
7 stdcall SysStringLen(wstr)
|
8 stdcall VariantInit(ptr)
|
||||||
8 stdcall VariantInit(ptr)
|
9 stdcall VariantClear(ptr)
|
||||||
9 stdcall VariantClear(ptr)
|
10 stdcall VariantCopy(ptr ptr)
|
||||||
10 stdcall VariantCopy(ptr ptr)
|
11 stdcall VariantCopyInd(ptr ptr)
|
||||||
11 stdcall VariantCopyInd(ptr ptr)
|
12 stdcall VariantChangeType(ptr ptr long long)
|
||||||
12 stdcall VariantChangeType(ptr ptr long long)
|
13 stdcall VariantTimeToDosDateTime(double ptr ptr)
|
||||||
13 stdcall VariantTimeToDosDateTime(double ptr ptr)
|
14 stdcall DosDateTimeToVariantTime(long long ptr)
|
||||||
14 stdcall DosDateTimeToVariantTime(long long ptr)
|
15 stdcall SafeArrayCreate(long long ptr)
|
||||||
15 stdcall SafeArrayCreate(long long ptr)
|
16 stdcall SafeArrayDestroy(ptr)
|
||||||
16 stdcall SafeArrayDestroy(ptr)
|
17 stdcall SafeArrayGetDim(ptr)
|
||||||
17 stdcall SafeArrayGetDim(ptr)
|
18 stdcall SafeArrayGetElemsize(ptr)
|
||||||
18 stdcall SafeArrayGetElemsize(ptr)
|
19 stdcall SafeArrayGetUBound(ptr long long)
|
||||||
19 stdcall SafeArrayGetUBound(ptr long long)
|
20 stdcall SafeArrayGetLBound(ptr long long)
|
||||||
20 stdcall SafeArrayGetLBound(ptr long long)
|
21 stdcall SafeArrayLock(ptr)
|
||||||
21 stdcall SafeArrayLock(ptr)
|
22 stdcall SafeArrayUnlock(ptr)
|
||||||
22 stdcall SafeArrayUnlock(ptr)
|
23 stdcall SafeArrayAccessData(ptr ptr)
|
||||||
23 stdcall SafeArrayAccessData(ptr ptr)
|
24 stdcall SafeArrayUnaccessData(ptr)
|
||||||
24 stdcall SafeArrayUnaccessData(ptr)
|
25 stdcall SafeArrayGetElement(ptr ptr ptr)
|
||||||
25 stdcall SafeArrayGetElement(ptr ptr ptr)
|
26 stdcall SafeArrayPutElement(ptr ptr ptr)
|
||||||
26 stdcall SafeArrayPutElement(ptr ptr ptr)
|
27 stdcall SafeArrayCopy(ptr ptr)
|
||||||
27 stdcall SafeArrayCopy(ptr ptr)
|
28 stdcall DispGetParam(ptr long long ptr ptr)
|
||||||
28 stdcall DispGetParam(ptr long long ptr ptr)
|
29 stdcall DispGetIDsOfNames(ptr ptr long ptr)
|
||||||
29 stdcall DispGetIDsOfNames(ptr ptr long ptr)
|
30 stdcall DispInvoke(ptr ptr long long ptr ptr ptr ptr)
|
||||||
30 stdcall DispInvoke(ptr ptr long long ptr ptr ptr ptr)
|
31 stdcall CreateDispTypeInfo(ptr long ptr)
|
||||||
31 stdcall CreateDispTypeInfo(ptr long ptr)
|
32 stdcall CreateStdDispatch(ptr ptr ptr ptr)
|
||||||
32 stdcall CreateStdDispatch(ptr ptr ptr ptr)
|
33 stdcall RegisterActiveObject(ptr ptr long ptr)
|
||||||
33 stdcall RegisterActiveObject(ptr ptr long ptr)
|
34 stdcall RevokeActiveObject(long ptr)
|
||||||
34 stdcall RevokeActiveObject(long ptr)
|
35 stdcall GetActiveObject(ptr ptr ptr)
|
||||||
35 stdcall GetActiveObject(ptr ptr ptr)
|
36 stdcall SafeArrayAllocDescriptor(long ptr)
|
||||||
36 stdcall SafeArrayAllocDescriptor(long ptr)
|
37 stdcall SafeArrayAllocData(ptr)
|
||||||
37 stdcall SafeArrayAllocData(ptr)
|
38 stdcall SafeArrayDestroyDescriptor(ptr)
|
||||||
38 stdcall SafeArrayDestroyDescriptor(ptr)
|
39 stdcall SafeArrayDestroyData(ptr)
|
||||||
39 stdcall SafeArrayDestroyData(ptr)
|
40 stdcall SafeArrayRedim(ptr ptr)
|
||||||
40 stdcall SafeArrayRedim(ptr ptr)
|
41 stdcall SafeArrayAllocDescriptorEx(long long ptr)
|
||||||
41 stdcall SafeArrayAllocDescriptorEx(long long ptr)
|
42 stdcall SafeArrayCreateEx(long long ptr ptr)
|
||||||
42 stdcall SafeArrayCreateEx(long long ptr ptr)
|
43 stdcall SafeArrayCreateVectorEx(long long long ptr)
|
||||||
43 stdcall SafeArrayCreateVectorEx(long long long ptr)
|
44 stdcall SafeArraySetRecordInfo(ptr ptr)
|
||||||
44 stdcall SafeArraySetRecordInfo(ptr ptr)
|
45 stdcall SafeArrayGetRecordInfo(ptr ptr)
|
||||||
45 stdcall SafeArrayGetRecordInfo(ptr ptr)
|
46 stdcall VarParseNumFromStr(wstr long long ptr ptr)
|
||||||
46 stdcall VarParseNumFromStr(wstr long long ptr ptr)
|
47 stdcall VarNumFromParseNum(ptr ptr long ptr)
|
||||||
47 stdcall VarNumFromParseNum(ptr ptr long ptr)
|
48 stdcall VarI2FromUI1(long ptr)
|
||||||
48 stdcall VarI2FromUI1(long ptr)
|
49 stdcall VarI2FromI4(long ptr)
|
||||||
49 stdcall VarI2FromI4(long ptr)
|
50 stdcall VarI2FromR4(long ptr)
|
||||||
50 stdcall VarI2FromR4(long ptr)
|
51 stdcall VarI2FromR8(double ptr)
|
||||||
51 stdcall VarI2FromR8(double ptr)
|
52 stdcall VarI2FromCy(long long ptr)
|
||||||
52 stdcall VarI2FromCy(long long ptr)
|
53 stdcall VarI2FromDate(double ptr)
|
||||||
53 stdcall VarI2FromDate(double ptr)
|
54 stdcall VarI2FromStr(wstr long long ptr)
|
||||||
54 stdcall VarI2FromStr(wstr long long ptr)
|
55 stdcall VarI2FromDisp(ptr long ptr)
|
||||||
55 stdcall VarI2FromDisp(ptr long ptr)
|
56 stdcall VarI2FromBool(long ptr)
|
||||||
56 stdcall VarI2FromBool(long ptr)
|
57 stdcall SafeArraySetIID(ptr ptr)
|
||||||
57 stdcall SafeArraySetIID(ptr ptr)
|
58 stdcall VarI4FromUI1(long ptr)
|
||||||
58 stdcall VarI4FromUI1(long ptr)
|
59 stdcall VarI4FromI2(long ptr)
|
||||||
59 stdcall VarI4FromI2(long ptr)
|
60 stdcall VarI4FromR4(long ptr)
|
||||||
60 stdcall VarI4FromR4(long ptr)
|
61 stdcall VarI4FromR8(double ptr)
|
||||||
61 stdcall VarI4FromR8(double ptr)
|
62 stdcall VarI4FromCy(long long ptr)
|
||||||
62 stdcall VarI4FromCy(long long ptr)
|
63 stdcall VarI4FromDate(double ptr)
|
||||||
63 stdcall VarI4FromDate(double ptr)
|
64 stdcall VarI4FromStr(wstr long long ptr)
|
||||||
64 stdcall VarI4FromStr(wstr long long ptr)
|
65 stdcall VarI4FromDisp(ptr long ptr)
|
||||||
65 stdcall VarI4FromDisp(ptr long ptr)
|
66 stdcall VarI4FromBool(long ptr)
|
||||||
66 stdcall VarI4FromBool(long ptr)
|
67 stdcall SafeArrayGetIID(ptr ptr)
|
||||||
67 stdcall SafeArrayGetIID(ptr ptr)
|
68 stdcall VarR4FromUI1(long ptr)
|
||||||
68 stdcall VarR4FromUI1(long ptr)
|
69 stdcall VarR4FromI2(long ptr)
|
||||||
69 stdcall VarR4FromI2(long ptr)
|
70 stdcall VarR4FromI4(long ptr)
|
||||||
70 stdcall VarR4FromI4(long ptr)
|
71 stdcall VarR4FromR8(double ptr)
|
||||||
71 stdcall VarR4FromR8(double ptr)
|
72 stdcall VarR4FromCy(long long ptr)
|
||||||
72 stdcall VarR4FromCy(long long ptr)
|
73 stdcall VarR4FromDate(double ptr)
|
||||||
73 stdcall VarR4FromDate(double ptr)
|
74 stdcall VarR4FromStr(wstr long long ptr)
|
||||||
74 stdcall VarR4FromStr(wstr long long ptr)
|
75 stdcall VarR4FromDisp(ptr long ptr)
|
||||||
75 stdcall VarR4FromDisp(ptr long ptr)
|
76 stdcall VarR4FromBool(long ptr)
|
||||||
76 stdcall VarR4FromBool(long ptr)
|
77 stdcall SafeArrayGetVartype(ptr ptr)
|
||||||
77 stdcall SafeArrayGetVartype(ptr ptr)
|
78 stdcall VarR8FromUI1(long ptr)
|
||||||
78 stdcall VarR8FromUI1(long ptr)
|
79 stdcall VarR8FromI2(long ptr)
|
||||||
79 stdcall VarR8FromI2(long ptr)
|
80 stdcall VarR8FromI4(long ptr)
|
||||||
80 stdcall VarR8FromI4(long ptr)
|
81 stdcall VarR8FromR4(long ptr)
|
||||||
81 stdcall VarR8FromR4(long ptr)
|
82 stdcall VarR8FromCy(long long ptr)
|
||||||
82 stdcall VarR8FromCy(long long ptr)
|
83 stdcall VarR8FromDate(double ptr)
|
||||||
83 stdcall VarR8FromDate(double ptr)
|
84 stdcall VarR8FromStr(wstr long long ptr)
|
||||||
84 stdcall VarR8FromStr(wstr long long ptr)
|
85 stdcall VarR8FromDisp(ptr long ptr)
|
||||||
85 stdcall VarR8FromDisp(ptr long ptr)
|
86 stdcall VarR8FromBool(long ptr)
|
||||||
86 stdcall VarR8FromBool(long ptr)
|
87 stdcall VarFormat(ptr ptr long long long ptr)
|
||||||
87 stdcall VarFormat(ptr ptr long long long ptr)
|
88 stdcall VarDateFromUI1(long ptr)
|
||||||
88 stdcall VarDateFromUI1(long ptr)
|
89 stdcall VarDateFromI2(long ptr)
|
||||||
89 stdcall VarDateFromI2(long ptr)
|
90 stdcall VarDateFromI4(long ptr)
|
||||||
90 stdcall VarDateFromI4(long ptr)
|
91 stdcall VarDateFromR4(long ptr)
|
||||||
91 stdcall VarDateFromR4(long ptr)
|
92 stdcall VarDateFromR8(double ptr)
|
||||||
92 stdcall VarDateFromR8(double ptr)
|
93 stdcall VarDateFromCy(long long ptr)
|
||||||
93 stdcall VarDateFromCy(long long ptr)
|
94 stdcall VarDateFromStr(wstr long long ptr)
|
||||||
94 stdcall VarDateFromStr(wstr long long ptr)
|
95 stdcall VarDateFromDisp(ptr long ptr)
|
||||||
95 stdcall VarDateFromDisp(ptr long ptr)
|
96 stdcall VarDateFromBool(long ptr)
|
||||||
96 stdcall VarDateFromBool(long ptr)
|
97 stdcall VarFormatDateTime(ptr long long ptr)
|
||||||
97 stdcall VarFormatDateTime(ptr long long ptr)
|
98 stdcall VarCyFromUI1(long ptr)
|
||||||
98 stdcall VarCyFromUI1(long ptr)
|
99 stdcall VarCyFromI2(long ptr)
|
||||||
99 stdcall VarCyFromI2(long ptr)
|
100 stdcall VarCyFromI4(long ptr)
|
||||||
100 stdcall VarCyFromI4(long ptr)
|
101 stdcall VarCyFromR4(long ptr)
|
||||||
101 stdcall VarCyFromR4(long ptr)
|
102 stdcall VarCyFromR8(double ptr)
|
||||||
102 stdcall VarCyFromR8(double ptr)
|
103 stdcall VarCyFromDate(double ptr)
|
||||||
103 stdcall VarCyFromDate(double ptr)
|
104 stdcall VarCyFromStr(wstr long long ptr)
|
||||||
104 stdcall VarCyFromStr(wstr long long ptr)
|
105 stdcall VarCyFromDisp(ptr long ptr)
|
||||||
105 stdcall VarCyFromDisp(ptr long ptr)
|
106 stdcall VarCyFromBool(long ptr)
|
||||||
106 stdcall VarCyFromBool(long ptr)
|
107 stdcall VarFormatNumber(ptr long long long long long ptr)
|
||||||
107 stdcall VarFormatNumber(ptr long long long long long ptr)
|
108 stdcall VarBstrFromUI1(long long long ptr)
|
||||||
108 stdcall VarBstrFromUI1(long long long ptr)
|
109 stdcall VarBstrFromI2(long long long ptr)
|
||||||
109 stdcall VarBstrFromI2(long long long ptr)
|
110 stdcall VarBstrFromI4(long long long ptr)
|
||||||
110 stdcall VarBstrFromI4(long long long ptr)
|
111 stdcall VarBstrFromR4(long long long ptr)
|
||||||
111 stdcall VarBstrFromR4(long long long ptr)
|
112 stdcall VarBstrFromR8(double long long ptr)
|
||||||
112 stdcall VarBstrFromR8(double long long ptr)
|
113 stdcall VarBstrFromCy(long long long long ptr)
|
||||||
113 stdcall VarBstrFromCy(long long long long ptr)
|
114 stdcall VarBstrFromDate(double long long ptr)
|
||||||
114 stdcall VarBstrFromDate(double long long ptr)
|
115 stub VarBstrFromDisp
|
||||||
115 stub VarBstrFromDisp
|
116 stdcall VarBstrFromBool(long long long ptr)
|
||||||
116 stdcall VarBstrFromBool(long long long ptr)
|
117 stdcall VarFormatPercent(ptr long long long long long ptr)
|
||||||
117 stdcall VarFormatPercent(ptr long long long long long ptr)
|
118 stdcall VarBoolFromUI1(long ptr)
|
||||||
118 stdcall VarBoolFromUI1(long ptr)
|
119 stdcall VarBoolFromI2(long ptr)
|
||||||
119 stdcall VarBoolFromI2(long ptr)
|
120 stdcall VarBoolFromI4(long ptr)
|
||||||
120 stdcall VarBoolFromI4(long ptr)
|
121 stdcall VarBoolFromR4(long ptr)
|
||||||
121 stdcall VarBoolFromR4(long ptr)
|
122 stdcall VarBoolFromR8(double ptr)
|
||||||
122 stdcall VarBoolFromR8(double ptr)
|
123 stdcall VarBoolFromDate(double ptr)
|
||||||
123 stdcall VarBoolFromDate(double ptr)
|
124 stdcall VarBoolFromCy(long long ptr)
|
||||||
124 stdcall VarBoolFromCy(long long ptr)
|
125 stdcall VarBoolFromStr(wstr long long ptr)
|
||||||
125 stdcall VarBoolFromStr(wstr long long ptr)
|
126 stdcall VarBoolFromDisp(ptr long ptr)
|
||||||
126 stdcall VarBoolFromDisp(ptr long ptr)
|
127 stdcall VarFormatCurrency(ptr long long long long long ptr)
|
||||||
127 stdcall VarFormatCurrency(ptr long long long long long ptr)
|
128 stub VarWeekdayName # stdcall (long long long long ptr)
|
||||||
128 stub VarWeekdayName # stdcall (long long long long ptr)
|
129 stdcall VarMonthName(long long long ptr)
|
||||||
129 stdcall VarMonthName(long long long ptr)
|
130 stdcall VarUI1FromI2(long ptr)
|
||||||
130 stdcall VarUI1FromI2(long ptr)
|
131 stdcall VarUI1FromI4(long ptr)
|
||||||
131 stdcall VarUI1FromI4(long ptr)
|
132 stdcall VarUI1FromR4(long ptr)
|
||||||
132 stdcall VarUI1FromR4(long ptr)
|
133 stdcall VarUI1FromR8(double ptr)
|
||||||
133 stdcall VarUI1FromR8(double ptr)
|
134 stdcall VarUI1FromCy(long long ptr)
|
||||||
134 stdcall VarUI1FromCy(long long ptr)
|
135 stdcall VarUI1FromDate(double ptr)
|
||||||
135 stdcall VarUI1FromDate(double ptr)
|
136 stdcall VarUI1FromStr(wstr long long ptr)
|
||||||
136 stdcall VarUI1FromStr(wstr long long ptr)
|
137 stdcall VarUI1FromDisp(ptr long ptr)
|
||||||
137 stdcall VarUI1FromDisp(ptr long ptr)
|
138 stdcall VarUI1FromBool(long ptr)
|
||||||
138 stdcall VarUI1FromBool(long ptr)
|
139 stdcall VarFormatFromTokens (ptr ptr ptr long ptr long)
|
||||||
139 stdcall VarFormatFromTokens (ptr ptr ptr long ptr long)
|
140 stdcall VarTokenizeFormatString (ptr ptr long long long long ptr)
|
||||||
140 stdcall VarTokenizeFormatString (ptr ptr long long long long ptr)
|
141 stdcall VarAdd(ptr ptr ptr)
|
||||||
141 stdcall VarAdd(ptr ptr ptr)
|
142 stdcall VarAnd(ptr ptr ptr)
|
||||||
142 stdcall VarAnd(ptr ptr ptr)
|
143 stdcall VarDiv(ptr ptr ptr)
|
||||||
143 stdcall VarDiv(ptr ptr ptr)
|
144 stub OACreateTypeLib2
|
||||||
144 stub OACreateTypeLib2
|
146 stdcall DispCallFunc(ptr long long long long ptr ptr ptr)
|
||||||
146 stdcall DispCallFunc(ptr long long long long ptr ptr ptr)
|
147 stdcall VariantChangeTypeEx(ptr ptr long long long)
|
||||||
147 stdcall VariantChangeTypeEx(ptr ptr long long long)
|
148 stdcall SafeArrayPtrOfIndex(ptr ptr ptr)
|
||||||
148 stdcall SafeArrayPtrOfIndex(ptr ptr ptr)
|
149 stdcall SysStringByteLen(ptr)
|
||||||
149 stdcall SysStringByteLen(ptr)
|
150 stdcall SysAllocStringByteLen(ptr long)
|
||||||
150 stdcall SysAllocStringByteLen(ptr long)
|
152 stdcall VarEqv(ptr ptr ptr)
|
||||||
152 stdcall VarEqv(ptr ptr ptr)
|
153 stdcall VarIdiv(ptr ptr ptr)
|
||||||
153 stdcall VarIdiv(ptr ptr ptr)
|
154 stub VarImp # stdcall (ptr ptr ptr)
|
||||||
154 stub VarImp # stdcall (ptr ptr ptr)
|
155 stdcall VarMod(ptr ptr ptr)
|
||||||
155 stdcall VarMod(ptr ptr ptr)
|
156 stdcall VarMul(ptr ptr ptr)
|
||||||
156 stdcall VarMul(ptr ptr ptr)
|
157 stdcall VarOr(ptr ptr ptr)
|
||||||
157 stdcall VarOr(ptr ptr ptr)
|
158 stdcall VarPow(ptr ptr ptr)
|
||||||
158 stdcall VarPow(ptr ptr ptr)
|
159 stdcall VarSub(ptr ptr ptr)
|
||||||
159 stdcall VarSub(ptr ptr ptr)
|
160 stdcall CreateTypeLib(long wstr ptr)
|
||||||
160 stdcall CreateTypeLib(long wstr ptr)
|
161 stdcall LoadTypeLib (wstr ptr)
|
||||||
161 stdcall LoadTypeLib (wstr ptr)
|
162 stdcall LoadRegTypeLib (ptr long long long ptr)
|
||||||
162 stdcall LoadRegTypeLib (ptr long long long ptr)
|
163 stdcall RegisterTypeLib(ptr wstr wstr)
|
||||||
163 stdcall RegisterTypeLib(ptr wstr wstr)
|
164 stdcall QueryPathOfRegTypeLib(ptr long long long ptr)
|
||||||
164 stdcall QueryPathOfRegTypeLib(ptr long long long ptr)
|
165 stdcall LHashValOfNameSys(long long wstr)
|
||||||
165 stdcall LHashValOfNameSys(long long wstr)
|
166 stdcall LHashValOfNameSysA(long long str)
|
||||||
166 stdcall LHashValOfNameSysA(long long str)
|
167 stdcall VarXor(ptr ptr ptr)
|
||||||
167 stdcall VarXor(ptr ptr ptr)
|
168 stdcall VarAbs(ptr ptr)
|
||||||
168 stdcall VarAbs(ptr ptr)
|
169 stdcall VarFix(ptr ptr)
|
||||||
169 stdcall VarFix(ptr ptr)
|
170 stdcall OaBuildVersion()
|
||||||
170 stdcall OaBuildVersion()
|
171 stdcall ClearCustData(ptr)
|
||||||
171 stdcall ClearCustData(ptr)
|
172 stdcall VarInt(ptr ptr)
|
||||||
172 stdcall VarInt(ptr ptr)
|
173 stdcall VarNeg(ptr ptr)
|
||||||
173 stdcall VarNeg(ptr ptr)
|
174 stdcall VarNot(ptr ptr)
|
||||||
174 stdcall VarNot(ptr ptr)
|
175 stdcall VarRound(ptr long ptr)
|
||||||
175 stdcall VarRound(ptr long ptr)
|
176 stdcall VarCmp(ptr ptr long long)
|
||||||
176 stdcall VarCmp(ptr ptr long long)
|
177 stdcall VarDecAdd(ptr ptr ptr)
|
||||||
177 stdcall VarDecAdd(ptr ptr ptr)
|
178 stdcall VarDecDiv(ptr ptr ptr)
|
||||||
178 stdcall VarDecDiv(ptr ptr ptr)
|
179 stdcall VarDecMul(ptr ptr ptr)
|
||||||
179 stdcall VarDecMul(ptr ptr ptr)
|
180 stdcall CreateTypeLib2(long wstr ptr)
|
||||||
180 stdcall CreateTypeLib2(long wstr ptr)
|
181 stdcall VarDecSub(ptr ptr ptr)
|
||||||
181 stdcall VarDecSub(ptr ptr ptr)
|
182 stdcall VarDecAbs(ptr ptr)
|
||||||
182 stdcall VarDecAbs(ptr ptr)
|
183 stdcall LoadTypeLibEx (wstr long ptr)
|
||||||
183 stdcall LoadTypeLibEx (wstr long ptr)
|
184 stdcall SystemTimeToVariantTime(ptr ptr)
|
||||||
184 stdcall SystemTimeToVariantTime(ptr ptr)
|
185 stdcall VariantTimeToSystemTime(double ptr)
|
||||||
185 stdcall VariantTimeToSystemTime(double ptr)
|
186 stdcall UnRegisterTypeLib (ptr long long long long)
|
||||||
186 stdcall UnRegisterTypeLib (ptr long long long long)
|
187 stdcall VarDecFix(ptr ptr)
|
||||||
187 stdcall VarDecFix(ptr ptr)
|
188 stdcall VarDecInt(ptr ptr)
|
||||||
188 stdcall VarDecInt(ptr ptr)
|
189 stdcall VarDecNeg(ptr ptr)
|
||||||
189 stdcall VarDecNeg(ptr ptr)
|
190 stdcall VarDecFromUI1(long ptr)
|
||||||
190 stdcall VarDecFromUI1(long ptr)
|
191 stdcall VarDecFromI2(long ptr)
|
||||||
191 stdcall VarDecFromI2(long ptr)
|
192 stdcall VarDecFromI4(long ptr)
|
||||||
192 stdcall VarDecFromI4(long ptr)
|
193 stdcall VarDecFromR4(long ptr)
|
||||||
193 stdcall VarDecFromR4(long ptr)
|
194 stdcall VarDecFromR8(double ptr)
|
||||||
194 stdcall VarDecFromR8(double ptr)
|
195 stdcall VarDecFromDate(double ptr)
|
||||||
195 stdcall VarDecFromDate(double ptr)
|
196 stdcall VarDecFromCy(long long ptr)
|
||||||
196 stdcall VarDecFromCy(long long ptr)
|
197 stdcall VarDecFromStr(wstr long long ptr)
|
||||||
197 stdcall VarDecFromStr(wstr long long ptr)
|
198 stdcall VarDecFromDisp(ptr long ptr)
|
||||||
198 stdcall VarDecFromDisp(ptr long ptr)
|
199 stdcall VarDecFromBool(long ptr)
|
||||||
199 stdcall VarDecFromBool(long ptr)
|
200 stdcall GetErrorInfo(long ptr) ole32.GetErrorInfo
|
||||||
200 stdcall GetErrorInfo(long ptr) ole32.GetErrorInfo
|
201 stdcall SetErrorInfo(long ptr) ole32.SetErrorInfo
|
||||||
201 stdcall SetErrorInfo(long ptr) ole32.SetErrorInfo
|
202 stdcall CreateErrorInfo(ptr) ole32.CreateErrorInfo
|
||||||
202 stdcall CreateErrorInfo(ptr) ole32.CreateErrorInfo
|
203 stdcall VarDecRound(ptr long ptr)
|
||||||
203 stdcall VarDecRound(ptr long ptr)
|
204 stdcall VarDecCmp(ptr ptr)
|
||||||
204 stdcall VarDecCmp(ptr ptr)
|
205 stdcall VarI2FromI1(long ptr)
|
||||||
205 stdcall VarI2FromI1(long ptr)
|
206 stdcall VarI2FromUI2(long ptr)
|
||||||
206 stdcall VarI2FromUI2(long ptr)
|
207 stdcall VarI2FromUI4(long ptr)
|
||||||
207 stdcall VarI2FromUI4(long ptr)
|
208 stdcall VarI2FromDec(ptr ptr)
|
||||||
208 stdcall VarI2FromDec(ptr ptr)
|
209 stdcall VarI4FromI1(long ptr)
|
||||||
209 stdcall VarI4FromI1(long ptr)
|
210 stdcall VarI4FromUI2(long ptr)
|
||||||
210 stdcall VarI4FromUI2(long ptr)
|
211 stdcall VarI4FromUI4(long ptr)
|
||||||
211 stdcall VarI4FromUI4(long ptr)
|
212 stdcall VarI4FromDec(ptr ptr)
|
||||||
212 stdcall VarI4FromDec(ptr ptr)
|
213 stdcall VarR4FromI1(long ptr)
|
||||||
213 stdcall VarR4FromI1(long ptr)
|
214 stdcall VarR4FromUI2(long ptr)
|
||||||
214 stdcall VarR4FromUI2(long ptr)
|
215 stdcall VarR4FromUI4(long ptr)
|
||||||
215 stdcall VarR4FromUI4(long ptr)
|
216 stdcall VarR4FromDec(ptr ptr)
|
||||||
216 stdcall VarR4FromDec(ptr ptr)
|
217 stdcall VarR8FromI1(long ptr)
|
||||||
217 stdcall VarR8FromI1(long ptr)
|
218 stdcall VarR8FromUI2(long ptr)
|
||||||
218 stdcall VarR8FromUI2(long ptr)
|
219 stdcall VarR8FromUI4(long ptr)
|
||||||
219 stdcall VarR8FromUI4(long ptr)
|
220 stdcall VarR8FromDec(ptr ptr)
|
||||||
220 stdcall VarR8FromDec(ptr ptr)
|
221 stdcall VarDateFromI1(long ptr)
|
||||||
221 stdcall VarDateFromI1(long ptr)
|
222 stdcall VarDateFromUI2(long ptr)
|
||||||
222 stdcall VarDateFromUI2(long ptr)
|
223 stdcall VarDateFromUI4(long ptr)
|
||||||
223 stdcall VarDateFromUI4(long ptr)
|
224 stdcall VarDateFromDec(ptr ptr)
|
||||||
224 stdcall VarDateFromDec(ptr ptr)
|
225 stdcall VarCyFromI1(long ptr)
|
||||||
225 stdcall VarCyFromI1(long ptr)
|
226 stdcall VarCyFromUI2(long ptr)
|
||||||
226 stdcall VarCyFromUI2(long ptr)
|
227 stdcall VarCyFromUI4(long ptr)
|
||||||
227 stdcall VarCyFromUI4(long ptr)
|
228 stdcall VarCyFromDec(ptr ptr)
|
||||||
228 stdcall VarCyFromDec(ptr ptr)
|
229 stdcall VarBstrFromI1(long long long ptr)
|
||||||
229 stdcall VarBstrFromI1(long long long ptr)
|
230 stdcall VarBstrFromUI2(long long long ptr)
|
||||||
230 stdcall VarBstrFromUI2(long long long ptr)
|
231 stdcall VarBstrFromUI4(long long long ptr)
|
||||||
231 stdcall VarBstrFromUI4(long long long ptr)
|
232 stdcall VarBstrFromDec(ptr long long ptr)
|
||||||
232 stdcall VarBstrFromDec(ptr long long ptr)
|
233 stdcall VarBoolFromI1(long ptr)
|
||||||
233 stdcall VarBoolFromI1(long ptr)
|
234 stdcall VarBoolFromUI2(long ptr)
|
||||||
234 stdcall VarBoolFromUI2(long ptr)
|
235 stdcall VarBoolFromUI4(long ptr)
|
||||||
235 stdcall VarBoolFromUI4(long ptr)
|
236 stdcall VarBoolFromDec(ptr ptr)
|
||||||
236 stdcall VarBoolFromDec(ptr ptr)
|
237 stdcall VarUI1FromI1(long ptr)
|
||||||
237 stdcall VarUI1FromI1(long ptr)
|
238 stdcall VarUI1FromUI2(long ptr)
|
||||||
238 stdcall VarUI1FromUI2(long ptr)
|
239 stdcall VarUI1FromUI4(long ptr)
|
||||||
239 stdcall VarUI1FromUI4(long ptr)
|
240 stdcall VarUI1FromDec(ptr ptr)
|
||||||
240 stdcall VarUI1FromDec(ptr ptr)
|
241 stdcall VarDecFromI1(long ptr)
|
||||||
241 stdcall VarDecFromI1(long ptr)
|
242 stdcall VarDecFromUI2(long ptr)
|
||||||
242 stdcall VarDecFromUI2(long ptr)
|
243 stdcall VarDecFromUI4(long ptr)
|
||||||
243 stdcall VarDecFromUI4(long ptr)
|
244 stdcall VarI1FromUI1(long ptr)
|
||||||
244 stdcall VarI1FromUI1(long ptr)
|
245 stdcall VarI1FromI2(long ptr)
|
||||||
245 stdcall VarI1FromI2(long ptr)
|
246 stdcall VarI1FromI4(long ptr)
|
||||||
246 stdcall VarI1FromI4(long ptr)
|
247 stdcall VarI1FromR4(long ptr)
|
||||||
247 stdcall VarI1FromR4(long ptr)
|
248 stdcall VarI1FromR8(double ptr)
|
||||||
248 stdcall VarI1FromR8(double ptr)
|
249 stdcall VarI1FromDate(double ptr)
|
||||||
249 stdcall VarI1FromDate(double ptr)
|
250 stdcall VarI1FromCy(long long ptr)
|
||||||
250 stdcall VarI1FromCy(long long ptr)
|
251 stdcall VarI1FromStr(wstr long long ptr)
|
||||||
251 stdcall VarI1FromStr(wstr long long ptr)
|
252 stdcall VarI1FromDisp(ptr long ptr)
|
||||||
252 stdcall VarI1FromDisp(ptr long ptr)
|
253 stdcall VarI1FromBool(long ptr)
|
||||||
253 stdcall VarI1FromBool(long ptr)
|
254 stdcall VarI1FromUI2(long ptr)
|
||||||
254 stdcall VarI1FromUI2(long ptr)
|
255 stdcall VarI1FromUI4(long ptr)
|
||||||
255 stdcall VarI1FromUI4(long ptr)
|
256 stdcall VarI1FromDec(ptr ptr)
|
||||||
256 stdcall VarI1FromDec(ptr ptr)
|
257 stdcall VarUI2FromUI1(long ptr)
|
||||||
257 stdcall VarUI2FromUI1(long ptr)
|
258 stdcall VarUI2FromI2(long ptr)
|
||||||
258 stdcall VarUI2FromI2(long ptr)
|
259 stdcall VarUI2FromI4(long ptr)
|
||||||
259 stdcall VarUI2FromI4(long ptr)
|
260 stdcall VarUI2FromR4(long ptr)
|
||||||
260 stdcall VarUI2FromR4(long ptr)
|
261 stdcall VarUI2FromR8(double ptr)
|
||||||
261 stdcall VarUI2FromR8(double ptr)
|
262 stdcall VarUI2FromDate(double ptr)
|
||||||
262 stdcall VarUI2FromDate(double ptr)
|
263 stdcall VarUI2FromCy(long long ptr)
|
||||||
263 stdcall VarUI2FromCy(long long ptr)
|
264 stdcall VarUI2FromStr(wstr long long ptr)
|
||||||
264 stdcall VarUI2FromStr(wstr long long ptr)
|
265 stdcall VarUI2FromDisp(ptr long ptr)
|
||||||
265 stdcall VarUI2FromDisp(ptr long ptr)
|
266 stdcall VarUI2FromBool(long ptr)
|
||||||
266 stdcall VarUI2FromBool(long ptr)
|
267 stdcall VarUI2FromI1(long ptr)
|
||||||
267 stdcall VarUI2FromI1(long ptr)
|
268 stdcall VarUI2FromUI4(long ptr)
|
||||||
268 stdcall VarUI2FromUI4(long ptr)
|
269 stdcall VarUI2FromDec(ptr ptr)
|
||||||
269 stdcall VarUI2FromDec(ptr ptr)
|
270 stdcall VarUI4FromUI1(long ptr)
|
||||||
270 stdcall VarUI4FromUI1(long ptr)
|
271 stdcall VarUI4FromI2(long ptr)
|
||||||
271 stdcall VarUI4FromI2(long ptr)
|
272 stdcall VarUI4FromI4(long ptr)
|
||||||
272 stdcall VarUI4FromI4(long ptr)
|
273 stdcall VarUI4FromR4(long ptr)
|
||||||
273 stdcall VarUI4FromR4(long ptr)
|
274 stdcall VarUI4FromR8(double ptr)
|
||||||
274 stdcall VarUI4FromR8(double ptr)
|
275 stdcall VarUI4FromDate(double ptr)
|
||||||
275 stdcall VarUI4FromDate(double ptr)
|
276 stdcall VarUI4FromCy(long long ptr)
|
||||||
276 stdcall VarUI4FromCy(long long ptr)
|
277 stdcall VarUI4FromStr(wstr long long ptr)
|
||||||
277 stdcall VarUI4FromStr(wstr long long ptr)
|
278 stdcall VarUI4FromDisp(ptr long ptr)
|
||||||
278 stdcall VarUI4FromDisp(ptr long ptr)
|
279 stdcall VarUI4FromBool(long ptr)
|
||||||
279 stdcall VarUI4FromBool(long ptr)
|
280 stdcall VarUI4FromI1(long ptr)
|
||||||
280 stdcall VarUI4FromI1(long ptr)
|
281 stdcall VarUI4FromUI2(long ptr)
|
||||||
281 stdcall VarUI4FromUI2(long ptr)
|
282 stdcall VarUI4FromDec(ptr ptr)
|
||||||
282 stdcall VarUI4FromDec(ptr ptr)
|
283 stdcall BSTR_UserSize(ptr long ptr)
|
||||||
283 stdcall BSTR_UserSize(ptr long ptr)
|
284 stdcall BSTR_UserMarshal(ptr ptr ptr)
|
||||||
284 stdcall BSTR_UserMarshal(ptr ptr ptr)
|
285 stdcall BSTR_UserUnmarshal(ptr ptr ptr)
|
||||||
285 stdcall BSTR_UserUnmarshal(ptr ptr ptr)
|
286 stdcall BSTR_UserFree(ptr ptr)
|
||||||
286 stdcall BSTR_UserFree(ptr ptr)
|
287 stdcall VARIANT_UserSize(ptr long ptr)
|
||||||
287 stdcall VARIANT_UserSize(ptr long ptr)
|
288 stdcall VARIANT_UserMarshal(ptr ptr ptr)
|
||||||
288 stdcall VARIANT_UserMarshal(ptr ptr ptr)
|
289 stdcall VARIANT_UserUnmarshal(ptr ptr ptr)
|
||||||
289 stdcall VARIANT_UserUnmarshal(ptr ptr ptr)
|
290 stdcall VARIANT_UserFree(ptr ptr)
|
||||||
290 stdcall VARIANT_UserFree(ptr ptr)
|
291 stub LPSAFEARRAY_UserSize
|
||||||
291 stub LPSAFEARRAY_UserSize
|
292 stub LPSAFEARRAY_UserMarshal
|
||||||
292 stub LPSAFEARRAY_UserMarshal
|
293 stub LPSAFEARRAY_UserUnmarshal
|
||||||
293 stub LPSAFEARRAY_UserUnmarshal
|
294 stub LPSAFEARRAY_UserFree
|
||||||
294 stub LPSAFEARRAY_UserFree
|
295 stub LPSAFEARRAY_Size
|
||||||
295 stub LPSAFEARRAY_Size
|
296 stub LPSAFEARRAY_Marshal
|
||||||
296 stub LPSAFEARRAY_Marshal
|
297 stub LPSAFEARRAY_Unmarshal
|
||||||
297 stub LPSAFEARRAY_Unmarshal
|
298 stdcall VarDecCmpR8(ptr double)
|
||||||
298 stdcall VarDecCmpR8(ptr double)
|
299 stdcall VarCyAdd(long long long long ptr)
|
||||||
299 stdcall VarCyAdd(long long long long ptr)
|
303 stdcall VarCyMul(long long long long ptr)
|
||||||
303 stdcall VarCyMul(long long long long ptr)
|
304 stdcall VarCyMulI4(long long long ptr)
|
||||||
304 stdcall VarCyMulI4(long long long ptr)
|
305 stdcall VarCySub(long long long long ptr)
|
||||||
305 stdcall VarCySub(long long long long ptr)
|
306 stdcall VarCyAbs(long long ptr)
|
||||||
306 stdcall VarCyAbs(long long ptr)
|
307 stdcall VarCyFix(long long ptr)
|
||||||
307 stdcall VarCyFix(long long ptr)
|
308 stdcall VarCyInt(long long ptr)
|
||||||
308 stdcall VarCyInt(long long ptr)
|
309 stdcall VarCyNeg(long long ptr)
|
||||||
309 stdcall VarCyNeg(long long ptr)
|
310 stdcall VarCyRound(long long long ptr)
|
||||||
310 stdcall VarCyRound(long long long ptr)
|
311 stdcall VarCyCmp(long long long long)
|
||||||
311 stdcall VarCyCmp(long long long long)
|
312 stdcall VarCyCmpR8(long long double)
|
||||||
312 stdcall VarCyCmpR8(long long double)
|
313 stdcall VarBstrCat(wstr wstr ptr)
|
||||||
313 stdcall VarBstrCat(wstr wstr ptr)
|
314 stdcall VarBstrCmp(wstr wstr long long)
|
||||||
314 stdcall VarBstrCmp(wstr wstr long long)
|
315 stdcall VarR8Pow(double double ptr)
|
||||||
315 stdcall VarR8Pow(double double ptr)
|
316 stdcall VarR4CmpR8(long double)
|
||||||
316 stdcall VarR4CmpR8(long double)
|
317 stdcall VarR8Round(double long ptr)
|
||||||
317 stdcall VarR8Round(double long ptr)
|
318 stdcall VarCat(ptr ptr ptr)
|
||||||
318 stdcall VarCat(ptr ptr ptr)
|
319 stdcall VarDateFromUdateEx(ptr long long ptr)
|
||||||
319 stdcall VarDateFromUdateEx(ptr long long ptr)
|
322 stdcall GetRecordInfoFromGuids(ptr long long long ptr ptr)
|
||||||
320 stdcall -private DllRegisterServer()
|
323 stdcall GetRecordInfoFromTypeInfo(ptr ptr)
|
||||||
321 stdcall -private DllUnregisterServer()
|
325 stub SetVarConversionLocaleSetting
|
||||||
322 stdcall GetRecordInfoFromGuids(ptr long long long ptr ptr)
|
326 stub GetVarConversionLocaleSetting
|
||||||
323 stdcall GetRecordInfoFromTypeInfo(ptr ptr)
|
327 stdcall SetOaNoCache()
|
||||||
325 stub SetVarConversionLocaleSetting
|
329 stdcall VarCyMulI8(long long long long ptr)
|
||||||
326 stub GetVarConversionLocaleSetting
|
330 stdcall VarDateFromUdate(ptr long ptr)
|
||||||
327 stdcall SetOaNoCache()
|
331 stdcall VarUdateFromDate(double long ptr)
|
||||||
329 stdcall VarCyMulI8(long long long long ptr)
|
332 stub GetAltMonthNames
|
||||||
330 stdcall VarDateFromUdate(ptr long ptr)
|
333 stdcall VarI8FromUI1(long long)
|
||||||
331 stdcall VarUdateFromDate(double long ptr)
|
334 stdcall VarI8FromI2(long long)
|
||||||
332 stub GetAltMonthNames
|
335 stdcall VarI8FromR4(long long)
|
||||||
333 stdcall VarI8FromUI1(long long)
|
336 stdcall VarI8FromR8(double long)
|
||||||
334 stdcall VarI8FromI2(long long)
|
337 stdcall VarI8FromCy(long long ptr)
|
||||||
335 stdcall VarI8FromR4(long long)
|
338 stdcall VarI8FromDate(double long)
|
||||||
336 stdcall VarI8FromR8(double long)
|
339 stdcall VarI8FromStr(wstr long long ptr)
|
||||||
337 stdcall VarI8FromCy(long long ptr)
|
340 stdcall VarI8FromDisp(ptr long ptr)
|
||||||
338 stdcall VarI8FromDate(double long)
|
341 stdcall VarI8FromBool(long long)
|
||||||
339 stdcall VarI8FromStr(wstr long long ptr)
|
342 stdcall VarI8FromI1(long long)
|
||||||
340 stdcall VarI8FromDisp(ptr long ptr)
|
343 stdcall VarI8FromUI2(long long)
|
||||||
341 stdcall VarI8FromBool(long long)
|
344 stdcall VarI8FromUI4(long long)
|
||||||
342 stdcall VarI8FromI1(long long)
|
345 stdcall VarI8FromDec(ptr ptr)
|
||||||
343 stdcall VarI8FromUI2(long long)
|
346 stdcall VarI2FromI8(long long ptr)
|
||||||
344 stdcall VarI8FromUI4(long long)
|
347 stdcall VarI2FromUI8(long long ptr)
|
||||||
345 stdcall VarI8FromDec(ptr ptr)
|
348 stdcall VarI4FromI8(long long ptr)
|
||||||
346 stdcall VarI2FromI8(long long ptr)
|
349 stdcall VarI4FromUI8(long long ptr)
|
||||||
347 stdcall VarI2FromUI8(long long ptr)
|
360 stdcall VarR4FromI8(long long ptr)
|
||||||
348 stdcall VarI4FromI8(long long ptr)
|
361 stdcall VarR4FromUI8(long long ptr)
|
||||||
349 stdcall VarI4FromUI8(long long ptr)
|
362 stdcall VarR8FromI8(long long ptr)
|
||||||
360 stdcall VarR4FromI8(long long ptr)
|
363 stdcall VarR8FromUI8(long long ptr)
|
||||||
361 stdcall VarR4FromUI8(long long ptr)
|
364 stdcall VarDateFromI8(long long ptr)
|
||||||
362 stdcall VarR8FromI8(long long ptr)
|
365 stdcall VarDateFromUI8(long long ptr)
|
||||||
363 stdcall VarR8FromUI8(long long ptr)
|
366 stdcall VarCyFromI8(long long ptr)
|
||||||
364 stdcall VarDateFromI8(long long ptr)
|
367 stdcall VarCyFromUI8(long long ptr)
|
||||||
365 stdcall VarDateFromUI8(long long ptr)
|
368 stdcall VarBstrFromI8(long long long long ptr)
|
||||||
366 stdcall VarCyFromI8(long long ptr)
|
369 stdcall VarBstrFromUI8(long long long long ptr)
|
||||||
367 stdcall VarCyFromUI8(long long ptr)
|
370 stdcall VarBoolFromI8(long long ptr)
|
||||||
368 stdcall VarBstrFromI8(long long long long ptr)
|
371 stdcall VarBoolFromUI8(long long ptr)
|
||||||
369 stdcall VarBstrFromUI8(long long long long ptr)
|
372 stdcall VarUI1FromI8(long long ptr)
|
||||||
370 stdcall VarBoolFromI8(long long ptr)
|
373 stdcall VarUI1FromUI8(long long ptr)
|
||||||
371 stdcall VarBoolFromUI8(long long ptr)
|
374 stdcall VarDecFromI8(long long ptr)
|
||||||
372 stdcall VarUI1FromI8(long long ptr)
|
375 stdcall VarDecFromUI8(long long ptr)
|
||||||
373 stdcall VarUI1FromUI8(long long ptr)
|
376 stdcall VarI1FromI8(long long ptr)
|
||||||
374 stdcall VarDecFromI8(long long ptr)
|
377 stdcall VarI1FromUI8(long long ptr)
|
||||||
375 stdcall VarDecFromUI8(long long ptr)
|
378 stdcall VarUI2FromI8(long long ptr)
|
||||||
376 stdcall VarI1FromI8(long long ptr)
|
379 stdcall VarUI2FromUI8(long long ptr)
|
||||||
377 stdcall VarI1FromUI8(long long ptr)
|
380 stub UserHWND_from_local
|
||||||
378 stdcall VarUI2FromI8(long long ptr)
|
381 stub UserHWND_to_local
|
||||||
379 stdcall VarUI2FromUI8(long long ptr)
|
382 stub UserHWND_free_inst
|
||||||
380 stub UserHWND_from_local
|
383 stub UserHWND_free_local
|
||||||
381 stub UserHWND_to_local
|
384 stub UserBSTR_from_local
|
||||||
382 stub UserHWND_free_inst
|
385 stub UserBSTR_to_local
|
||||||
383 stub UserHWND_free_local
|
386 stub UserBSTR_free_inst
|
||||||
384 stub UserBSTR_from_local
|
387 stub UserBSTR_free_local
|
||||||
385 stub UserBSTR_to_local
|
388 stub UserVARIANT_from_local
|
||||||
386 stub UserBSTR_free_inst
|
389 stub UserVARIANT_to_local
|
||||||
387 stub UserBSTR_free_local
|
390 stub UserVARIANT_free_inst
|
||||||
388 stub UserVARIANT_from_local
|
391 stub UserVARIANT_free_local
|
||||||
389 stub UserVARIANT_to_local
|
392 stub UserEXCEPINFO_from_local
|
||||||
390 stub UserVARIANT_free_inst
|
393 stub UserEXCEPINFO_to_local
|
||||||
391 stub UserVARIANT_free_local
|
394 stub UserEXCEPINFO_free_inst
|
||||||
392 stub UserEXCEPINFO_from_local
|
395 stub UserEXCEPINFO_free_local
|
||||||
393 stub UserEXCEPINFO_to_local
|
396 stub UserMSG_from_local
|
||||||
394 stub UserEXCEPINFO_free_inst
|
397 stub UserMSG_to_local
|
||||||
395 stub UserEXCEPINFO_free_local
|
398 stub UserMSG_free_inst
|
||||||
396 stub UserMSG_from_local
|
399 stub UserMSG_free_local
|
||||||
397 stub UserMSG_to_local
|
401 stdcall OleLoadPictureEx(ptr long long long long long long ptr)
|
||||||
398 stub UserMSG_free_inst
|
402 stub OleLoadPictureFileEx
|
||||||
399 stub UserMSG_free_local
|
411 stdcall SafeArrayCreateVector(long long long)
|
||||||
401 stdcall OleLoadPictureEx(ptr long long long long long long ptr)
|
412 stdcall SafeArrayCopyData(ptr ptr)
|
||||||
402 stub OleLoadPictureFileEx
|
413 stdcall VectorFromBstr(ptr ptr)
|
||||||
410 stdcall -private DllCanUnloadNow()
|
414 stdcall BstrFromVector(ptr ptr)
|
||||||
411 stdcall SafeArrayCreateVector(long long long)
|
415 stdcall OleIconToCursor(long long)
|
||||||
412 stdcall SafeArrayCopyData(ptr ptr)
|
416 stdcall OleCreatePropertyFrameIndirect(ptr)
|
||||||
413 stdcall VectorFromBstr(ptr ptr)
|
417 stdcall OleCreatePropertyFrame(ptr long long ptr long ptr long ptr ptr long ptr)
|
||||||
414 stdcall BstrFromVector(ptr ptr)
|
418 stdcall OleLoadPicture(ptr long long ptr ptr)
|
||||||
415 stdcall OleIconToCursor(long long)
|
419 stdcall OleCreatePictureIndirect(ptr ptr long ptr)
|
||||||
416 stdcall OleCreatePropertyFrameIndirect(ptr)
|
420 stdcall OleCreateFontIndirect(ptr ptr ptr)
|
||||||
417 stdcall OleCreatePropertyFrame(ptr long long ptr long ptr long ptr ptr long ptr)
|
421 stdcall OleTranslateColor(long long long)
|
||||||
418 stdcall OleLoadPicture(ptr long long ptr ptr)
|
422 stub OleLoadPictureFile
|
||||||
419 stdcall OleCreatePictureIndirect(ptr ptr long ptr)
|
423 stub OleSavePictureFile
|
||||||
420 stdcall OleCreateFontIndirect(ptr ptr ptr)
|
424 stdcall OleLoadPicturePath(wstr ptr long long ptr ptr)
|
||||||
421 stdcall OleTranslateColor(long long long)
|
425 stdcall VarUI4FromI8(long long ptr)
|
||||||
422 stub OleLoadPictureFile
|
426 stdcall VarUI4FromUI8(long long ptr)
|
||||||
423 stub OleSavePictureFile
|
427 stdcall VarI8FromUI8(long long ptr)
|
||||||
424 stdcall OleLoadPicturePath(wstr ptr long long ptr ptr)
|
428 stdcall VarUI8FromI8(long long ptr)
|
||||||
425 stdcall VarUI4FromI8(long long ptr)
|
429 stdcall VarUI8FromUI1(long ptr)
|
||||||
426 stdcall VarUI4FromUI8(long long ptr)
|
430 stdcall VarUI8FromI2(long ptr)
|
||||||
427 stdcall VarI8FromUI8(long long ptr)
|
431 stdcall VarUI8FromR4(long ptr)
|
||||||
428 stdcall VarUI8FromI8(long long ptr)
|
432 stdcall VarUI8FromR8(double ptr)
|
||||||
429 stdcall VarUI8FromUI1(long ptr)
|
433 stdcall VarUI8FromCy(long long ptr)
|
||||||
430 stdcall VarUI8FromI2(long ptr)
|
434 stdcall VarUI8FromDate(double ptr)
|
||||||
431 stdcall VarUI8FromR4(long ptr)
|
435 stdcall VarUI8FromStr(wstr long long ptr)
|
||||||
432 stdcall VarUI8FromR8(double ptr)
|
436 stdcall VarUI8FromDisp(ptr long ptr)
|
||||||
433 stdcall VarUI8FromCy(long long ptr)
|
437 stdcall VarUI8FromBool(long ptr)
|
||||||
434 stdcall VarUI8FromDate(double ptr)
|
438 stdcall VarUI8FromI1(long ptr)
|
||||||
435 stdcall VarUI8FromStr(wstr long long ptr)
|
439 stdcall VarUI8FromUI2(long ptr)
|
||||||
436 stdcall VarUI8FromDisp(ptr long ptr)
|
440 stdcall VarUI8FromUI4(long ptr)
|
||||||
437 stdcall VarUI8FromBool(long ptr)
|
441 stdcall VarUI8FromDec(long ptr)
|
||||||
438 stdcall VarUI8FromI1(long ptr)
|
|
||||||
439 stdcall VarUI8FromUI2(long ptr)
|
@ stdcall -private DllCanUnloadNow()
|
||||||
440 stdcall VarUI8FromUI4(long ptr)
|
@ stdcall -private DllGetClassObject(ptr ptr ptr)
|
||||||
441 stdcall VarUI8FromDec(long ptr)
|
@ stdcall -private DllRegisterServer()
|
||||||
|
@ stdcall -private DllUnregisterServer()
|
||||||
|
|
|
@ -63,12 +63,12 @@ struct OLEFontImpl
|
||||||
* The first two are supported by the first vtable, the next two are
|
* The first two are supported by the first vtable, the next two are
|
||||||
* supported by the second table and the last two have their own.
|
* supported by the second table and the last two have their own.
|
||||||
*/
|
*/
|
||||||
const IFontVtbl* lpvtbl1;
|
const IFontVtbl* lpVtbl;
|
||||||
const IDispatchVtbl* lpvtbl2;
|
const IDispatchVtbl* lpvtblIDispatch;
|
||||||
const IPersistStreamVtbl* lpvtbl3;
|
const IPersistStreamVtbl* lpvtblIPersistStream;
|
||||||
const IConnectionPointContainerVtbl* lpvtbl4;
|
const IConnectionPointContainerVtbl* lpvtblIConnectionPointContainer;
|
||||||
const IPersistPropertyBagVtbl* lpvtbl5;
|
const IPersistPropertyBagVtbl* lpvtblIPersistPropertyBag;
|
||||||
const IPersistStreamInitVtbl* lpvtbl6;
|
const IPersistStreamInitVtbl* lpvtblIPersistStreamInit;
|
||||||
/*
|
/*
|
||||||
* Reference count for that instance of the class.
|
* Reference count for that instance of the class.
|
||||||
*/
|
*/
|
||||||
|
@ -104,11 +104,31 @@ struct OLEFontImpl
|
||||||
* There is a version to accommodate all of the VTables implemented
|
* There is a version to accommodate all of the VTables implemented
|
||||||
* by this object.
|
* by this object.
|
||||||
*/
|
*/
|
||||||
#define _ICOM_THIS_From_IDispatch(class, name) class* this = (class*)(((char*)name)-sizeof(void*))
|
|
||||||
#define _ICOM_THIS_From_IPersistStream(class, name) class* this = (class*)(((char*)name)-2*sizeof(void*))
|
static inline OLEFontImpl *impl_from_IDispatch( IDispatch *iface )
|
||||||
#define _ICOM_THIS_From_IConnectionPointContainer(class, name) class* this = (class*)(((char*)name)-3*sizeof(void*))
|
{
|
||||||
#define _ICOM_THIS_From_IPersistPropertyBag(class, name) class* this = (class*)(((char*)name)-4*sizeof(void*))
|
return (OLEFontImpl *)((char*)iface - FIELD_OFFSET(OLEFontImpl, lpvtblIDispatch));
|
||||||
#define _ICOM_THIS_From_IPersistStreamInit(class, name) class* this = (class*)(((char*)name)-5*sizeof(void*))
|
}
|
||||||
|
|
||||||
|
static inline OLEFontImpl *impl_from_IPersistStream( IPersistStream *iface )
|
||||||
|
{
|
||||||
|
return (OLEFontImpl *)((char*)iface - FIELD_OFFSET(OLEFontImpl, lpvtblIPersistStream));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline OLEFontImpl *impl_from_IConnectionPointContainer( IConnectionPointContainer *iface )
|
||||||
|
{
|
||||||
|
return (OLEFontImpl *)((char*)iface - FIELD_OFFSET(OLEFontImpl, lpvtblIConnectionPointContainer));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline OLEFontImpl *impl_from_IPersistPropertyBag( IPersistPropertyBag *iface )
|
||||||
|
{
|
||||||
|
return (OLEFontImpl *)((char*)iface - FIELD_OFFSET(OLEFontImpl, lpvtblIPersistPropertyBag));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline OLEFontImpl *impl_from_IPersistStreamInit( IPersistStreamInit *iface )
|
||||||
|
{
|
||||||
|
return (OLEFontImpl *)((char*)iface - FIELD_OFFSET(OLEFontImpl, lpvtblIPersistStreamInit));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -402,12 +422,12 @@ static OLEFontImpl* OLEFontImpl_Construct(LPFONTDESC fontDesc)
|
||||||
/*
|
/*
|
||||||
* Initialize the virtual function table.
|
* Initialize the virtual function table.
|
||||||
*/
|
*/
|
||||||
newObject->lpvtbl1 = &OLEFontImpl_VTable;
|
newObject->lpVtbl = &OLEFontImpl_VTable;
|
||||||
newObject->lpvtbl2 = &OLEFontImpl_IDispatch_VTable;
|
newObject->lpvtblIDispatch = &OLEFontImpl_IDispatch_VTable;
|
||||||
newObject->lpvtbl3 = &OLEFontImpl_IPersistStream_VTable;
|
newObject->lpvtblIPersistStream = &OLEFontImpl_IPersistStream_VTable;
|
||||||
newObject->lpvtbl4 = &OLEFontImpl_IConnectionPointContainer_VTable;
|
newObject->lpvtblIConnectionPointContainer = &OLEFontImpl_IConnectionPointContainer_VTable;
|
||||||
newObject->lpvtbl5 = &OLEFontImpl_IPersistPropertyBag_VTable;
|
newObject->lpvtblIPersistPropertyBag = &OLEFontImpl_IPersistPropertyBag_VTable;
|
||||||
newObject->lpvtbl6 = &OLEFontImpl_IPersistStreamInit_VTable;
|
newObject->lpvtblIPersistStreamInit = &OLEFontImpl_IPersistStreamInit_VTable;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Start with one reference count. The caller of this function
|
* Start with one reference count. The caller of this function
|
||||||
|
@ -495,17 +515,17 @@ HRESULT WINAPI OLEFontImpl_QueryInterface(
|
||||||
if (IsEqualGUID(&IID_IFont, riid))
|
if (IsEqualGUID(&IID_IFont, riid))
|
||||||
*ppvObject = (IFont*)this;
|
*ppvObject = (IFont*)this;
|
||||||
if (IsEqualGUID(&IID_IDispatch, riid))
|
if (IsEqualGUID(&IID_IDispatch, riid))
|
||||||
*ppvObject = (IDispatch*)&(this->lpvtbl2);
|
*ppvObject = (IDispatch*)&(this->lpvtblIDispatch);
|
||||||
if (IsEqualGUID(&IID_IFontDisp, riid))
|
if (IsEqualGUID(&IID_IFontDisp, riid))
|
||||||
*ppvObject = (IDispatch*)&(this->lpvtbl2);
|
*ppvObject = (IDispatch*)&(this->lpvtblIDispatch);
|
||||||
if (IsEqualGUID(&IID_IPersistStream, riid))
|
if (IsEqualGUID(&IID_IPersistStream, riid))
|
||||||
*ppvObject = (IPersistStream*)&(this->lpvtbl3);
|
*ppvObject = (IPersistStream*)&(this->lpvtblIPersistStream);
|
||||||
if (IsEqualGUID(&IID_IConnectionPointContainer, riid))
|
if (IsEqualGUID(&IID_IConnectionPointContainer, riid))
|
||||||
*ppvObject = (IConnectionPointContainer*)&(this->lpvtbl4);
|
*ppvObject = (IConnectionPointContainer*)&(this->lpvtblIConnectionPointContainer);
|
||||||
if (IsEqualGUID(&IID_IPersistPropertyBag, riid))
|
if (IsEqualGUID(&IID_IPersistPropertyBag, riid))
|
||||||
*ppvObject = (IPersistPropertyBag*)&(this->lpvtbl5);
|
*ppvObject = (IPersistPropertyBag*)&(this->lpvtblIPersistPropertyBag);
|
||||||
if (IsEqualGUID(&IID_IPersistStreamInit, riid))
|
if (IsEqualGUID(&IID_IPersistStreamInit, riid))
|
||||||
*ppvObject = (IPersistStreamInit*)&(this->lpvtbl6);
|
*ppvObject = (IPersistStreamInit*)&(this->lpvtblIPersistStreamInit);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check that we obtained an interface.
|
* Check that we obtained an interface.
|
||||||
|
@ -933,7 +953,9 @@ static HRESULT WINAPI OLEFontImpl_get_hFont(
|
||||||
*/
|
*/
|
||||||
IFont_get_Size(iface, &cySize);
|
IFont_get_Size(iface, &cySize);
|
||||||
|
|
||||||
fontHeight = MulDiv( cySize.s.Lo, this->cyLogical, this->cyHimetric );
|
/* Standard ratio is 72 / 2540, or 18 / 635 in lowest terms. */
|
||||||
|
/* Ratio is applied here relative to the standard. */
|
||||||
|
fontHeight = MulDiv( cySize.s.Lo, this->cyLogical*635, this->cyHimetric*18 );
|
||||||
|
|
||||||
memset(&logFont, 0, sizeof(LOGFONTW));
|
memset(&logFont, 0, sizeof(LOGFONTW));
|
||||||
|
|
||||||
|
@ -1000,7 +1022,7 @@ static HRESULT WINAPI OLEFontImpl_Clone(
|
||||||
/* We need to clone the HFONT too. This is just cut & paste from above */
|
/* We need to clone the HFONT too. This is just cut & paste from above */
|
||||||
IFont_get_Size(iface, &cySize);
|
IFont_get_Size(iface, &cySize);
|
||||||
|
|
||||||
fontHeight = MulDiv(cySize.s.Lo, this->cyLogical,this->cyHimetric);
|
fontHeight = MulDiv(cySize.s.Lo, this->cyLogical*635,this->cyHimetric*18);
|
||||||
|
|
||||||
memset(&logFont, 0, sizeof(LOGFONTW));
|
memset(&logFont, 0, sizeof(LOGFONTW));
|
||||||
|
|
||||||
|
@ -1156,9 +1178,9 @@ static HRESULT WINAPI OLEFontImpl_IDispatch_QueryInterface(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
VOID** ppvoid)
|
VOID** ppvoid)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IDispatch(IFont, iface);
|
OLEFontImpl *this = impl_from_IDispatch(iface);
|
||||||
|
|
||||||
return IFont_QueryInterface(this, riid, ppvoid);
|
return IFont_QueryInterface((IFont *)this, riid, ppvoid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1169,9 +1191,9 @@ static HRESULT WINAPI OLEFontImpl_IDispatch_QueryInterface(
|
||||||
static ULONG WINAPI OLEFontImpl_IDispatch_Release(
|
static ULONG WINAPI OLEFontImpl_IDispatch_Release(
|
||||||
IDispatch* iface)
|
IDispatch* iface)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IDispatch(IFont, iface);
|
OLEFontImpl *this = impl_from_IDispatch(iface);
|
||||||
|
|
||||||
return IFont_Release(this);
|
return IFont_Release((IFont *)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1182,9 +1204,9 @@ static ULONG WINAPI OLEFontImpl_IDispatch_Release(
|
||||||
static ULONG WINAPI OLEFontImpl_IDispatch_AddRef(
|
static ULONG WINAPI OLEFontImpl_IDispatch_AddRef(
|
||||||
IDispatch* iface)
|
IDispatch* iface)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IDispatch(IFont, iface);
|
OLEFontImpl *this = impl_from_IDispatch(iface);
|
||||||
|
|
||||||
return IFont_AddRef(this);
|
return IFont_AddRef((IFont *)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1196,7 +1218,7 @@ static HRESULT WINAPI OLEFontImpl_GetTypeInfoCount(
|
||||||
IDispatch* iface,
|
IDispatch* iface,
|
||||||
unsigned int* pctinfo)
|
unsigned int* pctinfo)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IDispatch(IFont, iface);
|
OLEFontImpl *this = impl_from_IDispatch(iface);
|
||||||
FIXME("(%p)->(%p): Stub\n", this, pctinfo);
|
FIXME("(%p)->(%p): Stub\n", this, pctinfo);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
|
@ -1217,7 +1239,7 @@ static HRESULT WINAPI OLEFontImpl_GetTypeInfo(
|
||||||
ITypeLib *tl;
|
ITypeLib *tl;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
_ICOM_THIS_From_IDispatch(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IDispatch(iface);
|
||||||
TRACE("(%p, iTInfo=%d, lcid=%04x, %p)\n", this, iTInfo, (int)lcid, ppTInfo);
|
TRACE("(%p, iTInfo=%d, lcid=%04x, %p)\n", this, iTInfo, (int)lcid, ppTInfo);
|
||||||
if (iTInfo != 0)
|
if (iTInfo != 0)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
@ -1246,7 +1268,7 @@ static HRESULT WINAPI OLEFontImpl_GetIDsOfNames(
|
||||||
LCID lcid,
|
LCID lcid,
|
||||||
DISPID* rgDispId)
|
DISPID* rgDispId)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IDispatch(IFont, iface);
|
OLEFontImpl *this = impl_from_IDispatch(iface);
|
||||||
FIXME("(%p,%s,%p,%d,%04x,%p), stub!\n", this, debugstr_guid(riid), rgszNames,
|
FIXME("(%p,%s,%p,%d,%04x,%p), stub!\n", this, debugstr_guid(riid), rgszNames,
|
||||||
cNames, (int)lcid, rgDispId
|
cNames, (int)lcid, rgDispId
|
||||||
);
|
);
|
||||||
|
@ -1273,7 +1295,7 @@ static HRESULT WINAPI OLEFontImpl_Invoke(
|
||||||
EXCEPINFO* pExepInfo,
|
EXCEPINFO* pExepInfo,
|
||||||
UINT* puArgErr)
|
UINT* puArgErr)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IDispatch(IFont, iface);
|
OLEFontImpl *this = impl_from_IDispatch(iface);
|
||||||
OLEFontImpl *xthis = (OLEFontImpl*)this;
|
OLEFontImpl *xthis = (OLEFontImpl*)this;
|
||||||
|
|
||||||
switch (dispIdMember) {
|
switch (dispIdMember) {
|
||||||
|
@ -1282,7 +1304,7 @@ static HRESULT WINAPI OLEFontImpl_Invoke(
|
||||||
case DISPATCH_PROPERTYGET:
|
case DISPATCH_PROPERTYGET:
|
||||||
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
||||||
V_VT(pVarResult) = VT_BSTR;
|
V_VT(pVarResult) = VT_BSTR;
|
||||||
return OLEFontImpl_get_Name(this, &V_BSTR(pVarResult));
|
return OLEFontImpl_get_Name((IFont *)this, &V_BSTR(pVarResult));
|
||||||
case DISPATCH_PROPERTYPUT: {
|
case DISPATCH_PROPERTYPUT: {
|
||||||
BSTR name;
|
BSTR name;
|
||||||
BOOL freename;
|
BOOL freename;
|
||||||
|
@ -1334,7 +1356,7 @@ static HRESULT WINAPI OLEFontImpl_Invoke(
|
||||||
case DISPATCH_PROPERTYGET:
|
case DISPATCH_PROPERTYGET:
|
||||||
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
||||||
V_VT(pVarResult) = VT_BOOL;
|
V_VT(pVarResult) = VT_BOOL;
|
||||||
return OLEFontImpl_get_Bold(this, (BOOL*)&V_BOOL(pVarResult));
|
return OLEFontImpl_get_Bold((IFont *)this, (BOOL*)&V_BOOL(pVarResult));
|
||||||
case DISPATCH_PROPERTYPUT:
|
case DISPATCH_PROPERTYPUT:
|
||||||
if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) {
|
if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) {
|
||||||
FIXME("DISPID_FONT_BOLD/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0]));
|
FIXME("DISPID_FONT_BOLD/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0]));
|
||||||
|
@ -1350,7 +1372,7 @@ static HRESULT WINAPI OLEFontImpl_Invoke(
|
||||||
case DISPATCH_PROPERTYGET:
|
case DISPATCH_PROPERTYGET:
|
||||||
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
||||||
V_VT(pVarResult) = VT_BOOL;
|
V_VT(pVarResult) = VT_BOOL;
|
||||||
return OLEFontImpl_get_Italic(this, (BOOL*)&V_BOOL(pVarResult));
|
return OLEFontImpl_get_Italic((IFont *)this, (BOOL*)&V_BOOL(pVarResult));
|
||||||
case DISPATCH_PROPERTYPUT:
|
case DISPATCH_PROPERTYPUT:
|
||||||
if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) {
|
if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) {
|
||||||
FIXME("DISPID_FONT_ITALIC/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0]));
|
FIXME("DISPID_FONT_ITALIC/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0]));
|
||||||
|
@ -1366,7 +1388,7 @@ static HRESULT WINAPI OLEFontImpl_Invoke(
|
||||||
case DISPATCH_PROPERTYGET:
|
case DISPATCH_PROPERTYGET:
|
||||||
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
||||||
V_VT(pVarResult) = VT_BOOL;
|
V_VT(pVarResult) = VT_BOOL;
|
||||||
return OLEFontImpl_get_Underline(this, (BOOL*)&V_BOOL(pVarResult));
|
return OLEFontImpl_get_Underline((IFont *)this, (BOOL*)&V_BOOL(pVarResult));
|
||||||
case DISPATCH_PROPERTYPUT:
|
case DISPATCH_PROPERTYPUT:
|
||||||
if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) {
|
if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) {
|
||||||
FIXME("DISPID_FONT_UNDER/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0]));
|
FIXME("DISPID_FONT_UNDER/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0]));
|
||||||
|
@ -1382,7 +1404,7 @@ static HRESULT WINAPI OLEFontImpl_Invoke(
|
||||||
case DISPATCH_PROPERTYGET:
|
case DISPATCH_PROPERTYGET:
|
||||||
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
||||||
V_VT(pVarResult) = VT_BOOL;
|
V_VT(pVarResult) = VT_BOOL;
|
||||||
return OLEFontImpl_get_Strikethrough(this, (BOOL*)&V_BOOL(pVarResult));
|
return OLEFontImpl_get_Strikethrough((IFont *)this, (BOOL*)&V_BOOL(pVarResult));
|
||||||
case DISPATCH_PROPERTYPUT:
|
case DISPATCH_PROPERTYPUT:
|
||||||
if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) {
|
if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL) {
|
||||||
FIXME("DISPID_FONT_STRIKE/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0]));
|
FIXME("DISPID_FONT_STRIKE/put, vt is %d, not VT_BOOL.\n",V_VT(&pDispParams->rgvarg[0]));
|
||||||
|
@ -1412,7 +1434,7 @@ static HRESULT WINAPI OLEFontImpl_Invoke(
|
||||||
case DISPATCH_PROPERTYGET:
|
case DISPATCH_PROPERTYGET:
|
||||||
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
||||||
V_VT(pVarResult) = VT_CY;
|
V_VT(pVarResult) = VT_CY;
|
||||||
return OLEFontImpl_get_Size(this, &V_CY(pVarResult));
|
return OLEFontImpl_get_Size((IFont *)this, &V_CY(pVarResult));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DISPID_FONT_CHARSET:
|
case DISPID_FONT_CHARSET:
|
||||||
|
@ -1426,7 +1448,7 @@ static HRESULT WINAPI OLEFontImpl_Invoke(
|
||||||
case DISPATCH_PROPERTYGET:
|
case DISPATCH_PROPERTYGET:
|
||||||
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
case DISPATCH_PROPERTYGET|DISPATCH_METHOD:
|
||||||
V_VT(pVarResult) = VT_I2;
|
V_VT(pVarResult) = VT_I2;
|
||||||
return OLEFontImpl_get_Charset(this, &V_I2(pVarResult));
|
return OLEFontImpl_get_Charset((IFont *)this, &V_I2(pVarResult));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1447,9 +1469,9 @@ static HRESULT WINAPI OLEFontImpl_IPersistStream_QueryInterface(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
VOID** ppvoid)
|
VOID** ppvoid)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IPersistStream(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
return IFont_QueryInterface(this, riid, ppvoid);
|
return IFont_QueryInterface((IFont *)this, riid, ppvoid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1460,9 +1482,9 @@ static HRESULT WINAPI OLEFontImpl_IPersistStream_QueryInterface(
|
||||||
static ULONG WINAPI OLEFontImpl_IPersistStream_Release(
|
static ULONG WINAPI OLEFontImpl_IPersistStream_Release(
|
||||||
IPersistStream* iface)
|
IPersistStream* iface)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IPersistStream(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
return IFont_Release(this);
|
return IFont_Release((IFont *)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1473,9 +1495,9 @@ static ULONG WINAPI OLEFontImpl_IPersistStream_Release(
|
||||||
static ULONG WINAPI OLEFontImpl_IPersistStream_AddRef(
|
static ULONG WINAPI OLEFontImpl_IPersistStream_AddRef(
|
||||||
IPersistStream* iface)
|
IPersistStream* iface)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IPersistStream(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
return IFont_AddRef(this);
|
return IFont_AddRef((IFont *)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1540,7 +1562,7 @@ static HRESULT WINAPI OLEFontImpl_Load(
|
||||||
BYTE bStringSize;
|
BYTE bStringSize;
|
||||||
INT len;
|
INT len;
|
||||||
|
|
||||||
_ICOM_THIS_From_IPersistStream(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read the version byte
|
* Read the version byte
|
||||||
|
@ -1632,7 +1654,7 @@ static HRESULT WINAPI OLEFontImpl_Save(
|
||||||
BYTE bAttributes;
|
BYTE bAttributes;
|
||||||
BYTE bStringSize;
|
BYTE bStringSize;
|
||||||
|
|
||||||
_ICOM_THIS_From_IPersistStream(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read the version byte
|
* Read the version byte
|
||||||
|
@ -1725,7 +1747,7 @@ static HRESULT WINAPI OLEFontImpl_GetSizeMax(
|
||||||
IPersistStream* iface,
|
IPersistStream* iface,
|
||||||
ULARGE_INTEGER* pcbSize)
|
ULARGE_INTEGER* pcbSize)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IPersistStream(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
if (pcbSize==NULL)
|
if (pcbSize==NULL)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -1756,7 +1778,7 @@ static HRESULT WINAPI OLEFontImpl_IConnectionPointContainer_QueryInterface(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
VOID** ppvoid)
|
VOID** ppvoid)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IConnectionPointContainer(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IConnectionPointContainer(iface);
|
||||||
|
|
||||||
return IFont_QueryInterface((IFont*)this, riid, ppvoid);
|
return IFont_QueryInterface((IFont*)this, riid, ppvoid);
|
||||||
}
|
}
|
||||||
|
@ -1769,7 +1791,7 @@ static HRESULT WINAPI OLEFontImpl_IConnectionPointContainer_QueryInterface(
|
||||||
static ULONG WINAPI OLEFontImpl_IConnectionPointContainer_Release(
|
static ULONG WINAPI OLEFontImpl_IConnectionPointContainer_Release(
|
||||||
IConnectionPointContainer* iface)
|
IConnectionPointContainer* iface)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IConnectionPointContainer(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IConnectionPointContainer(iface);
|
||||||
|
|
||||||
return IFont_Release((IFont*)this);
|
return IFont_Release((IFont*)this);
|
||||||
}
|
}
|
||||||
|
@ -1782,7 +1804,7 @@ static ULONG WINAPI OLEFontImpl_IConnectionPointContainer_Release(
|
||||||
static ULONG WINAPI OLEFontImpl_IConnectionPointContainer_AddRef(
|
static ULONG WINAPI OLEFontImpl_IConnectionPointContainer_AddRef(
|
||||||
IConnectionPointContainer* iface)
|
IConnectionPointContainer* iface)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IConnectionPointContainer(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IConnectionPointContainer(iface);
|
||||||
|
|
||||||
return IFont_AddRef((IFont*)this);
|
return IFont_AddRef((IFont*)this);
|
||||||
}
|
}
|
||||||
|
@ -1797,7 +1819,7 @@ static HRESULT WINAPI OLEFontImpl_EnumConnectionPoints(
|
||||||
IConnectionPointContainer* iface,
|
IConnectionPointContainer* iface,
|
||||||
IEnumConnectionPoints **ppEnum)
|
IEnumConnectionPoints **ppEnum)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IConnectionPointContainer(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IConnectionPointContainer(iface);
|
||||||
|
|
||||||
FIXME("(%p)->(%p): stub\n", this, ppEnum);
|
FIXME("(%p)->(%p): stub\n", this, ppEnum);
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
|
@ -1814,7 +1836,7 @@ static HRESULT WINAPI OLEFontImpl_FindConnectionPoint(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
IConnectionPoint **ppCp)
|
IConnectionPoint **ppCp)
|
||||||
{
|
{
|
||||||
_ICOM_THIS_From_IConnectionPointContainer(OLEFontImpl, iface);
|
OLEFontImpl *this = impl_from_IConnectionPointContainer(iface);
|
||||||
TRACE("(%p)->(%s, %p): stub\n", this, debugstr_guid(riid), ppCp);
|
TRACE("(%p)->(%s, %p): stub\n", this, debugstr_guid(riid), ppCp);
|
||||||
|
|
||||||
if(memcmp(riid, &IID_IPropertyNotifySink, sizeof(IID_IPropertyNotifySink)) == 0) {
|
if(memcmp(riid, &IID_IPropertyNotifySink, sizeof(IID_IPropertyNotifySink)) == 0) {
|
||||||
|
@ -1832,22 +1854,22 @@ static HRESULT WINAPI OLEFontImpl_FindConnectionPoint(
|
||||||
static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_QueryInterface(
|
static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_QueryInterface(
|
||||||
IPersistPropertyBag *iface, REFIID riid, LPVOID *ppvObj
|
IPersistPropertyBag *iface, REFIID riid, LPVOID *ppvObj
|
||||||
) {
|
) {
|
||||||
_ICOM_THIS_From_IPersistPropertyBag(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistPropertyBag(iface);
|
||||||
return IFont_QueryInterface(this,riid,ppvObj);
|
return IFont_QueryInterface((IFont *)this,riid,ppvObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI OLEFontImpl_IPersistPropertyBag_AddRef(
|
static ULONG WINAPI OLEFontImpl_IPersistPropertyBag_AddRef(
|
||||||
IPersistPropertyBag *iface
|
IPersistPropertyBag *iface
|
||||||
) {
|
) {
|
||||||
_ICOM_THIS_From_IPersistPropertyBag(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistPropertyBag(iface);
|
||||||
return IFont_AddRef(this);
|
return IFont_AddRef((IFont *)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI OLEFontImpl_IPersistPropertyBag_Release(
|
static ULONG WINAPI OLEFontImpl_IPersistPropertyBag_Release(
|
||||||
IPersistPropertyBag *iface
|
IPersistPropertyBag *iface
|
||||||
) {
|
) {
|
||||||
_ICOM_THIS_From_IPersistPropertyBag(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistPropertyBag(iface);
|
||||||
return IFont_Release(this);
|
return IFont_Release((IFont *)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_GetClassID(
|
static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_GetClassID(
|
||||||
|
@ -1886,7 +1908,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load(
|
||||||
VARIANT rawAttr;
|
VARIANT rawAttr;
|
||||||
VARIANT valueAttr;
|
VARIANT valueAttr;
|
||||||
HRESULT iRes = S_OK;
|
HRESULT iRes = S_OK;
|
||||||
_ICOM_THIS_From_IPersistPropertyBag(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistPropertyBag(iface);
|
||||||
|
|
||||||
VariantInit(&rawAttr);
|
VariantInit(&rawAttr);
|
||||||
VariantInit(&valueAttr);
|
VariantInit(&valueAttr);
|
||||||
|
@ -1897,7 +1919,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load(
|
||||||
{
|
{
|
||||||
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_BSTR);
|
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_BSTR);
|
||||||
if (iRes == S_OK)
|
if (iRes == S_OK)
|
||||||
iRes = IFont_put_Name(this, V_BSTR(&valueAttr));
|
iRes = IFont_put_Name((IFont *)this, V_BSTR(&valueAttr));
|
||||||
}
|
}
|
||||||
else if (iRes == E_INVALIDARG)
|
else if (iRes == E_INVALIDARG)
|
||||||
iRes = S_OK;
|
iRes = S_OK;
|
||||||
|
@ -1911,7 +1933,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load(
|
||||||
{
|
{
|
||||||
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_CY);
|
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_CY);
|
||||||
if (iRes == S_OK)
|
if (iRes == S_OK)
|
||||||
iRes = IFont_put_Size(this, V_CY(&valueAttr));
|
iRes = IFont_put_Size((IFont *)this, V_CY(&valueAttr));
|
||||||
}
|
}
|
||||||
else if (iRes == E_INVALIDARG)
|
else if (iRes == E_INVALIDARG)
|
||||||
iRes = S_OK;
|
iRes = S_OK;
|
||||||
|
@ -1925,7 +1947,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load(
|
||||||
{
|
{
|
||||||
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_I2);
|
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_I2);
|
||||||
if (iRes == S_OK)
|
if (iRes == S_OK)
|
||||||
iRes = IFont_put_Charset(this, V_I2(&valueAttr));
|
iRes = IFont_put_Charset((IFont *)this, V_I2(&valueAttr));
|
||||||
}
|
}
|
||||||
else if (iRes == E_INVALIDARG)
|
else if (iRes == E_INVALIDARG)
|
||||||
iRes = S_OK;
|
iRes = S_OK;
|
||||||
|
@ -1939,7 +1961,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load(
|
||||||
{
|
{
|
||||||
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_I2);
|
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_I2);
|
||||||
if (iRes == S_OK)
|
if (iRes == S_OK)
|
||||||
iRes = IFont_put_Weight(this, V_I2(&valueAttr));
|
iRes = IFont_put_Weight((IFont *)this, V_I2(&valueAttr));
|
||||||
}
|
}
|
||||||
else if (iRes == E_INVALIDARG)
|
else if (iRes == E_INVALIDARG)
|
||||||
iRes = S_OK;
|
iRes = S_OK;
|
||||||
|
@ -1954,7 +1976,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load(
|
||||||
{
|
{
|
||||||
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_BOOL);
|
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_BOOL);
|
||||||
if (iRes == S_OK)
|
if (iRes == S_OK)
|
||||||
iRes = IFont_put_Underline(this, V_BOOL(&valueAttr));
|
iRes = IFont_put_Underline((IFont *)this, V_BOOL(&valueAttr));
|
||||||
}
|
}
|
||||||
else if (iRes == E_INVALIDARG)
|
else if (iRes == E_INVALIDARG)
|
||||||
iRes = S_OK;
|
iRes = S_OK;
|
||||||
|
@ -1968,7 +1990,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load(
|
||||||
{
|
{
|
||||||
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_BOOL);
|
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_BOOL);
|
||||||
if (iRes == S_OK)
|
if (iRes == S_OK)
|
||||||
iRes = IFont_put_Italic(this, V_BOOL(&valueAttr));
|
iRes = IFont_put_Italic((IFont *)this, V_BOOL(&valueAttr));
|
||||||
}
|
}
|
||||||
else if (iRes == E_INVALIDARG)
|
else if (iRes == E_INVALIDARG)
|
||||||
iRes = S_OK;
|
iRes = S_OK;
|
||||||
|
@ -1982,7 +2004,7 @@ static HRESULT WINAPI OLEFontImpl_IPersistPropertyBag_Load(
|
||||||
{
|
{
|
||||||
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_BOOL);
|
iRes = VariantChangeType(&rawAttr, &valueAttr, 0, VT_BOOL);
|
||||||
if (iRes == S_OK)
|
if (iRes == S_OK)
|
||||||
IFont_put_Strikethrough(this, V_BOOL(&valueAttr));
|
IFont_put_Strikethrough((IFont *)this, V_BOOL(&valueAttr));
|
||||||
}
|
}
|
||||||
else if (iRes == E_INVALIDARG)
|
else if (iRes == E_INVALIDARG)
|
||||||
iRes = S_OK;
|
iRes = S_OK;
|
||||||
|
@ -2021,22 +2043,22 @@ static const IPersistPropertyBagVtbl OLEFontImpl_IPersistPropertyBag_VTable =
|
||||||
static HRESULT WINAPI OLEFontImpl_IPersistStreamInit_QueryInterface(
|
static HRESULT WINAPI OLEFontImpl_IPersistStreamInit_QueryInterface(
|
||||||
IPersistStreamInit *iface, REFIID riid, LPVOID *ppvObj
|
IPersistStreamInit *iface, REFIID riid, LPVOID *ppvObj
|
||||||
) {
|
) {
|
||||||
_ICOM_THIS_From_IPersistStreamInit(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistStreamInit(iface);
|
||||||
return IFont_QueryInterface(this,riid,ppvObj);
|
return IFont_QueryInterface((IFont *)this,riid,ppvObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI OLEFontImpl_IPersistStreamInit_AddRef(
|
static ULONG WINAPI OLEFontImpl_IPersistStreamInit_AddRef(
|
||||||
IPersistStreamInit *iface
|
IPersistStreamInit *iface
|
||||||
) {
|
) {
|
||||||
_ICOM_THIS_From_IPersistStreamInit(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistStreamInit(iface);
|
||||||
return IFont_AddRef(this);
|
return IFont_AddRef((IFont *)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI OLEFontImpl_IPersistStreamInit_Release(
|
static ULONG WINAPI OLEFontImpl_IPersistStreamInit_Release(
|
||||||
IPersistStreamInit *iface
|
IPersistStreamInit *iface
|
||||||
) {
|
) {
|
||||||
_ICOM_THIS_From_IPersistStreamInit(IFont, iface);
|
OLEFontImpl *this = impl_from_IPersistStreamInit(iface);
|
||||||
return IFont_Release(this);
|
return IFont_Release((IFont *)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI OLEFontImpl_IPersistStreamInit_GetClassID(
|
static HRESULT WINAPI OLEFontImpl_IPersistStreamInit_GetClassID(
|
||||||
|
|
|
@ -125,10 +125,10 @@ typedef struct OLEPictureImpl {
|
||||||
* IPicture handles IUnknown
|
* IPicture handles IUnknown
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const IPictureVtbl *lpvtbl1;
|
const IPictureVtbl *lpVtbl;
|
||||||
const IDispatchVtbl *lpvtbl2;
|
const IDispatchVtbl *lpvtblIDispatch;
|
||||||
const IPersistStreamVtbl *lpvtbl3;
|
const IPersistStreamVtbl *lpvtblIPersistStream;
|
||||||
const IConnectionPointContainerVtbl *lpvtbl4;
|
const IConnectionPointContainerVtbl *lpvtblIConnectionPointContainer;
|
||||||
|
|
||||||
/* Object reference count */
|
/* Object reference count */
|
||||||
LONG ref;
|
LONG ref;
|
||||||
|
@ -168,12 +168,21 @@ typedef struct OLEPictureImpl {
|
||||||
/*
|
/*
|
||||||
* Macros to retrieve pointer to IUnknown (IPicture) from the other VTables.
|
* Macros to retrieve pointer to IUnknown (IPicture) from the other VTables.
|
||||||
*/
|
*/
|
||||||
#define ICOM_THIS_From_IDispatch(impl, name) \
|
|
||||||
impl *This = (impl*)(((char*)name)-sizeof(void*));
|
static inline OLEPictureImpl *impl_from_IDispatch( IDispatch *iface )
|
||||||
#define ICOM_THIS_From_IPersistStream(impl, name) \
|
{
|
||||||
impl *This = (impl*)(((char*)name)-2*sizeof(void*));
|
return (OLEPictureImpl *)((char*)iface - FIELD_OFFSET(OLEPictureImpl, lpvtblIDispatch));
|
||||||
#define ICOM_THIS_From_IConnectionPointContainer(impl, name) \
|
}
|
||||||
impl *This = (impl*)(((char*)name)-3*sizeof(void*));
|
|
||||||
|
static inline OLEPictureImpl *impl_from_IPersistStream( IPersistStream *iface )
|
||||||
|
{
|
||||||
|
return (OLEPictureImpl *)((char*)iface - FIELD_OFFSET(OLEPictureImpl, lpvtblIPersistStream));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline OLEPictureImpl *impl_from_IConnectionPointContainer( IConnectionPointContainer *iface )
|
||||||
|
{
|
||||||
|
return (OLEPictureImpl *)((char*)iface - FIELD_OFFSET(OLEPictureImpl, lpvtblIConnectionPointContainer));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Predeclare VTables. They get initialized at the end.
|
* Predeclare VTables. They get initialized at the end.
|
||||||
|
@ -265,10 +274,10 @@ static OLEPictureImpl* OLEPictureImpl_Construct(LPPICTDESC pictDesc, BOOL fOwn)
|
||||||
/*
|
/*
|
||||||
* Initialize the virtual function table.
|
* Initialize the virtual function table.
|
||||||
*/
|
*/
|
||||||
newObject->lpvtbl1 = &OLEPictureImpl_VTable;
|
newObject->lpVtbl = &OLEPictureImpl_VTable;
|
||||||
newObject->lpvtbl2 = &OLEPictureImpl_IDispatch_VTable;
|
newObject->lpvtblIDispatch = &OLEPictureImpl_IDispatch_VTable;
|
||||||
newObject->lpvtbl3 = &OLEPictureImpl_IPersistStream_VTable;
|
newObject->lpvtblIPersistStream = &OLEPictureImpl_IPersistStream_VTable;
|
||||||
newObject->lpvtbl4 = &OLEPictureImpl_IConnectionPointContainer_VTable;
|
newObject->lpvtblIConnectionPointContainer = &OLEPictureImpl_IConnectionPointContainer_VTable;
|
||||||
|
|
||||||
CreateConnectionPoint((IUnknown*)newObject,&IID_IPropertyNotifySink,&newObject->pCP);
|
CreateConnectionPoint((IUnknown*)newObject,&IID_IPropertyNotifySink,&newObject->pCP);
|
||||||
|
|
||||||
|
@ -407,19 +416,19 @@ static HRESULT WINAPI OLEPictureImpl_QueryInterface(
|
||||||
}
|
}
|
||||||
else if (memcmp(&IID_IDispatch, riid, sizeof(IID_IDispatch)) == 0)
|
else if (memcmp(&IID_IDispatch, riid, sizeof(IID_IDispatch)) == 0)
|
||||||
{
|
{
|
||||||
*ppvObject = (IDispatch*)&(This->lpvtbl2);
|
*ppvObject = (IDispatch*)&(This->lpvtblIDispatch);
|
||||||
}
|
}
|
||||||
else if (memcmp(&IID_IPictureDisp, riid, sizeof(IID_IPictureDisp)) == 0)
|
else if (memcmp(&IID_IPictureDisp, riid, sizeof(IID_IPictureDisp)) == 0)
|
||||||
{
|
{
|
||||||
*ppvObject = (IDispatch*)&(This->lpvtbl2);
|
*ppvObject = (IDispatch*)&(This->lpvtblIDispatch);
|
||||||
}
|
}
|
||||||
else if (memcmp(&IID_IPersistStream, riid, sizeof(IID_IPersistStream)) == 0)
|
else if (memcmp(&IID_IPersistStream, riid, sizeof(IID_IPersistStream)) == 0)
|
||||||
{
|
{
|
||||||
*ppvObject = (IPersistStream*)&(This->lpvtbl3);
|
*ppvObject = (IPersistStream*)&(This->lpvtblIPersistStream);
|
||||||
}
|
}
|
||||||
else if (memcmp(&IID_IConnectionPointContainer, riid, sizeof(IID_IConnectionPointContainer)) == 0)
|
else if (memcmp(&IID_IConnectionPointContainer, riid, sizeof(IID_IConnectionPointContainer)) == 0)
|
||||||
{
|
{
|
||||||
*ppvObject = (IConnectionPointContainer*)&(This->lpvtbl4);
|
*ppvObject = (IConnectionPointContainer*)&(This->lpvtblIConnectionPointContainer);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Check that we obtained an interface.
|
* Check that we obtained an interface.
|
||||||
|
@ -540,10 +549,34 @@ static HRESULT WINAPI OLEPictureImpl_get_hPal(IPicture *iface,
|
||||||
OLE_HANDLE *phandle)
|
OLE_HANDLE *phandle)
|
||||||
{
|
{
|
||||||
OLEPictureImpl *This = (OLEPictureImpl *)iface;
|
OLEPictureImpl *This = (OLEPictureImpl *)iface;
|
||||||
FIXME("(%p)->(%p): stub, return 0 palette.\n", This, phandle);
|
HRESULT hres;
|
||||||
|
TRACE("(%p)->(%p)\n", This, phandle);
|
||||||
|
|
||||||
*phandle = 0;
|
if (!phandle)
|
||||||
return S_OK;
|
return E_POINTER;
|
||||||
|
|
||||||
|
switch (This->desc.picType) {
|
||||||
|
case PICTYPE_UNINITIALIZED:
|
||||||
|
case PICTYPE_NONE:
|
||||||
|
*phandle = 0;
|
||||||
|
hres = S_FALSE;
|
||||||
|
break;
|
||||||
|
case PICTYPE_BITMAP:
|
||||||
|
*phandle = (OLE_HANDLE)This->desc.u.bmp.hpal;
|
||||||
|
hres = S_OK;
|
||||||
|
break;
|
||||||
|
case PICTYPE_ICON:
|
||||||
|
case PICTYPE_METAFILE:
|
||||||
|
case PICTYPE_ENHMETAFILE:
|
||||||
|
default:
|
||||||
|
FIXME("unimplemented for type %d. Returning 0 palette.\n",
|
||||||
|
This->desc.picType);
|
||||||
|
*phandle = 0;
|
||||||
|
hres = S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRACE("returning 0x%08lx, palette handle %08x\n", hres, *phandle);
|
||||||
|
return hres;
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -791,34 +824,34 @@ static HRESULT WINAPI OLEPictureImpl_get_Attributes(IPicture *iface,
|
||||||
static HRESULT WINAPI OLEPictureImpl_IConnectionPointContainer_QueryInterface(
|
static HRESULT WINAPI OLEPictureImpl_IConnectionPointContainer_QueryInterface(
|
||||||
IConnectionPointContainer* iface,
|
IConnectionPointContainer* iface,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
VOID** ppvoid
|
VOID** ppvoid)
|
||||||
) {
|
{
|
||||||
ICOM_THIS_From_IConnectionPointContainer(IPicture,iface);
|
OLEPictureImpl *This = impl_from_IConnectionPointContainer(iface);
|
||||||
|
|
||||||
return IPicture_QueryInterface(This,riid,ppvoid);
|
return IPicture_QueryInterface((IPicture *)This,riid,ppvoid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI OLEPictureImpl_IConnectionPointContainer_AddRef(
|
static ULONG WINAPI OLEPictureImpl_IConnectionPointContainer_AddRef(
|
||||||
IConnectionPointContainer* iface)
|
IConnectionPointContainer* iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IConnectionPointContainer(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IConnectionPointContainer(iface);
|
||||||
|
|
||||||
return IPicture_AddRef(This);
|
return IPicture_AddRef((IPicture *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI OLEPictureImpl_IConnectionPointContainer_Release(
|
static ULONG WINAPI OLEPictureImpl_IConnectionPointContainer_Release(
|
||||||
IConnectionPointContainer* iface)
|
IConnectionPointContainer* iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IConnectionPointContainer(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IConnectionPointContainer(iface);
|
||||||
|
|
||||||
return IPicture_Release(This);
|
return IPicture_Release((IPicture *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI OLEPictureImpl_EnumConnectionPoints(
|
static HRESULT WINAPI OLEPictureImpl_EnumConnectionPoints(
|
||||||
IConnectionPointContainer* iface,
|
IConnectionPointContainer* iface,
|
||||||
IEnumConnectionPoints** ppEnum
|
IEnumConnectionPoints** ppEnum)
|
||||||
) {
|
{
|
||||||
ICOM_THIS_From_IConnectionPointContainer(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IConnectionPointContainer(iface);
|
||||||
|
|
||||||
FIXME("(%p,%p), stub!\n",This,ppEnum);
|
FIXME("(%p,%p), stub!\n",This,ppEnum);
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
|
@ -827,9 +860,9 @@ static HRESULT WINAPI OLEPictureImpl_EnumConnectionPoints(
|
||||||
static HRESULT WINAPI OLEPictureImpl_FindConnectionPoint(
|
static HRESULT WINAPI OLEPictureImpl_FindConnectionPoint(
|
||||||
IConnectionPointContainer* iface,
|
IConnectionPointContainer* iface,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
IConnectionPoint **ppCP
|
IConnectionPoint **ppCP)
|
||||||
) {
|
{
|
||||||
ICOM_THIS_From_IConnectionPointContainer(OLEPictureImpl, iface);
|
OLEPictureImpl *This = impl_from_IConnectionPointContainer(iface);
|
||||||
TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppCP);
|
TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppCP);
|
||||||
if (!ppCP)
|
if (!ppCP)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -852,9 +885,9 @@ static HRESULT WINAPI OLEPictureImpl_IPersistStream_QueryInterface(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
VOID** ppvoid)
|
VOID** ppvoid)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IPersistStream(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
return IPicture_QueryInterface(This, riid, ppvoid);
|
return IPicture_QueryInterface((IPicture *)This, riid, ppvoid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -865,9 +898,9 @@ static HRESULT WINAPI OLEPictureImpl_IPersistStream_QueryInterface(
|
||||||
static ULONG WINAPI OLEPictureImpl_IPersistStream_AddRef(
|
static ULONG WINAPI OLEPictureImpl_IPersistStream_AddRef(
|
||||||
IPersistStream* iface)
|
IPersistStream* iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IPersistStream(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
return IPicture_AddRef(This);
|
return IPicture_AddRef((IPicture *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -878,9 +911,9 @@ static ULONG WINAPI OLEPictureImpl_IPersistStream_AddRef(
|
||||||
static ULONG WINAPI OLEPictureImpl_IPersistStream_Release(
|
static ULONG WINAPI OLEPictureImpl_IPersistStream_Release(
|
||||||
IPersistStream* iface)
|
IPersistStream* iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IPersistStream(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
return IPicture_Release(This);
|
return IPicture_Release((IPicture *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -889,7 +922,7 @@ static ULONG WINAPI OLEPictureImpl_IPersistStream_Release(
|
||||||
static HRESULT WINAPI OLEPictureImpl_GetClassID(
|
static HRESULT WINAPI OLEPictureImpl_GetClassID(
|
||||||
IPersistStream* iface,CLSID* pClassID)
|
IPersistStream* iface,CLSID* pClassID)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IPersistStream(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
FIXME("(%p),stub!\n",This);
|
FIXME("(%p),stub!\n",This);
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
@ -900,7 +933,7 @@ static HRESULT WINAPI OLEPictureImpl_GetClassID(
|
||||||
static HRESULT WINAPI OLEPictureImpl_IsDirty(
|
static HRESULT WINAPI OLEPictureImpl_IsDirty(
|
||||||
IPersistStream* iface)
|
IPersistStream* iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IPersistStream(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
FIXME("(%p),stub!\n",This);
|
FIXME("(%p),stub!\n",This);
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
@ -1028,7 +1061,7 @@ static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) {
|
||||||
DWORD header[2];
|
DWORD header[2];
|
||||||
WORD magic;
|
WORD magic;
|
||||||
STATSTG statstg;
|
STATSTG statstg;
|
||||||
ICOM_THIS_From_IPersistStream(OLEPictureImpl, iface);
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
TRACE("(%p,%p)\n",This,pStm);
|
TRACE("(%p,%p)\n",This,pStm);
|
||||||
|
|
||||||
|
@ -1519,7 +1552,7 @@ static HRESULT WINAPI OLEPictureImpl_Save(
|
||||||
ULONG dummy;
|
ULONG dummy;
|
||||||
int iSerializeResult = 0;
|
int iSerializeResult = 0;
|
||||||
|
|
||||||
ICOM_THIS_From_IPersistStream(OLEPictureImpl, iface);
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
switch (This->desc.picType) {
|
switch (This->desc.picType) {
|
||||||
case PICTYPE_ICON:
|
case PICTYPE_ICON:
|
||||||
|
@ -1837,7 +1870,7 @@ static int serializeIcon(HICON hIcon, void ** ppBuffer, unsigned int * pLength)
|
||||||
static HRESULT WINAPI OLEPictureImpl_GetSizeMax(
|
static HRESULT WINAPI OLEPictureImpl_GetSizeMax(
|
||||||
IPersistStream* iface,ULARGE_INTEGER*pcbSize)
|
IPersistStream* iface,ULARGE_INTEGER*pcbSize)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IPersistStream(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
FIXME("(%p,%p),stub!\n",This,pcbSize);
|
FIXME("(%p,%p),stub!\n",This,pcbSize);
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
@ -1855,9 +1888,9 @@ static HRESULT WINAPI OLEPictureImpl_IDispatch_QueryInterface(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
VOID** ppvoid)
|
VOID** ppvoid)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IDispatch(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IDispatch(iface);
|
||||||
|
|
||||||
return IPicture_QueryInterface(This, riid, ppvoid);
|
return IPicture_QueryInterface((IPicture *)This, riid, ppvoid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1868,9 +1901,9 @@ static HRESULT WINAPI OLEPictureImpl_IDispatch_QueryInterface(
|
||||||
static ULONG WINAPI OLEPictureImpl_IDispatch_AddRef(
|
static ULONG WINAPI OLEPictureImpl_IDispatch_AddRef(
|
||||||
IDispatch* iface)
|
IDispatch* iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IDispatch(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IDispatch(iface);
|
||||||
|
|
||||||
return IPicture_AddRef(This);
|
return IPicture_AddRef((IPicture *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -1881,9 +1914,9 @@ static ULONG WINAPI OLEPictureImpl_IDispatch_AddRef(
|
||||||
static ULONG WINAPI OLEPictureImpl_IDispatch_Release(
|
static ULONG WINAPI OLEPictureImpl_IDispatch_Release(
|
||||||
IDispatch* iface)
|
IDispatch* iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_IDispatch(IPicture, iface);
|
OLEPictureImpl *This = impl_from_IDispatch(iface);
|
||||||
|
|
||||||
return IPicture_Release(This);
|
return IPicture_Release((IPicture *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
|
|
@ -901,7 +901,7 @@ static struct regsvr_interface const interface_list[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DllRegisterServer (OLEAUT32.320)
|
* DllRegisterServer (OLEAUT32.@)
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI DllRegisterServer(void)
|
HRESULT WINAPI DllRegisterServer(void)
|
||||||
{
|
{
|
||||||
|
@ -916,7 +916,7 @@ HRESULT WINAPI DllRegisterServer(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DllUnregisterServer (OLEAUT32.321)
|
* DllUnregisterServer (OLEAUT32.@)
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI DllUnregisterServer(void)
|
HRESULT WINAPI DllUnregisterServer(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -789,12 +789,12 @@ HRESULT WINAPI SafeArrayLock(SAFEARRAY *psa)
|
||||||
if (!psa)
|
if (!psa)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
ulLocks = InterlockedIncrement(&psa->cLocks);
|
ulLocks = InterlockedIncrement( (LONG*) &psa->cLocks);
|
||||||
|
|
||||||
if (ulLocks > 0xffff) /* Maximum of 16384 locks at a time */
|
if (ulLocks > 0xffff) /* Maximum of 16384 locks at a time */
|
||||||
{
|
{
|
||||||
WARN("Out of locks!\n");
|
WARN("Out of locks!\n");
|
||||||
InterlockedDecrement(&psa->cLocks);
|
InterlockedDecrement( (LONG*) &psa->cLocks);
|
||||||
return E_UNEXPECTED;
|
return E_UNEXPECTED;
|
||||||
}
|
}
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -823,10 +823,10 @@ HRESULT WINAPI SafeArrayUnlock(SAFEARRAY *psa)
|
||||||
if (!psa)
|
if (!psa)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
if ((LONG)InterlockedDecrement(&psa->cLocks) < 0)
|
if ((LONG)InterlockedDecrement( (LONG*) &psa->cLocks) < 0)
|
||||||
{
|
{
|
||||||
WARN("Unlocked but no lock held!\n");
|
WARN("Unlocked but no lock held!\n");
|
||||||
InterlockedIncrement(&psa->cLocks);
|
InterlockedIncrement( (LONG*) &psa->cLocks);
|
||||||
return E_UNEXPECTED;
|
return E_UNEXPECTED;
|
||||||
}
|
}
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
|
@ -159,7 +159,6 @@ _unmarshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN *pUnk) {
|
||||||
|
|
||||||
static HRESULT
|
static HRESULT
|
||||||
_marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) {
|
_marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) {
|
||||||
LPUNKNOWN newiface = NULL;
|
|
||||||
LPBYTE tempbuf = NULL;
|
LPBYTE tempbuf = NULL;
|
||||||
IStream *pStm = NULL;
|
IStream *pStm = NULL;
|
||||||
STATSTG ststg;
|
STATSTG ststg;
|
||||||
|
@ -183,11 +182,6 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) {
|
||||||
hres = E_FAIL;
|
hres = E_FAIL;
|
||||||
|
|
||||||
TRACE("...%s...\n",debugstr_guid(riid));
|
TRACE("...%s...\n",debugstr_guid(riid));
|
||||||
hres = IUnknown_QueryInterface(pUnk,riid,(LPVOID*)&newiface);
|
|
||||||
if (hres) {
|
|
||||||
WARN("%p does not support iface %s\n",pUnk,debugstr_guid(riid));
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
hres = CreateStreamOnHGlobal(0,TRUE,&pStm);
|
hres = CreateStreamOnHGlobal(0,TRUE,&pStm);
|
||||||
if (hres) {
|
if (hres) {
|
||||||
|
@ -195,7 +189,7 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
hres = CoMarshalInterface(pStm,riid,newiface,0,NULL,0);
|
hres = CoMarshalInterface(pStm,riid,pUnk,0,NULL,0);
|
||||||
if (hres) {
|
if (hres) {
|
||||||
ERR("Marshalling interface %s failed with %lx\n", debugstr_guid(riid), hres);
|
ERR("Marshalling interface %s failed with %lx\n", debugstr_guid(riid), hres);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -226,7 +220,6 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) {
|
||||||
hres = xbuf_add(buf,tempbuf,ststg.cbSize.u.LowPart);
|
hres = xbuf_add(buf,tempbuf,ststg.cbSize.u.LowPart);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(),0,tempbuf);
|
HeapFree(GetProcessHeap(),0,tempbuf);
|
||||||
IUnknown_Release(newiface);
|
|
||||||
IStream_Release(pStm);
|
IStream_Release(pStm);
|
||||||
|
|
||||||
return hres;
|
return hres;
|
||||||
|
@ -235,7 +228,6 @@ fail:
|
||||||
xsize = 0;
|
xsize = 0;
|
||||||
xbuf_add(buf,(LPBYTE)&xsize,sizeof(xsize));
|
xbuf_add(buf,(LPBYTE)&xsize,sizeof(xsize));
|
||||||
if (pStm) IUnknown_Release(pStm);
|
if (pStm) IUnknown_Release(pStm);
|
||||||
if (newiface) IUnknown_Release(newiface);
|
|
||||||
HeapFree(GetProcessHeap(), 0, tempbuf);
|
HeapFree(GetProcessHeap(), 0, tempbuf);
|
||||||
return hres;
|
return hres;
|
||||||
}
|
}
|
||||||
|
@ -556,7 +548,7 @@ serialize_param(
|
||||||
if (hres) return hres;
|
if (hres) return hres;
|
||||||
}
|
}
|
||||||
/* need to recurse since we need to free the stuff */
|
/* need to recurse since we need to free the stuff */
|
||||||
hres = serialize_param(tinfo,writeit,debugout,dealloc,&tdesc2,&(V_I4(vt)),buf);
|
hres = serialize_param(tinfo,writeit,debugout,dealloc,&tdesc2,(DWORD*)&(V_I4(vt)),buf);
|
||||||
if (debugout) TRACE_(olerelay)(")");
|
if (debugout) TRACE_(olerelay)(")");
|
||||||
return hres;
|
return hres;
|
||||||
}
|
}
|
||||||
|
@ -663,6 +655,8 @@ serialize_param(
|
||||||
case TKIND_INTERFACE:
|
case TKIND_INTERFACE:
|
||||||
if (writeit)
|
if (writeit)
|
||||||
hres=_marshal_interface(buf,&(tattr->guid),(LPUNKNOWN)arg);
|
hres=_marshal_interface(buf,&(tattr->guid),(LPUNKNOWN)arg);
|
||||||
|
if (dealloc)
|
||||||
|
IUnknown_Release((LPUNKNOWN)arg);
|
||||||
break;
|
break;
|
||||||
case TKIND_RECORD: {
|
case TKIND_RECORD: {
|
||||||
int i;
|
int i;
|
||||||
|
@ -1077,7 +1071,7 @@ deserialize_param(
|
||||||
tdesc2.vt = vttype;
|
tdesc2.vt = vttype;
|
||||||
V_VT(vt) = vttype;
|
V_VT(vt) = vttype;
|
||||||
if (debugout) TRACE_(olerelay)("Vt(%ld)(",vttype);
|
if (debugout) TRACE_(olerelay)("Vt(%ld)(",vttype);
|
||||||
hres = deserialize_param(tinfo, readit, debugout, alloc, &tdesc2, &(V_I4(vt)), buf);
|
hres = deserialize_param(tinfo, readit, debugout, alloc, &tdesc2, (DWORD*)&(V_I4(vt)), buf);
|
||||||
TRACE_(olerelay)(")");
|
TRACE_(olerelay)(")");
|
||||||
return hres;
|
return hres;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1526,7 +1520,7 @@ xCall(LPVOID retptr, int method, TMProxyImpl *tpinfo /*, args */)
|
||||||
ULONG status;
|
ULONG status;
|
||||||
BSTR fname,iname;
|
BSTR fname,iname;
|
||||||
BSTR names[10];
|
BSTR names[10];
|
||||||
int nrofnames;
|
UINT nrofnames;
|
||||||
int is_idispatch_getidsofnames = 0;
|
int is_idispatch_getidsofnames = 0;
|
||||||
DWORD remoteresult = 0;
|
DWORD remoteresult = 0;
|
||||||
ITypeInfo *tinfo;
|
ITypeInfo *tinfo;
|
||||||
|
@ -2016,7 +2010,7 @@ TMStubImpl_Invoke(
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
DWORD *args, res, *xargs, nrofargs;
|
DWORD *args, res, *xargs, nrofargs;
|
||||||
marshal_state buf;
|
marshal_state buf;
|
||||||
int nrofnames;
|
UINT nrofnames;
|
||||||
BSTR names[10];
|
BSTR names[10];
|
||||||
BSTR fname = NULL,iname = NULL;
|
BSTR fname = NULL,iname = NULL;
|
||||||
BOOL is_idispatch_getidsofnames = 0;
|
BOOL is_idispatch_getidsofnames = 0;
|
||||||
|
@ -2220,11 +2214,34 @@ afterserialize:
|
||||||
return hres;
|
return hres;
|
||||||
|
|
||||||
ITypeInfo_Release(tinfo);
|
ITypeInfo_Release(tinfo);
|
||||||
|
HeapFree(GetProcessHeap(), 0, args);
|
||||||
|
|
||||||
xmsg->cbBuffer = buf.curoff;
|
xmsg->cbBuffer = buf.curoff;
|
||||||
I_RpcGetBuffer((RPC_MESSAGE *)xmsg);
|
if (rpcchanbuf)
|
||||||
memcpy(xmsg->Buffer, buf.base, buf.curoff);
|
{
|
||||||
HeapFree(GetProcessHeap(),0,args);
|
hres = IRpcChannelBuffer_GetBuffer(rpcchanbuf, xmsg, &This->iid);
|
||||||
return S_OK;
|
if (hres != S_OK)
|
||||||
|
ERR("IRpcChannelBuffer_GetBuffer failed with error 0x%08lx\n", hres);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* FIXME: remove this case when we start sending an IRpcChannelBuffer
|
||||||
|
* object with builtin OLE */
|
||||||
|
RPC_STATUS status = I_RpcGetBuffer((RPC_MESSAGE *)xmsg);
|
||||||
|
if (status != RPC_S_OK)
|
||||||
|
{
|
||||||
|
ERR("I_RpcGetBuffer failed with error %ld\n", status);
|
||||||
|
hres = E_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hres == S_OK)
|
||||||
|
memcpy(xmsg->Buffer, buf.base, buf.curoff);
|
||||||
|
|
||||||
|
HeapFree(GetProcessHeap(), 0, buf.base);
|
||||||
|
|
||||||
|
TRACE("returning\n");
|
||||||
|
return hres;
|
||||||
}
|
}
|
||||||
|
|
||||||
static LPRPCSTUBBUFFER WINAPI
|
static LPRPCSTUBBUFFER WINAPI
|
||||||
|
@ -2237,6 +2254,7 @@ static ULONG WINAPI
|
||||||
TMStubImpl_CountRefs(LPRPCSTUBBUFFER iface) {
|
TMStubImpl_CountRefs(LPRPCSTUBBUFFER iface) {
|
||||||
TMStubImpl *This = (TMStubImpl *)iface;
|
TMStubImpl *This = (TMStubImpl *)iface;
|
||||||
|
|
||||||
|
FIXME("()\n");
|
||||||
return This->ref; /*FIXME? */
|
return This->ref; /*FIXME? */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2305,10 +2323,9 @@ static const IPSFactoryBufferVtbl psfacbufvtbl = {
|
||||||
static const IPSFactoryBufferVtbl *lppsfac = &psfacbufvtbl;
|
static const IPSFactoryBufferVtbl *lppsfac = &psfacbufvtbl;
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DllGetClassObject [OLE32.63]
|
* TMARSHAL_DllGetClassObject
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI
|
HRESULT TMARSHAL_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv)
|
||||||
TypeLibFac_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv)
|
|
||||||
{
|
{
|
||||||
if (IsEqualIID(iid,&IID_IPSFactoryBuffer)) {
|
if (IsEqualIID(iid,&IID_IPSFactoryBuffer)) {
|
||||||
*ppv = &lppsfac;
|
*ppv = &lppsfac;
|
||||||
|
|
|
@ -247,7 +247,7 @@ HRESULT WINAPI QueryPathOfRegTypeLib(
|
||||||
|
|
||||||
while (hr != S_OK)
|
while (hr != S_OK)
|
||||||
{
|
{
|
||||||
DWORD dwPathLen = sizeof(Path);
|
LONG dwPathLen = sizeof(Path);
|
||||||
|
|
||||||
get_lcid_subkey( myLCID, SYS_WIN32, buffer );
|
get_lcid_subkey( myLCID, SYS_WIN32, buffer );
|
||||||
|
|
||||||
|
@ -885,8 +885,10 @@ typedef struct tagITypeLibImpl
|
||||||
static const ITypeLib2Vtbl tlbvt;
|
static const ITypeLib2Vtbl tlbvt;
|
||||||
static const ITypeCompVtbl tlbtcvt;
|
static const ITypeCompVtbl tlbtcvt;
|
||||||
|
|
||||||
#define _ITypeComp_Offset(impl) ((int)(&(((impl*)0)->lpVtblTypeComp)))
|
static inline ITypeLibImpl *impl_from_ITypeComp( ITypeComp *iface )
|
||||||
#define ICOM_THIS_From_ITypeComp(impl, iface) impl* This = (impl*)(((char*)iface)-_ITypeComp_Offset(impl))
|
{
|
||||||
|
return (ITypeLibImpl *)((char*)iface - FIELD_OFFSET(ITypeLibImpl, lpVtblTypeComp));
|
||||||
|
}
|
||||||
|
|
||||||
/* ITypeLib methods */
|
/* ITypeLib methods */
|
||||||
static ITypeLib2* ITypeLib2_Constructor_MSFT(LPVOID pLib, DWORD dwTLBLength);
|
static ITypeLib2* ITypeLib2_Constructor_MSFT(LPVOID pLib, DWORD dwTLBLength);
|
||||||
|
@ -995,6 +997,11 @@ typedef struct tagITypeInfoImpl
|
||||||
struct tagITypeInfoImpl * next;
|
struct tagITypeInfoImpl * next;
|
||||||
} ITypeInfoImpl;
|
} ITypeInfoImpl;
|
||||||
|
|
||||||
|
static inline ITypeInfoImpl *info_impl_from_ITypeComp( ITypeComp *iface )
|
||||||
|
{
|
||||||
|
return (ITypeInfoImpl *)((char*)iface - FIELD_OFFSET(ITypeInfoImpl, lpVtblTypeComp));
|
||||||
|
}
|
||||||
|
|
||||||
static const ITypeInfo2Vtbl tinfvt;
|
static const ITypeInfo2Vtbl tinfvt;
|
||||||
static const ITypeCompVtbl tcompvt;
|
static const ITypeCompVtbl tcompvt;
|
||||||
|
|
||||||
|
@ -2909,7 +2916,7 @@ static SLTG_TypeInfoTail *SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI,
|
||||||
paramName = NULL;
|
paramName = NULL;
|
||||||
HaveOffs = TRUE;
|
HaveOffs = TRUE;
|
||||||
}
|
}
|
||||||
else if(!isalnum(*(paramName-1)))
|
else if(paramName[-1] && !isalnum(paramName[-1]))
|
||||||
HaveOffs = TRUE;
|
HaveOffs = TRUE;
|
||||||
|
|
||||||
pArg++;
|
pArg++;
|
||||||
|
@ -3125,7 +3132,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength)
|
||||||
DWORD len, order;
|
DWORD len, order;
|
||||||
ITypeInfoImpl **ppTypeInfoImpl;
|
ITypeInfoImpl **ppTypeInfoImpl;
|
||||||
|
|
||||||
TRACE("%p, TLB length = %ld\n", pLib, dwTLBLength);
|
TRACE_(typelib)("%p, TLB length = %ld\n", pLib, dwTLBLength);
|
||||||
|
|
||||||
pTypeLibImpl = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(ITypeLibImpl));
|
pTypeLibImpl = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(ITypeLibImpl));
|
||||||
if (!pTypeLibImpl) return NULL;
|
if (!pTypeLibImpl) return NULL;
|
||||||
|
@ -3135,8 +3142,8 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength)
|
||||||
|
|
||||||
pHeader = pLib;
|
pHeader = pLib;
|
||||||
|
|
||||||
TRACE("header:\n");
|
TRACE_(typelib)("header:\n");
|
||||||
TRACE("\tmagic=0x%08lx, file blocks = %d\n", pHeader->SLTG_magic,
|
TRACE_(typelib)("\tmagic=0x%08lx, file blocks = %d\n", pHeader->SLTG_magic,
|
||||||
pHeader->nrOfFileBlks );
|
pHeader->nrOfFileBlks );
|
||||||
if (pHeader->SLTG_magic != SLTG_SIGNATURE) {
|
if (pHeader->SLTG_magic != SLTG_SIGNATURE) {
|
||||||
FIXME("Header type magic 0x%08lx not supported.\n",
|
FIXME("Header type magic 0x%08lx not supported.\n",
|
||||||
|
@ -3212,7 +3219,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength)
|
||||||
}
|
}
|
||||||
w = *(WORD*)(ptr + 4 + len);
|
w = *(WORD*)(ptr + 4 + len);
|
||||||
if(w != 0xffff) {
|
if(w != 0xffff) {
|
||||||
TRACE("\twith %s\n", debugstr_an(ptr + 6 + len, w));
|
TRACE_(typelib)("\twith %s\n", debugstr_an(ptr + 6 + len, w));
|
||||||
len += w;
|
len += w;
|
||||||
pOtherTypeInfoBlks[i].other_name = HeapAlloc(GetProcessHeap(),0,
|
pOtherTypeInfoBlks[i].other_name = HeapAlloc(GetProcessHeap(),0,
|
||||||
w+1);
|
w+1);
|
||||||
|
@ -3359,7 +3366,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength)
|
||||||
(*ppTypeInfoImpl)->TypeAttr.cbSizeInstance = pTITail->cbSizeInstance;
|
(*ppTypeInfoImpl)->TypeAttr.cbSizeInstance = pTITail->cbSizeInstance;
|
||||||
(*ppTypeInfoImpl)->TypeAttr.cbSizeVft = pTITail->cbSizeVft;
|
(*ppTypeInfoImpl)->TypeAttr.cbSizeVft = pTITail->cbSizeVft;
|
||||||
|
|
||||||
#define X(x) TRACE("tt "#x": %x\n",pTITail->res##x);
|
#define X(x) TRACE_(typelib)("tt "#x": %x\n",pTITail->res##x);
|
||||||
X(06);
|
X(06);
|
||||||
X(08);
|
X(08);
|
||||||
X(0a);
|
X(0a);
|
||||||
|
@ -4003,23 +4010,23 @@ static const ITypeLib2Vtbl tlbvt = {
|
||||||
|
|
||||||
static HRESULT WINAPI ITypeLibComp_fnQueryInterface(ITypeComp * iface, REFIID riid, LPVOID * ppv)
|
static HRESULT WINAPI ITypeLibComp_fnQueryInterface(ITypeComp * iface, REFIID riid, LPVOID * ppv)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeComp(ITypeLibImpl, iface);
|
ITypeLibImpl *This = impl_from_ITypeComp(iface);
|
||||||
|
|
||||||
return ITypeInfo_QueryInterface((ITypeInfo *)This, riid, ppv);
|
return ITypeLib2_QueryInterface((ITypeLib *)This, riid, ppv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI ITypeLibComp_fnAddRef(ITypeComp * iface)
|
static ULONG WINAPI ITypeLibComp_fnAddRef(ITypeComp * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeComp(ITypeLibImpl, iface);
|
ITypeLibImpl *This = impl_from_ITypeComp(iface);
|
||||||
|
|
||||||
return ITypeInfo_AddRef((ITypeInfo *)This);
|
return ITypeLib2_AddRef((ITypeLib2 *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI ITypeLibComp_fnRelease(ITypeComp * iface)
|
static ULONG WINAPI ITypeLibComp_fnRelease(ITypeComp * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeComp(ITypeLibImpl, iface);
|
ITypeLibImpl *This = impl_from_ITypeComp(iface);
|
||||||
|
|
||||||
return ITypeInfo_Release((ITypeInfo *)This);
|
return ITypeLib2_Release((ITypeLib2 *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI ITypeLibComp_fnBind(
|
static HRESULT WINAPI ITypeLibComp_fnBind(
|
||||||
|
@ -4169,7 +4176,7 @@ static HRESULT WINAPI ITypeInfo_fnGetTypeAttr( ITypeInfo2 *iface,
|
||||||
if(This->TypeAttr.typekind == TKIND_ALIAS) /* need to deep copy typedesc */
|
if(This->TypeAttr.typekind == TKIND_ALIAS) /* need to deep copy typedesc */
|
||||||
copy_typedesc(&(*ppTypeAttr)->tdescAlias, &This->TypeAttr.tdescAlias);
|
copy_typedesc(&(*ppTypeAttr)->tdescAlias, &This->TypeAttr.tdescAlias);
|
||||||
|
|
||||||
if((*ppTypeAttr)->typekind == TKIND_DISPATCH && (*ppTypeAttr)->wTypeFlags & TYPEFLAG_FDUAL) {
|
if((*ppTypeAttr)->typekind == TKIND_DISPATCH) {
|
||||||
(*ppTypeAttr)->cFuncs = (*ppTypeAttr)->cbSizeVft / 4; /* This should include all the inherited
|
(*ppTypeAttr)->cFuncs = (*ppTypeAttr)->cbSizeVft / 4; /* This should include all the inherited
|
||||||
funcs */
|
funcs */
|
||||||
(*ppTypeAttr)->cbSizeVft = 28; /* This is always the size of IDispatch's vtbl */
|
(*ppTypeAttr)->cbSizeVft = 28; /* This is always the size of IDispatch's vtbl */
|
||||||
|
@ -4990,6 +4997,14 @@ static HRESULT WINAPI ITypeInfo_fnInvoke(
|
||||||
dump_Variant(&varresult);
|
dump_Variant(&varresult);
|
||||||
}
|
}
|
||||||
hres = VariantCopyInd(pVarResult, &varresult);
|
hres = VariantCopyInd(pVarResult, &varresult);
|
||||||
|
/* free data stored in varresult. Note that
|
||||||
|
* VariantClear doesn't do what we want because we are
|
||||||
|
* working with byref types. */
|
||||||
|
/* FIXME: clear safearrays, bstrs, records and
|
||||||
|
* variants here too */
|
||||||
|
if ((V_VT(&varresult) == (VT_UNKNOWN | VT_BYREF)) ||
|
||||||
|
(V_VT(&varresult) == (VT_DISPATCH | VT_BYREF)))
|
||||||
|
IUnknown_Release(*V_UNKNOWNREF(&varresult));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5113,6 +5128,7 @@ static HRESULT WINAPI ITypeInfo_fnGetDocumentation( ITypeInfo2 *iface,
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
WARN("member %ld not found\n", memid);
|
||||||
return TYPE_E_ELEMENTNOTFOUND;
|
return TYPE_E_ELEMENTNOTFOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5207,7 +5223,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo(
|
||||||
ITypeLib *pTLib = NULL;
|
ITypeLib *pTLib = NULL;
|
||||||
|
|
||||||
if(pRefType->pImpTLInfo == TLB_REF_INTERNAL) {
|
if(pRefType->pImpTLInfo == TLB_REF_INTERNAL) {
|
||||||
int Index;
|
UINT Index;
|
||||||
result = ITypeInfo_GetContainingTypeLib(iface, &pTLib, &Index);
|
result = ITypeInfo_GetContainingTypeLib(iface, &pTLib, &Index);
|
||||||
} else {
|
} else {
|
||||||
if(pRefType->pImpTLInfo->pImpTypeLib) {
|
if(pRefType->pImpTLInfo->pImpTypeLib) {
|
||||||
|
@ -5955,21 +5971,21 @@ HRESULT WINAPI CreateDispTypeInfo(
|
||||||
|
|
||||||
static HRESULT WINAPI ITypeComp_fnQueryInterface(ITypeComp * iface, REFIID riid, LPVOID * ppv)
|
static HRESULT WINAPI ITypeComp_fnQueryInterface(ITypeComp * iface, REFIID riid, LPVOID * ppv)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeComp(ITypeInfoImpl, iface);
|
ITypeInfoImpl *This = info_impl_from_ITypeComp(iface);
|
||||||
|
|
||||||
return ITypeInfo_QueryInterface((ITypeInfo *)This, riid, ppv);
|
return ITypeInfo_QueryInterface((ITypeInfo *)This, riid, ppv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI ITypeComp_fnAddRef(ITypeComp * iface)
|
static ULONG WINAPI ITypeComp_fnAddRef(ITypeComp * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeComp(ITypeInfoImpl, iface);
|
ITypeInfoImpl *This = info_impl_from_ITypeComp(iface);
|
||||||
|
|
||||||
return ITypeInfo_AddRef((ITypeInfo *)This);
|
return ITypeInfo_AddRef((ITypeInfo *)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI ITypeComp_fnRelease(ITypeComp * iface)
|
static ULONG WINAPI ITypeComp_fnRelease(ITypeComp * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeComp(ITypeInfoImpl, iface);
|
ITypeInfoImpl *This = info_impl_from_ITypeComp(iface);
|
||||||
|
|
||||||
return ITypeInfo_Release((ITypeInfo *)This);
|
return ITypeInfo_Release((ITypeInfo *)This);
|
||||||
}
|
}
|
||||||
|
@ -5983,7 +5999,7 @@ static HRESULT WINAPI ITypeComp_fnBind(
|
||||||
DESCKIND * pDescKind,
|
DESCKIND * pDescKind,
|
||||||
BINDPTR * pBindPtr)
|
BINDPTR * pBindPtr)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeComp(ITypeInfoImpl, iface);
|
ITypeInfoImpl *This = info_impl_from_ITypeComp(iface);
|
||||||
TLBFuncDesc * pFDesc;
|
TLBFuncDesc * pFDesc;
|
||||||
TLBVarDesc * pVDesc;
|
TLBVarDesc * pVDesc;
|
||||||
|
|
||||||
|
|
|
@ -597,9 +597,12 @@ WORD offset from start of block to SAFEARRAY
|
||||||
WORD typeofarray
|
WORD typeofarray
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "poppack.h"
|
||||||
|
|
||||||
extern DWORD _invoke(FARPROC func,CALLCONV callconv, int nrargs, DWORD *args);
|
extern DWORD _invoke(FARPROC func,CALLCONV callconv, int nrargs, DWORD *args);
|
||||||
extern void dump_Variant(VARIANT * pvar);
|
extern void dump_Variant(VARIANT * pvar);
|
||||||
#include "poppack.h"
|
|
||||||
|
HRESULT TMARSHAL_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv);
|
||||||
|
|
||||||
/*---------------------------END--------------------------------------------*/
|
/*---------------------------END--------------------------------------------*/
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
2 stub CREATETYPELIB
|
2 stub CREATETYPELIB
|
||||||
3 pascal LoadTypeLib(ptr ptr) LoadTypeLib16
|
3 pascal LoadTypeLib(ptr ptr) LoadTypeLib16
|
||||||
4 stub LHASHVALOFNAMESYS
|
4 stub LHASHVALOFNAMESYS
|
||||||
5 stub _IID_ICREATETYPEINFO
|
5 stub _IID_ICREATETYPEINFO
|
||||||
6 stub _IID_ICREATETYPELIB
|
6 stub _IID_ICREATETYPELIB
|
||||||
7 stub _IID_ITYPECOMP
|
7 stub _IID_ITYPECOMP
|
||||||
8 stub _IID_ITYPEINFO
|
8 stub _IID_ITYPEINFO
|
||||||
9 stub _IID_ITYPELIB
|
9 stub _IID_ITYPELIB
|
||||||
10 stub REGISTERTYPELIB
|
10 stub REGISTERTYPELIB
|
||||||
11 stub LOADREGTYPELIB
|
11 stub LOADREGTYPELIB
|
||||||
14 pascal QueryPathOfRegTypeLib(ptr word word word ptr) QueryPathOfRegTypeLib16
|
14 pascal QueryPathOfRegTypeLib(ptr word word word ptr) QueryPathOfRegTypeLib16
|
||||||
15 pascal OaBuildVersion() OaBuildVersion16
|
15 pascal OaBuildVersion() OaBuildVersion16
|
||||||
|
|
|
@ -166,8 +166,10 @@ typedef struct tagICreateTypeLib2Impl
|
||||||
struct tagICreateTypeInfo2Impl *last_typeinfo;
|
struct tagICreateTypeInfo2Impl *last_typeinfo;
|
||||||
} ICreateTypeLib2Impl;
|
} ICreateTypeLib2Impl;
|
||||||
|
|
||||||
#define _ITypeLib2_Offset(impl) ((int)(&(((impl*)0)->lpVtblTypeLib2)))
|
static inline ICreateTypeLib2Impl *impl_from_ITypeLib2( ITypeLib2 *iface )
|
||||||
#define ICOM_THIS_From_ITypeLib2(impl, iface) impl* This = (impl*)(((char*)iface)-_ITypeLib2_Offset(impl))
|
{
|
||||||
|
return (ICreateTypeLib2Impl *)((char*)iface - FIELD_OFFSET(ICreateTypeLib2Impl, lpVtblTypeLib2));
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct tagICreateTypeInfo2Impl
|
typedef struct tagICreateTypeInfo2Impl
|
||||||
{
|
{
|
||||||
|
@ -192,8 +194,10 @@ typedef struct tagICreateTypeInfo2Impl
|
||||||
struct tagICreateTypeInfo2Impl *next_typeinfo;
|
struct tagICreateTypeInfo2Impl *next_typeinfo;
|
||||||
} ICreateTypeInfo2Impl;
|
} ICreateTypeInfo2Impl;
|
||||||
|
|
||||||
#define _ITypeInfo2_Offset(impl) ((int)(&(((impl*)0)->lpVtblTypeInfo2)))
|
static inline ICreateTypeInfo2Impl *impl_from_ITypeInfo2( ITypeInfo2 *iface )
|
||||||
#define ICOM_THIS_From_ITypeInfo2(impl, iface) impl* This = (impl*)(((char*)iface)-_ITypeInfo2_Offset(impl))
|
{
|
||||||
|
return (ICreateTypeInfo2Impl *)((char*)iface - FIELD_OFFSET(ICreateTypeInfo2Impl, lpVtblTypeInfo2));
|
||||||
|
}
|
||||||
|
|
||||||
static ULONG WINAPI ICreateTypeLib2_fnRelease(ICreateTypeLib2 *iface);
|
static ULONG WINAPI ICreateTypeLib2_fnRelease(ICreateTypeLib2 *iface);
|
||||||
|
|
||||||
|
@ -1328,7 +1332,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddRefTypeInfo(
|
||||||
ICreateTypeInfo2Impl *This = (ICreateTypeInfo2Impl *)iface;
|
ICreateTypeInfo2Impl *This = (ICreateTypeInfo2Impl *)iface;
|
||||||
|
|
||||||
ITypeLib *container;
|
ITypeLib *container;
|
||||||
int index;
|
UINT index;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
|
|
||||||
TRACE("(%p,%p,%p)\n", iface, pTInfo, phRefType);
|
TRACE("(%p,%p,%p)\n", iface, pTInfo, phRefType);
|
||||||
|
@ -2198,7 +2202,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetName(
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ITypeInfo2_fnQueryInterface(ITypeInfo2 * iface, REFIID riid, LPVOID * ppv)
|
static HRESULT WINAPI ITypeInfo2_fnQueryInterface(ITypeInfo2 * iface, REFIID riid, LPVOID * ppv)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeInfo2(ICreateTypeInfo2Impl, iface);
|
ICreateTypeInfo2Impl *This = impl_from_ITypeInfo2(iface);
|
||||||
|
|
||||||
return ICreateTypeInfo2_QueryInterface((ICreateTypeInfo2 *)This, riid, ppv);
|
return ICreateTypeInfo2_QueryInterface((ICreateTypeInfo2 *)This, riid, ppv);
|
||||||
}
|
}
|
||||||
|
@ -2210,7 +2214,7 @@ static HRESULT WINAPI ITypeInfo2_fnQueryInterface(ITypeInfo2 * iface, REFIID rii
|
||||||
*/
|
*/
|
||||||
static ULONG WINAPI ITypeInfo2_fnAddRef(ITypeInfo2 * iface)
|
static ULONG WINAPI ITypeInfo2_fnAddRef(ITypeInfo2 * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeInfo2(ICreateTypeInfo2Impl, iface);
|
ICreateTypeInfo2Impl *This = impl_from_ITypeInfo2(iface);
|
||||||
|
|
||||||
return ICreateTypeInfo2_AddRef((ICreateTypeInfo2 *)This);
|
return ICreateTypeInfo2_AddRef((ICreateTypeInfo2 *)This);
|
||||||
}
|
}
|
||||||
|
@ -2222,7 +2226,7 @@ static ULONG WINAPI ITypeInfo2_fnAddRef(ITypeInfo2 * iface)
|
||||||
*/
|
*/
|
||||||
static ULONG WINAPI ITypeInfo2_fnRelease(ITypeInfo2 * iface)
|
static ULONG WINAPI ITypeInfo2_fnRelease(ITypeInfo2 * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeInfo2(ICreateTypeInfo2Impl, iface);
|
ICreateTypeInfo2Impl *This = impl_from_ITypeInfo2(iface);
|
||||||
|
|
||||||
return ICreateTypeInfo2_Release((ICreateTypeInfo2 *)This);
|
return ICreateTypeInfo2_Release((ICreateTypeInfo2 *)This);
|
||||||
}
|
}
|
||||||
|
@ -2461,7 +2465,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetContainingTypeLib(
|
||||||
ITypeLib** ppTLib,
|
ITypeLib** ppTLib,
|
||||||
UINT* pIndex)
|
UINT* pIndex)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeInfo2(ICreateTypeInfo2Impl, iface);
|
ICreateTypeInfo2Impl *This = impl_from_ITypeInfo2(iface);
|
||||||
|
|
||||||
TRACE("(%p,%p,%p)\n", iface, ppTLib, pIndex);
|
TRACE("(%p,%p,%p)\n", iface, ppTLib, pIndex);
|
||||||
|
|
||||||
|
@ -3431,7 +3435,7 @@ static HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringDll(
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ITypeLib2_fnQueryInterface(ITypeLib2 * iface, REFIID riid, LPVOID * ppv)
|
static HRESULT WINAPI ITypeLib2_fnQueryInterface(ITypeLib2 * iface, REFIID riid, LPVOID * ppv)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface);
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
return ICreateTypeLib2_QueryInterface((ICreateTypeLib2 *)This, riid, ppv);
|
return ICreateTypeLib2_QueryInterface((ICreateTypeLib2 *)This, riid, ppv);
|
||||||
}
|
}
|
||||||
|
@ -3443,7 +3447,7 @@ static HRESULT WINAPI ITypeLib2_fnQueryInterface(ITypeLib2 * iface, REFIID riid,
|
||||||
*/
|
*/
|
||||||
static ULONG WINAPI ITypeLib2_fnAddRef(ITypeLib2 * iface)
|
static ULONG WINAPI ITypeLib2_fnAddRef(ITypeLib2 * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface);
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
return ICreateTypeLib2_AddRef((ICreateTypeLib2 *)This);
|
return ICreateTypeLib2_AddRef((ICreateTypeLib2 *)This);
|
||||||
}
|
}
|
||||||
|
@ -3455,7 +3459,7 @@ static ULONG WINAPI ITypeLib2_fnAddRef(ITypeLib2 * iface)
|
||||||
*/
|
*/
|
||||||
static ULONG WINAPI ITypeLib2_fnRelease(ITypeLib2 * iface)
|
static ULONG WINAPI ITypeLib2_fnRelease(ITypeLib2 * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface);
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
return ICreateTypeLib2_Release((ICreateTypeLib2 *)This);
|
return ICreateTypeLib2_Release((ICreateTypeLib2 *)This);
|
||||||
}
|
}
|
||||||
|
@ -3468,7 +3472,7 @@ static ULONG WINAPI ITypeLib2_fnRelease(ITypeLib2 * iface)
|
||||||
static UINT WINAPI ITypeLib2_fnGetTypeInfoCount(
|
static UINT WINAPI ITypeLib2_fnGetTypeInfoCount(
|
||||||
ITypeLib2 * iface)
|
ITypeLib2 * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface);
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
TRACE("(%p)\n", iface);
|
TRACE("(%p)\n", iface);
|
||||||
|
|
||||||
|
@ -3485,7 +3489,7 @@ static HRESULT WINAPI ITypeLib2_fnGetTypeInfo(
|
||||||
UINT index,
|
UINT index,
|
||||||
ITypeInfo** ppTInfo)
|
ITypeInfo** ppTInfo)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface);
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
TRACE("(%p,%d,%p)\n", iface, index, ppTInfo);
|
TRACE("(%p,%d,%p)\n", iface, index, ppTInfo);
|
||||||
|
|
||||||
|
@ -3506,7 +3510,7 @@ static HRESULT WINAPI ITypeLib2_fnGetTypeInfoType(
|
||||||
UINT index,
|
UINT index,
|
||||||
TYPEKIND* pTKind)
|
TYPEKIND* pTKind)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface);
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
TRACE("(%p,%d,%p)\n", iface, index, pTKind);
|
TRACE("(%p,%d,%p)\n", iface, index, pTKind);
|
||||||
|
|
||||||
|
@ -3529,7 +3533,7 @@ static HRESULT WINAPI ITypeLib2_fnGetTypeInfoOfGuid(
|
||||||
REFGUID guid,
|
REFGUID guid,
|
||||||
ITypeInfo** ppTinfo)
|
ITypeInfo** ppTinfo)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface);
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
int guidoffset;
|
int guidoffset;
|
||||||
int typeinfo;
|
int typeinfo;
|
||||||
|
@ -3554,9 +3558,9 @@ static HRESULT WINAPI ITypeLib2_fnGetLibAttr(
|
||||||
ITypeLib2 * iface,
|
ITypeLib2 * iface,
|
||||||
TLIBATTR** ppTLibAttr)
|
TLIBATTR** ppTLibAttr)
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%p), stub!\n", iface, ppTLibAttr);
|
FIXME("(%p,%p), stub!\n", This, ppTLibAttr);
|
||||||
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
@ -3570,9 +3574,9 @@ static HRESULT WINAPI ITypeLib2_fnGetTypeComp(
|
||||||
ITypeLib2 * iface,
|
ITypeLib2 * iface,
|
||||||
ITypeComp** ppTComp)
|
ITypeComp** ppTComp)
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%p), stub!\n", iface, ppTComp);
|
FIXME("(%p,%p), stub!\n", This, ppTComp);
|
||||||
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
@ -3590,9 +3594,9 @@ static HRESULT WINAPI ITypeLib2_fnGetDocumentation(
|
||||||
DWORD* pdwHelpContext,
|
DWORD* pdwHelpContext,
|
||||||
BSTR* pBstrHelpFile)
|
BSTR* pBstrHelpFile)
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%d,%p,%p,%p,%p), stub!\n", iface, index, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile);
|
FIXME("(%p,%d,%p,%p,%p,%p), stub!\n", This, index, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile);
|
||||||
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
@ -3608,7 +3612,7 @@ static HRESULT WINAPI ITypeLib2_fnIsName(
|
||||||
ULONG lHashVal,
|
ULONG lHashVal,
|
||||||
BOOL* pfName)
|
BOOL* pfName)
|
||||||
{
|
{
|
||||||
ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface);
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
char *encoded_name;
|
char *encoded_name;
|
||||||
int nameoffset;
|
int nameoffset;
|
||||||
|
@ -3646,9 +3650,9 @@ static HRESULT WINAPI ITypeLib2_fnFindName(
|
||||||
MEMBERID* rgMemId,
|
MEMBERID* rgMemId,
|
||||||
USHORT* pcFound)
|
USHORT* pcFound)
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%s,%lx,%p,%p,%p), stub!\n", iface, debugstr_w(szNameBuf), lHashVal, ppTInfo, rgMemId, pcFound);
|
FIXME("(%p,%s,%lx,%p,%p,%p), stub!\n", This, debugstr_w(szNameBuf), lHashVal, ppTInfo, rgMemId, pcFound);
|
||||||
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
@ -3662,9 +3666,9 @@ static void WINAPI ITypeLib2_fnReleaseTLibAttr(
|
||||||
ITypeLib2 * iface,
|
ITypeLib2 * iface,
|
||||||
TLIBATTR* pTLibAttr)
|
TLIBATTR* pTLibAttr)
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%p), stub!\n", iface, pTLibAttr);
|
FIXME("(%p,%p), stub!\n", This, pTLibAttr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -3682,9 +3686,9 @@ static HRESULT WINAPI ITypeLib2_fnGetCustData(
|
||||||
REFGUID guid, /* [I] The GUID under which the custom data is stored. */
|
REFGUID guid, /* [I] The GUID under which the custom data is stored. */
|
||||||
VARIANT* pVarVal) /* [O] The custom data. */
|
VARIANT* pVarVal) /* [O] The custom data. */
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%s,%p), stub!\n", iface, debugstr_guid(guid), pVarVal);
|
FIXME("(%p,%s,%p), stub!\n", This, debugstr_guid(guid), pVarVal);
|
||||||
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
@ -3705,9 +3709,9 @@ static HRESULT WINAPI ITypeLib2_fnGetLibStatistics(
|
||||||
ULONG* pcUniqueNames, /* [O] The number of unique names in the type library. */
|
ULONG* pcUniqueNames, /* [O] The number of unique names in the type library. */
|
||||||
ULONG* pcchUniqueNames) /* [O] The number of changed (?) characters in names in the type library. */
|
ULONG* pcchUniqueNames) /* [O] The number of changed (?) characters in names in the type library. */
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%p,%p), stub!\n", iface, pcUniqueNames, pcchUniqueNames);
|
FIXME("(%p,%p,%p), stub!\n", This, pcUniqueNames, pcchUniqueNames);
|
||||||
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
@ -3730,9 +3734,9 @@ static HRESULT WINAPI ITypeLib2_fnGetDocumentation2(
|
||||||
DWORD* pdwHelpStringContext,
|
DWORD* pdwHelpStringContext,
|
||||||
BSTR* pbstrHelpStringDll)
|
BSTR* pbstrHelpStringDll)
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%d,%ld,%p,%p,%p), stub!\n", iface, index, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll);
|
FIXME("(%p,%d,%ld,%p,%p,%p), stub!\n", This, index, lcid, pbstrHelpString, pdwHelpStringContext, pbstrHelpStringDll);
|
||||||
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
@ -3751,9 +3755,9 @@ static HRESULT WINAPI ITypeLib2_fnGetAllCustData(
|
||||||
ITypeLib2 * iface, /* [I] The type library in which to find the custom data. */
|
ITypeLib2 * iface, /* [I] The type library in which to find the custom data. */
|
||||||
CUSTDATA* pCustData) /* [O] The structure in which to place the custom data. */
|
CUSTDATA* pCustData) /* [O] The structure in which to place the custom data. */
|
||||||
{
|
{
|
||||||
/* ICOM_THIS_From_ITypeLib2(ICreateTypeLib2Impl, iface); */
|
ICreateTypeLib2Impl *This = impl_from_ITypeLib2(iface);
|
||||||
|
|
||||||
FIXME("(%p,%p), stub!\n", iface, pCustData);
|
FIXME("(%p,%p), stub!\n", This, pCustData);
|
||||||
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1342,7 +1342,7 @@ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat,
|
||||||
|
|
||||||
case FMT_GEN_INLINE:
|
case FMT_GEN_INLINE:
|
||||||
pToken += 2;
|
pToken += 2;
|
||||||
TRACE("copy %s\n", debugstr_a(pToken));
|
TRACE("copy %s\n", debugstr_a((LPCSTR)pToken));
|
||||||
while (*pToken)
|
while (*pToken)
|
||||||
*pBuff++ = *pToken++;
|
*pBuff++ = *pToken++;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1926,6 +1926,11 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags,
|
||||||
* - Rounding (dropping of decimal points) occurs without error. See VarI8FromR8()
|
* - Rounding (dropping of decimal points) occurs without error. See VarI8FromR8()
|
||||||
* for details of the rounding method.
|
* for details of the rounding method.
|
||||||
* - pVarDst is not cleared before the result is stored in it.
|
* - pVarDst is not cleared before the result is stored in it.
|
||||||
|
* - WinXP and Win2003 support VTBIT_I8, VTBIT_UI8 but that's buggy (by
|
||||||
|
* design?): If some other VTBIT's for integers are specified together
|
||||||
|
* with VTBIT_I8 and the number will fit only in a VT_I8 Windows will "cast"
|
||||||
|
* the number to the smallest requested integer truncating this way the
|
||||||
|
* number. Wine dosn't implement this "feature" (yet?).
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig,
|
HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig,
|
||||||
ULONG dwVtBits, VARIANT *pVarDst)
|
ULONG dwVtBits, VARIANT *pVarDst)
|
||||||
|
@ -2893,8 +2898,12 @@ HRESULT WINAPI VarAdd(LPVARIANT left, LPVARIANT right, LPVARIANT result)
|
||||||
}
|
}
|
||||||
if (resvt != tvt) {
|
if (resvt != tvt) {
|
||||||
if ((hres = VariantChangeType(result, &tv, 0, resvt)) != S_OK) {
|
if ((hres = VariantChangeType(result, &tv, 0, resvt)) != S_OK) {
|
||||||
/* Overflow! Change to the vartype with the next higher priority */
|
/* Overflow! Change to the vartype with the next higher priority.
|
||||||
resvt = prio2vt[coerce[resvt] + 1];
|
With one exception: I4 ==> R8 even if it would fit in I8 */
|
||||||
|
if (resvt == VT_I4)
|
||||||
|
resvt = VT_R8;
|
||||||
|
else
|
||||||
|
resvt = prio2vt[coerce[resvt] + 1];
|
||||||
hres = VariantChangeType(result, &tv, 0, resvt);
|
hres = VariantChangeType(result, &tv, 0, resvt);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
@ -3061,8 +3070,12 @@ HRESULT WINAPI VarMul(LPVARIANT left, LPVARIANT right, LPVARIANT result)
|
||||||
}
|
}
|
||||||
if (resvt != tvt) {
|
if (resvt != tvt) {
|
||||||
while ((hres = VariantChangeType(result, &tv, 0, resvt)) != S_OK) {
|
while ((hres = VariantChangeType(result, &tv, 0, resvt)) != S_OK) {
|
||||||
/* Overflow! Change to the vartype with the next higher priority */
|
/* Overflow! Change to the vartype with the next higher priority.
|
||||||
resvt = prio2vt[coerce[resvt] + 1];
|
With one exception: I4 ==> R8 even if it would fit in I8 */
|
||||||
|
if (resvt == VT_I4)
|
||||||
|
resvt = VT_R8;
|
||||||
|
else
|
||||||
|
resvt = prio2vt[coerce[resvt] + 1];
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
hres = VariantCopy(result, &tv);
|
hres = VariantCopy(result, &tv);
|
||||||
|
|
|
@ -92,333 +92,11 @@ extern const char* wine_vflags[];
|
||||||
|
|
||||||
#define DEC_MAX_SCALE 28 /* Maximum scale for a decimal */
|
#define DEC_MAX_SCALE 28 /* Maximum scale for a decimal */
|
||||||
|
|
||||||
/* Inline return type */
|
|
||||||
#define RETTYP inline static HRESULT
|
|
||||||
|
|
||||||
/* Simple compiler cast from one type to another */
|
|
||||||
#define SIMPLE(dest, src, func) RETTYP _##func(src in, dest* out) { \
|
|
||||||
*out = in; return S_OK; }
|
|
||||||
|
|
||||||
/* Compiler cast where input cannot be negative */
|
|
||||||
#define NEGTST(dest, src, func) RETTYP _##func(src in, dest* out) { \
|
|
||||||
if (in < (src)0) return DISP_E_OVERFLOW; *out = in; return S_OK; }
|
|
||||||
|
|
||||||
/* Compiler cast where input cannot be > some number */
|
|
||||||
#define POSTST(dest, src, func, tst) RETTYP _##func(src in, dest* out) { \
|
|
||||||
if (in > (dest)tst) return DISP_E_OVERFLOW; *out = in; return S_OK; }
|
|
||||||
|
|
||||||
/* Compiler cast where input cannot be < some number or >= some other number */
|
|
||||||
#define BOTHTST(dest, src, func, lo, hi) RETTYP _##func(src in, dest* out) { \
|
|
||||||
if (in < (dest)lo || in > hi) return DISP_E_OVERFLOW; *out = in; return S_OK; }
|
|
||||||
|
|
||||||
/* Conversions from IDispatch use the same code */
|
|
||||||
HRESULT VARIANT_FromDisp(IDispatch*,LCID,void*,VARTYPE);
|
|
||||||
/* As do conversions from BSTR to numeric types */
|
|
||||||
HRESULT VARIANT_NumberFromBstr(OLECHAR*,LCID,ULONG,void*,VARTYPE);
|
|
||||||
|
|
||||||
#define CY_MULTIPLIER 10000 /* 4 dp of precision */
|
|
||||||
#define CY_MULTIPLIER_F 10000.0
|
|
||||||
#define CY_HALF (CY_MULTIPLIER/2) /* 0.5 */
|
|
||||||
#define CY_HALF_F (CY_MULTIPLIER_F/2.0)
|
|
||||||
|
|
||||||
/* I1 */
|
|
||||||
POSTST(signed char, BYTE, VarI1FromUI1, I1_MAX);
|
|
||||||
BOTHTST(signed char, SHORT, VarI1FromI2, I1_MIN, I1_MAX);
|
|
||||||
BOTHTST(signed char, LONG, VarI1FromI4, I1_MIN, I1_MAX);
|
|
||||||
#define _VarI1FromR4(flt,out) VarI1FromR8((double)flt,out)
|
|
||||||
#define _VarI1FromR8 VarI1FromR8
|
|
||||||
#define _VarI1FromCy VarI1FromCy
|
|
||||||
#define _VarI1FromDate(dt,out) VarI1FromR8((double)dt,out)
|
|
||||||
#define _VarI1FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_I1)
|
|
||||||
#define _VarI1FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, (BYTE*)out, VT_I1)
|
|
||||||
SIMPLE(signed char, VARIANT_BOOL, VarI1FromBool);
|
|
||||||
POSTST(signed char, USHORT, VarI1FromUI2, I1_MAX);
|
|
||||||
POSTST(signed char, ULONG, VarI1FromUI4, I1_MAX);
|
|
||||||
#define _VarI1FromDec VarI1FromDec
|
|
||||||
BOTHTST(signed char, LONG64, VarI1FromI8, I1_MIN, I1_MAX);
|
|
||||||
POSTST(signed char, ULONG64, VarI1FromUI8, I1_MAX);
|
|
||||||
|
|
||||||
/* UI1 */
|
|
||||||
BOTHTST(BYTE, SHORT, VarUI1FromI2, UI1_MIN, UI1_MAX);
|
|
||||||
#define _VarUI1FromR4(flt,out) VarUI1FromR8((double)flt,out)
|
|
||||||
#define _VarUI1FromR8 VarUI1FromR8
|
|
||||||
#define _VarUI1FromCy VarUI1FromCy
|
|
||||||
#define _VarUI1FromDate(dt,out) VarUI1FromR8((double)dt,out)
|
|
||||||
#define _VarUI1FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_UI1)
|
|
||||||
#define _VarUI1FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_UI1)
|
|
||||||
SIMPLE(BYTE, VARIANT_BOOL, VarUI1FromBool);
|
|
||||||
NEGTST(BYTE, signed char, VarUI1FromI1);
|
|
||||||
POSTST(BYTE, USHORT, VarUI1FromUI2, UI1_MAX);
|
|
||||||
BOTHTST(BYTE, LONG, VarUI1FromI4, UI1_MIN, UI1_MAX);
|
|
||||||
POSTST(BYTE, ULONG, VarUI1FromUI4, UI1_MAX);
|
|
||||||
#define _VarUI1FromDec VarUI1FromDec
|
|
||||||
BOTHTST(BYTE, LONG64, VarUI1FromI8, UI1_MIN, UI1_MAX);
|
|
||||||
POSTST(BYTE, ULONG64, VarUI1FromUI8, UI1_MAX);
|
|
||||||
|
|
||||||
/* I2 */
|
|
||||||
SIMPLE(SHORT, BYTE, VarI2FromUI1);
|
|
||||||
BOTHTST(SHORT, LONG, VarI2FromI4, I2_MIN, I2_MAX);
|
|
||||||
#define _VarI2FromR4(flt,out) VarI2FromR8((double)flt,out)
|
|
||||||
#define _VarI2FromR8 VarI2FromR8
|
|
||||||
#define _VarI2FromCy VarI2FromCy
|
|
||||||
#define _VarI2FromDate(dt,out) VarI2FromR8((double)dt,out)
|
|
||||||
#define _VarI2FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_I2)
|
|
||||||
#define _VarI2FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, (BYTE*)out, VT_I2)
|
|
||||||
SIMPLE(SHORT, VARIANT_BOOL, VarI2FromBool);
|
|
||||||
SIMPLE(SHORT, signed char, VarI2FromI1);
|
|
||||||
POSTST(SHORT, USHORT, VarI2FromUI2, I2_MAX);
|
|
||||||
POSTST(SHORT, ULONG, VarI2FromUI4, I2_MAX);
|
|
||||||
#define _VarI2FromDec VarI2FromDec
|
|
||||||
BOTHTST(SHORT, LONG64, VarI2FromI8, I2_MIN, I2_MAX);
|
|
||||||
POSTST(SHORT, ULONG64, VarI2FromUI8, I2_MAX);
|
|
||||||
|
|
||||||
/* UI2 */
|
|
||||||
SIMPLE(USHORT, BYTE, VarUI2FromUI1);
|
|
||||||
NEGTST(USHORT, SHORT, VarUI2FromI2);
|
|
||||||
BOTHTST(USHORT, LONG, VarUI2FromI4, UI2_MIN, UI2_MAX);
|
|
||||||
#define _VarUI2FromR4(flt,out) VarUI2FromR8((double)flt,out)
|
|
||||||
#define _VarUI2FromR8 VarUI2FromR8
|
|
||||||
#define _VarUI2FromCy VarUI2FromCy
|
|
||||||
#define _VarUI2FromDate(dt,out) VarUI2FromR8((double)dt,out)
|
|
||||||
#define _VarUI2FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_UI2)
|
|
||||||
#define _VarUI2FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_UI2)
|
|
||||||
SIMPLE(USHORT, VARIANT_BOOL, VarUI2FromBool);
|
|
||||||
NEGTST(USHORT, signed char, VarUI2FromI1);
|
|
||||||
POSTST(USHORT, ULONG, VarUI2FromUI4, UI2_MAX);
|
|
||||||
#define _VarUI2FromDec VarUI2FromDec
|
|
||||||
BOTHTST(USHORT, LONG64, VarUI2FromI8, UI2_MIN, UI2_MAX);
|
|
||||||
POSTST(USHORT, ULONG64, VarUI2FromUI8, UI2_MAX);
|
|
||||||
|
|
||||||
/* I4 */
|
|
||||||
SIMPLE(LONG, BYTE, VarI4FromUI1);
|
|
||||||
SIMPLE(LONG, SHORT, VarI4FromI2);
|
|
||||||
#define _VarI4FromR4(flt,out) VarI4FromR8((double)flt,out)
|
|
||||||
#define _VarI4FromR8 VarI4FromR8
|
|
||||||
#define _VarI4FromCy VarI4FromCy
|
|
||||||
#define _VarI4FromDate(dt,out) VarI4FromR8((double)dt,out)
|
|
||||||
#define _VarI4FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_I4)
|
|
||||||
#define _VarI4FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, (BYTE*)out, VT_I4)
|
|
||||||
SIMPLE(LONG, VARIANT_BOOL, VarI4FromBool);
|
|
||||||
SIMPLE(LONG, signed char, VarI4FromI1);
|
|
||||||
SIMPLE(LONG, USHORT, VarI4FromUI2);
|
|
||||||
POSTST(LONG, ULONG, VarI4FromUI4, I4_MAX);
|
|
||||||
#define _VarI4FromDec VarI4FromDec
|
|
||||||
BOTHTST(LONG, LONG64, VarI4FromI8, I4_MIN, I4_MAX);
|
|
||||||
POSTST(LONG, ULONG64, VarI4FromUI8, I4_MAX);
|
|
||||||
|
|
||||||
/* UI4 */
|
|
||||||
SIMPLE(ULONG, BYTE, VarUI4FromUI1);
|
|
||||||
NEGTST(ULONG, SHORT, VarUI4FromI2);
|
|
||||||
NEGTST(ULONG, LONG, VarUI4FromI4);
|
|
||||||
#define _VarUI4FromR4(flt,out) VarUI4FromR8((double)flt,out)
|
|
||||||
#define _VarUI4FromR8 VarUI4FromR8
|
|
||||||
#define _VarUI4FromCy VarUI4FromCy
|
|
||||||
#define _VarUI4FromDate(dt,out) VarUI4FromR8((double)dt,out)
|
|
||||||
#define _VarUI4FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_UI4)
|
|
||||||
#define _VarUI4FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_UI4)
|
|
||||||
SIMPLE(ULONG, VARIANT_BOOL, VarUI4FromBool);
|
|
||||||
NEGTST(ULONG, signed char, VarUI4FromI1);
|
|
||||||
SIMPLE(ULONG, USHORT, VarUI4FromUI2);
|
|
||||||
#define _VarUI4FromDec VarUI4FromDec
|
|
||||||
BOTHTST(ULONG, LONG64, VarUI4FromI8, UI4_MIN, UI4_MAX);
|
|
||||||
POSTST(ULONG, ULONG64, VarUI4FromUI8, UI4_MAX);
|
|
||||||
|
|
||||||
/* I8 */
|
|
||||||
SIMPLE(LONG64, BYTE, VarI8FromUI1);
|
|
||||||
SIMPLE(LONG64, SHORT, VarI8FromI2);
|
|
||||||
#define _VarI8FromR4 VarI8FromR8
|
|
||||||
#define _VarI8FromR8 VarI8FromR8
|
|
||||||
#define _VarI8FromCy VarI8FromCy
|
|
||||||
#define _VarI8FromDate(dt,out) VarI8FromR8((double)dt,out)
|
|
||||||
#define _VarI8FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_I8)
|
|
||||||
#define _VarI8FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_I8)
|
|
||||||
#define _VarI8FromBool _VarI8FromI2
|
|
||||||
SIMPLE(LONG64, signed char, VarI8FromI1);
|
|
||||||
SIMPLE(LONG64, USHORT, VarI8FromUI2);
|
|
||||||
SIMPLE(LONG64, LONG, VarI8FromI4);
|
|
||||||
SIMPLE(LONG64, ULONG, VarI8FromUI4);
|
|
||||||
#define _VarI8FromDec VarI8FromDec
|
|
||||||
POSTST(LONG64, ULONG64, VarI8FromUI8, I8_MAX);
|
|
||||||
|
|
||||||
/* UI8 */
|
|
||||||
SIMPLE(ULONG64, BYTE, VarUI8FromUI1);
|
|
||||||
NEGTST(ULONG64, SHORT, VarUI8FromI2);
|
|
||||||
#define _VarUI8FromR4 VarUI8FromR8
|
|
||||||
#define _VarUI8FromR8 VarUI8FromR8
|
|
||||||
#define _VarUI8FromCy VarUI8FromCy
|
|
||||||
#define _VarUI8FromDate(dt,out) VarUI8FromR8((double)dt,out)
|
|
||||||
#define _VarUI8FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_UI8)
|
|
||||||
#define _VarUI8FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_UI8)
|
|
||||||
#define _VarUI8FromBool _VarI8FromI2
|
|
||||||
NEGTST(ULONG64, signed char, VarUI8FromI1);
|
|
||||||
SIMPLE(ULONG64, USHORT, VarUI8FromUI2);
|
|
||||||
NEGTST(ULONG64, LONG, VarUI8FromI4);
|
|
||||||
SIMPLE(ULONG64, ULONG, VarUI8FromUI4);
|
|
||||||
#define _VarUI8FromDec VarUI8FromDec
|
|
||||||
NEGTST(ULONG64, LONG64, VarUI8FromI8);
|
|
||||||
|
|
||||||
/* R4 (float) */
|
|
||||||
SIMPLE(float, BYTE, VarR4FromUI1);
|
|
||||||
SIMPLE(float, SHORT, VarR4FromI2);
|
|
||||||
RETTYP _VarR4FromR8(double i, float* o) {
|
|
||||||
double d = i < 0.0 ? -i : i;
|
|
||||||
if (d > R4_MAX) return DISP_E_OVERFLOW;
|
|
||||||
*o = i;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
RETTYP _VarR4FromCy(CY i, float* o) { *o = (double)i.int64 / CY_MULTIPLIER_F; return S_OK; }
|
|
||||||
#define _VarR4FromDate(dt,out) _VarR4FromR8((double)dt,out)
|
|
||||||
#define _VarR4FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_R4)
|
|
||||||
#define _VarR4FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_R4)
|
|
||||||
#define _VarR4FromBool _VarR4FromI2
|
|
||||||
SIMPLE(float, signed char, VarR4FromI1);
|
|
||||||
SIMPLE(float, USHORT, VarR4FromUI2);
|
|
||||||
SIMPLE(float, LONG, VarR4FromI4);
|
|
||||||
SIMPLE(float, ULONG, VarR4FromUI4);
|
|
||||||
#define _VarR4FromDec VarR4FromDec
|
|
||||||
SIMPLE(float, LONG64, VarR4FromI8);
|
|
||||||
SIMPLE(float, ULONG64, VarR4FromUI8);
|
|
||||||
|
|
||||||
/* R8 (double) */
|
|
||||||
SIMPLE(double, BYTE, VarR8FromUI1);
|
|
||||||
SIMPLE(double, SHORT, VarR8FromI2);
|
|
||||||
SIMPLE(double, float, VarR8FromR4);
|
|
||||||
RETTYP _VarR8FromCy(CY i, double* o) { *o = (double)i.int64 / CY_MULTIPLIER_F; return S_OK; }
|
|
||||||
SIMPLE(double, DATE, VarR8FromDate);
|
|
||||||
#define _VarR8FromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_R8)
|
|
||||||
#define _VarR8FromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_R8)
|
|
||||||
#define _VarR8FromBool _VarR8FromI2
|
|
||||||
SIMPLE(double, signed char, VarR8FromI1);
|
|
||||||
SIMPLE(double, USHORT, VarR8FromUI2);
|
|
||||||
SIMPLE(double, LONG, VarR8FromI4);
|
|
||||||
SIMPLE(double, ULONG, VarR8FromUI4);
|
|
||||||
#define _VarR8FromDec VarR8FromDec
|
|
||||||
SIMPLE(double, LONG64, VarR8FromI8);
|
|
||||||
SIMPLE(double, ULONG64, VarR8FromUI8);
|
|
||||||
|
|
||||||
/* BOOL */
|
|
||||||
#define BOOLFUNC(src, func) RETTYP _##func(src in, VARIANT_BOOL* out) { \
|
|
||||||
*out = in ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; }
|
|
||||||
|
|
||||||
BOOLFUNC(signed char,VarBoolFromI1);
|
|
||||||
BOOLFUNC(BYTE,VarBoolFromUI1);
|
|
||||||
BOOLFUNC(SHORT,VarBoolFromI2);
|
|
||||||
BOOLFUNC(USHORT,VarBoolFromUI2);
|
|
||||||
BOOLFUNC(LONG,VarBoolFromI4);
|
|
||||||
BOOLFUNC(ULONG,VarBoolFromUI4);
|
|
||||||
BOOLFUNC(LONG64,VarBoolFromI8);
|
|
||||||
BOOLFUNC(ULONG64,VarBoolFromUI8);
|
|
||||||
#define _VarBoolFromR4(flt,out) _VarBoolFromR8((double)flt,out)
|
|
||||||
BOOLFUNC(double,VarBoolFromR8);
|
|
||||||
#define _VarBoolFromCy(i,o) _VarBoolFromI8(i.int64,o)
|
|
||||||
#define _VarBoolFromDate(dt,out) _VarBoolFromR8((double)dt,out)
|
|
||||||
#define _VarBoolFromStr VarBoolFromStr
|
|
||||||
#define _VarBoolFromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, (BYTE*)out, VT_BOOL)
|
|
||||||
#define _VarBoolFromDec VarBoolFromDec
|
|
||||||
|
|
||||||
/* Internal flags for low level conversion functions */
|
/* Internal flags for low level conversion functions */
|
||||||
#define VAR_BOOLONOFF 0x0400 /* Convert bool to "On"/"Off" */
|
#define VAR_BOOLONOFF 0x0400 /* Convert bool to "On"/"Off" */
|
||||||
#define VAR_BOOLYESNO 0x0800 /* Convert bool to "Yes"/"No" */
|
#define VAR_BOOLYESNO 0x0800 /* Convert bool to "Yes"/"No" */
|
||||||
#define VAR_NEGATIVE 0x1000 /* Number is negative */
|
#define VAR_NEGATIVE 0x1000 /* Number is negative */
|
||||||
|
|
||||||
/* DECIMAL */
|
|
||||||
#define _VarDecFromUI1 VarDecFromUI4
|
|
||||||
#define _VarDecFromI2 VarDecFromI4
|
|
||||||
#define _VarDecFromR4 VarDecFromR4
|
|
||||||
#define _VarDecFromR8 VarDecFromR8
|
|
||||||
#define _VarDecFromCy VarDecFromCy
|
|
||||||
#define _VarDecFromDate(dt,out) VarDecFromR8((double)dt,out)
|
|
||||||
#define _VarDecFromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_DECIMAL)
|
|
||||||
#define _VarDecFromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_DECIMAL)
|
|
||||||
#define _VarDecFromBool VarDecFromBool
|
|
||||||
#define _VarDecFromI1 VarDecFromI4
|
|
||||||
#define _VarDecFromUI2 VarDecFromUI4
|
|
||||||
#define _VarDecFromI4 VarDecFromI4
|
|
||||||
#define _VarDecFromUI4 VarDecFromUI4
|
|
||||||
#define _VarDecFromI8 VarDecFromI8
|
|
||||||
#define _VarDecFromUI8 VarDecFromUI8
|
|
||||||
|
|
||||||
/* CY (Currency) */
|
|
||||||
#define _VarCyFromUI1 VarCyFromR8
|
|
||||||
#define _VarCyFromI2 VarCyFromR8
|
|
||||||
#define _VarCyFromR4 VarCyFromR8
|
|
||||||
#define _VarCyFromR8 VarCyFromR8
|
|
||||||
#define _VarCyFromDate VarCyFromR8
|
|
||||||
#define _VarCyFromStr(str,lcid,flags,out) VARIANT_NumberFromBstr(str,lcid,flags,(BYTE*)out,VT_CY)
|
|
||||||
#define _VarCyFromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_CY)
|
|
||||||
#define _VarCyFromBool VarCyFromR8
|
|
||||||
#define _VarCyFromI1 VarCyFromR8
|
|
||||||
#define _VarCyFromUI2 VarCyFromR8
|
|
||||||
#define _VarCyFromI4 VarCyFromR8
|
|
||||||
#define _VarCyFromUI4 VarCyFromR8
|
|
||||||
#define _VarCyFromDec VarCyFromDec
|
|
||||||
RETTYP _VarCyFromI8(LONG64 i, CY* o) {
|
|
||||||
if (i <= (I8_MIN/CY_MULTIPLIER) || i >= (I8_MAX/CY_MULTIPLIER)) return DISP_E_OVERFLOW;
|
|
||||||
o->int64 = i * CY_MULTIPLIER;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
#define _VarCyFromUI8 VarCyFromR8
|
|
||||||
|
|
||||||
/* DATE */
|
|
||||||
#define _VarDateFromUI1 _VarR8FromUI1
|
|
||||||
#define _VarDateFromI2 _VarR8FromI2
|
|
||||||
#define _VarDateFromR4 _VarDateFromR8
|
|
||||||
RETTYP _VarDateFromR8(double i, DATE* o) {
|
|
||||||
if (i <= (DATE_MIN - 1.0) || i >= (DATE_MAX + 1.0)) return DISP_E_OVERFLOW;
|
|
||||||
*o = (DATE)i;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
#define _VarDateFromCy _VarR8FromCy
|
|
||||||
#define _VarDateFromStr VarDateFromStr
|
|
||||||
#define _VarDateFromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_DATE)
|
|
||||||
#define _VarDateFromBool _VarR8FromBool
|
|
||||||
#define _VarDateFromI1 _VarR8FromI1
|
|
||||||
#define _VarDateFromUI2 _VarR8FromUI2
|
|
||||||
#define _VarDateFromI4 _VarDateFromR8
|
|
||||||
#define _VarDateFromUI4 _VarDateFromR8
|
|
||||||
#define _VarDateFromDec _VarR8FromDec
|
|
||||||
RETTYP _VarDateFromI8(LONG64 i, DATE* o) {
|
|
||||||
if (i < DATE_MIN || i > DATE_MAX) return DISP_E_OVERFLOW;
|
|
||||||
*o = (DATE)i;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
RETTYP _VarDateFromUI8(ULONG64 i, DATE* o) {
|
|
||||||
if (i > DATE_MAX) return DISP_E_OVERFLOW;
|
|
||||||
*o = (DATE)i;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* BSTR */
|
|
||||||
#define _VarBstrFromUI1 VarBstrFromUI4
|
|
||||||
#define _VarBstrFromI2 VarBstrFromI4
|
|
||||||
#define _VarBstrFromR4 VarBstrFromR8
|
|
||||||
#define _VarBstrFromR8 VarBstrFromR8
|
|
||||||
#define _VarBstrFromCy VarBstrFromCy
|
|
||||||
#define _VarBstrFromDate VarBstrFromDate
|
|
||||||
#define _VarBstrFromDisp(disp,lcid,out) VARIANT_FromDisp(disp, lcid, out, VT_BSTR)
|
|
||||||
#define _VarBstrFromBool VarBstrFromBool
|
|
||||||
#define _VarBstrFromI1 VarBstrFromI4
|
|
||||||
#define _VarBstrFromUI2 VarBstrFromUI4
|
|
||||||
#define _VarBstrFromI4 VarBstrFromI4
|
|
||||||
#define _VarBstrFromUI4 VarBstrFromUI4
|
|
||||||
#define _VarBstrFromDec VarBstrFromDec
|
|
||||||
#define _VarBstrFromI8 VarBstrFromI8
|
|
||||||
#define _VarBstrFromUI8 VarBstrFromUI8
|
|
||||||
|
|
||||||
/* Macro to inline conversion from a float or double to any integer type,
|
|
||||||
* rounding according to the 'dutch' convention.
|
|
||||||
*/
|
|
||||||
#define OLEAUT32_DutchRound(typ, value, res) do { \
|
|
||||||
double whole = (double)value < 0 ? ceil((double)value) : floor((double)value); \
|
|
||||||
double fract = (double)value - whole; \
|
|
||||||
if (fract > 0.5) res = (typ)whole + (typ)1; \
|
|
||||||
else if (fract == 0.5) { typ is_odd = (typ)whole & 1; res = whole + is_odd; } \
|
|
||||||
else if (fract >= 0.0) res = (typ)whole; \
|
|
||||||
else if (fract == -0.5) { typ is_odd = (typ)whole & 1; res = whole - is_odd; } \
|
|
||||||
else if (fract > -0.5) res = (typ)whole; \
|
|
||||||
else res = (typ)whole - (typ)1; \
|
|
||||||
} while(0);
|
|
||||||
|
|
||||||
/* The localised characters that make up a valid number */
|
/* The localised characters that make up a valid number */
|
||||||
typedef struct tagVARIANT_NUMBER_CHARS
|
typedef struct tagVARIANT_NUMBER_CHARS
|
||||||
{
|
{
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue