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.
68 lines
1.6 KiB
68 lines
1.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
/***************************************************************************** |
|
SOUND_IO.CPP |
|
|
|
IO class for RIFF |
|
*****************************************************************************/ |
|
#include "../toollib/toollib.h" |
|
#include "tier2/riff.h" |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Implements Audio IO on the engine's COMMON filesystem |
|
//----------------------------------------------------------------------------- |
|
class COM_IOReadBinary : public IFileReadBinary |
|
{ |
|
public: |
|
int open( const char *pFileName ); |
|
int read( void *pOutput, int size, int file ); |
|
void seek( int file, int pos ); |
|
unsigned int tell( int file ); |
|
unsigned int size( int file ); |
|
void close( int file ); |
|
}; |
|
|
|
|
|
int COM_IOReadBinary::open( const char *pFileName ) |
|
{ |
|
int hFile = -1; |
|
|
|
_sopen_s( &hFile, pFileName, _O_RDONLY|_O_BINARY, _SH_DENYWR, _S_IREAD ); |
|
|
|
return hFile; |
|
} |
|
|
|
int COM_IOReadBinary::read( void *pOutput, int size, int file ) |
|
{ |
|
return _read( file, pOutput, size ); |
|
} |
|
|
|
void COM_IOReadBinary::seek( int file, int pos ) |
|
{ |
|
_lseek( file, pos, SEEK_SET ); |
|
} |
|
|
|
unsigned int COM_IOReadBinary::tell( int file ) |
|
{ |
|
return _lseek( file, 0, SEEK_CUR ); |
|
} |
|
|
|
unsigned int COM_IOReadBinary::size( int file ) |
|
{ |
|
long pos; |
|
long length; |
|
|
|
pos = _lseek( file, 0, SEEK_CUR ); |
|
length = _lseek( file, 0, SEEK_END ); |
|
_lseek( file, pos, SEEK_SET ); |
|
|
|
return length; |
|
} |
|
|
|
void COM_IOReadBinary::close( int file ) |
|
{ |
|
_close( file ); |
|
} |
|
|
|
static COM_IOReadBinary io; |
|
IFileReadBinary *g_pSndIO = &io; |
|
|
|
|