summaryrefslogtreecommitdiffstats
path: root/private/ole32/stg/ref/h/handle.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'private/ole32/stg/ref/h/handle.hxx')
-rw-r--r--private/ole32/stg/ref/h/handle.hxx402
1 files changed, 402 insertions, 0 deletions
diff --git a/private/ole32/stg/ref/h/handle.hxx b/private/ole32/stg/ref/h/handle.hxx
new file mode 100644
index 000000000..8c97a28c5
--- /dev/null
+++ b/private/ole32/stg/ref/h/handle.hxx
@@ -0,0 +1,402 @@
+//+--------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992
+//
+// File: handle.hxx
+//
+// Contents: Defines CHandle
+//
+// Classes: CHandle
+// CStgHandle
+// CStmHandle
+//
+//---------------------------------------------------------------
+
+#ifndef __HANDLE_HXX__
+#define __HANDLE_HXX__
+
+#include <msf.hxx>
+#include <msffunc.hxx>
+
+//+--------------------------------------------------------------
+//
+// Class: CHandle (h)
+//
+// Purpose: An opaque handle to a directory entry-based object
+//
+// Interface: See below
+//
+//---------------------------------------------------------------
+
+class CStgHandle;
+class CStmHandle;
+
+class CHandle
+{
+public:
+ inline CHandle(void);
+
+ inline void Init(CMStream MSTREAM_NEAR *pms,
+ SID sid);
+
+ inline BOOL IsRoot(void) const;
+ inline BOOL IsValid(void) const;
+
+ inline SCODE GetTime(WHICHTIME wt, TIME_T *ptm);
+ inline SCODE SetTime(WHICHTIME wt, TIME_T tm);
+
+ inline SCODE DestroyEntry(CDfName const *pdfn);
+
+
+ inline CMStream MSTREAM_NEAR *GetMS(void) const;
+ inline SID GetSid(void) const;
+
+private:
+ friend class CStgHandle;
+ friend class CStmHandle;
+
+ CMStream MSTREAM_NEAR *_pms;
+ SID _sid;
+};
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::CHandle, public
+//
+// Synopsis: NULL constructor
+//
+//---------------------------------------------------------------
+
+inline CHandle::CHandle(void)
+{
+ _pms = NULL;
+ _sid = NOSTREAM;
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::Init, public
+//
+// Synopsis: Sets internal data members
+//
+// Arguments: [pms] - Multistream
+// [sid] - SID
+//
+// Returns: Appropriate status code
+//
+//---------------------------------------------------------------
+
+inline void CHandle::Init(CMStream MSTREAM_NEAR *pms,
+ SID sid)
+{
+ _pms = pms;
+ _sid = sid;
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::IsRoot, public
+//
+// Synopsis: Whether this is a root handle or not
+//
+//---------------------------------------------------------------
+
+inline BOOL CHandle::IsRoot(void) const
+{
+ return _sid == SIDROOT;
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::IsValid, public
+//
+// Synopsis: Whether this handle has been initialized
+//
+//---------------------------------------------------------------
+
+inline BOOL CHandle::IsValid(void) const
+{
+ return _pms != NULL;
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::GetTime, public
+//
+// Synopsis: Returns the time
+//
+//---------------------------------------------------------------
+
+inline SCODE CHandle::GetTime(WHICHTIME wt, TIME_T *ptm)
+{
+ return _pms->GetTime(_sid, wt, ptm);
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::SetTime, public
+//
+// Synopsis: Sets the time
+//
+//---------------------------------------------------------------
+
+inline SCODE CHandle::SetTime(WHICHTIME wt, TIME_T tm)
+{
+ return _pms->SetTime(_sid, wt, tm);
+}
+
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::DestroyEntry, public
+//
+// Synopsis: Destroys this entry
+//
+// Returns: Appropriate status code
+//
+//---------------------------------------------------------------
+
+inline SCODE CHandle::DestroyEntry(CDfName const *pdfn)
+{
+ return _pms->DestroyEntry(_sid, pdfn);
+}
+
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::GetMS, public
+//
+// Synopsis: Returns the multistream
+//
+//---------------------------------------------------------------
+
+inline CMStream MSTREAM_NEAR *CHandle::GetMS(void) const
+{
+ return _pms;
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CHandle::GetSid, public
+//
+// Synopsis: Returns the sid
+//
+//---------------------------------------------------------------
+
+inline SID CHandle::GetSid(void) const
+{
+ return _sid;
+}
+
+//+--------------------------------------------------------------
+//
+// Class: CStgHandle, (stgh)
+//
+// Purpose: An opaque handle for Multistream directories
+//
+// Interface: See below
+//
+//---------------------------------------------------------------
+
+class CMSFIterator;
+
+class CStgHandle : public CHandle
+{
+public:
+ inline SCODE CreateEntry(CDfName const *pdfnName,
+ MSENTRYFLAGS const mefFlags,
+ CHandle *ph);
+ inline SCODE GetEntry(CDfName const *pdfnName,
+ MSENTRYFLAGS const mefFlags,
+ CHandle *ph);
+ inline SCODE RenameEntry(CDfName const *pdfnName,
+ CDfName const *pdfnNewName);
+ inline SCODE IsEntry(CDfName const *pdfnName,
+ SEntryBuffer *peb);
+ inline SCODE GetIterator(CMSFIterator **ppi);
+ inline SCODE GetClass(CLSID *pclsid);
+ inline SCODE SetClass(REFCLSID clsid);
+ inline SCODE GetStateBits(DWORD *pgrfStateBits);
+ inline SCODE SetStateBits(DWORD grfStateBits, DWORD grfMask);
+};
+
+//+--------------------------------------------------------------
+//
+// Member: CStgHandle::CreateEntry, public
+//
+// Synopsis: Creates an entry
+//
+//---------------------------------------------------------------
+
+
+inline SCODE CStgHandle::CreateEntry(CDfName const *pdfnName,
+ MSENTRYFLAGS const mefFlags,
+ CHandle *ph)
+{
+ ph->_pms = _pms;
+ return _pms->CreateEntry(_sid, pdfnName, mefFlags, &ph->_sid);
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CStgHandle::GetEntry, public
+//
+// Synopsis: Gets an entry
+//
+//---------------------------------------------------------------
+
+
+inline SCODE CStgHandle::GetEntry(CDfName const *pdfnName,
+ MSENTRYFLAGS const mefFlags,
+ CHandle *ph)
+{
+ SCODE sc;
+ SEntryBuffer eb;
+
+ ph->_pms = _pms;
+
+ sc = _pms->IsEntry(_sid, pdfnName, &eb);
+ if (SUCCEEDED(sc))
+ {
+ msfAssert(eb.sid != NOSTREAM);
+ // entry exists but it may be the wrong type
+
+ if ((mefFlags != MEF_ANY) && (mefFlags != eb.dwType))
+ {
+ sc = STG_E_FILENOTFOUND;
+ }
+ else
+ ph->_sid = eb.sid;
+ }
+ return(sc);
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CStgHandle::RenameEntry, public
+//
+// Synopsis: Renames an entry
+//
+//---------------------------------------------------------------
+
+
+inline SCODE CStgHandle::RenameEntry(CDfName const *pdfnName,
+ CDfName const *pdfnNewName)
+{
+ return _pms->RenameEntry(_sid, pdfnName, pdfnNewName);
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CStgHandle::IsEntry, public
+//
+// Synopsis: Gets entry info and checks for existence
+//
+//---------------------------------------------------------------
+
+inline SCODE CStgHandle::IsEntry(CDfName const *pdfnName,
+ SEntryBuffer *peb)
+{
+ return _pms->IsEntry(_sid, pdfnName, peb);
+}
+
+//+--------------------------------------------------------------
+//
+// Member: CStgHandle::GetIterator, public
+//
+// Synopsis: Gets an iterator
+//
+//---------------------------------------------------------------
+
+inline SCODE CStgHandle::GetIterator(CMSFIterator **ppi)
+{
+ return _pms->GetIterator(_sid, ppi);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CStgHandle::GetClass, public
+//
+// Synopsis: Gets the class ID
+//
+//----------------------------------------------------------------------------
+
+inline SCODE CStgHandle::GetClass(CLSID *pclsid)
+{
+ return _pms->GetClass(_sid, pclsid);
+
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CStgHandle::SetClass, public
+//
+// Synopsis: Sets the class ID
+//
+//----------------------------------------------------------------------------
+
+inline SCODE CStgHandle::SetClass(REFCLSID clsid)
+{
+ return _pms->SetClass(_sid, clsid);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CStgHandle::GetStateBits, public
+//
+// Synopsis: Gets state bits
+//
+//----------------------------------------------------------------------------
+
+inline SCODE CStgHandle::GetStateBits(DWORD *pgrfStateBits)
+{
+ return _pms->GetStateBits(_sid, pgrfStateBits);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CStgHandle::SetStateBits, public
+//
+// Synopsis: Sets state bits
+//
+//----------------------------------------------------------------------------
+
+inline SCODE CStgHandle::SetStateBits(DWORD grfStateBits, DWORD grfMask)
+{
+ return _pms->SetStateBits(_sid, grfStateBits, grfMask);
+}
+
+//+--------------------------------------------------------------
+//
+// Class: CStmHandle, (stmh)
+//
+// Purpose: An opaque handle for Multistream streams
+//
+// Interface: See below
+//
+//---------------------------------------------------------------
+
+class CDirectStream;
+
+class CStmHandle : public CHandle
+{
+public:
+ inline SCODE GetSize(ULONG *pcbSize);
+};
+
+//+--------------------------------------------------------------
+//
+// Member: CStmHandle::GetSize, public
+//
+// Synopsis: Gets the stream size
+//
+//---------------------------------------------------------------
+
+inline SCODE CStmHandle::GetSize(ULONG *pcbSize)
+{
+ return _pms->GetEntrySize(_sid, pcbSize);
+}
+
+#endif // #ifndef __HANDLE_HXX__
+