add Text::to_s() for testing

This commit is contained in:
Josh Holtrop 2014-06-05 20:01:15 -04:00
parent fa7a46a2d4
commit 6ec2a1584d
2 changed files with 28 additions and 4 deletions

View File

@ -3,6 +3,7 @@
#include <stdint.h>
#include "jes/Ref.h"
#include <string>
namespace jes
{
@ -16,13 +17,17 @@ namespace jes
Character operator[](int index)
{
return (Character)(m_buffer[index < m_insert_index ? index : index + m_gap_size]);
return (Character)(m_buffer[index < m_gap_index ? index : index + m_gap_size]);
}
std::string to_s();
protected:
void compact();
uint8_t * m_buffer;
size_t m_size;
size_t m_insert_index;
size_t m_gap_index;
size_t m_gap_size;
};
typedef Ref<Text> TextRef;

View File

@ -7,7 +7,7 @@ namespace jes
{
m_buffer = NULL;
m_size = 0;
m_insert_index = 0;
m_gap_index = 0;
m_gap_size = 0;
}
@ -15,8 +15,27 @@ namespace jes
{
m_buffer = new uint8_t[size];
m_size = size;
m_insert_index = size;
m_gap_index = size;
m_gap_size = 0;
memcpy(m_buffer, &buf[0], size);
}
std::string Text::to_s()
{
if (m_buffer == NULL)
{
return "";
}
compact();
return std::string((const char *)m_buffer, m_size - m_gap_size);
}
void Text::compact()
{
if ((m_gap_index < m_size - m_gap_size) && (m_gap_size > 0))
{
memmove(&m_buffer[m_gap_index], &m_buffer[m_gap_index + m_gap_size], m_size - m_gap_index);
m_gap_index = m_size - m_gap_size;
}
}
}