Michael Stefaniuc : dmscript: COM cleanup for IDirectMusicScript.

Alexandre Julliard julliard at winehq.org
Mon Jan 13 12:46:31 CST 2014


Module: wine
Branch: master
Commit: aaecaf517427191977c0a37c057596c6a9bdfc85
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=aaecaf517427191977c0a37c057596c6a9bdfc85

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Sun Jan 12 22:03:06 2014 +0100

dmscript: COM cleanup for IDirectMusicScript.

---

 dlls/dmscript/dmscript_private.h |    2 +-
 dlls/dmscript/script.c           |   57 ++++++++++++++++++++++----------------
 2 files changed, 34 insertions(+), 25 deletions(-)

diff --git a/dlls/dmscript/dmscript_private.h b/dlls/dmscript/dmscript_private.h
index c31164f..a7f2ba9 100644
--- a/dlls/dmscript/dmscript_private.h
+++ b/dlls/dmscript/dmscript_private.h
@@ -62,7 +62,7 @@ extern HRESULT WINAPI DMUSIC_CreateDirectMusicScriptTrack (LPCGUID lpcGUID, LPVO
 struct IDirectMusicScriptImpl {
   /* IUnknown fields */
   const IUnknownVtbl *UnknownVtbl;
-  const IDirectMusicScriptVtbl *ScriptVtbl;
+  IDirectMusicScript IDirectMusicScript_iface;
   const IDirectMusicObjectVtbl *ObjectVtbl;
   const IPersistStreamVtbl *PersistStreamVtbl;
   LONG           ref;
diff --git a/dlls/dmscript/script.c b/dlls/dmscript/script.c
index 149b7b7..3f25638 100644
--- a/dlls/dmscript/script.c
+++ b/dlls/dmscript/script.c
@@ -44,8 +44,8 @@ static HRESULT WINAPI IDirectMusicScriptImpl_IUnknown_QueryInterface (LPUNKNOWN
     IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
     return S_OK;	
   } else if (IsEqualIID (riid, &IID_IDirectMusicScript)) {
-    *ppobj = &This->ScriptVtbl;
-    IDirectMusicScript_AddRef ((LPDIRECTMUSICSCRIPT)&This->ScriptVtbl);
+    *ppobj = &This->IDirectMusicScript_iface;
+    IDirectMusicScript_AddRef(&This->IDirectMusicScript_iface);
     return S_OK;
   } else if (IsEqualIID (riid, &IID_IDirectMusicObject)) {
     *ppobj = &This->ObjectVtbl;
@@ -97,30 +97,34 @@ static const IUnknownVtbl DirectMusicScript_Unknown_Vtbl = {
   IDirectMusicScriptImpl_IUnknown_Release
 };
 
-/* IDirectMusicScriptImpl IDirectMusicScript part: */
+static inline IDirectMusicScriptImpl *impl_from_IDirectMusicScript(IDirectMusicScript *iface)
+{
+  return CONTAINING_RECORD(iface, IDirectMusicScriptImpl, IDirectMusicScript_iface);
+}
+
 static HRESULT WINAPI IDirectMusicScriptImpl_QueryInterface(IDirectMusicScript *iface, REFIID riid,
         void **ppobj)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   return IDirectMusicScriptImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
 }
 
 static ULONG WINAPI IDirectMusicScriptImpl_AddRef(IDirectMusicScript *iface)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   return IDirectMusicScriptImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
 }
 
 static ULONG WINAPI IDirectMusicScriptImpl_Release(IDirectMusicScript *iface)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   return IDirectMusicScriptImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
 }
 
 static HRESULT WINAPI IDirectMusicScriptImpl_Init(IDirectMusicScript *iface,
         IDirectMusicPerformance *pPerformance, DMUS_SCRIPT_ERRORINFO *pErrorInfo)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %p, %p): stub\n", This, pPerformance, pErrorInfo);
   This->pPerformance = pPerformance;
   return S_OK;
@@ -129,7 +133,7 @@ static HRESULT WINAPI IDirectMusicScriptImpl_Init(IDirectMusicScript *iface,
 static HRESULT WINAPI IDirectMusicScriptImpl_CallRoutine(IDirectMusicScript *iface,
         WCHAR *pwszRoutineName, DMUS_SCRIPT_ERRORINFO *pErrorInfo)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %s, %p): stub\n", This, debugstr_w(pwszRoutineName), pErrorInfo);
   /*return E_NOTIMPL;*/
   return S_OK;
@@ -139,7 +143,7 @@ static HRESULT WINAPI IDirectMusicScriptImpl_CallRoutine(IDirectMusicScript *ifa
 static HRESULT WINAPI IDirectMusicScriptImpl_SetVariableVariant(IDirectMusicScript *iface,
         WCHAR *pwszVariableName, VARIANT varValue, BOOL fSetRef, DMUS_SCRIPT_ERRORINFO *pErrorInfo)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %s, FIXME, %d, %p): stub\n", This, debugstr_w(pwszVariableName),/* varValue,*/ fSetRef, pErrorInfo);
   return S_OK;
 }
