8 #ifndef Sawyer_NullBuffer_H
9 #define Sawyer_NullBuffer_H
11 #include <Sawyer/Buffer.h>
12 #include <Sawyer/Sawyer.h>
14 #include <boost/serialization/access.hpp>
15 #include <boost/serialization/base_object.hpp>
16 #include <boost/serialization/nvp.hpp>
25 template<
class A,
class T>
36 friend class boost::serialization::access;
41 void serialize(S &s,
const unsigned ) {
42 s & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Super);
43 s & BOOST_SERIALIZATION_NVP(size_);
47 NullBuffer(): Super(
".NullBuffer"), size_(0) {}
48 explicit NullBuffer(Address
size): Super(
".NullBuffer"), size_(size) {}
63 return start < size_ ? size_ - start : 0;
70 Address
read(Value *buf, Address address, Address n)
const {
71 Address nread = std::min(
available(address), n);
73 for (Address i=0; i<n; ++i)
79 Address
write(
const Value *, Address , Address ) {
83 const Value*
data() const {
A Address
Type of addresses.
static Buffer< A, T >::Ptr instance(Address size)
Construct a new buffer.
void resize(Address newSize)
Change the size of the buffer.
Address available(Address start) const
Distance to end of buffer.
Address read(Value *buf, Address address, Address n) const
Reads data from a buffer.
Reference-counting intrusive smart pointer.
Address write(const Value *, Address, Address)
Writes data to a buffer.
Name space for the entire library.
Buffer< A, T > Super
Type of base class.
virtual Address size() const
Size of buffer.
SharedPointer< Buffer > Ptr
Reference counting smart pointer.
Base class for all buffers.
Buffer< A, T >::Ptr copy() const
Create a new copy of buffer data.
const Value * data() const
Data for the buffer.