From c396411a5bd4dfd69d0f1c6471fb9214a38013ba Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Wed, 14 Nov 2007 12:44:19 +0000 Subject: [PATCH] inetcomm: Add a stub MimeBody implementation. --- dlls/inetcomm/inetcomm_private.h | 2 + dlls/inetcomm/mimeole.c | 483 +++++++++++++++++++++++++++++++ 2 files changed, 485 insertions(+) diff --git a/dlls/inetcomm/inetcomm_private.h b/dlls/inetcomm/inetcomm_private.h index f894eae554c..2a419252f35 100644 --- a/dlls/inetcomm/inetcomm_private.h +++ b/dlls/inetcomm/inetcomm_private.h @@ -68,3 +68,5 @@ HRESULT InternetTransport_Write(InternetTransport *This, const char *pvData, BOOL InternetTransport_RegisterClass(HINSTANCE hInstance); void InternetTransport_UnregisterClass(HINSTANCE hInstance); + +HRESULT MimeBody_create(IUnknown *outer, void **obj); diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c index 16797bcf54e..56ee5d95748 100644 --- a/dlls/inetcomm/mimeole.c +++ b/dlls/inetcomm/mimeole.c @@ -36,6 +36,489 @@ WINE_DEFAULT_DEBUG_CHANNEL(inetcomm); +typedef struct MimeBody +{ + const IMimeBodyVtbl *lpVtbl; + LONG refs; + + HBODY handle; +} MimeBody; + +static inline MimeBody *impl_from_IMimeBody( IMimeBody *iface ) +{ + return (MimeBody *)((char*)iface - FIELD_OFFSET(MimeBody, lpVtbl)); +} + +static HRESULT WINAPI MimeBody_QueryInterface(IMimeBody* iface, + REFIID riid, + void** ppvObject) +{ + TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppvObject); + + *ppvObject = NULL; + + if (IsEqualIID(riid, &IID_IUnknown) || + IsEqualIID(riid, &IID_IPersist) || + IsEqualIID(riid, &IID_IPersistStreamInit) || + IsEqualIID(riid, &IID_IMimePropertySet) || + IsEqualIID(riid, &IID_IMimeBody)) + { + *ppvObject = iface; + } + + if(*ppvObject) + { + IUnknown_AddRef((IUnknown*)*ppvObject); + return S_OK; + } + + FIXME("no interface for %s\n", debugstr_guid(riid)); + return E_NOINTERFACE; +} + +static ULONG WINAPI MimeBody_AddRef(IMimeBody* iface) +{ + MimeBody *This = impl_from_IMimeBody(iface); + TRACE("(%p)->()\n", iface); + return InterlockedIncrement(&This->refs); +} + +static ULONG WINAPI MimeBody_Release(IMimeBody* iface) +{ + MimeBody *This = impl_from_IMimeBody(iface); + ULONG refs; + + TRACE("(%p)->()\n", iface); + + refs = InterlockedDecrement(&This->refs); + if (!refs) + { + HeapFree(GetProcessHeap(), 0, This); + } + + return refs; +} + +static HRESULT WINAPI MimeBody_GetClassID( + IMimeBody* iface, + CLSID* pClassID) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + + +static HRESULT WINAPI MimeBody_IsDirty( + IMimeBody* iface) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_Load( + IMimeBody* iface, + LPSTREAM pStm) +{ + FIXME("(%p)->(%p): stub\n", iface, pStm); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_Save( + IMimeBody* iface, + LPSTREAM pStm, + BOOL fClearDirty) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetSizeMax( + IMimeBody* iface, + ULARGE_INTEGER* pcbSize) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_InitNew( + IMimeBody* iface) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetPropInfo( + IMimeBody* iface, + LPCSTR pszName, + LPMIMEPROPINFO pInfo) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_SetPropInfo( + IMimeBody* iface, + LPCSTR pszName, + LPCMIMEPROPINFO pInfo) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetProp( + IMimeBody* iface, + LPCSTR pszName, + DWORD dwFlags, + LPPROPVARIANT pValue) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_SetProp( + IMimeBody* iface, + LPCSTR pszName, + DWORD dwFlags, + LPCPROPVARIANT pValue) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_AppendProp( + IMimeBody* iface, + LPCSTR pszName, + DWORD dwFlags, + LPPROPVARIANT pValue) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_DeleteProp( + IMimeBody* iface, + LPCSTR pszName) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_CopyProps( + IMimeBody* iface, + ULONG cNames, + LPCSTR* prgszName, + IMimePropertySet* pPropertySet) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_MoveProps( + IMimeBody* iface, + ULONG cNames, + LPCSTR* prgszName, + IMimePropertySet* pPropertySet) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_DeleteExcept( + IMimeBody* iface, + ULONG cNames, + LPCSTR* prgszName) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_QueryProp( + IMimeBody* iface, + LPCSTR pszName, + LPCSTR pszCriteria, + boolean fSubString, + boolean fCaseSensitive) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetCharset( + IMimeBody* iface, + LPHCHARSET phCharset) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_SetCharset( + IMimeBody* iface, + HCHARSET hCharset, + CSETAPPLYTYPE applytype) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetParameters( + IMimeBody* iface, + LPCSTR pszName, + ULONG* pcParams, + LPMIMEPARAMINFO* pprgParam) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_IsContentType( + IMimeBody* iface, + LPCSTR pszPriType, + LPCSTR pszSubType) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_BindToObject( + IMimeBody* iface, + REFIID riid, + void** ppvObject) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_Clone( + IMimeBody* iface, + IMimePropertySet** ppPropertySet) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_SetOption( + IMimeBody* iface, + const TYPEDID oid, + LPCPROPVARIANT pValue) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetOption( + IMimeBody* iface, + const TYPEDID oid, + LPPROPVARIANT pValue) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_EnumProps( + IMimeBody* iface, + DWORD dwFlags, + IMimeEnumProperties** ppEnum) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_IsType( + IMimeBody* iface, + IMSGBODYTYPE bodytype) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_SetDisplayName( + IMimeBody* iface, + LPCSTR pszDisplay) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetDisplayName( + IMimeBody* iface, + LPSTR* ppszDisplay) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetOffsets( + IMimeBody* iface, + LPBODYOFFSETS pOffsets) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetCurrentEncoding( + IMimeBody* iface, + ENCODINGTYPE* pietEncoding) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_SetCurrentEncoding( + IMimeBody* iface, + ENCODINGTYPE ietEncoding) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetEstimatedSize( + IMimeBody* iface, + ENCODINGTYPE ietEncoding, + ULONG* pcbSize) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetDataHere( + IMimeBody* iface, + ENCODINGTYPE ietEncoding, + IStream* pStream) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetData( + IMimeBody* iface, + ENCODINGTYPE ietEncoding, + IStream** ppStream) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_SetData( + IMimeBody* iface, + ENCODINGTYPE ietEncoding, + LPCSTR pszPriType, + LPCSTR pszSubType, + REFIID riid, + LPVOID pvObject) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_EmptyData( + IMimeBody* iface) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_CopyTo( + IMimeBody* iface, + IMimeBody* pBody) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetTransmitInfo( + IMimeBody* iface, + LPTRANSMITINFO pTransmitInfo) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_SaveToFile( + IMimeBody* iface, + ENCODINGTYPE ietEncoding, + LPCSTR pszFilePath) +{ + FIXME("stub\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeBody_GetHandle( + IMimeBody* iface, + LPHBODY phBody) +{ + MimeBody *This = impl_from_IMimeBody(iface); + TRACE("(%p)->(%p)\n", iface, phBody); + + *phBody = This->handle; + return This->handle ? S_OK : MIME_E_NO_DATA; +} + +static IMimeBodyVtbl body_vtbl = +{ + MimeBody_QueryInterface, + MimeBody_AddRef, + MimeBody_Release, + MimeBody_GetClassID, + MimeBody_IsDirty, + MimeBody_Load, + MimeBody_Save, + MimeBody_GetSizeMax, + MimeBody_InitNew, + MimeBody_GetPropInfo, + MimeBody_SetPropInfo, + MimeBody_GetProp, + MimeBody_SetProp, + MimeBody_AppendProp, + MimeBody_DeleteProp, + MimeBody_CopyProps, + MimeBody_MoveProps, + MimeBody_DeleteExcept, + MimeBody_QueryProp, + MimeBody_GetCharset, + MimeBody_SetCharset, + MimeBody_GetParameters, + MimeBody_IsContentType, + MimeBody_BindToObject, + MimeBody_Clone, + MimeBody_SetOption, + MimeBody_GetOption, + MimeBody_EnumProps, + MimeBody_IsType, + MimeBody_SetDisplayName, + MimeBody_GetDisplayName, + MimeBody_GetOffsets, + MimeBody_GetCurrentEncoding, + MimeBody_SetCurrentEncoding, + MimeBody_GetEstimatedSize, + MimeBody_GetDataHere, + MimeBody_GetData, + MimeBody_SetData, + MimeBody_EmptyData, + MimeBody_CopyTo, + MimeBody_GetTransmitInfo, + MimeBody_SaveToFile, + MimeBody_GetHandle +}; + +HRESULT MimeBody_create(IUnknown *outer, void **obj) +{ + MimeBody *This; + + *obj = NULL; + + if(outer) return CLASS_E_NOAGGREGATION; + + This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + if (!This) return E_OUTOFMEMORY; + + This->lpVtbl = &body_vtbl; + This->refs = 1; + This->handle = NULL; + + *obj = (IMimeBody *)&This->lpVtbl; + return S_OK; +} + typedef struct MimeMessage { const IMimeMessageVtbl *lpVtbl;