2020-09-30 17:12:29 +02:00

78 lines
1.5 KiB
C++

// IOStream.h -- Definition for class CIOStream
#ifndef __IOSTREAM_H__
#define __IOSTREAM_H__
#include "IOQueue.h"
class CIOStream : public CIOQueue
{
public:
// Creator --
static CIOStream *NewIOStream(CUnbufferedIO *puio);
// Destructor --
virtual ~CIOStream();
// Transaction Environment Routines --
void AttachStream(BOOL fOut, UINT cdwStream= 0,
UINT ibFileLow= 0, UINT ibFileHigh= 0
);
// Queries --
UINT CdwStream();
UINT StreamBase(PUINT pibFileHigh= NULL);
protected:
BOOL InitialIOStream(CUnbufferedIO *puio);
private:
// Data members --
UINT m_cdw;
UINT m_cBlocks;
UINT m_ibFileNextLow;
UINT m_ibFileNextHigh;
// Constructor --
CIOStream();
// I/O sequence --
BOOL NextFileAddress(PUINT pibFileLow, PUINT pibFileHigh, PUINT pcdw);
void ReleaseFileBlock(UINT ibFileLow, UINT ibFileHigh);
};
typedef CIOStream *PCIOStream;
inline UINT CIOStream::CdwStream()
{
ASSERT(Initialed());
ASSERT(Attached());
ASSERT(Writable());
return m_cdw;
}
inline UINT CIOStream::StreamBase(PUINT pibFileHigh)
{
ASSERT(Initialed());
ASSERT(Attached());
ASSERT(Writable());
if (pibFileHigh) *pibFileHigh = 0;
return m_ibFileNextLow - m_cdw * sizeof(UINT);
}
#endif // __IOSTREAM_H__