
#ifndef _SoundFile_H_
#define _SoundFile_H_

typedef unsigned long	DWORD;
typedef unsigned short	WORD;
typedef unsigned int	size_t;
typedef struct _iobuf	FILE;

/////////////////////////////////////////////////////////////////////////////////////////
//

class ISoundFile
{
public:
	enum eSeekPos
	{
		seek_begin,
		seek_current,
		seek_end
	};

public:
	static ISoundFile *	CreateSoundFileInstance( const char * szFilename );

public:
	virtual ~ISoundFile() {}
	
	virtual void	Create( const char * ) = 0;
	virtual void	Destroy() = 0;
	virtual WORD	GetBitsPerSample() = 0;
	virtual DWORD	GetSamplePerSec() = 0;
	virtual WORD	GetChannelCount() = 0;
	virtual DWORD	GetSize() = 0;
	virtual void	Reset() = 0;
	virtual	size_t	Read( void * pBuf, size_t readSize ) = 0;
	virtual size_t	ReadWhole( void * pBuf ) = 0;

	virtual const char *	GetFilename() = 0;
};

/////////////////////////////////////////////////////////////////////////////////////////


#endif