diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-11-07 23:38:52 +0100 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-12-20 15:35:58 +0100 |
commit | ac47be51b79f4c3e49656870e135453eefe759ea (patch) | |
tree | 80b2ce06d827ad218e3e76593fc23a71b1d6655c /asl/string_view.hpp | |
parent | 261076b35fe684642da50d3b6208469cf972f269 (diff) |
Some more work on asl::string_view
Diffstat (limited to 'asl/string_view.hpp')
-rw-r--r-- | asl/string_view.hpp | 26 |
1 files changed, 19 insertions, 7 deletions
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<int64_t>(__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<isize_t>(len)); +} |