diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-11-05 18:35:23 +0100 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-12-20 15:35:58 +0100 |
commit | 261076b35fe684642da50d3b6208469cf972f269 (patch) | |
tree | d611a2c3a54fa0c573034c570f39a0302d553dde /asl | |
parent | d0a08e9883907847342505c8c5cf459fb84b4aa5 (diff) |
Start work on asl::string_view
Diffstat (limited to 'asl')
-rw-r--r-- | asl/BUILD.bazel | 2 | ||||
-rw-r--r-- | asl/string_view.hpp | 38 | ||||
-rw-r--r-- | asl/tests/string_view_tests.cpp | 3 |
3 files changed, 43 insertions, 0 deletions
diff --git a/asl/BUILD.bazel b/asl/BUILD.bazel index d8810dd..0841a86 100644 --- a/asl/BUILD.bazel +++ b/asl/BUILD.bazel @@ -15,6 +15,7 @@ cc_library( "option.hpp",
"print.hpp",
"span.hpp",
+ "string_view.hpp",
"utility.hpp",
],
srcs = [
@@ -42,5 +43,6 @@ cc_library( "meta",
"option",
"span",
+ "string_view",
"utility",
]]
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 diff --git a/asl/tests/string_view_tests.cpp b/asl/tests/string_view_tests.cpp new file mode 100644 index 0000000..f3cc752 --- /dev/null +++ b/asl/tests/string_view_tests.cpp @@ -0,0 +1,3 @@ +#include "asl/string_view.hpp" +#include "asl/testing/testing.hpp" + |