42 lines
881 B
C++
42 lines
881 B
C++
#include "Text.h"
|
|
#include <string.h>
|
|
|
|
namespace jes
|
|
{
|
|
Text::Text()
|
|
{
|
|
m_buffer = NULL;
|
|
m_size = 0;
|
|
m_gap_index = 0;
|
|
m_gap_size = 0;
|
|
}
|
|
|
|
Text::Text(const uint8_t buf[], size_t size)
|
|
{
|
|
m_buffer = new uint8_t[size];
|
|
m_size = 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;
|
|
}
|
|
}
|
|
}
|