From 4d15db01346a4c1e7b2c25b9c36f40a27783851e Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 6 Nov 2015 09:30:54 +0100 Subject: util/StringCompare: use StringView to simplify inline implementations --- src/util/StringCompare.cxx | 26 -------------------------- src/util/StringCompare.hxx | 19 ++++++++++++++----- 2 files changed, 14 insertions(+), 31 deletions(-) diff --git a/src/util/StringCompare.cxx b/src/util/StringCompare.cxx index fbd8e1d6d..5db53ef2f 100644 --- a/src/util/StringCompare.cxx +++ b/src/util/StringCompare.cxx @@ -28,17 +28,6 @@ */ #include "StringCompare.hxx" -#include "StringAPI.hxx" - -#include -#include - -bool -StringStartsWith(const char *haystack, const char *needle) -{ - const size_t length = StringLength(needle); - return StringIsEqual(haystack, needle, length); -} bool StringEndsWith(const char *haystack, const char *needle) @@ -51,21 +40,6 @@ StringEndsWith(const char *haystack, const char *needle) needle, needle_length) == 0; } -const char * -StringAfterPrefix(const char *string, const char *prefix) -{ -#if !CLANG_CHECK_VERSION(3,6) - /* disabled on clang due to -Wtautological-pointer-compare */ - assert(string != nullptr); - assert(prefix != nullptr); -#endif - - size_t prefix_length = strlen(prefix); - return StringIsEqual(string, prefix, prefix_length) - ? string + prefix_length - : nullptr; -} - const char * FindStringSuffix(const char *p, const char *suffix) { diff --git a/src/util/StringCompare.hxx b/src/util/StringCompare.hxx index a29892bc9..6d7b3474e 100644 --- a/src/util/StringCompare.hxx +++ b/src/util/StringCompare.hxx @@ -30,6 +30,7 @@ #ifndef STRING_COMPARE_HXX #define STRING_COMPARE_HXX +#include "StringView.hxx" #include "Compiler.h" #ifdef _UNICODE @@ -42,9 +43,12 @@ StringIsEmpty(const char *string) return *string == 0; } -gcc_pure -bool -StringStartsWith(const char *haystack, const char *needle); +gcc_pure gcc_nonnull_all +static inline bool +StringStartsWith(const char *haystack, StringView needle) +{ + return strncmp(haystack, needle.data, needle.size) == 0; +} gcc_pure bool @@ -56,8 +60,13 @@ StringEndsWith(const char *haystack, const char *needle); * nullptr. */ gcc_pure gcc_nonnull_all -const char * -StringAfterPrefix(const char *string, const char *prefix); +static inline const char * +StringAfterPrefix(const char *haystack, StringView needle) +{ + return StringStartsWith(haystack, needle) + ? haystack + needle.size + : nullptr; +} /** * Check if the given string ends with the specified suffix. If yes, -- cgit v1.2.3