From 8db26a7350aad53ed73a127f9b8eb6ef15bf0be1 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Thu, 11 Apr 2024 23:49:22 +0200 Subject: Implement Status --- deimos/core/base.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'deimos/core/base.h') diff --git a/deimos/core/base.h b/deimos/core/base.h index 64d1ed9..1022ae8 100644 --- a/deimos/core/base.h +++ b/deimos/core/base.h @@ -104,5 +104,32 @@ inline Span AsBytes(Span span) return { reinterpret_cast(span.data()), span.size() * (int64_t)sizeof(T) }; } +class StringView +{ + const char* m_begin = nullptr; + int64_t m_size = 0; + +public: + constexpr StringView() = default; + + deimos_DEFAULT_COPY_MOVE(StringView); + ~StringView() = default; + + constexpr StringView(gsl::czstring str) : // NOLINT(*-explicit-conversions) + m_begin{str}, m_size{(int64_t)__builtin_strlen(str)} + {} + + constexpr StringView(const char* begin, int64_t size) : + m_begin{begin}, m_size{size} + {} + + constexpr const char* data() const { return m_begin; } + + constexpr int64_t size() const { return m_size; } +}; + +deimos_StaticAssert(std::is_trivially_destructible_v); +deimos_StaticAssert(std::is_trivially_copyable_v); + } // namespace deimos -- cgit