#include <folly/lang/CString.h>
#include <algorithm>
#include <cstring>
#include <type_traits>
#include <folly/CppAttributes.h>
#include <folly/functional/Invoke.h>
namespace {
struct poison { … };
[[maybe_unused]] FOLLY_ERASE void memrchr(poison) noexcept { … }
}
namespace folly {
namespace detail {
void* memrchr_fallback(void* s, int c, std::size_t len) noexcept { … }
void const* memrchr_fallback(void const* s, int c, std::size_t len) noexcept { … }
namespace {
FOLLY_CREATE_QUAL_INVOKER(invoke_primary_memrchr_fn, ::memrchr);
FOLLY_CREATE_QUAL_INVOKER(invoke_fallback_memrchr_fn, memrchr_fallback);
invoke_memrchr_fn;
constexpr invoke_memrchr_fn invoke_memrchr{ … };
}
}
void* memrchr(void* s, int c, std::size_t len) noexcept { … }
void const* memrchr(void const* s, int c, std::size_t len) noexcept { … }
std::size_t strlcpy(
char* const dest, char const* const src, std::size_t const size) { … }
}