1*52a38012Sejakowatz // OffsetFile.h 2*52a38012Sejakowatz 3*52a38012Sejakowatz #ifndef OFFSET_FILE_H 4*52a38012Sejakowatz #define OFFSET_FILE_H 5*52a38012Sejakowatz 6*52a38012Sejakowatz #include <DataIO.h> 7*52a38012Sejakowatz #include <File.h> 8*52a38012Sejakowatz 9*52a38012Sejakowatz class OffsetFile : public BPositionIO { 10*52a38012Sejakowatz public: 11*52a38012Sejakowatz OffsetFile(); 12*52a38012Sejakowatz OffsetFile(const BFile& file, off_t offset); 13*52a38012Sejakowatz virtual ~OffsetFile(); 14*52a38012Sejakowatz 15*52a38012Sejakowatz status_t SetTo(const BFile& file, off_t offset); 16*52a38012Sejakowatz void Unset(); 17*52a38012Sejakowatz status_t InitCheck() const; 18*52a38012Sejakowatz 19*52a38012Sejakowatz // ssize_t Read(void *buffer, size_t size); 20*52a38012Sejakowatz // ssize_t Write(const void *buffer, size_t size); 21*52a38012Sejakowatz ssize_t ReadAt(off_t pos, void *buffer, size_t size); 22*52a38012Sejakowatz ssize_t WriteAt(off_t pos, const void *buffer, 23*52a38012Sejakowatz size_t size); 24*52a38012Sejakowatz off_t Seek(off_t position, uint32 seekMode); 25*52a38012Sejakowatz off_t Position() const; 26*52a38012Sejakowatz status_t SetSize(off_t size); 27*52a38012Sejakowatz status_t GetSize(off_t* size); 28*52a38012Sejakowatz 29*52a38012Sejakowatz off_t GetOffset() const; 30*52a38012Sejakowatz 31*52a38012Sejakowatz private: 32*52a38012Sejakowatz BFile fFile; 33*52a38012Sejakowatz off_t fOffset; 34*52a38012Sejakowatz off_t fCurrentPosition; 35*52a38012Sejakowatz }; 36*52a38012Sejakowatz 37*52a38012Sejakowatz #endif // OFFSET_FILE_H 38