Module: wine Branch: master Commit: 28fc129258f8f4e680859d9fd2227ecd6fb8b18b URL: http://source.winehq.org/git/wine.git/?a=commit;h=28fc129258f8f4e680859d9fd2...
Author: Andrew Eikum aeikum@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