79 lines
1.4 KiB
C++
79 lines
1.4 KiB
C++
/*++
|
|
|
|
Copyright (C) 1995-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
DataSrc.H
|
|
|
|
Abstract:
|
|
|
|
Declares DataSrc objects.
|
|
|
|
History:
|
|
|
|
a-davj 21-Dec-99 Created.
|
|
|
|
--*/
|
|
|
|
#include "stdio.h"
|
|
#ifndef _DataSrc_H_
|
|
#define _DataSrc_H_
|
|
|
|
|
|
class DataSrc
|
|
{
|
|
public:
|
|
DataSrc(): m_iPos(0), m_iSize(0), m_iStatus(0){};
|
|
virtual ~DataSrc(){return;};
|
|
virtual wchar_t GetAt(int nOffset) = 0;
|
|
virtual void Move(int n) = 0;
|
|
int GetPos(){return m_iPos;};
|
|
int GetStatus(){return m_iStatus;};
|
|
bool PastEnd(){return m_iPos >= m_iSize;};
|
|
bool WouldBePastEnd(int iOffset){return (m_iPos+iOffset) >= m_iSize;};
|
|
virtual int MoveToStart() = 0;
|
|
virtual int MoveToPos(int iPos)=0;
|
|
protected:
|
|
int m_iPos;
|
|
int m_iSize;
|
|
int m_iStatus;
|
|
};
|
|
|
|
class FileDataSrc : public DataSrc
|
|
{
|
|
public:
|
|
FileDataSrc(TCHAR * pFileName);
|
|
~FileDataSrc();
|
|
wchar_t GetAt(int nOffset);
|
|
void Move(int n);
|
|
int MoveToStart();
|
|
int MoveToPos(int iPos);
|
|
|
|
private:
|
|
void UpdateBuffer();
|
|
FILE * m_fp;
|
|
TCHAR * m_pFileName;
|
|
int m_iFilePos;
|
|
int m_iToFar;
|
|
wchar_t m_Buff[10000];
|
|
};
|
|
|
|
|
|
class BufferDataSrc : public DataSrc
|
|
{
|
|
public:
|
|
BufferDataSrc(long lSize, char * pMemSrc);
|
|
~BufferDataSrc();
|
|
wchar_t GetAt(int nOffset);
|
|
void Move(int n);
|
|
int MoveToStart();
|
|
int MoveToPos(int iPos){m_iPos = iPos; return iPos;};
|
|
|
|
private:
|
|
wchar_t * m_Data; // only used if type is BUFFER
|
|
|
|
};
|
|
|
|
#endif
|