57 lines
		
	
	
		
			933 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			933 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "persistent-data/data-structures/btree_damage_visitor.h"
 | 
						|
 | 
						|
using namespace persistent_data;
 | 
						|
 | 
						|
//----------------------------------------------------------------
 | 
						|
 | 
						|
damage_tracker::damage_tracker()
 | 
						|
	: damaged_(false),
 | 
						|
	  damage_begin_(0)
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
damage_tracker::bad_node()
 | 
						|
{
 | 
						|
	damaged_ = true;
 | 
						|
}
 | 
						|
 | 
						|
maybe_range64
 | 
						|
damage_tracker::good_internal(block_address begin)
 | 
						|
{
 | 
						|
	maybe_range64 r;
 | 
						|
 | 
						|
	if (damaged_) {
 | 
						|
		r = maybe_range64(range64(damage_begin_, begin));
 | 
						|
		damaged_ = false;
 | 
						|
	}
 | 
						|
 | 
						|
	damage_begin_ = begin;
 | 
						|
	return r;
 | 
						|
}
 | 
						|
 | 
						|
maybe_range64
 | 
						|
damage_tracker::good_leaf(uint64_t begin, uint64_t end)
 | 
						|
{
 | 
						|
	maybe_range64 r;
 | 
						|
 | 
						|
	if (damaged_) {
 | 
						|
		r = maybe_range64(range64(damage_begin_, begin));
 | 
						|
		damaged_ = false;
 | 
						|
	}
 | 
						|
 | 
						|
	damage_begin_ = end;
 | 
						|
	return r;
 | 
						|
}
 | 
						|
 | 
						|
maybe_range64
 | 
						|
damage_tracker::end()
 | 
						|
{
 | 
						|
	if (damaged_)
 | 
						|
		return maybe_range64(damage_begin_);
 | 
						|
	else
 | 
						|
		return maybe_range64();
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------
 |