def delete_at(self, pos): assert self.is_online, "Why do we need to delete from an unattached node?" with hidden_region_list(self.view, self.regkey_keys) as regions: del regions[pos] with hidden_region_list(self.view, self.regkey_values) as regions: del regions[pos] self.key_nodes.pop(pos).detach() self.value_nodes.pop(pos).detach()
def insert_at(self, pos, key_region, value_node, value_region): assert self.is_online, "Why do we need to insert into an unattached node?" self.key_nodes.insert(pos, JsKey(self)) self.value_nodes.insert(pos, value_node) value_node.attach_to(self) with hidden_region_list(self.view, self.regkey_keys) as regions: regions.insert(pos, key_region) with hidden_region_list(self.view, self.regkey_values) as regions: regions.insert(pos, value_region)
def replace_value_node_at(self, pos, new_node, new_reg): assert self.is_online old_node = self.value_nodes[pos] old_node.detach() new_node.attach_to(self) self.value_nodes[pos] = new_node with hidden_region_list(self.view, self.regkey_values) as regions: regions[pos] = new_reg
def replace_key_node_region_at(self, pos, region): with hidden_region_list(self.view, self.regkey_keys) as regions: regions[pos] = region