// MimeBody.h : Declaration of the CMimeBody
#ifndef __MIMEBODY_H_
#define __MIMEBODY_H_
#include "resource.h" // main symbols
#include "MimeDecoder.h"
/////////////////////////////////////////////////////////////////////////////
// CMimeBody
class ATL_NO_VTABLE CMimeBody :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMimeBody, &CLSID_MimeBody>,
public IPersistBaseImpl,
public IDispatchImpl<IMimeBody, &IID_IMimeBody, &LIBID_MIMESNIFFERLib>
{
public:
CMimeBody();
virtual ~CMimeBody();
DECLARE_REGISTRY_RESOURCEID(IDR_MIMEBODY)
DECLARE_NOT_AGGREGATABLE(CMimeBody)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CMimeBody)
COM_INTERFACE_ENTRY(IMimeBody)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IPersistStream)
COM_INTERFACE_ENTRY(IPersistStreamInit)
END_COM_MAP()
public:
void Init(CYYSType* pBody, CMimeDecoder* pRoot);
protected:
CYYSType* m_pBody;
CMimeDecoder* m_pRoot;
CMimeDecoder* m_pProxy;
protected:
CYYSType& GetField(LPCTSTR strField, bool bCreate = false);
void GetFields(LPCTSTR strField, vector<CYYSType>& result);
CYYSType& GetBody(CYYSType*& bContentIsRaw, bool bCreate = false);
public:
// IPersistStream
STDMETHOD(GetClassID)(CLSID* pClassID)
{
*pClassID = CLSID_MimeBody;
return S_OK;
}
STDMETHOD(Load)(LPSTREAM pStm);
STDMETHOD(Save)(LPSTREAM pStm, BOOL fClearDirty);
// IPersistStreamInit
STDMETHOD(InitNew)(void);
// IMimeBody
public:
STDMETHOD(get_EmbeddedMessage)(/*[out, retval]*/ LPDISPATCH *pVal);
STDMETHOD(get_Value)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(put_Value)(/*[in]*/ BSTR newVal);
STDMETHOD(get_FileName)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(put_FileName)(/*[in]*/ BSTR newVal);
STDMETHOD(Import)(/*[in]*/ LPUNKNOWN pStream, /*[in,defaultvalue(0)]*/ VARIANT_BOOL StreamByReference, /*[out,retval]*/ VARIANT_BOOL* pbvarResult);
STDMETHOD(Export)(/*[in]*/ LPUNKNOWN pStream, /*[out,retval]*/ VARIANT_BOOL* pbvarResult);
STDMETHOD(ImportFromFile)(/*[in]*/ BSTR Path, /*[in,defaultvalue(0)]*/ VARIANT_BOOL StreamByReference, /*[out,retval]*/ VARIANT_BOOL* pbvarResult);
STDMETHOD(ExportAsFile)(/*[in]*/ BSTR Path, /*[out,retval]*/ VARIANT_BOOL* pbvarResult);
STDMETHOD(get_ContentID)(/*[out, retval]*/ VARIANT *pVal);
STDMETHOD(put_ContentID)(/*[in]*/ VARIANT newVal);
STDMETHOD(get_Description)(/*[out, retval]*/ VARIANT *pVal);
STDMETHOD(put_Description)(/*[in]*/ VARIANT newVal);
STDMETHOD(get_Encoding)(/*[out, retval]*/ VARIANT *pVal);
STDMETHOD(put_Encoding)(/*[in]*/ VARIANT newVal);
STDMETHOD(get_ExtField)(/*[in]*/ BSTR strName, /*[out, retval]*/ VARIANT *pVal);
STDMETHOD(put_ExtField)(/*[in]*/ BSTR strName, /*[in]*/ VARIANT newVal);
STDMETHOD(get_MinorContentType)(/*[out, retval]*/ VARIANT *pVal);
STDMETHOD(put_MinorContentType)(/*[in]*/ VARIANT newVal);
STDMETHOD(get_MajorContentType)(/*[out, retval]*/ VARIANT *pVal);
STDMETHOD(put_MajorContentType)(/*[in]*/ VARIANT newVal);
STDMETHOD(get_Count)(long* pcount);
STDMETHOD(get_Item)(long Index, VARIANT* pvar);
STDMETHOD(AddNew)(/*[out,retval]*/ LPDISPATCH* ppResult);
STDMETHOD(Remove)(/*[in]*/ long Index);
STDMETHOD(Clear)();
};
#endif //__MIMEBODY_H_