util/StringUtil: add StringAfterPrefix()
This commit is contained in:
parent
85f58eb082
commit
607c2c5ba2
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "StringUtil.hxx"
|
#include "StringUtil.hxx"
|
||||||
|
#include "StringAPI.hxx"
|
||||||
#include "CharUtil.hxx"
|
#include "CharUtil.hxx"
|
||||||
#include "ASCII.hxx"
|
#include "ASCII.hxx"
|
||||||
|
|
||||||
@ -44,6 +45,21 @@ StringEndsWith(const char *haystack, const char *needle)
|
|||||||
needle, needle_length) == 0;
|
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 *
|
const char *
|
||||||
FindStringSuffix(const char *p, const char *suffix)
|
FindStringSuffix(const char *p, const char *suffix)
|
||||||
{
|
{
|
||||||
|
@ -36,6 +36,15 @@ gcc_pure
|
|||||||
bool
|
bool
|
||||||
StringEndsWith(const char *haystack, const char *needle);
|
StringEndsWith(const char *haystack, const char *needle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the portion of the string after a prefix. If the string
|
||||||
|
* does not begin with the specified prefix, this function returns
|
||||||
|
* nullptr.
|
||||||
|
*/
|
||||||
|
gcc_pure gcc_nonnull_all
|
||||||
|
const char *
|
||||||
|
StringAfterPrefix(const char *string, const char *prefix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the given string ends with the specified suffix. If yes,
|
* Check if the given string ends with the specified suffix. If yes,
|
||||||
* returns the position of the suffix, and nullptr otherwise.
|
* returns the position of the suffix, and nullptr otherwise.
|
||||||
|
@ -42,6 +42,21 @@ StringEndsWith(const wchar_t *haystack, const wchar_t *needle)
|
|||||||
StringIsEqual(haystack + haystack_length - needle_length, needle);
|
StringIsEqual(haystack + haystack_length - needle_length, needle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const wchar_t *
|
||||||
|
StringAfterPrefix(const wchar_t *string, const wchar_t *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 = StringLength(prefix);
|
||||||
|
return StringIsEqual(string, prefix, prefix_length)
|
||||||
|
? string + prefix_length
|
||||||
|
: nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
const wchar_t *
|
const wchar_t *
|
||||||
FindStringSuffix(const wchar_t *p, const wchar_t *suffix)
|
FindStringSuffix(const wchar_t *p, const wchar_t *suffix)
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,15 @@ gcc_pure
|
|||||||
bool
|
bool
|
||||||
StringEndsWith(const wchar_t *haystack, const wchar_t *needle);
|
StringEndsWith(const wchar_t *haystack, const wchar_t *needle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the portion of the string after a prefix. If the string
|
||||||
|
* does not begin with the specified prefix, this function returns
|
||||||
|
* nullptr.
|
||||||
|
*/
|
||||||
|
gcc_nonnull_all
|
||||||
|
const wchar_t *
|
||||||
|
StringAfterPrefix(const wchar_t *string, const wchar_t *prefix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the given string ends with the specified suffix. If yes,
|
* Check if the given string ends with the specified suffix. If yes,
|
||||||
* returns the position of the suffix, and nullptr otherwise.
|
* returns the position of the suffix, and nullptr otherwise.
|
||||||
|
Loading…
Reference in New Issue
Block a user