153 lines
3.2 KiB
C++
153 lines
3.2 KiB
C++
//+--------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1992.
|
|
//
|
|
// File: seekptr.hxx
|
|
//
|
|
// Contents: CSeekPointer header
|
|
//
|
|
// Classes: CSeekPointer
|
|
//
|
|
// History: 30-Apr-92 DrewB Created
|
|
//
|
|
//---------------------------------------------------------------
|
|
|
|
#ifndef __SEEKPTR_HXX__
|
|
#define __SEEKPTR_HXX__
|
|
|
|
|
|
//+--------------------------------------------------------------
|
|
//
|
|
// Class: CSeekPointer
|
|
//
|
|
// Purpose: Contains a seek pointer to share between exposed
|
|
// streams
|
|
//
|
|
// Interface: See below.
|
|
//
|
|
// History: 30-Apr-92 DrewB Created
|
|
//
|
|
//---------------------------------------------------------------
|
|
|
|
class CSeekPointer : public CMallocBased
|
|
{
|
|
public:
|
|
#ifdef LARGE_STREAMS
|
|
inline CSeekPointer(ULONGLONG ulPos);
|
|
#else
|
|
inline CSeekPointer(ULONG ulPos);
|
|
#endif
|
|
inline ~CSeekPointer(void);
|
|
|
|
#ifdef LARGE_STREAMS
|
|
inline ULONGLONG GetPos(void) const;
|
|
inline void SetPos(ULONGLONG ulPos);
|
|
#else
|
|
inline ULONG GetPos(void) const;
|
|
inline void SetPos(ULONG ulPos);
|
|
#endif
|
|
inline void vAddRef(void);
|
|
void vRelease(void);
|
|
|
|
private:
|
|
#ifdef LARGE_STREAMS
|
|
ULONGLONG _ulPos;
|
|
#else
|
|
ULONG _ulPos;
|
|
#endif
|
|
LONG _cReferences;
|
|
};
|
|
|
|
//+--------------------------------------------------------------
|
|
//
|
|
// Member: CSeekPointer::CSeekPointer, public
|
|
//
|
|
// Synopsis: Ctor
|
|
//
|
|
// Arguments: [ulPos] - Initial position
|
|
//
|
|
// History: 30-Apr-92 DrewB Created
|
|
//
|
|
//---------------------------------------------------------------
|
|
|
|
#ifdef LARGE_STREAMS
|
|
inline CSeekPointer::CSeekPointer(ULONGLONG ulPos)
|
|
#else
|
|
inline CSeekPointer::CSeekPointer(ULONG ulPos)
|
|
#endif
|
|
{
|
|
_ulPos = ulPos;
|
|
_cReferences = 1;
|
|
}
|
|
|
|
//+--------------------------------------------------------------
|
|
//
|
|
// Member: CSeekPointer::~CSeekPointer, public
|
|
//
|
|
// Synopsis: Dtor
|
|
//
|
|
// History: 30-Apr-92 DrewB Created
|
|
//
|
|
//---------------------------------------------------------------
|
|
|
|
inline CSeekPointer::~CSeekPointer(void)
|
|
{
|
|
olAssert(_cReferences == 0);
|
|
}
|
|
|
|
//+--------------------------------------------------------------
|
|
//
|
|
// Member: CSeekPointer::GetPos, public
|
|
//
|
|
// Synopsis: Returns _ulPos
|
|
//
|
|
// History: 30-Apr-92 DrewB Created
|
|
//
|
|
//---------------------------------------------------------------
|
|
|
|
#ifdef LARGE_STREAMS
|
|
inline ULONGLONG CSeekPointer::GetPos(void) const
|
|
#else
|
|
inline ULONG CSeekPointer::GetPos(void) const
|
|
#endif
|
|
{
|
|
return _ulPos;
|
|
}
|
|
|
|
//+--------------------------------------------------------------
|
|
//
|
|
// Member: CSeekPointer::SetPos, public
|
|
//
|
|
// Synopsis: Assigns _ulPos
|
|
//
|
|
// History: 30-Apr-92 DrewB Created
|
|
//
|
|
//---------------------------------------------------------------
|
|
|
|
#ifdef LARGE_STREAMS
|
|
inline void CSeekPointer::SetPos(ULONGLONG ulPos)
|
|
#else
|
|
inline void CSeekPointer::SetPos(ULONG ulPos)
|
|
#endif
|
|
{
|
|
_ulPos = ulPos;
|
|
}
|
|
|
|
//+--------------------------------------------------------------
|
|
//
|
|
// Member: CSeekPointer::AddRef, public
|
|
//
|
|
// Synopsis: Increments _cReferences
|
|
//
|
|
// History: 30-Apr-92 DrewB Created
|
|
//
|
|
//---------------------------------------------------------------
|
|
|
|
inline void CSeekPointer::vAddRef(void)
|
|
{
|
|
InterlockedIncrement(&_cReferences);
|
|
}
|
|
|
|
#endif // #ifndef __SEEKPTR_HXX__
|