summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/coretmpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/util/coretmpl.h')
-rw-r--r--src/lib/util/coretmpl.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/lib/util/coretmpl.h b/src/lib/util/coretmpl.h
index 4b3b05bf274..6c8ac39b45c 100644
--- a/src/lib/util/coretmpl.h
+++ b/src/lib/util/coretmpl.h
@@ -885,6 +885,17 @@ public:
bool full() const { return !m_empty && (m_head == m_tail); }
bool empty() const { return m_empty; }
+ // number of currently enqueued elements
+ std::size_t queue_length() const
+ {
+ if (m_empty)
+ return 0;
+
+ auto const distance = std::distance(m_head, m_tail);
+
+ return (distance > 0) ? distance : (N + distance);
+ }
+
void enqueue(T const &v)
{
if (WriteWrap || m_empty || (m_head != m_tail))