diff options
author | Brad King <brad.king@kitware.com> | 2020-05-01 12:26:45 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-05-01 12:27:37 (GMT) |
commit | 68a59ab2887f220a22c194b930c28d5498a7fd8d (patch) | |
tree | e68f59c90929e65b70e75c43d45ff2b87c777d9a /Utilities | |
parent | d1d1d4134dc2f6b84aba7b3cfe3bc83364859603 (diff) | |
parent | 8d4a9ee398ef85b4f59a8e2b966d9675d7e53f44 (diff) | |
download | CMake-68a59ab2887f220a22c194b930c28d5498a7fd8d.zip CMake-68a59ab2887f220a22c194b930c28d5498a7fd8d.tar.gz CMake-68a59ab2887f220a22c194b930c28d5498a7fd8d.tar.bz2 |
Merge topic 'stl-support'
8d4a9ee398 Refactoring: rename "cm_static_string_view.hxx" as <cmext/string_view>
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4689
Diffstat (limited to 'Utilities')
-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 |