oleaut32: Finish COM cleanup for ITypeInfo objects.

This commit is contained in:
Andrew Eikum 2013-05-09 15:23:12 -05:00 committed by Alexandre Julliard
parent 1a2271830b
commit ab7fffaafa
1 changed files with 50 additions and 40 deletions

View File

@ -1128,6 +1128,16 @@ static inline ITypeInfoImpl *info_impl_from_ITypeComp( ITypeComp *iface )
return CONTAINING_RECORD(iface, ITypeInfoImpl, ITypeComp_iface);
}
static inline ITypeInfoImpl *impl_from_ITypeInfo2( ITypeInfo2 *iface )
{
return CONTAINING_RECORD(iface, ITypeInfoImpl, ITypeInfo2_iface);
}
static inline ITypeInfoImpl *impl_from_ITypeInfo( ITypeInfo *iface )
{
return impl_from_ITypeInfo2((ITypeInfo2*)iface);
}
static const ITypeInfo2Vtbl tinfvt;
static const ITypeCompVtbl tcompvt;
@ -5065,7 +5075,7 @@ static HRESULT WINAPI ITypeInfo_fnQueryInterface(
REFIID riid,
VOID **ppvObject)
{
ITypeLibImpl *This = (ITypeLibImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TRACE("(%p)->(IID: %s)\n",This,debugstr_guid(riid));
@ -5088,7 +5098,7 @@ static HRESULT WINAPI ITypeInfo_fnQueryInterface(
*/
static ULONG WINAPI ITypeInfo_fnAddRef( ITypeInfo2 *iface)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p)->ref is %u\n",This, ref);
@ -5170,7 +5180,7 @@ static void ITypeInfoImpl_Destroy(ITypeInfoImpl *This)
*/
static ULONG WINAPI ITypeInfo_fnRelease(ITypeInfo2 *iface)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p)->(%u)\n",This, ref);
@ -5196,7 +5206,7 @@ static ULONG WINAPI ITypeInfo_fnRelease(ITypeInfo2 *iface)
static HRESULT WINAPI ITypeInfo_fnGetTypeAttr( ITypeInfo2 *iface,
LPTYPEATTR *ppTypeAttr)
{
const ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
SIZE_T size;
TRACE("(%p)\n",This);
@ -5234,7 +5244,7 @@ static HRESULT WINAPI ITypeInfo_fnGetTypeAttr( ITypeInfo2 *iface,
static HRESULT WINAPI ITypeInfo_fnGetTypeComp( ITypeInfo2 *iface,
ITypeComp * *ppTComp)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TRACE("(%p)->(%p)\n", This, ppTComp);
@ -5367,7 +5377,7 @@ static HRESULT TLB_AllocAndInitFuncDesc( const FUNCDESC *src, FUNCDESC **dest_pt
HRESULT ITypeInfoImpl_GetInternalFuncDesc( ITypeInfo *iface, UINT index, const FUNCDESC **ppFuncDesc )
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo(iface);
if (index >= This->TypeAttr.cFuncs)
return TYPE_E_ELEMENTNOTFOUND;
@ -5381,7 +5391,7 @@ HRESULT ITypeInfoImpl_GetInternalFuncDesc( ITypeInfo *iface, UINT index, const F
static HRESULT ITypeInfoImpl_GetInternalDispatchFuncDesc( ITypeInfo *iface,
UINT index, const FUNCDESC **ppFuncDesc, UINT *funcs, UINT *hrefoffset)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo(iface);
HRESULT hr;
UINT implemented_funcs = 0;
@ -5461,7 +5471,7 @@ static inline void ITypeInfoImpl_FuncDescAddHrefOffset( LPFUNCDESC pFuncDesc, UI
static HRESULT WINAPI ITypeInfo_fnGetFuncDesc( ITypeInfo2 *iface, UINT index,
LPFUNCDESC *ppFuncDesc)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
const FUNCDESC *internal_funcdesc;
HRESULT hr;
UINT hrefoffset = 0;
@ -5554,7 +5564,7 @@ static HRESULT TLB_AllocAndInitVarDesc( const VARDESC *src, VARDESC **dest_ptr )
static HRESULT WINAPI ITypeInfo_fnGetVarDesc( ITypeInfo2 *iface, UINT index,
LPVARDESC *ppVarDesc)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
const TLBVarDesc *pVDesc = &This->vardescs[index];
TRACE("(%p) index %d\n", This, index);
@ -5574,7 +5584,7 @@ static HRESULT WINAPI ITypeInfo_fnGetVarDesc( ITypeInfo2 *iface, UINT index,
static HRESULT WINAPI ITypeInfo_fnGetNames( ITypeInfo2 *iface, MEMBERID memid,
BSTR *rgBstrNames, UINT cMaxNames, UINT *pcNames)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
const TLBFuncDesc *pFDesc;
const TLBVarDesc *pVDesc;
int i;
@ -5641,7 +5651,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeOfImplType(
UINT index,
HREFTYPE *pRefType)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
HRESULT hr = S_OK;
TRACE("(%p) index %d\n", This, index);
@ -5695,7 +5705,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeOfImplType(
static HRESULT WINAPI ITypeInfo_fnGetImplTypeFlags( ITypeInfo2 *iface,
UINT index, INT *pImplTypeFlags)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TRACE("(%p) index %d\n", This, index);
@ -5719,7 +5729,7 @@ static HRESULT WINAPI ITypeInfo_fnGetImplTypeFlags( ITypeInfo2 *iface,
static HRESULT WINAPI ITypeInfo_fnGetIDsOfNames( ITypeInfo2 *iface,
LPOLESTR *rgszNames, UINT cNames, MEMBERID *pMemId)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
const TLBVarDesc *pVDesc;
HRESULT ret=S_OK;
UINT i, fdc;
@ -6317,7 +6327,7 @@ static HRESULT WINAPI ITypeInfo_fnInvoke(
EXCEPINFO *pExcepInfo,
UINT *pArgErr)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
int i;
unsigned int var_index;
TYPEKIND type_kind;
@ -6848,7 +6858,7 @@ static HRESULT WINAPI ITypeInfo_fnGetDocumentation( ITypeInfo2 *iface,
MEMBERID memid, BSTR *pBstrName, BSTR *pBstrDocString,
DWORD *pdwHelpContext, BSTR *pBstrHelpFile)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
const TLBFuncDesc *pFDesc;
const TLBVarDesc *pVDesc;
TRACE("(%p) memid %d Name(%p) DocString(%p)"
@ -6915,7 +6925,7 @@ static HRESULT WINAPI ITypeInfo_fnGetDllEntry( ITypeInfo2 *iface, MEMBERID memid
INVOKEKIND invKind, BSTR *pBstrDllName, BSTR *pBstrName,
WORD *pwOrdinal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
const TLBFuncDesc *pFDesc;
TRACE("(%p)->(memid %x, %d, %p, %p, %p)\n", This, memid, invKind, pBstrDllName, pBstrName, pwOrdinal);
@ -6957,7 +6967,7 @@ static HRESULT WINAPI ITypeInfo_fnGetDllEntry( ITypeInfo2 *iface, MEMBERID memid
static HRESULT ITypeInfoImpl_GetDispatchRefTypeInfo( ITypeInfo *iface,
HREFTYPE *hRefType, ITypeInfo **ppTInfo)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo(iface);
HRESULT hr;
TRACE("%p, 0x%x\n", iface, *hRefType);
@ -6994,7 +7004,7 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo(
HREFTYPE hRefType,
ITypeInfo **ppTInfo)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
HRESULT result = E_FAIL;
if ((This->hreftype != -1) && (This->hreftype == hRefType))
@ -7107,7 +7117,7 @@ end:
static HRESULT WINAPI ITypeInfo_fnAddressOfMember( ITypeInfo2 *iface,
MEMBERID memid, INVOKEKIND invKind, PVOID *ppv)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
HRESULT hr;
BSTR dll, entry;
WORD ordinal;
@ -7166,7 +7176,7 @@ static HRESULT WINAPI ITypeInfo_fnAddressOfMember( ITypeInfo2 *iface,
static HRESULT WINAPI ITypeInfo_fnCreateInstance( ITypeInfo2 *iface,
IUnknown *pOuterUnk, REFIID riid, VOID **ppvObj)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
HRESULT hr;
TYPEATTR *pTA;
@ -7220,7 +7230,7 @@ end:
static HRESULT WINAPI ITypeInfo_fnGetMops( ITypeInfo2 *iface, MEMBERID memid,
BSTR *pBstrMops)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
FIXME("(%p %d) stub!\n", This, memid);
*pBstrMops = NULL;
return S_OK;
@ -7234,7 +7244,7 @@ static HRESULT WINAPI ITypeInfo_fnGetMops( ITypeInfo2 *iface, MEMBERID memid,
static HRESULT WINAPI ITypeInfo_fnGetContainingTypeLib( ITypeInfo2 *iface,
ITypeLib * *ppTLib, UINT *pIndex)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
/* If a pointer is null, we simply ignore it, the ATL in particular passes pIndex as 0 */
if (pIndex) {
@ -7259,7 +7269,7 @@ static HRESULT WINAPI ITypeInfo_fnGetContainingTypeLib( ITypeInfo2 *iface,
static void WINAPI ITypeInfo_fnReleaseTypeAttr( ITypeInfo2 *iface,
TYPEATTR* pTypeAttr)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TRACE("(%p)->(%p)\n", This, pTypeAttr);
heap_free(pTypeAttr);
}
@ -7272,7 +7282,7 @@ static void WINAPI ITypeInfo_fnReleaseFuncDesc(
ITypeInfo2 *iface,
FUNCDESC *pFuncDesc)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
SHORT i;
TRACE("(%p)->(%p)\n", This, pFuncDesc);
@ -7291,7 +7301,7 @@ static void WINAPI ITypeInfo_fnReleaseFuncDesc(
static void WINAPI ITypeInfo_fnReleaseVarDesc( ITypeInfo2 *iface,
VARDESC *pVarDesc)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TRACE("(%p)->(%p)\n", This, pVarDesc);
TLB_FreeElemDesc(&pVarDesc->elemdescVar);
@ -7308,7 +7318,7 @@ static void WINAPI ITypeInfo_fnReleaseVarDesc( ITypeInfo2 *iface,
static HRESULT WINAPI ITypeInfo2_fnGetTypeKind( ITypeInfo2 * iface,
TYPEKIND *pTypeKind)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
*pTypeKind=This->TypeAttr.typekind;
TRACE("(%p) type 0x%0x\n", This,*pTypeKind);
return S_OK;
@ -7323,7 +7333,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetTypeKind( ITypeInfo2 * iface,
*/
static HRESULT WINAPI ITypeInfo2_fnGetTypeFlags( ITypeInfo2 *iface, ULONG *pTypeFlags)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
*pTypeFlags=This->TypeAttr.wTypeFlags;
TRACE("(%p) flags 0x%x\n", This,*pTypeFlags);
return S_OK;
@ -7337,7 +7347,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetTypeFlags( ITypeInfo2 *iface, ULONG *pType
static HRESULT WINAPI ITypeInfo2_fnGetFuncIndexOfMemId( ITypeInfo2 * iface,
MEMBERID memid, INVOKEKIND invKind, UINT *pFuncIndex)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
UINT fdc;
HRESULT result;
@ -7366,7 +7376,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetFuncIndexOfMemId( ITypeInfo2 * iface,
static HRESULT WINAPI ITypeInfo2_fnGetVarIndexOfMemId( ITypeInfo2 * iface,
MEMBERID memid, UINT *pVarIndex)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBVarDesc *pVarInfo;
TRACE("%p %d %p\n", iface, memid, pVarIndex);
@ -7389,7 +7399,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetCustData(
REFGUID guid,
VARIANT *pVarVal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBCustData *pCData;
TRACE("%p %s %p\n", This, debugstr_guid(guid), pVarVal);
@ -7414,7 +7424,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetFuncCustData(
REFGUID guid,
VARIANT *pVarVal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBCustData *pCData;
TLBFuncDesc *pFDesc = &This->funcdescs[index];
@ -7444,7 +7454,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetParamCustData(
REFGUID guid,
VARIANT *pVarVal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBCustData *pCData;
TLBFuncDesc *pFDesc = &This->funcdescs[indexFunc];
@ -7477,7 +7487,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetVarCustData(
REFGUID guid,
VARIANT *pVarVal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBCustData *pCData;
TLBVarDesc *pVDesc = &This->vardescs[index];
@ -7506,7 +7516,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetImplTypeCustData(
REFGUID guid,
VARIANT *pVarVal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBCustData *pCData;
TLBImplType *pRDesc = &This->impltypes[index];
@ -7540,7 +7550,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetDocumentation2(
DWORD *pdwHelpStringContext,
BSTR *pbstrHelpStringDll)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
const TLBFuncDesc *pFDesc;
const TLBVarDesc *pVDesc;
TRACE("(%p) memid %d lcid(0x%x) HelpString(%p) "
@ -7596,7 +7606,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetAllCustData(
ITypeInfo2 * iface,
CUSTDATA *pCustData)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TRACE("%p %p\n", This, pCustData);
@ -7613,7 +7623,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetAllFuncCustData(
UINT index,
CUSTDATA *pCustData)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBFuncDesc *pFDesc = &This->funcdescs[index];
TRACE("%p %u %p\n", This, index, pCustData);
@ -7632,7 +7642,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetAllFuncCustData(
static HRESULT WINAPI ITypeInfo2_fnGetAllParamCustData( ITypeInfo2 * iface,
UINT indexFunc, UINT indexParam, CUSTDATA *pCustData)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBFuncDesc *pFDesc = &This->funcdescs[indexFunc];
TRACE("%p %u %u %p\n", This, indexFunc, indexParam, pCustData);
@ -7654,7 +7664,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetAllParamCustData( ITypeInfo2 * iface,
static HRESULT WINAPI ITypeInfo2_fnGetAllVarCustData( ITypeInfo2 * iface,
UINT index, CUSTDATA *pCustData)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBVarDesc * pVDesc = &This->vardescs[index];
TRACE("%p %u %p\n", This, index, pCustData);
@ -7675,7 +7685,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetAllImplTypeCustData(
UINT index,
CUSTDATA *pCustData)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
ITypeInfoImpl *This = impl_from_ITypeInfo2(iface);
TLBImplType *pRDesc = &This->impltypes[index];
TRACE("%p %u %p\n", This, index, pCustData);