summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MODULE.bazel.lock12
-rw-r--r--asl/BUILD.bazel2
-rw-r--r--asl/string_view.hpp38
-rw-r--r--asl/tests/string_view_tests.cpp3
4 files changed, 49 insertions, 6 deletions
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
index d62a47c..21b358e 100644
--- a/MODULE.bazel.lock
+++ b/MODULE.bazel.lock
@@ -64,19 +64,19 @@
"@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": {
"general": {
"bzlTransitiveDigest": "PjIds3feoYE8SGbbIq2SFTZy3zmxeO2tQevJZNDo7iY=",
- "usagesDigest": "+hz7IHWN6A1oVJJWNDB6yZRG+RYhF76wAYItpAeIUIg=",
+ "usagesDigest": "aLmqbvowmHkkBPve05yyDNGN7oh7QE9kBADr3QIZTZs=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
"envVariables": {},
"generatedRepoSpecs": {
- "local_config_apple_cc_toolchains": {
+ "local_config_apple_cc": {
"bzlFile": "@@apple_support~//crosstool:setup.bzl",
- "ruleClassName": "_apple_cc_autoconf_toolchains",
+ "ruleClassName": "_apple_cc_autoconf",
"attributes": {}
},
- "local_config_apple_cc": {
+ "local_config_apple_cc_toolchains": {
"bzlFile": "@@apple_support~//crosstool:setup.bzl",
- "ruleClassName": "_apple_cc_autoconf",
+ "ruleClassName": "_apple_cc_autoconf_toolchains",
"attributes": {}
}
},
@@ -92,7 +92,7 @@
"@@platforms//host:extension.bzl%host_platform": {
"general": {
"bzlTransitiveDigest": "xelQcPZH8+tmuOHVjL9vDxMnnQNMlwj0SlvgoqBkm4U=",
- "usagesDigest": "pCYpDQmqMbmiiPI1p2Kd3VLm5T48rRAht5WdW0X2GlA=",
+ "usagesDigest": "meSzxn3DUCcYEhq4HQwExWkWtU4EjriRBQLsZN+Q0SU=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
"envVariables": {},
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"
+