@@ -147,7 +151,7 @@ static HRESULT WINAPI IDirectMusicScriptImpl_SetVariableVariant(IDirectMusicScri
 static HRESULT WINAPI IDirectMusicScriptImpl_GetVariableVariant(IDirectMusicScript *iface,
         WCHAR *pwszVariableName, VARIANT *pvarValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %s, %p, %p): stub\n", This, debugstr_w(pwszVariableName), pvarValue, pErrorInfo);
   return S_OK;
 }
@@ -155,7 +159,7 @@ static HRESULT WINAPI IDirectMusicScriptImpl_GetVariableVariant(IDirectMusicScri
 static HRESULT WINAPI IDirectMusicScriptImpl_SetVariableNumber(IDirectMusicScript *iface,
         WCHAR *pwszVariableName, LONG lValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %s, %i, %p): stub\n", This, debugstr_w(pwszVariableName), lValue, pErrorInfo);
   return S_OK;
 }
@@ -163,7 +167,7 @@ static HRESULT WINAPI IDirectMusicScriptImpl_SetVariableNumber(IDirectMusicScrip
 static HRESULT WINAPI IDirectMusicScriptImpl_GetVariableNumber(IDirectMusicScript *iface,
         WCHAR *pwszVariableName, LONG *plValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %s, %p, %p): stub\n", This, debugstr_w(pwszVariableName), plValue, pErrorInfo);
   return S_OK;
 }
@@ -171,7 +175,7 @@ static HRESULT WINAPI IDirectMusicScriptImpl_GetVariableNumber(IDirectMusicScrip
 static HRESULT WINAPI IDirectMusicScriptImpl_SetVariableObject(IDirectMusicScript *iface,
         WCHAR *pwszVariableName, IUnknown *punkValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %s, %p, %p): stub\n", This, debugstr_w(pwszVariableName), punkValue, pErrorInfo);
   return S_OK;
 }
@@ -179,7 +183,7 @@ static HRESULT WINAPI IDirectMusicScriptImpl_SetVariableObject(IDirectMusicScrip
 static HRESULT WINAPI IDirectMusicScriptImpl_GetVariableObject(IDirectMusicScript *iface,
         WCHAR *pwszVariableName, REFIID riid, void **ppv, DMUS_SCRIPT_ERRORINFO *pErrorInfo)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %s, %s, %p, %p): stub\n", This, debugstr_w(pwszVariableName), debugstr_dmguid(riid), ppv, pErrorInfo);
   return S_OK;
 }
@@ -187,7 +191,7 @@ static HRESULT WINAPI IDirectMusicScriptImpl_GetVariableObject(IDirectMusicScrip
 static HRESULT WINAPI IDirectMusicScriptImpl_EnumRoutine(IDirectMusicScript *iface, DWORD dwIndex,
         WCHAR *pwszName)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %d, %p): stub\n", This, dwIndex, pwszName);
   return S_OK;
 }
@@ -195,12 +199,12 @@ static HRESULT WINAPI IDirectMusicScriptImpl_EnumRoutine(IDirectMusicScript *ifa
 static HRESULT WINAPI IDirectMusicScriptImpl_EnumVariable(IDirectMusicScript *iface, DWORD dwIndex,
         WCHAR *pwszName)
 {
-  ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
+  IDirectMusicScriptImpl *This = impl_from_IDirectMusicScript(iface);
   FIXME("(%p, %d, %p): stub\n", This, dwIndex, pwszName);
   return S_OK;
 }
 
-static const IDirectMusicScriptVtbl DirectMusicScript_Script_Vtbl = {
+static const IDirectMusicScriptVtbl dmscript_vtbl = {
     IDirectMusicScriptImpl_QueryInterface,
     IDirectMusicScriptImpl_AddRef,
     IDirectMusicScriptImpl_Release,
@@ -708,16 +712,21 @@ static const IPersistStreamVtbl DirectMusicScript_PersistStream_Vtbl = {
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicScriptImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
-  IDirectMusicScriptImpl* obj;
-  
+HRESULT WINAPI DMUSIC_CreateDirectMusicScriptImpl(REFIID lpcGUID, void **ppobj, IUnknown *pUnkOuter)
+{
+  IDirectMusicScriptImpl *obj;
+
+  *ppobj = NULL;
+
+  if (pUnkOuter)
+    return CLASS_E_NOAGGREGATION;
+
   obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicScriptImpl));
-  if (NULL == obj) {
-    *ppobj = NULL;
+  if (!obj)
     return E_OUTOFMEMORY;
-  }
+
   obj->UnknownVtbl = &DirectMusicScript_Unknown_Vtbl;
-  obj->ScriptVtbl = &DirectMusicScript_Script_Vtbl;
+  obj->IDirectMusicScript_iface.lpVtbl = &dmscript_vtbl;
   obj->ObjectVtbl = &DirectMusicScript_Object_Vtbl;
   obj->PersistStreamVtbl = &DirectMusicScript_PersistStream_Vtbl;
   obj->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC));




More information about the wine-cvs mailing list