atl: Use an iface instead of a vtbl pointer in the Registrar object.
This commit is contained in:
parent
8d959c9949
commit
0fd3f0a006
|
@ -78,7 +78,7 @@ typedef struct rep_list_str {
|
|||
} rep_list;
|
||||
|
||||
typedef struct {
|
||||
const IRegistrarVtbl *lpVtbl;
|
||||
IRegistrar IRegistrar_iface;
|
||||
LONG ref;
|
||||
rep_list *rep;
|
||||
} Registrar;
|
||||
|
@ -89,6 +89,11 @@ typedef struct {
|
|||
DWORD len;
|
||||
} strbuf;
|
||||
|
||||
static inline Registrar *impl_from_IRegistrar(IRegistrar *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, Registrar, IRegistrar_iface);
|
||||
}
|
||||
|
||||
static void strbuf_init(strbuf *buf)
|
||||
{
|
||||
buf->str = HeapAlloc(GetProcessHeap(), 0, 128*sizeof(WCHAR));
|
||||
|
@ -549,7 +554,7 @@ static HRESULT WINAPI Registrar_QueryInterface(IRegistrar *iface, REFIID riid, v
|
|||
|
||||
static ULONG WINAPI Registrar_AddRef(IRegistrar *iface)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
ULONG ref = InterlockedIncrement(&This->ref);
|
||||
TRACE("(%p) ->%d\n", This, ref);
|
||||
return ref;
|
||||
|
@ -557,7 +562,7 @@ static ULONG WINAPI Registrar_AddRef(IRegistrar *iface)
|
|||
|
||||
static ULONG WINAPI Registrar_Release(IRegistrar *iface)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
ULONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ->%d\n", This, ref);
|
||||
|
@ -571,7 +576,7 @@ static ULONG WINAPI Registrar_Release(IRegistrar *iface)
|
|||
|
||||
static HRESULT WINAPI Registrar_AddReplacement(IRegistrar *iface, LPCOLESTR Key, LPCOLESTR item)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
int len;
|
||||
rep_list *new_rep;
|
||||
|
||||
|
@ -595,7 +600,7 @@ static HRESULT WINAPI Registrar_AddReplacement(IRegistrar *iface, LPCOLESTR Key,
|
|||
|
||||
static HRESULT WINAPI Registrar_ClearReplacements(IRegistrar *iface)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
rep_list *iter, *iter2;
|
||||
|
||||
TRACE("(%p)\n", This);
|
||||
|
@ -619,7 +624,7 @@ static HRESULT WINAPI Registrar_ClearReplacements(IRegistrar *iface)
|
|||
static HRESULT WINAPI Registrar_ResourceRegisterSz(IRegistrar* iface, LPCOLESTR resFileName,
|
||||
LPCOLESTR szID, LPCOLESTR szType)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
TRACE("(%p)->(%s %s %s)\n", This, debugstr_w(resFileName), debugstr_w(szID), debugstr_w(szType));
|
||||
return resource_register(This, resFileName, szID, szType, TRUE);
|
||||
}
|
||||
|
@ -627,35 +632,35 @@ static HRESULT WINAPI Registrar_ResourceRegisterSz(IRegistrar* iface, LPCOLESTR
|
|||
static HRESULT WINAPI Registrar_ResourceUnregisterSz(IRegistrar* iface, LPCOLESTR resFileName,
|
||||
LPCOLESTR szID, LPCOLESTR szType)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
TRACE("(%p)->(%s %s %s)\n", This, debugstr_w(resFileName), debugstr_w(szID), debugstr_w(szType));
|
||||
return resource_register(This, resFileName, szID, szType, FALSE);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Registrar_FileRegister(IRegistrar* iface, LPCOLESTR fileName)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(fileName));
|
||||
return file_register(This, fileName, TRUE);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Registrar_FileUnregister(IRegistrar* iface, LPCOLESTR fileName)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(fileName));
|
||||
return file_register(This, fileName, FALSE);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Registrar_StringRegister(IRegistrar* iface, LPCOLESTR data)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(data));
|
||||
return string_register(This, data, TRUE);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI Registrar_StringUnregister(IRegistrar* iface, LPCOLESTR data)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(data));
|
||||
return string_register(This, data, FALSE);
|
||||
}
|
||||
|
@ -663,7 +668,7 @@ static HRESULT WINAPI Registrar_StringUnregister(IRegistrar* iface, LPCOLESTR da
|
|||
static HRESULT WINAPI Registrar_ResourceRegister(IRegistrar* iface, LPCOLESTR resFileName,
|
||||
UINT nID, LPCOLESTR szType)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
TRACE("(%p)->(%s %d %s)\n", iface, debugstr_w(resFileName), nID, debugstr_w(szType));
|
||||
return resource_register(This, resFileName, MAKEINTRESOURCEW(nID), szType, TRUE);
|
||||
}
|
||||
|
@ -671,7 +676,7 @@ static HRESULT WINAPI Registrar_ResourceRegister(IRegistrar* iface, LPCOLESTR re
|
|||
static HRESULT WINAPI Registrar_ResourceUnregister(IRegistrar* iface, LPCOLESTR resFileName,
|
||||
UINT nID, LPCOLESTR szType)
|
||||
{
|
||||
Registrar *This = (Registrar*)iface;
|
||||
Registrar *This = impl_from_IRegistrar(iface);
|
||||
TRACE("(%p)->(%s %d %s)\n", This, debugstr_w(resFileName), nID, debugstr_w(szType));
|
||||
return resource_register(This, resFileName, MAKEINTRESOURCEW(nID), szType, FALSE);
|
||||
}
|
||||
|
@ -700,7 +705,7 @@ static HRESULT Registrar_create(const IUnknown *pUnkOuter, REFIID riid, void **p
|
|||
return E_NOINTERFACE;
|
||||
|
||||
ret = HeapAlloc(GetProcessHeap(), 0, sizeof(Registrar));
|
||||
ret->lpVtbl = &RegistrarVtbl;
|
||||
ret->IRegistrar_iface.lpVtbl = &RegistrarVtbl;
|
||||
ret->ref = 1;
|
||||
ret->rep = NULL;
|
||||
*ppvObject = ret;
|
||||
|
|
Loading…
Reference in New Issue