home *** CD-ROM | disk | FTP | other *** search
/ Game Audio Programming / GameAudioProgramming.iso / Game_Audio / audio_sdk / src / AudioLib / FileStream.h < prev    next >
C/C++ Source or Header  |  2002-09-09  |  2KB  |  95 lines

  1. #ifndef FILESTREAM_H__
  2. #define FILESTREAM_H__
  3.  
  4. #include "Audio.h"
  5.  
  6. #pragma pack(push,4)
  7.  
  8. namespace Audio
  9. {
  10.  
  11. class FileStream : public IAudioStream
  12. {
  13.  
  14. DEFINE_POOL(FileStream);
  15.  
  16. public:
  17.     FileStream();
  18.     virtual ~FileStream();
  19.     void Clear();
  20.  
  21.     HRESULT __stdcall Open(std::string sFileName);
  22.     void Close();
  23.  
  24.     // IUnknown Interface
  25.     HRESULT __stdcall QueryInterface(
  26.         const struct _GUID& guid, 
  27.         void** ppInterface);
  28.     ULONG __stdcall AddRef();
  29.     ULONG __stdcall Release();
  30.  
  31.     // ISequentialStream Interface
  32.     HRESULT __stdcall Read( 
  33.         /* [length_is][size_is][out] */ void *pv,
  34.         /* [in] */ ULONG cb,
  35.         /* [out] */ ULONG *pcbRead);
  36.     
  37.     HRESULT __stdcall Write( 
  38.         /* [size_is][in] */ const void *pv,
  39.         /* [in] */ ULONG cb,
  40.         /* [out] */ ULONG *pcbWritten);
  41.  
  42.     // IStream Interface
  43.     HRESULT __stdcall Seek( 
  44.         /* [in] */ LARGE_INTEGER dlibMove,
  45.         /* [in] */ DWORD dwOrigin,
  46.         /* [out] */ ULARGE_INTEGER *plibNewPosition);
  47.         
  48.     HRESULT __stdcall SetSize( 
  49.         /* [in] */ ULARGE_INTEGER libNewSize);
  50.         
  51.     HRESULT __stdcall CopyTo( 
  52.         /* [unique][in] */ IStream *pstm,
  53.         /* [in] */ ULARGE_INTEGER cb,
  54.         /* [out] */ ULARGE_INTEGER *pcbRead,
  55.         /* [out] */ ULARGE_INTEGER *pcbWritten);
  56.         
  57.     HRESULT __stdcall Commit( 
  58.         /* [in] */ DWORD grfCommitFlags);
  59.         
  60.     HRESULT __stdcall Revert(void);
  61.         
  62.     HRESULT __stdcall LockRegion( 
  63.         /* [in] */ ULARGE_INTEGER libOffset,
  64.         /* [in] */ ULARGE_INTEGER cb,
  65.         /* [in] */ DWORD dwLockType);
  66.         
  67.     HRESULT __stdcall UnlockRegion( 
  68.         /* [in] */ ULARGE_INTEGER libOffset,
  69.         /* [in] */ ULARGE_INTEGER cb,
  70.         /* [in] */ DWORD dwLockType);
  71.         
  72.     HRESULT __stdcall Stat( 
  73.         /* [out] */ STATSTG *pstatstg,
  74.         /* [in] */ DWORD grfStatFlag);
  75.         
  76.     HRESULT __stdcall Clone( 
  77.         /* [out] */ IStream **ppstm);
  78.         
  79. private:
  80.  
  81.     int32            m_iRefCount;
  82.     FILE*            m_pFile;
  83.     uint32            m_nSize;
  84.     std::string        m_sFileName;
  85.  
  86.     uint8*            m_pBuffer;
  87.     uint32            m_nReadPtr;
  88.     bool            m_bBuffered;
  89. };
  90.  
  91. }; // namespace Audio
  92.  
  93. #pragma pack(pop,4)
  94.  
  95. #endif // FILESTREAM_H__