summaryrefslogtreecommitdiff
path: root/asl/string_view.hpp
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-11-07 23:38:52 +0100
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-12-20 15:35:58 +0100
commitac47be51b79f4c3e49656870e135453eefe759ea (patch)
tree80b2ce06d827ad218e3e76593fc23a71b1d6655c /asl/string_view.hpp
parent261076b35fe684642da50d3b6208469cf972f269 (diff)
Some more work on asl::string_view
Diffstat (limited to 'asl/string_view.hpp')
-rw-r--r--asl/string_view.hpp26
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));
+}