//===========================================================================// // File: filestrm.hpp // // Project: MUNGA Brick: Resource Manager // // Contents: Implementation Details of resource management // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // //---------------------------------------------------------------------------// // Copyright (C) 1996, Virtual World Entertainment, Inc. // // PROPRIETARY AND CONFIDENTIAL // //===========================================================================// #if !defined(FILESTRM_HPP) # define FILESTRM_HPP # if !defined(MEMSTRM_HPP) # include # endif //########################################################################## //######################## FileStream ################################ //########################################################################## class FileStream: public MemoryStream { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Constructors // public: FileStream( const char* file_name = NULL, Logical writable = False ); ~FileStream() {Close();} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Status functions // public: void* GetPointer() const { Fail("No implementation possible for FileStream::GetPointer()"); return NULL; } void SetPointer(void *new_pointer) {Fail("No implementation possible for FileStream::SetPointer(void*)");} void SetPointer(size_t index); MemoryStream& AdvancePointer(size_t count); MemoryStream& RewindPointer(size_t count); MemoryStream& ReadBytes( void *ptr, size_t number_of_bytes ); MemoryStream& WriteBytes( const void *ptr, size_t number_of_bytes ); void Open( const char* file_name = NULL, Logical writable = False ); void Close(); Logical IsFileOpened() {return fileHandle != -1;} Logical TestInstance() const; protected: int fileHandle; Logical readOnly; static int OpenImplementation( const char* file_name, Logical read_only ); static void CloseImplementation(int file_handle); static size_t SeekImplementation( int file_handle, size_t where, Logical from_end = False ); static size_t ReadImplementation( int file_handle, void *buffer, size_t length ); static size_t WriteImplementation( int file_handle, const void* buffer, size_t length ); }; #endif