From 84062873e162bc4a7c799fb67f72dbd055eb15ca Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Wed, 1 May 2024 01:23:05 +0200 Subject: Some work on WSI --- deimos/core/base.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'deimos/core/base.h') diff --git a/deimos/core/base.h b/deimos/core/base.h index 70958a5..34a341f 100644 --- a/deimos/core/base.h +++ b/deimos/core/base.h @@ -104,6 +104,12 @@ public: deimos_DEFAULT_COPY_MOVE(Span); + template + constexpr Span(T (&data)[N]) : // NOLINT + m_begin{data}, + m_size{N} + {} + constexpr Span(T* begin, int64_t size) : m_begin{begin}, m_size{size} @@ -127,6 +133,7 @@ public: constexpr T* begin() const { return m_begin; } constexpr T* end() const { return m_begin + m_size; } // NOLINT constexpr int64_t size() const { return m_size; } + constexpr int64_t size_bytes() const { return m_size * (int64_t)sizeof(T); } constexpr bool empty() const { return m_size == 0; } constexpr T& operator[](int64_t i) const @@ -134,6 +141,13 @@ public: Expects(i >= 0 && i < m_size); return m_begin[i]; // NOLINT } + + constexpr Span subspan(int64_t offset, int64_t size) const + { + Expects(offset >= 0 && size >= 0); + Expects(offset + size <= m_size); + return Span(m_begin + offset, size); + } }; template @@ -163,6 +177,7 @@ public: constexpr const char* data() const { return m_begin; } constexpr int64_t size() const { return m_size; } + constexpr int64_t size_bytes() const { return m_size; } constexpr bool empty() const { return m_size == 0; } }; -- cgit