parent
dff2634325
commit
3c2aeca740
@ -1,15 +0,0 @@
|
|||||||
# HG changeset patch
|
|
||||||
# Parent d5fb760990e45ae0db4f4b7609d8affb85101a39
|
|
||||||
add missing link
|
|
||||||
|
|
||||||
diff -r d5fb760990e4 -r c08b02a02f23 include/mdds/flat_segment_tree_def.inl
|
|
||||||
--- a/include/mdds/flat_segment_tree_def.inl Thu Mar 24 14:52:10 2011 +0100
|
|
||||||
+++ b/include/mdds/flat_segment_tree_def.inl Thu Mar 24 14:53:14 2011 +0100
|
|
||||||
@@ -438,6 +438,7 @@
|
|
||||||
m_left_leaf->value_leaf.value = m_init_val;
|
|
||||||
new_node->left = m_left_leaf;
|
|
||||||
new_node->right = m_left_leaf->right;
|
|
||||||
+ m_left_leaf->right->left = new_node;
|
|
||||||
m_left_leaf->right = new_node;
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
|||||||
# HG changeset patch
|
|
||||||
# Parent 9b68208cb03bb3ece046c8b60a6a0777fea46d4a
|
|
||||||
fix typo in node::equals
|
|
||||||
|
|
||||||
diff -r 9b68208cb03b include/mdds/node.hpp
|
|
||||||
--- a/include/mdds/node.hpp Fri Feb 11 11:24:57 2011 -0500
|
|
||||||
+++ b/include/mdds/node.hpp Thu Mar 24 08:27:28 2011 +0100
|
|
||||||
@@ -154,9 +154,9 @@
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (is_leaf)
|
|
||||||
- return value_leaf == value_leaf;
|
|
||||||
+ return value_leaf == r.value_leaf;
|
|
||||||
else
|
|
||||||
- return value_nonleaf == value_nonleaf;
|
|
||||||
+ return value_nonleaf == r.value_nonleaf;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
# HG changeset patch
|
|
||||||
# Parent ff6ad274f8ecb1715d366ddb53ecafd422252660
|
|
||||||
do not insert new node if the whole range was shifted
|
|
||||||
|
|
||||||
diff -r ff6ad274f8ec include/mdds/flat_segment_tree_def.inl
|
|
||||||
--- a/include/mdds/flat_segment_tree_def.inl Thu Mar 24 14:54:16 2011 +0100
|
|
||||||
+++ b/include/mdds/flat_segment_tree_def.inl Thu Mar 24 14:55:26 2011 +0100
|
|
||||||
@@ -430,16 +430,25 @@
|
|
||||||
|
|
||||||
if (m_left_leaf->value_leaf.value != m_init_val)
|
|
||||||
{
|
|
||||||
- // The leftmost leaf node has a non-initial value. We need to
|
|
||||||
- // insert a new node to carry that value after the shift.
|
|
||||||
- node_ptr new_node(new node(true));
|
|
||||||
- new_node->value_leaf.key = pos + size;
|
|
||||||
- new_node->value_leaf.value = m_left_leaf->value_leaf.value;
|
|
||||||
- m_left_leaf->value_leaf.value = m_init_val;
|
|
||||||
- new_node->left = m_left_leaf;
|
|
||||||
- new_node->right = m_left_leaf->right;
|
|
||||||
- m_left_leaf->right->left = new_node;
|
|
||||||
- m_left_leaf->right = new_node;
|
|
||||||
+ if (size < m_right_leaf->value_leaf.key - m_left_leaf->value_leaf.key)
|
|
||||||
+ {
|
|
||||||
+ // The leftmost leaf node has a non-initial value. We need to
|
|
||||||
+ // insert a new node to carry that value after the shift.
|
|
||||||
+ node_ptr new_node(new node(true));
|
|
||||||
+ new_node->value_leaf.key = pos + size;
|
|
||||||
+ new_node->value_leaf.value = m_left_leaf->value_leaf.value;
|
|
||||||
+ m_left_leaf->value_leaf.value = m_init_val;
|
|
||||||
+ new_node->left = m_left_leaf;
|
|
||||||
+ new_node->right = m_left_leaf->right;
|
|
||||||
+ m_left_leaf->right->left = new_node;
|
|
||||||
+ m_left_leaf->right = new_node;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ // We shifted out the whole range, so there would be no new
|
|
||||||
+ // node inserted. Just set default value.
|
|
||||||
+ m_left_leaf->value_leaf.value = m_init_val;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
m_valid_tree = false;
|
|
Loading…
Reference in new issue