Change Buffer::erase_range() to take a Range argument
This commit is contained in:
parent
8a2bc444db
commit
32b272b75c
@ -212,15 +212,12 @@ void Buffer::erase_code_point(const Buffer::Iterator & position)
|
||||
}
|
||||
}
|
||||
|
||||
void Buffer::erase_range(const Buffer::Iterator & start,
|
||||
const Buffer::Iterator & end)
|
||||
void Buffer::erase_range(const Buffer::Range & range)
|
||||
{
|
||||
if (start.valid() && (start < end))
|
||||
if (range.valid() && (range.size() > 0u))
|
||||
{
|
||||
push_operation();
|
||||
size_t start_offset = start.offset();
|
||||
size_t end_offset = end.valid() ? end.offset() : m_gap_buffer->size();
|
||||
erase_data(start_offset, end_offset - start_offset, true);
|
||||
erase_data(range.start_offset(), range.size(), true);
|
||||
pop_operation();
|
||||
}
|
||||
}
|
||||
|
@ -173,8 +173,7 @@ public:
|
||||
bool insert_mode() const { return m_insert_mode; }
|
||||
void insert_code_point(const Buffer::Iterator & position, uint32_t code_point);
|
||||
void erase_code_point(const Buffer::Iterator & position);
|
||||
void erase_range(const Buffer::Iterator & start,
|
||||
const Buffer::Iterator & end);
|
||||
void erase_range(const Buffer::Range & range);
|
||||
std::shared_ptr<std::string> filename() const { return m_filename; }
|
||||
Iterator begin() const { return Iterator(this); }
|
||||
std::shared_ptr<Iterator> beginp() const { return std::make_shared<Iterator>(this); }
|
||||
|
@ -142,14 +142,18 @@ TEST(BufferTest, allows_erasing_ranges)
|
||||
it2->go_next_line();
|
||||
|
||||
/* Invalid tests. */
|
||||
b.erase_range(b.end(), b.end());
|
||||
b.erase_range(Buffer::Range(b.endp(), b.endp()));
|
||||
EXPECT_EQ(ss("abc\ndef\n"), b.get_string());
|
||||
b.erase_range(*it, b.begin());
|
||||
b.erase_range(Buffer::Range(it, b.beginp()));
|
||||
EXPECT_EQ(ss("abc\ndef\n"), b.get_string());
|
||||
|
||||
/* Zero-length test. */
|
||||
b.erase_range(Buffer::Range(it2, it2));
|
||||
EXPECT_EQ(ss("abc\ndef\n"), b.get_string());
|
||||
|
||||
EXPECT_EQ(C('a'), **it);
|
||||
EXPECT_EQ(C('d'), **it2);
|
||||
b.erase_range(*it, *it2);
|
||||
b.erase_range(Buffer::Range(it, it2));
|
||||
EXPECT_EQ(ss("def\n"), b.get_string());
|
||||
EXPECT_EQ(*it, *it2);
|
||||
EXPECT_EQ(C('d'), **it);
|
||||
@ -158,7 +162,7 @@ TEST(BufferTest, allows_erasing_ranges)
|
||||
it2->go_forward();
|
||||
}
|
||||
EXPECT_EQ(C('d'), **it);
|
||||
b.erase_range(*it, *it2);
|
||||
b.erase_range(Buffer::Range(it, it2));
|
||||
EXPECT_EQ(ss(""), b.get_string());
|
||||
EXPECT_FALSE(it->valid());
|
||||
EXPECT_FALSE(it2->valid());
|
||||
|
Loading…
x
Reference in New Issue
Block a user