2 * Copyright 2005-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
9 #include <SupportDefs.h>
17 virtual ssize_t
Read(void* buffer
, size_t size
);
18 virtual ssize_t
Write(const void* buffer
, size_t size
);
20 virtual status_t
Flush();
22 status_t
ReadExactly(void* buffer
, size_t size
,
23 size_t* _bytesRead
= NULL
);
24 status_t
WriteExactly(const void* buffer
, size_t size
,
25 size_t* _bytesWritten
= NULL
);
28 BDataIO(const BDataIO
&);
29 BDataIO
& operator=(const BDataIO
&);
31 virtual void _ReservedDataIO2();
32 virtual void _ReservedDataIO3();
33 virtual void _ReservedDataIO4();
34 virtual void _ReservedDataIO5();
35 virtual void _ReservedDataIO6();
36 virtual void _ReservedDataIO7();
37 virtual void _ReservedDataIO8();
38 virtual void _ReservedDataIO9();
39 virtual void _ReservedDataIO10();
40 virtual void _ReservedDataIO11();
41 virtual void _ReservedDataIO12();
48 class BPositionIO
: public BDataIO
{
51 virtual ~BPositionIO();
53 // BDataIO interface (implemented via ReadAt/WriteAt)
54 virtual ssize_t
Read(void* buffer
, size_t size
);
55 virtual ssize_t
Write(const void* buffer
, size_t size
);
57 // BPositionIO interface
58 virtual ssize_t
ReadAt(off_t position
, void* buffer
,
60 virtual ssize_t
WriteAt(off_t position
, const void* buffer
,
63 status_t
ReadAtExactly(off_t position
, void* buffer
,
64 size_t size
, size_t* _bytesRead
= NULL
);
65 status_t
WriteAtExactly(off_t position
,
66 const void* buffer
, size_t size
,
67 size_t* _bytesWritten
= NULL
);
69 virtual off_t
Seek(off_t position
, uint32 seekMode
) = 0;
70 virtual off_t
Position() const = 0;
72 virtual status_t
SetSize(off_t size
);
73 virtual status_t
GetSize(off_t
* size
) const;
76 virtual void _ReservedPositionIO2();
77 virtual void _ReservedPositionIO3();
78 virtual void _ReservedPositionIO4();
79 virtual void _ReservedPositionIO5();
80 virtual void _ReservedPositionIO6();
81 virtual void _ReservedPositionIO7();
82 virtual void _ReservedPositionIO8();
83 virtual void _ReservedPositionIO9();
84 virtual void _ReservedPositionIO10();
85 virtual void _ReservedPositionIO11();
86 virtual void _ReservedPositionIO12();
93 class BMemoryIO
: public BPositionIO
{
95 BMemoryIO(void* data
, size_t length
);
96 BMemoryIO(const void* data
, size_t length
);
99 virtual ssize_t
ReadAt(off_t position
, void* buffer
,
101 virtual ssize_t
WriteAt(off_t position
, const void* buffer
,
104 virtual off_t
Seek(off_t position
, uint32 seekMode
);
105 virtual off_t
Position() const;
107 virtual status_t
SetSize(off_t size
);
110 BMemoryIO(const BMemoryIO
&);
111 BMemoryIO
& operator=(const BMemoryIO
&);
113 virtual void _ReservedMemoryIO1();
114 virtual void _ReservedMemoryIO2();
127 class BMallocIO
: public BPositionIO
{
130 virtual ~BMallocIO();
132 virtual ssize_t
ReadAt(off_t position
, void* buffer
,
134 virtual ssize_t
WriteAt(off_t position
, const void* buffer
,
137 virtual off_t
Seek(off_t position
, uint32 seekMode
);
138 virtual off_t
Position() const;
140 virtual status_t
SetSize(off_t size
);
142 // BMallocIO interface
143 void SetBlockSize(size_t blockSize
);
145 const void* Buffer() const;
146 size_t BufferLength() const;
149 BMallocIO(const BMallocIO
&);
150 BMallocIO
& operator=(const BMallocIO
&);
152 virtual void _ReservedMallocIO1();
153 virtual void _ReservedMallocIO2();