diff options
author | Marc Chevrier <marc.chevrier@gmail.com> | 2020-04-27 14:38:14 (GMT) |
---|---|---|
committer | Marc Chevrier <marc.chevrier@gmail.com> | 2020-04-30 07:53:27 (GMT) |
commit | 8d4a9ee398ef85b4f59a8e2b966d9675d7e53f44 (patch) | |
tree | 35263b1056fd1d8038d1ecc704579c5c599681e8 /Utilities/std | |
parent | 2291253c1ba2f2f5f8192ba283f8291b9b6ea24f (diff) | |
download | CMake-8d4a9ee398ef85b4f59a8e2b966d9675d7e53f44.zip CMake-8d4a9ee398ef85b4f59a8e2b966d9675d7e53f44.tar.gz CMake-8d4a9ee398ef85b4f59a8e2b966d9675d7e53f44.tar.bz2 |
Refactoring: rename "cm_static_string_view.hxx" as <cmext/string_view>
Diffstat (limited to 'Utilities/std')
-rw-r--r-- | Utilities/std/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Utilities/std/cmext/string_view | 42 |
2 files changed, 44 insertions, 1 deletions
diff --git a/Utilities/std/CMakeLists.txt b/Utilities/std/CMakeLists.txt index a72abb7..17a7aaa 100644 --- a/Utilities/std/CMakeLists.txt +++ b/Utilities/std/CMakeLists.txt @@ -9,6 +9,7 @@ set(SRCS cm/bits/string_view.cxx cm/optional cm/shared_mutex cm/string_view - cm/utility) + cm/utility + cmext/string_view) add_library(cmstd STATIC ${SRCS}) diff --git a/Utilities/std/cmext/string_view b/Utilities/std/cmext/string_view new file mode 100644 index 0000000..ad52b11 --- /dev/null +++ b/Utilities/std/cmext/string_view @@ -0,0 +1,42 @@ +// -*-c++-*- +// vim: set ft=cpp: + +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmext_string_view +#define cmext_string_view + +#include <cstddef> + +#include <cm/string_view> + +namespace cm { + +/** A string_view that only binds to static storage. + * + * This is used together with the `""_s` user-defined literal operator + * to construct a type-safe abstraction of a string_view that only views + * statically allocated strings. These strings are const and available + * for the entire lifetime of the program. + */ +class static_string_view : public string_view +{ + static_string_view(string_view v) + : string_view(v) + { + } + + friend static_string_view operator"" _s(const char* data, size_t size); +}; + +/** Create a static_string_view using `""_s` literal syntax. */ +inline static_string_view operator"" _s(const char* data, size_t size) +{ + return string_view(data, size); +} + +} // namespace cm + +using cm::operator"" _s; + +#endif |