Skip to content

Commit a593477

Browse files
committed
Adds move ctors/operators.
1 parent 30d07f6 commit a593477

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

include/interval-tree/interval_tree.hpp

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,9 @@ namespace lib_interval_tree
350350

351351
public:
352352
constexpr basic_interval_tree_iterator(basic_interval_tree_iterator const&) = default;
353+
constexpr basic_interval_tree_iterator(basic_interval_tree_iterator&& other) noexcept = default;
353354
basic_interval_tree_iterator& operator=(basic_interval_tree_iterator const&) = default;
355+
basic_interval_tree_iterator& operator=(basic_interval_tree_iterator&& other) noexcept = default;
354356

355357
bool operator!=(basic_interval_tree_iterator const& other) const
356358
{
@@ -412,6 +414,12 @@ namespace lib_interval_tree
412414
friend tree_type;
413415

414416
public:
417+
~const_interval_tree_iterator() = default;
418+
constexpr const_interval_tree_iterator(const_interval_tree_iterator const&) = default;
419+
constexpr const_interval_tree_iterator(const_interval_tree_iterator&&) noexcept = default;
420+
const_interval_tree_iterator& operator=(const_interval_tree_iterator const&) = default;
421+
const_interval_tree_iterator& operator=(const_interval_tree_iterator&&) noexcept = default;
422+
415423
const_interval_tree_iterator& operator++()
416424
{
417425
if (!node_)
@@ -524,6 +532,12 @@ namespace lib_interval_tree
524532
friend tree_type;
525533

526534
public:
535+
~interval_tree_iterator() = default;
536+
constexpr interval_tree_iterator(interval_tree_iterator const&) = default;
537+
constexpr interval_tree_iterator(interval_tree_iterator&&) noexcept = default;
538+
interval_tree_iterator& operator=(interval_tree_iterator const&) = default;
539+
interval_tree_iterator& operator=(interval_tree_iterator&&) noexcept = default;
540+
527541
interval_tree_iterator& operator++()
528542
{
529543
if (!node_)
@@ -637,6 +651,7 @@ namespace lib_interval_tree
637651
friend const_interval_tree_iterator <node_type>;
638652
friend interval_tree_iterator <node_type>;
639653

654+
public:
640655
interval_tree()
641656
: root_{nullptr}
642657
, size_{0}
@@ -655,20 +670,38 @@ namespace lib_interval_tree
655670
operator=(other);
656671
}
657672

658-
public:
673+
interval_tree(interval_tree&& other) noexcept
674+
: root_{other.root_}
675+
, size_{other.size_}
676+
{
677+
other.root_ = nullptr;
678+
other.size_ = 0;
679+
}
680+
659681
interval_tree& operator=(interval_tree const& other)
660682
{
661683
if (!empty())
662684
clear();
663685

664686
if (other.root_ != nullptr)
665-
root_ = copyTreeImpl(other.root_, nullptr);
687+
root_ = copy_tree_impl(other.root_, nullptr);
666688

667689
size_ = other.size_;
668690

669691
return *this;
670692
}
671693

694+
interval_tree& operator=(interval_tree&& other) noexcept
695+
{
696+
if (!empty())
697+
clear();
698+
699+
root_ = other.root_;
700+
size_ = other.size_;
701+
other.root_ = nullptr;
702+
other.size_ = 0;
703+
return *this;
704+
}
672705
/**
673706
* Removes all from this tree.
674707
*/

0 commit comments

Comments
 (0)