PERSTOR.H

/************************************************************************** 
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Copyright 1997 Microsoft Corporation. All Rights Reserved.
**************************************************************************/

/******************************************************************************

File: PerStor.h

Description: CPersistStorage definitions.

******************************************************************************/

#ifndef PERSISTSTORAGE_H
#define PERSISTSTORAGE_H

/**************************************************************************
#include statements
**************************************************************************/

#include "DOServer.h"

/**************************************************************************

CPersistStorage class definition

**************************************************************************/

class COleDocument;

class CPersistStorage : public IPersistStorage
{
friend class CPersistFile;

private:
COleDocument *m_pOleDoc;
LPSTORAGE m_pStorage;
LPSTREAM m_pColorStream;
BOOL m_fSameAsLoad;

public:
CPersistStorage(COleDocument*);
~CPersistStorage();

//IUnknown methods
STDMETHODIMP QueryInterface(REFIID, LPVOID*);
STDMETHODIMP_(DWORD) AddRef();
STDMETHODIMP_(DWORD) Release();

//IPersistStorage methods
STDMETHODIMP InitNew(LPSTORAGE);
STDMETHODIMP GetClassID(LPCLSID);
STDMETHODIMP Save(LPSTORAGE, BOOL);
STDMETHODIMP SaveCompleted(LPSTORAGE);
STDMETHODIMP Load(LPSTORAGE);
STDMETHODIMP IsDirty();
STDMETHODIMP HandsOffStorage();

private:
void ReleaseStreamsAndStorage();
void OpenStreams(LPSTORAGE);
void CreateStreams(LPSTORAGE);
void CreateStreams(LPSTORAGE, LPSTREAM*);

};

#endif //PERSISTSTORAGE_H