diff options
-rw-r--r-- | MODULE.bazel.lock | 12 | ||||
-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 |
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" + |