summaryrefslogtreecommitdiff
path: root/deimos/core/base.h
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-05-01 01:23:05 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-05-01 01:23:05 +0200
commit84062873e162bc4a7c799fb67f72dbd055eb15ca (patch)
tree9b9aa3aa7dbc923a01d28e50a804d68c37a5d839 /deimos/core/base.h
parent89ae6838075f3579a85d7824d49a051b90c8ed92 (diff)
Some work on WSI
Diffstat (limited to 'deimos/core/base.h')
-rw-r--r--deimos/core/base.h15
1 files changed, 15 insertions, 0 deletions
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<int64_t N>
+ 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<typename T>
@@ -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; }
};