Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Purpose: PCIDSK I/O Interface declaration. The I/O interfaces for the 4 : * library can be overridden by an object implementing this class. 5 : * 6 : ****************************************************************************** 7 : * Copyright (c) 2009 8 : * PCI Geomatics, 90 Allstate Parkway, Markham, Ontario, Canada. 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : #ifndef INCLUDE_PCIDSK_IO_H 13 : #define INCLUDE_PCIDSK_IO_H 14 : 15 : #include "pcidsk_config.h" 16 : 17 : #include <string> 18 : 19 : namespace PCIDSK 20 : { 21 : /************************************************************************/ 22 : /* IOInterfaces */ 23 : /************************************************************************/ 24 : 25 : //! IO Interface class. 26 : 27 : class IOInterfaces 28 : { 29 : public: 30 14 : virtual ~IOInterfaces() {} 31 : virtual void *Open( const std::string& filename, std::string access ) const = 0; 32 : virtual uint64 Seek( void *io_handle, uint64 offset, int whence ) const = 0; 33 : virtual uint64 Tell( void *io_handle ) const = 0; 34 : virtual uint64 Read( void *buffer, uint64 size, uint64 nmemb, void *io_handle ) const = 0; 35 : virtual uint64 Write( const void *buffer, uint64 size, uint64 nmemb, void *io_handle ) const = 0; 36 : virtual int Eof( void *io_handle ) const = 0; 37 : virtual int Flush( void *io_handle ) const = 0; 38 : virtual int Close( void *io_handle ) const = 0; 39 : }; 40 : 41 : const IOInterfaces PCIDSK_DLL *GetDefaultIOInterfaces(); 42 : 43 : } // end namespace PCIDSK 44 : 45 : #endif // INCLUDE_PCIDSK_IO_H