Base class for things that can store data in buffers. Multiple Bufferables
may be put in the same buffer.
-A dirty flag is provided for derived classes. It should be set when the data
-in the buffer is considered out of date, and is cleared by Bufferable after
-uploading fresh data to the buffer.
+Derived classes should call mark_dirty() when the stored data has changed.
*/
class Bufferable: public NonCopyable
{
Bufferable *next_in_buffer = 0;
Bufferable *prev_in_buffer = 0;
mutable bool location_dirty = false;
-protected:
mutable bool dirty = false;
+protected:
Bufferable() = default;
Bufferable(Bufferable &&);
public:
changes. */
void update_offset();
+ /* Indicates that the data of the bufferable has changed and should be
+ uploaded to the buffer again. */
+ void mark_dirty();
+
public:
/** Returns the offset of the data from the beginning of the buffer. */
std::size_t get_offset() const { return offset; }