xref: /haiku/src/tools/restest/OffsetFile.h (revision 52a380120846174213ccce9c4aab0dda17c72083)
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