// Causes any buffered data to be written to the file.
virtual void Flush( void ) {}
// Seek on a file.
virtual int Seek( long offset, fsOrigin_t origin ) { return( -1 ); }
// Go back to the beginning of the file.
virtual void Rewind( void );
// Like fprintf.
virtual int Printf( const char *fmt, ... ) id_attribute((format(printf,2,3)));
// Like fprintf but with argument pointer
virtual int VPrintf( const char *fmt, va_list arg );
// Write a string with high precision floating point numbers to the file.
virtual int WriteFloatString( const char *fmt, ... ) id_attribute((format(printf,2,3)));
// Endian portable alternatives to Read(...)
virtual int ReadInt( int &value );
virtual int ReadUnsignedInt( unsigned int &value );
virtual int ReadShort( short &value );
virtual int ReadUnsignedShort( unsigned short &value );
virtual int ReadChar( char &value );
virtual int ReadUnsignedChar( unsigned char &value );
virtual int ReadFloat( float &value );
virtual int ReadBool( bool &value );
virtual int ReadString( idStr &string );
virtual int ReadVec2( idVec2 &vec );
virtual int ReadVec3( idVec3 &vec );
virtual int ReadVec4( idVec4 &vec );
virtual int ReadVec5( idVec5 &vec );
virtual int ReadVec6( idVec6 &vec );
virtual int ReadMat3( idMat3 &mat );
// Endian portable alternatives to Write(...)
virtual int WriteInt( const int value );
virtual int WriteUnsignedInt( const unsigned int value );
virtual int WriteShort( const short value );
virtual int WriteUnsignedShort( unsigned short value );
virtual int WriteChar( const char value );
virtual int WriteUnsignedChar( const unsigned char value );
virtual int WriteFloat( const float value );
virtual int WriteBool( const bool value );
virtual int WriteString( const char *string );
virtual int WriteVec2( const idVec2 &vec );
virtual int WriteVec3( const idVec3 &vec );
virtual int WriteVec4( const idVec4 &vec );
virtual int WriteVec5( const idVec5 &vec );
virtual int WriteVec6( const idVec6 &vec );
virtual int WriteMat3( const idMat3 &mat );
// dluetscher: added method to write a structure array that is made up of numerics (floats, ints) from the given storage
virtual void WriteNumericStructArray( int numStructElements, int tokenSubTypeStructElements[], int arrayCount, byte *arrayStorage, const char *prepend );
virtual int Seek( long offset, fsOrigin_t origin );
// returns file pointer
FILE * GetFilePtr( void ) { return o; }
private:
idStr name; // relative path of the file - relative path
idStr fullPath; // full file path - OS path
int mode; // open mode
int fileSize; // size of the file
FILE * o; // file handle
bool handleSync; // true if written data is immediately flushed
};
class idFile_ASCII : public idFile_Permanent
{
int inside;
public:
idFile_ASCII( void );
virtual int Read( void *buffer, int len );
// Write data from the buffer to the file.
virtual int Write( const void *buffer, int len );
// Endian portable alternatives to Read(...)
virtual int ReadInt( int &value );
virtual int ReadUnsignedInt( unsigned int &value );
virtual int ReadShort( short &value );
virtual int ReadUnsignedShort( unsigned short &value );
virtual int ReadChar( char &value );
virtual int ReadUnsignedChar( unsigned char &value );
virtual int ReadFloat( float &value );
virtual int ReadBool( bool &value );
virtual int ReadString( idStr &string );
virtual int ReadVec2( idVec2 &vec );
virtual int ReadVec3( idVec3 &vec );
virtual int ReadVec4( idVec4 &vec );
virtual int ReadVec5( idVec5 &vec );
virtual int ReadVec6( idVec6 &vec );
virtual int ReadMat3( idMat3 &mat );
// Endian portable alternatives to Write(...)
virtual int WriteInt( const int value );
virtual int WriteUnsignedInt( const unsigned int value );
virtual int WriteShort( const short value );
virtual int WriteUnsignedShort( unsigned short value );
virtual int WriteChar( const char value );
virtual int WriteUnsignedChar( const unsigned char value );
virtual int WriteFloat( const float value );
virtual int WriteBool( const bool value );
virtual int WriteString( const char *string );
virtual int WriteVec2( const idVec2 &vec );
virtual int WriteVec3( const idVec3 &vec );
virtual int WriteVec4( const idVec4 &vec );
virtual int WriteVec5( const idVec5 &vec );
virtual int WriteVec6( const idVec6 &vec );
virtual int WriteMat3( const idMat3 &mat );
// dluetscher: added method to write a structure array that is made up of numerics (floats, ints) from the given storage
virtual void WriteNumericStructArray( int numStructElements, int tokenSubTypeStructElements[], int arrayCount, byte *arrayStorage, const char *prepend );