From 261076b35fe684642da50d3b6208469cf972f269 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Tue, 5 Nov 2024 18:35:23 +0100 Subject: Start work on asl::string_view --- asl/string_view.hpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 asl/string_view.hpp (limited to 'asl/string_view.hpp') 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(__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 -- cgit