array/darray: add resize calls
This commit is contained in:
parent
c6912618a4
commit
81a7b83dfe
@ -65,13 +65,13 @@ namespace cruft {
|
||||
}
|
||||
}
|
||||
|
||||
ValueT& operator[] (std::size_t idx)& noexcept
|
||||
ValueT& operator[] (size_type idx)& noexcept
|
||||
{
|
||||
CHECK_LT (idx, m_size);
|
||||
return m_data.objects[idx];
|
||||
}
|
||||
|
||||
ValueT const& operator[] (std::size_t idx) const& noexcept
|
||||
ValueT const& operator[] (size_type idx) const& noexcept
|
||||
{
|
||||
CHECK_LT (idx, m_size);
|
||||
return m_data.objects[idx];
|
||||
@ -87,10 +87,40 @@ namespace cruft {
|
||||
decltype(auto) cbegin (void) const& { return begin (); }
|
||||
decltype(auto) cend (void) const& { return end (); }
|
||||
|
||||
std::size_t size (void) const noexcept { return m_size; }
|
||||
constexpr value_type* data (void)& noexcept
|
||||
{
|
||||
return m_data.objects + 0;
|
||||
}
|
||||
|
||||
constexpr value_type const* data (void) const& noexcept
|
||||
{
|
||||
return m_data.objects + 0;
|
||||
}
|
||||
|
||||
size_type size (void) const noexcept { return m_size; }
|
||||
constexpr auto capacity (void) const noexcept { return CapacityV; }
|
||||
constexpr auto remain (void) const noexcept { return capacity () - size (); }
|
||||
|
||||
constexpr void
|
||||
resize (size_type const count, value_type const &value)
|
||||
{
|
||||
if (count < m_size) {
|
||||
while (m_size > count) {
|
||||
--m_size;
|
||||
m_data.objects[m_size].~ValueT ();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (count > m_size) {
|
||||
for ( ; m_size < count; ++m_size)
|
||||
new (m_data.objects + m_size) ValueT (value);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
constexpr void resize (size_type count) { return resize (count, value_type {}); }
|
||||
|
||||
constexpr bool empty (void) const noexcept { return m_size == 0; }
|
||||
constexpr bool full (void) const noexcept { return m_size == CapacityV; }
|
||||
|
||||
@ -154,7 +184,7 @@ namespace cruft {
|
||||
ValueT objects[CapacityV];
|
||||
} m_data;
|
||||
|
||||
std::size_t m_size;
|
||||
size_type m_size;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user