diff --git a/parallel/stack.hpp b/parallel/stack.hpp index 0978f162..5f90644a 100644 --- a/parallel/stack.hpp +++ b/parallel/stack.hpp @@ -85,6 +85,20 @@ namespace cruft::parallel { return true; } + std::size_t capacity (void) const { return m_store.size (); } + std::size_t size (void) const { return m_cursor; } + bool empty (void) const { return m_cursor == 0; } + + + void clear (void) + { + std::lock_guard lk (m_lock); + for (auto &raw: store (contract::I_HAVE_LOCKED_THIS_STRUCTURE)) + raw.~ValueT (); + m_cursor = 0; + } + + // DO NOT make this enum easier to use. It's supposed to be annoying // so that people don't use it. enum class contract { I_HAVE_LOCKED_THIS_STRUCTURE };