Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (C) 1995-2001 Microsoft Corporation
Module Name:
DataSrc.H
Abstract:
Declares DataSrc objects.
History:
a-davj 21-Dec-99 Created.
--*/
#ifndef _DataSrc_H_
#define _DataSrc_H_
#include "stdio.h"
#include <helper.h>
/*-----------------------------------------------------------------------
GenericException -----------------------------------------------------------------------*/
class GenericException { DWORD m_errorCode; public:
GenericException() : m_errorCode(GetLastError()) {} GenericException( DWORD errorCode ) : m_errorCode(errorCode) {} DWORD GetErrorCode() const { return m_errorCode; } HRESULT GetHRESULT() const {return HRESULT_FROM_WIN32(m_errorCode);} };
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; virtual TCHAR * GetFileName(){ return NULL; }; 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); TCHAR * GetFileName(){ return m_pFileName; };
private: void UpdateBuffer(); FILE * m_fp; TCHAR * m_pFileName; int m_iFilePos; int m_iToFar; wchar_t m_Buff[10000]; };
#ifdef USE_MMF_APPROACH
class FileDataSrc1 : public DataSrc {
public: FileDataSrc1(TCHAR * pFileName); ~FileDataSrc1(); wchar_t GetAt(int nOffset); void Move(int n); int MoveToStart(); int MoveToPos(int iPos); TCHAR * GetFileName(){ return m_pFileName; };
private: HANDLE m_hFile; HANDLE m_hFileMapSrc; WCHAR * m_pData; TCHAR * m_pFileName; }; #endif
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
};
class BMOFDataSrc : public DataSrc { private: TCHAR m_FileName[MAX_PATH+1]; public: BMOFDataSrc(TCHAR * szFileName){ StringCchCopy(m_FileName,LENGTH_OF(m_FileName),szFileName); }; TCHAR * GetFileName(){ return &m_FileName[0]; }; wchar_t GetAt(int nOffset){ return 0; }; void Move(int n){ }; int MoveToStart(){ return 0; }; int MoveToPos(int iPos){ return 0; }; };
#endif
|