summaryrefslogtreecommitdiff
path: root/asl/string_view.hpp
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-11-05 18:35:23 +0100
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-12-20 15:35:58 +0100
commit261076b35fe684642da50d3b6208469cf972f269 (patch)
treed611a2c3a54fa0c573034c570f39a0302d553dde /asl/string_view.hpp
parentd0a08e9883907847342505c8c5cf459fb84b4aa5 (diff)
Start work on asl::string_view
Diffstat (limited to 'asl/string_view.hpp')
-rw-r--r--asl/string_view.hpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/asl/string_view.hpp b/asl/string_view.hpp
new file mode 100644
index 0000000..57934fa
--- /dev/null
+++ b/asl/string_view.hpp
@@ -0,0 +1,38 @@
+#pragma once
+
+#include "asl/integers.hpp"
+#include "asl/meta.hpp"
+
+namespace asl
+{
+
+class string_view
+{
+ const char* m_data{};
+ int64_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)
+ : 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;
+
+ constexpr string_view& operator=(const string_view&) = default;
+ constexpr string_view& operator=(string_view&&) = default;
+
+ ~string_view() = default;
+};
+
+} // namespace asl