mirror of
https://github.com/ETLCPP/etl.git
synced 2026-10-28 18:07:10 +08:00
Refactor string initialise with external buffer
This commit is contained in:
parent
5a5579df7a
commit
6f3995a4e7
@ -274,26 +274,10 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Constructor.
|
||||
//*************************************************************************
|
||||
string(value_type* buffer, size_t buffer_size, bool use_buffer_contents = false)
|
||||
string(value_type* buffer, size_t buffer_size)
|
||||
: istring(buffer, buffer_size - 1U)
|
||||
{
|
||||
if (use_buffer_contents)
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->initialise();
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Constructor direct from buffer.
|
||||
//*************************************************************************
|
||||
string(value_type* buffer)
|
||||
: istring(buffer, etl::strlen(buffer))
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
this->initialise();
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -343,10 +327,18 @@ namespace etl
|
||||
/// Constructor, from null terminated text.
|
||||
///\param text The initial text of the string.
|
||||
//*************************************************************************
|
||||
ETL_EXPLICIT_STRING_FROM_CHAR string(const value_type* text, value_type* buffer, size_t buffer_size)
|
||||
string(const value_type* text, value_type* buffer, size_t buffer_size)
|
||||
: istring(buffer, buffer_size - 1U)
|
||||
{
|
||||
this->assign(text, text + etl::char_traits<value_type>::length(text));
|
||||
// Is the initial text at the same address as the buffer?
|
||||
if (text == buffer)
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->assign(text, text + etl::strlen(text));
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -260,26 +260,10 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Constructor.
|
||||
//*************************************************************************
|
||||
u16string(value_type* buffer, size_t buffer_size, bool use_buffer_contents = false)
|
||||
u16string(value_type* buffer, size_t buffer_size)
|
||||
: iu16string(buffer, buffer_size - 1U)
|
||||
{
|
||||
if (use_buffer_contents)
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->initialise();
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Constructor direct from buffer.
|
||||
//*************************************************************************
|
||||
u16string(value_type* buffer)
|
||||
: iu16string(buffer, etl::strlen(buffer))
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
this->initialise();
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -329,10 +313,18 @@ namespace etl
|
||||
/// Constructor, from null terminated text.
|
||||
///\param text The initial text of the u16string.
|
||||
//*************************************************************************
|
||||
ETL_EXPLICIT_STRING_FROM_CHAR u16string(const value_type* text, value_type* buffer, size_t buffer_size)
|
||||
u16string(const value_type* text, value_type* buffer, size_t buffer_size)
|
||||
: iu16string(buffer, buffer_size - 1U)
|
||||
{
|
||||
this->assign(text, text + etl::char_traits<value_type>::length(text));
|
||||
// Is the initial text at the same address as the buffer?
|
||||
if (text == buffer)
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->assign(text, text + etl::strlen(text));
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -260,26 +260,10 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Constructor.
|
||||
//*************************************************************************
|
||||
u32string(value_type* buffer, size_t buffer_size, bool use_buffer_contents = false)
|
||||
u32string(value_type* buffer, size_t buffer_size)
|
||||
: iu32string(buffer, buffer_size - 1U)
|
||||
{
|
||||
if (use_buffer_contents)
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->initialise();
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Constructor direct from buffer.
|
||||
//*************************************************************************
|
||||
u32string(value_type* buffer)
|
||||
: iu32string(buffer, etl::strlen(buffer))
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
this->initialise();
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -332,7 +316,15 @@ namespace etl
|
||||
ETL_EXPLICIT_STRING_FROM_CHAR u32string(const value_type* text, value_type* buffer, size_t buffer_size)
|
||||
: iu32string(buffer, buffer_size - 1U)
|
||||
{
|
||||
this->assign(text, text + etl::char_traits<value_type>::length(text));
|
||||
// Is the initial text at the same address as the buffer?
|
||||
if (text == buffer)
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->assign(text, text + etl::strlen(text));
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -261,26 +261,10 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Constructor.
|
||||
//*************************************************************************
|
||||
wstring(value_type* buffer, size_t buffer_size, bool use_buffer_contents = false)
|
||||
wstring(value_type* buffer, size_t buffer_size)
|
||||
: iwstring(buffer, buffer_size - 1U)
|
||||
{
|
||||
if (use_buffer_contents)
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->initialise();
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Constructor direct from buffer.
|
||||
//*************************************************************************
|
||||
wstring(value_type* buffer)
|
||||
: iwstring(buffer, etl::strlen(buffer))
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
this->initialise();
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -330,10 +314,18 @@ namespace etl
|
||||
/// Constructor, from null terminated text.
|
||||
///\param text The initial text of the wstring.
|
||||
//*************************************************************************
|
||||
ETL_EXPLICIT_STRING_FROM_CHAR wstring(const value_type* text, value_type* buffer, size_t buffer_size)
|
||||
wstring(const value_type* text, value_type* buffer, size_t buffer_size)
|
||||
: iwstring(buffer, buffer_size - 1U)
|
||||
{
|
||||
this->assign(text, text + etl::char_traits<value_type>::length(text));
|
||||
// Is the initial text at the same address as the buffer?
|
||||
if (text == buffer)
|
||||
{
|
||||
this->current_size = etl::strlen(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->assign(text, text + etl::strlen(text));
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -116,19 +116,6 @@ namespace
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_text)
|
||||
{
|
||||
Text text(p_text);
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(p_text));
|
||||
CHECK(!text.empty());
|
||||
CHECK_EQUAL(etl::strlen(p_text), text.capacity());
|
||||
CHECK_EQUAL(etl::strlen(p_text), text.max_size());
|
||||
CHECK(text.begin() != text.end());
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_and_size)
|
||||
{
|
||||
@ -146,7 +133,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_text_and_size)
|
||||
{
|
||||
Text text(p_text, etl::strlen(p_text) + 1, true);
|
||||
Text text(p_text, p_text, etl::strlen(p_text) + 1);
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(p_text));
|
||||
CHECK(!text.empty());
|
||||
@ -172,7 +159,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_array_buffer_text)
|
||||
{
|
||||
Text text(array_text, etl::size(array_text), true);
|
||||
Text text(array_text, array_text, etl::size(array_text));
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(array_text));
|
||||
CHECK(!text.empty());
|
||||
@ -257,16 +244,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_constructor_char_pointer_size)
|
||||
{
|
||||
Compare_Text compare_text(SIZE, STR('A'));
|
||||
Compare_Text compare_text(SIZE, STR('A'));
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(SIZE, STR('A'), buffer.data(), buffer.size());
|
||||
TextBuffer buffer;
|
||||
Text text(SIZE, STR('A'), buffer.data(), buffer.size());
|
||||
|
||||
CHECK(!text.empty());
|
||||
CHECK(!text.empty());
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
CHECK(!text.truncated());
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -287,16 +274,16 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_constructor_size_char)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str(), initial_text.size() / 2);
|
||||
Compare_Text compare_text(initial_text.c_str(), initial_text.size() / 2);
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), initial_text.size() / 2, buffer.data(), buffer.size());
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), initial_text.size() / 2, buffer.data(), buffer.size());
|
||||
|
||||
CHECK(!text.empty());
|
||||
CHECK(!text.empty());
|
||||
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
CHECK(!text.truncated());
|
||||
bool is_equal = Equal(compare_text, text);
|
||||
CHECK(is_equal);
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -116,19 +116,6 @@ namespace
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_text)
|
||||
{
|
||||
Text text(p_text);
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(p_text));
|
||||
CHECK(!text.empty());
|
||||
CHECK_EQUAL(etl::strlen(p_text), text.capacity());
|
||||
CHECK_EQUAL(etl::strlen(p_text), text.max_size());
|
||||
CHECK(text.begin() != text.end());
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_and_size)
|
||||
{
|
||||
@ -146,7 +133,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_text_and_size)
|
||||
{
|
||||
Text text(p_text, etl::strlen(p_text) + 1, true);
|
||||
Text text(p_text, p_text, etl::strlen(p_text) + 1);
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(p_text));
|
||||
CHECK(!text.empty());
|
||||
@ -172,7 +159,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_array_buffer_text)
|
||||
{
|
||||
Text text(array_text, etl::size(array_text), true);
|
||||
Text text(array_text, array_text, etl::size(array_text));
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(array_text));
|
||||
CHECK(!text.empty());
|
||||
|
||||
@ -116,19 +116,6 @@ namespace
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_text)
|
||||
{
|
||||
Text text(p_text);
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(p_text));
|
||||
CHECK(!text.empty());
|
||||
CHECK_EQUAL(etl::strlen(p_text), text.capacity());
|
||||
CHECK_EQUAL(etl::strlen(p_text), text.max_size());
|
||||
CHECK(text.begin() != text.end());
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_and_size)
|
||||
{
|
||||
@ -146,7 +133,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_text_and_size)
|
||||
{
|
||||
Text text(p_text, etl::strlen(p_text) + 1, true);
|
||||
Text text(p_text, p_text, etl::strlen(p_text) + 1);
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(p_text));
|
||||
CHECK(!text.empty());
|
||||
@ -172,7 +159,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_array_buffer_text)
|
||||
{
|
||||
Text text(array_text, etl::size(array_text), true);
|
||||
Text text(array_text, array_text, etl::size(array_text));
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(array_text));
|
||||
CHECK(!text.empty());
|
||||
|
||||
@ -116,19 +116,6 @@ namespace
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_text)
|
||||
{
|
||||
Text text(p_text);
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(p_text));
|
||||
CHECK(!text.empty());
|
||||
CHECK_EQUAL(etl::strlen(p_text), text.capacity());
|
||||
CHECK_EQUAL(etl::strlen(p_text), text.max_size());
|
||||
CHECK(text.begin() != text.end());
|
||||
CHECK(!text.truncated());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_and_size)
|
||||
{
|
||||
@ -146,7 +133,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_buffer_text_and_size)
|
||||
{
|
||||
Text text(p_text, etl::strlen(p_text) + 1, true);
|
||||
Text text(p_text, p_text, etl::strlen(p_text) + 1);
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(p_text));
|
||||
CHECK(!text.empty());
|
||||
@ -172,7 +159,7 @@ namespace
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_default_constructor_use_array_buffer_text)
|
||||
{
|
||||
Text text(array_text, etl::size(array_text), true);
|
||||
Text text(array_text, array_text, etl::size(array_text));
|
||||
|
||||
CHECK_EQUAL(text.size(), etl::strlen(array_text));
|
||||
CHECK(!text.empty());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user