131 lines
3 KiB
C++
131 lines
3 KiB
C++
/*
|
|
* This is a part of the BugTrap package.
|
|
* Copyright (c) 2005-2009 IntelleSoft.
|
|
* All rights reserved.
|
|
*
|
|
* Description: Base stream interface.
|
|
* Author: Maksim Pyatkovskiy.
|
|
*
|
|
* This source code is only intended as a supplement to the
|
|
* BugTrap package reference and related electronic documentation
|
|
* provided with the product. See these sources for detailed
|
|
* information regarding the BugTrap package.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
class CBaseStream
|
|
{
|
|
public:
|
|
/// List of optional, but supported features.
|
|
enum STREAM_FEATURES
|
|
{
|
|
/// Optional functions are not supported.
|
|
SF_NONE = 0x00,
|
|
/// IsOpen() is supported.
|
|
SF_ISOPEN = 0x01,
|
|
/// Close() is supported.
|
|
SF_CLOSE = 0x02,
|
|
/// GetName() is supported.
|
|
SF_GETNAME = 0x04,
|
|
/// GetLastError() is supported.
|
|
SF_GETLASTERROR = 0x08,
|
|
/// GetLength() is supported.
|
|
SF_GETLENGTH = 0x10,
|
|
/// SetLength() is supported.
|
|
SF_SETLENGTH = 0x20,
|
|
/// GetPosition() is supported.
|
|
SF_GETPOSITION = 0x40,
|
|
/// SetPosition() is supported.
|
|
SF_SETPOSITION = 0x80
|
|
};
|
|
|
|
/// Destroy the object.
|
|
virtual ~CBaseStream(void);
|
|
/// Get list of supported features. This function is required.
|
|
virtual unsigned GetFeatures(void) const;
|
|
/// Return true if stream is open.
|
|
virtual bool IsOpen(void) const;
|
|
/// Closes the stream. This function is optional.
|
|
virtual void Close(void);
|
|
/// Get stream name. This function is optional.
|
|
virtual bool GetName(PTSTR pszName, size_t nNameSize) const;
|
|
/// Get last IO error code. This function is optional.
|
|
virtual long GetLastError(void) const;
|
|
/// Return number of bytes in the stream. This function is optional.
|
|
virtual size_t GetLength(void) const;
|
|
/// Get current position. This function is optional.
|
|
virtual size_t GetPosition(void) const;
|
|
/// Set current position. This function is optional.
|
|
virtual size_t SetPosition(ptrdiff_t nOffset, int nMoveMethod);
|
|
};
|
|
|
|
inline CBaseStream::~CBaseStream(void)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* @return true if stream is open.
|
|
*/
|
|
inline bool CBaseStream::IsOpen(void) const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @return bit mask of supported features.
|
|
*/
|
|
inline unsigned CBaseStream::GetFeatures(void) const
|
|
{
|
|
return SF_NONE;
|
|
}
|
|
|
|
inline void CBaseStream::Close(void)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* @param pszName - stream name buffer.
|
|
* @param nNameSize - size of stream name buffer.
|
|
* @return true if name was retrieved.
|
|
*/
|
|
inline bool CBaseStream::GetName(PTSTR pszName, size_t nNameSize) const
|
|
{
|
|
if (nNameSize > 0)
|
|
*pszName = _T('0');
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @return number of bytes in the stream.
|
|
*/
|
|
inline size_t CBaseStream::GetLength(void) const
|
|
{
|
|
return MAXSIZE_T;
|
|
}
|
|
|
|
/**
|
|
* @return current stream position.
|
|
*/
|
|
inline size_t CBaseStream::GetPosition(void) const
|
|
{
|
|
return MAXSIZE_T;
|
|
}
|
|
|
|
/**
|
|
* @param nOffset - offset from start point.
|
|
* @param nMoveMethod - start point.
|
|
* @return new position value.
|
|
*/
|
|
inline size_t CBaseStream::SetPosition(ptrdiff_t /*nOffset*/, int /*nMoveMethod*/)
|
|
{
|
|
return MAXSIZE_T;
|
|
}
|
|
|
|
/**
|
|
* @return latest IO error code.
|
|
*/
|
|
inline long CBaseStream::GetLastError(void) const
|
|
{
|
|
return NOERROR;
|
|
}
|