NT4/private/ole32/com/objact/smstg.hxx
2020-09-30 17:12:29 +02:00

180 lines
4.1 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1993.
//
// File: smstg.hxx
//
// Contents: Declaration for class to handle marshaled data as stg.
//
// Classes: CSafeMarshaledStg
// CSafeStgMarshaled
//
// Functions: CSafeMarshaledStg::operator->
// CSafeMarshaledStg::IStorage*
// CSafeStgMarshaled::operator->
// CSafeStgMarshaled::IStorage*
//
// History: 14-May-93 Ricksa Created
//
//--------------------------------------------------------------------------
#ifndef __SMSTG_HXX__
#define __SMSTG_HXX__
#include <iface.h>
//+-------------------------------------------------------------------------
//
// Class: CSafeMarshaledStg (smstg)
//
// Purpose: Handle bookkeeping of translating a marshaled buffer into
// and IStorage
//
// Interface: operator-> - make class act like a pointer to an IStorage
// operator IStorage* - convert object into ptr to IStorage
//
// History: 14-May-93 Ricksa Created
//
//--------------------------------------------------------------------------
class CSafeMarshaledStg
{
public:
CSafeMarshaledStg(InterfaceData *pIFD, HRESULT& hr);
~CSafeMarshaledStg(void);
IStorage * operator->(void);
operator IStorage*(void);
private:
IStorage * _pstg;
};
//+-------------------------------------------------------------------------
//
// Member: CSafeMarshaledStg::operator->
//
// Synopsis: Make object act like a pointer to an IStorage
//
// History: 14-May-93 Ricksa Created
//
//--------------------------------------------------------------------------
inline IStorage *CSafeMarshaledStg::operator->(void)
{
return _pstg;
}
//+-------------------------------------------------------------------------
//
// Member: CSafeMarshaledStg::operator IStorage*
//
// Synopsis: Convert object to pointer to IStorage
//
// History: 14-May-93 Ricksa Created
//
//--------------------------------------------------------------------------
inline CSafeMarshaledStg::operator IStorage*(void)
{
return _pstg;
}
//+-------------------------------------------------------------------------
//
// Class: CSafeStgMarshaled
//
// Purpose: Handle bookkeeping of creating a marshaled buffer from
// and IStorage
//
// Interface: operator-> - make class act like a pointer to marshaled data
// operator IStorage* - convert object into ptr to marshaled data
//
// History: 14-May-93 Ricksa Created
//
//--------------------------------------------------------------------------
class CSafeStgMarshaled
{
public:
CSafeStgMarshaled(IStorage *pstg, DWORD dwDestCtx, HRESULT& hr);
~CSafeStgMarshaled(void);
InterfaceData *operator->(void);
operator InterfaceData*(void);
#ifdef DCOM
operator MInterfacePointer *(void);
#endif
private:
InterfaceData *_pIFD;
};
//+-------------------------------------------------------------------------
//
// Member: CSafeStgMarshaled::operator->
//
// Synopsis: Make object into pointer to the marshal buffer
//
// History: 14-May-93 Ricksa Created
//
//--------------------------------------------------------------------------
inline InterfaceData *CSafeStgMarshaled::operator->(void)
{
return _pIFD;
}
//+-------------------------------------------------------------------------
//
// Member: CSafeStgMarshaled::operator InterfaceData*
//
// Synopsis: Convert object to pointer to marshal buffer
//
// History: 14-May-93 Ricksa Created
//
//--------------------------------------------------------------------------
inline CSafeStgMarshaled::operator InterfaceData*(void)
{
return _pIFD;
}
#ifdef DCOM
//+-------------------------------------------------------------------------
//
// Member: CSafeStgMarshaled::operator MInterfacePointer*
//
// Synopsis: Convert object to pointer to marshal buffer
//
// History: 14-May-93 Ricksa Created
//
//--------------------------------------------------------------------------
inline CSafeStgMarshaled::operator MInterfacePointer*(void)
{
return (MInterfacePointer *) _pIFD;
}
#endif // DCOM
#endif // __SMSTG_HXX__