Buffer::get_string() returns an EncodedString
This commit is contained in:
parent
7e7b0497a7
commit
13ca7afd0c
@ -471,3 +471,9 @@ void Buffer::clear()
|
|||||||
*iterator = b;
|
*iterator = b;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EncodedString Buffer::get_string()
|
||||||
|
{
|
||||||
|
m_gap_buffer->compact();
|
||||||
|
return EncodedString(m_gap_buffer->address(0u), m_gap_buffer->size(), m_encoding);
|
||||||
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include "ChangeOperation.h"
|
#include "ChangeOperation.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include "EncodedString.h"
|
||||||
|
|
||||||
class Buffer
|
class Buffer
|
||||||
{
|
{
|
||||||
@ -120,8 +121,7 @@ public:
|
|||||||
return iterator;
|
return iterator;
|
||||||
}
|
}
|
||||||
void clear();
|
void clear();
|
||||||
auto get_string() { return m_gap_buffer->get_string(); }
|
EncodedString get_string();
|
||||||
void set_string(const std::string & s) { m_gap_buffer->set_string(s); }
|
|
||||||
size_t size() const { return m_gap_buffer->size(); }
|
size_t size() const { return m_gap_buffer->size(); }
|
||||||
uint8_t * address(size_t offset) const { return m_gap_buffer->address(offset); }
|
uint8_t * address(size_t offset) const { return m_gap_buffer->address(offset); }
|
||||||
Encoding::Type encoding() const { return m_encoding; }
|
Encoding::Type encoding() const { return m_encoding; }
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include "Encoding.h"
|
#include "Encoding.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class EncodedString
|
class EncodedString
|
||||||
{
|
{
|
||||||
|
@ -56,6 +56,7 @@ void GapBuffer::clear()
|
|||||||
m_gap_position = 0u;
|
m_gap_position = 0u;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_TESTING
|
||||||
std::string GapBuffer::get_string()
|
std::string GapBuffer::get_string()
|
||||||
{
|
{
|
||||||
compact();
|
compact();
|
||||||
@ -67,6 +68,7 @@ void GapBuffer::set_string(const std::string & s)
|
|||||||
clear();
|
clear();
|
||||||
insert(0u, (const uint8_t *)s.c_str(), s.size());
|
insert(0u, (const uint8_t *)s.c_str(), s.size());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void GapBuffer::ensure_free(size_t length)
|
void GapBuffer::ensure_free(size_t length)
|
||||||
{
|
{
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#ifdef ENABLE_TESTING
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#endif
|
||||||
|
|
||||||
class GapBuffer
|
class GapBuffer
|
||||||
{
|
{
|
||||||
@ -61,19 +63,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the contents of the gap buffer as a string.
|
|
||||||
*
|
|
||||||
* This makes a copy of the entire buffer in a std::string. This method is
|
|
||||||
* intended for use by unit tests.
|
|
||||||
*/
|
|
||||||
std::string get_string();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace the buffer contents with a string.
|
|
||||||
*/
|
|
||||||
void set_string(const std::string & s);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the size of the data stored within the buffer.
|
* Get the size of the data stored within the buffer.
|
||||||
*/
|
*/
|
||||||
@ -123,6 +112,21 @@ public:
|
|||||||
*/
|
*/
|
||||||
void copy_to(size_t source_position, size_t length, GapBuffer & other, size_t destination_position);
|
void copy_to(size_t source_position, size_t length, GapBuffer & other, size_t destination_position);
|
||||||
|
|
||||||
|
#ifdef ENABLE_TESTING
|
||||||
|
/**
|
||||||
|
* Get the contents of the gap buffer as a string.
|
||||||
|
*
|
||||||
|
* This makes a copy of the entire buffer in a std::string. This method is
|
||||||
|
* intended for use by unit tests.
|
||||||
|
*/
|
||||||
|
std::string get_string();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace the buffer contents with a string.
|
||||||
|
*/
|
||||||
|
void set_string(const std::string & s);
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Address of the allocated memory buffer. */
|
/** Address of the allocated memory buffer. */
|
||||||
uint8_t * m_buffer;
|
uint8_t * m_buffer;
|
||||||
|
@ -323,7 +323,6 @@ void Window::handle_keyval(uint32_t keyval)
|
|||||||
{
|
{
|
||||||
if ((keyval == '\n') && (m_focused_buffer_pane == m_command_buffer_pane))
|
if ((keyval == '\n') && (m_focused_buffer_pane == m_command_buffer_pane))
|
||||||
{
|
{
|
||||||
std::string command = m_command_buffer->get_string();
|
|
||||||
m_command_buffer_pane->clear();
|
m_command_buffer_pane->clear();
|
||||||
m_command_buffer_screen_rows = 1;
|
m_command_buffer_screen_rows = 1;
|
||||||
change_focus(m_buffer_pane);
|
change_focus(m_buffer_pane);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user