#573 more comfortable circular_buffer_ext construction

This commit is contained in:
John Wellbelove 2022-07-28 15:55:38 +01:00
parent ec98d64697
commit 1fa2116bd1
2 changed files with 45 additions and 2 deletions

View File

@ -1037,8 +1037,6 @@ namespace etl
}
}
pointer pbuffer;
private:
@ -1201,6 +1199,15 @@ namespace etl
{
}
//*************************************************************************
/// Constructor.
/// Null buffer.
//*************************************************************************
circular_buffer_ext(size_t max_size)
: icircular_buffer<T>(ETL_NULLPTR, max_size)
{
}
//*************************************************************************
/// Constructor.
/// Constructs a buffer from an iterator range.
@ -1308,6 +1315,22 @@ namespace etl
#endif
}
//*************************************************************************
/// set_buffer
//*************************************************************************
void set_buffer(void* buffer)
{
this->pbuffer = reinterpret_cast<T*>(buffer);
}
//*************************************************************************
/// set_buffer
//*************************************************************************
bool is_valid() const
{
return this->pbuffer != ETL_NULLPTR;
}
//*************************************************************************
/// Destructor.
//*************************************************************************

View File

@ -66,6 +66,7 @@ namespace
{
Data data(buffer1.raw, SIZE);
CHECK(data.is_valid());
CHECK_EQUAL(0U, data.size());
CHECK_EQUAL(SIZE, data.max_size());
CHECK_EQUAL(SIZE, data.capacity());
@ -76,6 +77,25 @@ namespace
CHECK(data.crbegin() == data.crend());
}
//*************************************************************************
TEST(test_set_buffer_after_default_constructor)
{
Data data(SIZE);
CHECK(!data.is_valid());
data.set_buffer(buffer1.raw);
CHECK(data.is_valid());
CHECK_EQUAL(0U, data.size());
CHECK_EQUAL(SIZE, data.max_size());
CHECK_EQUAL(SIZE, data.capacity());
CHECK_EQUAL(SIZE, data.available());
CHECK(data.begin() == data.end());
CHECK(data.cbegin() == data.cend());
CHECK(data.rbegin() == data.rend());
CHECK(data.crbegin() == data.crend());
}
#if ETL_USING_STL
//*************************************************************************
TEST(test_constructor_from_literal)