diff --git a/src/core/GapBuffer.cc b/src/core/GapBuffer.cc index 01f5e75..8dc29fc 100644 --- a/src/core/GapBuffer.cc +++ b/src/core/GapBuffer.cc @@ -91,3 +91,25 @@ void GapBuffer::move_gap(size_t position) m_gap_position = position; } } + +void GapBuffer::copy_to(size_t source_position, size_t length, GapBuffer & other, size_t destination_position) +{ + if ((source_position < m_size) && + (length > 0u) && + ((source_position + length) <= m_size)) + { + if ((m_gap_position <= source_position) || + (m_gap_position >= (source_position + length))) + { + /* The gap is before or after the range of data to copy. */ + other.insert(destination_position, address(source_position), length); + } + else + { + /* The gap is in the middle of the range of data to copy. */ + size_t pre_gap_size = m_gap_position - source_position; + other.insert(destination_position, address(source_position), pre_gap_size); + other.insert(destination_position + pre_gap_size, address(source_position + pre_gap_size), length - pre_gap_size); + } + } +} diff --git a/src/core/GapBuffer.h b/src/core/GapBuffer.h index 4d9e4cd..3429dbd 100644 --- a/src/core/GapBuffer.h +++ b/src/core/GapBuffer.h @@ -111,27 +111,7 @@ public: * @param destination_position * Position in the destination GapBuffer to copy the data to. */ - void copy_to(size_t source_position, size_t length, GapBuffer & other, size_t destination_position) - { - if ((source_position < m_size) && - (length > 0u) && - ((source_position + length) <= m_size)) - { - if ((m_gap_position <= source_position) || - (m_gap_position >= (source_position + length))) - { - /* The gap is before or after the range of data to copy. */ - other.insert(destination_position, address(source_position), length); - } - else - { - /* The gap is in the middle of the range of data to copy. */ - size_t pre_gap_size = m_gap_position - source_position; - other.insert(destination_position, address(source_position), pre_gap_size); - other.insert(destination_position + pre_gap_size, address(source_position + pre_gap_size), length - pre_gap_size); - } - } - } + void copy_to(size_t source_position, size_t length, GapBuffer & other, size_t destination_position); protected: /** Address of the allocated memory buffer. */