diff options
author | Kyle Edwards <kyle.edwards@kitware.com> | 2020-09-03 15:50:25 (GMT) |
---|---|---|
committer | Kyle Edwards <kyle.edwards@kitware.com> | 2020-09-08 14:15:54 (GMT) |
commit | 0c9cdf30ed91fb4705efed578f90af3226d8fe9f (patch) | |
tree | 48bed865afbe34bcd23374cb88e0c17c18a3c467 | |
parent | 412cc37d357fbbaf5b67e54585dbdd1fbc0a6ae2 (diff) | |
download | CMake-0c9cdf30ed91fb4705efed578f90af3226d8fe9f.zip CMake-0c9cdf30ed91fb4705efed578f90af3226d8fe9f.tar.gz CMake-0c9cdf30ed91fb4705efed578f90af3226d8fe9f.tar.bz2 |
cmStringAlgorithms: Add cmStrLen()
-rw-r--r-- | Source/cmStringAlgorithms.h | 7 | ||||
-rw-r--r-- | Tests/CMakeLib/testStringAlgorithms.cxx | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/Source/cmStringAlgorithms.h b/Source/cmStringAlgorithms.h index 6508069..81667db 100644 --- a/Source/cmStringAlgorithms.h +++ b/Source/cmStringAlgorithms.h @@ -33,6 +33,13 @@ inline bool cmNonempty(std::string const* str) return str && !str->empty(); } +/** Returns length of a literal string. */ +template <size_t N> +constexpr size_t cmStrLen(const char (&/*str*/)[N]) +{ + return N - 1; +} + /** Callable string comparison struct. */ struct cmStrCmp { diff --git a/Tests/CMakeLib/testStringAlgorithms.cxx b/Tests/CMakeLib/testStringAlgorithms.cxx index 63826cf..c2706c1 100644 --- a/Tests/CMakeLib/testStringAlgorithms.cxx +++ b/Tests/CMakeLib/testStringAlgorithms.cxx @@ -226,5 +226,15 @@ int testStringAlgorithms(int /*unused*/, char* /*unused*/ []) "cmStrToULong rejects trailing content."); } + // ---------------------------------------------------------------------- + // Test cmStrLen + { + constexpr auto len = cmStrLen("Hello world!"); + assert_ok(len == 12, + "cmStrLen returns length of non-empty literal string"); + assert_ok(cmStrLen("") == 0, + "cmStrLen returns length of empty literal string"); + } + return failed; } |