add Text::to_s() for testing
This commit is contained in:
parent
fa7a46a2d4
commit
6ec2a1584d
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "jes/Ref.h"
|
#include "jes/Ref.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace jes
|
namespace jes
|
||||||
{
|
{
|
||||||
@ -16,13 +17,17 @@ namespace jes
|
|||||||
|
|
||||||
Character operator[](int index)
|
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:
|
protected:
|
||||||
|
void compact();
|
||||||
|
|
||||||
uint8_t * m_buffer;
|
uint8_t * m_buffer;
|
||||||
size_t m_size;
|
size_t m_size;
|
||||||
size_t m_insert_index;
|
size_t m_gap_index;
|
||||||
size_t m_gap_size;
|
size_t m_gap_size;
|
||||||
};
|
};
|
||||||
typedef Ref<Text> TextRef;
|
typedef Ref<Text> TextRef;
|
||||||
|
@ -7,7 +7,7 @@ namespace jes
|
|||||||
{
|
{
|
||||||
m_buffer = NULL;
|
m_buffer = NULL;
|
||||||
m_size = 0;
|
m_size = 0;
|
||||||
m_insert_index = 0;
|
m_gap_index = 0;
|
||||||
m_gap_size = 0;
|
m_gap_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15,8 +15,27 @@ namespace jes
|
|||||||
{
|
{
|
||||||
m_buffer = new uint8_t[size];
|
m_buffer = new uint8_t[size];
|
||||||
m_size = size;
|
m_size = size;
|
||||||
m_insert_index = size;
|
m_gap_index = size;
|
||||||
m_gap_size = 0;
|
m_gap_size = 0;
|
||||||
memcpy(m_buffer, &buf[0], size);
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user