ROSE 0.11.145.147
|
Base class for all buffers.
A buffer stores a sequence of elements somewhat like a vector, but imparts a read/write paradigm for accessing those elements.
#include <Sawyer/Buffer.h>
Public Types | |
typedef SharedPointer< Buffer > | Ptr |
Reference counting smart pointer. | |
typedef A | Address |
Key type for addressing data. | |
typedef T | Value |
Type of values stored in the buffer. | |
Public Member Functions | |
virtual Ptr | copy () const =0 |
Create a new copy of buffer data. | |
virtual Address | available (Address address) const =0 |
Distance to end of buffer. | |
virtual Address | size () const |
Size of buffer. | |
virtual void | resize (Address n)=0 |
Change the size of the buffer. | |
virtual void | sync () |
Synchronize buffer with persistent storage. | |
virtual Address | read (Value *buf, Address address, Address n) const =0 |
Reads data from a buffer. | |
virtual Address | write (const Value *buf, Address address, Address n)=0 |
Writes data to a buffer. | |
virtual const Value * | data () const =0 |
Data for the buffer. | |
const std::string & | name () const |
Property: Name. | |
void | name (const std::string &s) |
Property: Name. | |
bool | copyOnWrite () const |
Property: Copy on write. | |
void | copyOnWrite (bool b) |
Property: Copy on write. | |
Public Member Functions inherited from Sawyer::SharedObject | |
SharedObject () | |
Default constructor. | |
SharedObject (const SharedObject &) | |
Copy constructor. | |
virtual | ~SharedObject () |
Virtual destructor. | |
SharedObject & | operator= (const SharedObject &) |
Assignment. | |
Protected Member Functions | |
Buffer (const std::string &name="") | |
typedef SharedPointer<Buffer> Sawyer::Container::Buffer< A, T >::Ptr |
typedef A Sawyer::Container::Buffer< A, T >::Address |
typedef T Sawyer::Container::Buffer< A, T >::Value |
|
inlineexplicitprotected |
|
inlinevirtual |
|
pure virtual |
Create a new copy of buffer data.
Returns a new buffer containing the same data as the old buffer. Some buffer types cannot make an exact copy, in which case they should return an AllocatingBuffer that holds a snapshot of the source buffer's data as it existed at the time of this operation.
Implemented in Sawyer::Container::AllocatingBuffer< A, T >, Sawyer::Container::MappedBuffer< A, T >, Sawyer::Container::NullBuffer< A, T >, and Sawyer::Container::StaticBuffer< A, T >.
|
pure virtual |
Distance to end of buffer.
The distance in units of the Value type from the specified address (inclusive) to the last element of the buffer (inclusive). If the address is beyond the end of the buffer then a distance of zero is returned rather than a negative distance. Note that the return value will overflow to zero if the buffer spans the entire address space.
Implemented in Sawyer::Container::MappedBuffer< A, T >, Sawyer::Container::AllocatingBuffer< A, T >, Sawyer::Container::NullBuffer< A, T >, and Sawyer::Container::StaticBuffer< A, T >.
Referenced by Sawyer::Container::Buffer< A, T >::size().
|
inlinevirtual |
Size of buffer.
Returns the number of Value elements stored in the buffer. In other words, this is the first address beyond the end of the buffer. Note that the return value may overflow to zero if the buffer spans the entire address space.
Definition at line 93 of file Buffer.h.
References Sawyer::Container::Buffer< A, T >::available().
Referenced by Sawyer::Container::AllocatingBuffer< A, T >::copy(), Sawyer::Container::MappedBuffer< A, T >::copy(), Sawyer::Container::AllocatingBuffer< A, T >::instance(), Sawyer::Container::NullBuffer< A, T >::instance(), Sawyer::Container::StaticBuffer< A, T >::instance(), Sawyer::Container::StaticBuffer< A, T >::instance(), and Sawyer::Container::MappedBuffer< A, T >::resize().
|
pure virtual |
Change the size of the buffer.
Truncates the buffer to a smaller size, or extends the buffer as necessary to make its size n
values.
Implemented in Sawyer::Container::MappedBuffer< A, T >, Sawyer::Container::AllocatingBuffer< A, T >, Sawyer::Container::NullBuffer< A, T >, and Sawyer::Container::StaticBuffer< A, T >.
|
inlinevirtual |
|
inline |
|
inline |
|
pure virtual |
Reads data from a buffer.
Reads up to n
values from this buffer beginning at the specified address and copies them to the caller-supplied argument. Returns the number of values actually copied, which may be smaller than the number requested. The output buffer is not zero-padded for short reads. Also note that the return value may overflow to zero if the entire address space is read.
As a special case, if buf
is a null pointer, then no data is copied and the return value indicates the number of values that would have been copied had buf
been non-null.
Implemented in Sawyer::Container::AllocatingBuffer< A, T >, Sawyer::Container::MappedBuffer< A, T >, Sawyer::Container::NullBuffer< A, T >, and Sawyer::Container::StaticBuffer< A, T >.
|
pure virtual |
Writes data to a buffer.
Writes up to n
values from buf
into this buffer starting at the specified address. Returns the number of values actually written, which might be smaller than n
. The return value will be less than n
if an error occurs, but note that the return value may overflow to zero if the entire address space is written.
Implemented in Sawyer::Container::NullBuffer< A, T >, Sawyer::Container::AllocatingBuffer< A, T >, Sawyer::Container::MappedBuffer< A, T >, and Sawyer::Container::StaticBuffer< A, T >.
|
pure virtual |
Data for the buffer.
Returns a pointer for the buffer data. Those subclasses that don't support this method will return the null pointer.
Implemented in Sawyer::Container::AllocatingBuffer< A, T >, Sawyer::Container::MappedBuffer< A, T >, Sawyer::Container::NullBuffer< A, T >, and Sawyer::Container::StaticBuffer< A, T >.
|
inline |
|
inline |