From ac47be51b79f4c3e49656870e135453eefe759ea Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Thu, 7 Nov 2024 23:38:52 +0100 Subject: Some more work on asl::string_view --- asl/string_view.hpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'asl/string_view.hpp') diff --git a/asl/string_view.hpp b/asl/string_view.hpp index 57934fa..9045eda 100644 --- a/asl/string_view.hpp +++ b/asl/string_view.hpp @@ -6,26 +6,23 @@ namespace asl { +// @Todo Replace all the __builtin_strlen + class string_view { const char* m_data{}; - int64_t m_size{}; + isize_t m_size{}; public: constexpr string_view() = default; constexpr string_view(nullptr_t) : string_view() {} // NOLINT(*-explicit-conversions) - constexpr string_view(const char* data, int64_t size) + constexpr string_view(const char* data, isize_t size) : m_data{data} , m_size{size} {} - constexpr string_view(const char* data) // NOLINT(*-explicit-conversions) - : m_data{data} - , m_size{static_cast(__builtin_strlen(data))} - {} - constexpr string_view(const string_view&) = default; constexpr string_view(string_view&&) = default; @@ -33,6 +30,21 @@ public: constexpr string_view& operator=(string_view&&) = default; ~string_view() = default; + + constexpr isize_t size() const { return m_size; } + + constexpr bool is_empty() const { return m_size == 0; } + + constexpr const char* data() const { return m_data; } + + constexpr const char* begin() const { return m_data; } + + constexpr const char* end() const { return m_data + m_size; } // NOLINT(*-pointer-arithmetic) }; } // namespace asl + +constexpr asl::string_view operator ""_sv(const char* s, size_t len) +{ + return asl::string_view(s, static_cast(len)); +} -- cgit