Andrew Eikum : oleaut32: Use helper function to get CustData by GUID.
Alexandre Julliard
julliard at winehq.org
Mon Mar 14 14:29:33 CDT 2011
Module: wine
Branch: master
Commit: 28fc129258f8f4e680859d9fd2227ecd6fb8b18b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=28fc129258f8f4e680859d9fd2227ecd6fb8b18b
Author: Andrew Eikum <aeikum at codeweavers.com>
Date: Fri Mar 11 15:15:44 2011 -0600
oleaut32: Use helper function to get CustData by GUID.
---
dlls/oleaut32/typelib.c | 109 +++++++++++++++++++++++------------------------
1 files changed, 53 insertions(+), 56 deletions(-)
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index 1a1d379..5cc0219 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -1614,6 +1614,17 @@ static inline TLBVarDesc *TLB_get_vardesc_by_name(TLBVarDesc *vardescs,
return NULL;
}
+static inline TLBCustData *TLB_get_custdata_by_guid(TLBCustData **custdata_list, REFGUID guid)
+{
+ TLBCustData *cust_data = *custdata_list;
+ while(cust_data){
+ if(IsEqualIID(&cust_data->guid, guid))
+ return cust_data;
+ cust_data = cust_data->next;
+ }
+ return NULL;
+}
+
/**********************************************************************
*
* Functions for reading MSFT typelibs (those created by CreateTypeLib2)
@@ -4599,20 +4610,16 @@ static HRESULT WINAPI ITypeLib2_fnGetCustData(
ITypeLibImpl *This = (ITypeLibImpl *)iface;
TLBCustData *pCData;
- for(pCData=This->pCustData; pCData; pCData = pCData->next)
- {
- if( IsEqualIID(guid, &pCData->guid)) break;
- }
+ TRACE("%p %s %p\n", This, debugstr_guid(guid), pVarVal);
- TRACE("(%p) guid %s %s found!x)\n", This, debugstr_guid(guid), pCData? "" : "NOT");
+ pCData = TLB_get_custdata_by_guid(&This->pCustData, guid);
+ if(!pCData)
+ return TYPE_E_ELEMENTNOTFOUND;
- if(pCData)
- {
- VariantInit( pVarVal);
- VariantCopy( pVarVal, &pCData->data);
- return S_OK;
- }
- return E_INVALIDARG; /* FIXME: correct? */
+ VariantInit(pVarVal);
+ VariantCopy(pVarVal, &pCData->data);
+
+ return S_OK;
}
/* ITypeLib2::GetLibStatistics
@@ -7236,10 +7243,9 @@ static HRESULT WINAPI ITypeInfo2_fnGetCustData(
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
TLBCustData *pCData;
- for(pCData=This->pCustData; pCData; pCData = pCData->next)
- if( IsEqualIID(guid, &pCData->guid)) break;
+ TRACE("%p %s %p\n", This, debugstr_guid(guid), pVarVal);
- TRACE("(%p) guid %s %s found!x)\n", This, debugstr_guid(guid), pCData? "" : "NOT");
+ pCData = TLB_get_custdata_by_guid(&This->pCustData, guid);
VariantInit( pVarVal);
if (pCData)
@@ -7260,23 +7266,22 @@ static HRESULT WINAPI ITypeInfo2_fnGetFuncCustData(
VARIANT *pVarVal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
- TLBCustData *pCData=NULL;
+ TLBCustData *pCData;
TLBFuncDesc *pFDesc = &This->funcdescs[index];
+ TRACE("%p %u %s %p\n", This, index, debugstr_guid(guid), pVarVal);
+
if(index >= This->TypeAttr.cFuncs)
return TYPE_E_ELEMENTNOTFOUND;
- for(pCData=pFDesc->pCustData; pCData; pCData = pCData->next)
- if( IsEqualIID(guid, &pCData->guid)) break;
+ pCData = TLB_get_custdata_by_guid(&pFDesc->pCustData, guid);
+ if(!pCData)
+ return TYPE_E_ELEMENTNOTFOUND;
- TRACE("(%p) guid %s %s found!x)\n", This, debugstr_guid(guid), pCData? "" : "NOT");
+ VariantInit(pVarVal);
+ VariantCopy(pVarVal, &pCData->data);
- if(pCData){
- VariantInit( pVarVal);
- VariantCopy( pVarVal, &pCData->data);
- return S_OK;
- }
- return TYPE_E_ELEMENTNOTFOUND;
+ return S_OK;
}
/* ITypeInfo2::GetParamCustData
@@ -7294,25 +7299,23 @@ static HRESULT WINAPI ITypeInfo2_fnGetParamCustData(
TLBCustData *pCData;
TLBFuncDesc *pFDesc = &This->funcdescs[indexFunc];
+ TRACE("%p %u %u %s %p\n", This, indexFunc, indexParam,
+ debugstr_guid(guid), pVarVal);
+
if(indexFunc >= This->TypeAttr.cFuncs)
return TYPE_E_ELEMENTNOTFOUND;
if(indexParam >= pFDesc->funcdesc.cParams)
return TYPE_E_ELEMENTNOTFOUND;
- for(pCData=pFDesc->pParamDesc[indexParam].pCustData; pCData;
- pCData = pCData->next)
- if( IsEqualIID(guid, &pCData->guid)) break;
+ pCData = TLB_get_custdata_by_guid(&pFDesc->pParamDesc[indexParam].pCustData, guid);
+ if(!pCData)
+ return TYPE_E_ELEMENTNOTFOUND;
- TRACE("(%p) guid %s %s found!x)\n", This, debugstr_guid(guid), pCData? "" : "NOT");
+ VariantInit(pVarVal);
+ VariantCopy(pVarVal, &pCData->data);
- if(pCData)
- {
- VariantInit( pVarVal);
- VariantCopy( pVarVal, &pCData->data);
- return S_OK;
- }
- return TYPE_E_ELEMENTNOTFOUND;
+ return S_OK;
}
/* ITypeInfo2::GetVarCustData
@@ -7326,7 +7329,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetVarCustData(
VARIANT *pVarVal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
- TLBCustData *pCData=NULL;
+ TLBCustData *pCData;
TLBVarDesc *pVDesc = &This->vardescs[index];
TRACE("%p %s %p\n", This, debugstr_guid(guid), pVarVal);
@@ -7334,14 +7337,13 @@ static HRESULT WINAPI ITypeInfo2_fnGetVarCustData(
if(index >= This->TypeAttr.cVars)
return TYPE_E_ELEMENTNOTFOUND;
- for(pCData=pVDesc->pCustData; pCData; pCData = pCData->next)
- if(IsEqualIID(guid, &pCData->guid))
- break;
+ pCData = TLB_get_custdata_by_guid(&pVDesc->pCustData, guid);
if(!pCData)
return TYPE_E_ELEMENTNOTFOUND;
- VariantInit( pVarVal);
- VariantCopy( pVarVal, &pCData->data);
+ VariantInit(pVarVal);
+ VariantCopy(pVarVal, &pCData->data);
+
return S_OK;
}
@@ -7356,27 +7358,22 @@ static HRESULT WINAPI ITypeInfo2_fnGetImplTypeCustData(
VARIANT *pVarVal)
{
ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
- TLBCustData *pCData=NULL;
+ TLBCustData *pCData;
TLBImplType *pRDesc = &This->impltypes[index];
+ TRACE("%p %u %s %p\n", This, index, debugstr_guid(guid), pVarVal);
+
if(index >= This->TypeAttr.cImplTypes)
return TYPE_E_ELEMENTNOTFOUND;
- for(pCData = pRDesc->pCustData; pCData; pCData = pCData->next)
- {
- if( IsEqualIID(guid, &pCData->guid)) break;
- }
+ pCData = TLB_get_custdata_by_guid(&pRDesc->pCustData, guid);
+ if(!pCData)
+ return TYPE_E_ELEMENTNOTFOUND;
- TRACE("(%p) guid %s %s found!x)\n", This, debugstr_guid(guid), pCData? "" : "NOT");
+ VariantInit(pVarVal);
+ VariantCopy(pVarVal, &pCData->data);
- if(pCData)
- {
- VariantInit( pVarVal);
- VariantCopy( pVarVal, &pCData->data);
- return S_OK;
- }
-
- return TYPE_E_ELEMENTNOTFOUND;
+ return S_OK;
}
/* ITypeInfo2::GetDocumentation2
More information about the wine-cvs
mailing list