Simple helper to check if a buffer is all zeros.
Signed-off-by: Sage Weil <sage@inktank.com>
return 0;
}
+ bool buffer::ptr::is_zero() const
+ {
+ const char *data = c_str();
+ for (size_t p = 0; p < _len; p++) {
+ if (data[p] != 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+
void buffer::ptr::append(char c)
{
assert(_raw);
return true;
}
+ bool buffer::list::is_zero() const {
+ for (std::list<ptr>::const_iterator it = _buffers.begin();
+ it != _buffers.end();
+ it++) {
+ if (!it->is_zero()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
void buffer::list::zero()
{
for (std::list<ptr>::iterator it = _buffers.begin();
unsigned wasted();
int cmp(const ptr& o);
+ bool is_zero() const;
// modifiers
void set_offset(unsigned o) { _off = o; }
bool is_page_aligned() const;
bool is_n_page_sized() const;
+ bool is_zero() const;
+
// modifiers
void clear() {
_buffers.clear();