lokinet/llarp/util/str.hpp
Jason Rhinelander e470a6d73e C++17 niceties
- class template argument deduction lets us write `std::unique_lock
  foo{mutex}` instead of `std::unique_lock<mutex_type> foo{mutex}` which
  makes the `unique_lock` and `shared_lock` functions unnecessary.

- Replace GNU-specific warn_unused_result attribute with C++17-standard
  [[nodiscard]]

- Remove pre-C++17 workaround code for fold expressions, void_t
2020-05-12 16:42:35 -03:00

58 lines
1.3 KiB
C++

#ifndef LLARP_STR_HPP
#define LLARP_STR_HPP
#include <string_view>
#include <sstream>
#include <vector>
namespace llarp
{
bool
StrEq(const char* s1, const char* s2);
bool
IsFalseValue(std::string_view str);
struct CaselessLessThan
{
bool
operator()(std::string_view lhs, std::string_view rhs) const;
};
bool
IsTrueValue(std::string_view str);
/// Trim leading and trailing (ascii) whitespace from the given string;
/// returns a std::string_view of the trimmed part of the string.
[[nodiscard]] std::string_view
TrimWhitespace(std::string_view str);
template <typename... T>
std::string
stringify(T&&... stuff)
{
std::ostringstream o;
(o << ... << std::forward<T>(stuff));
return o.str();
}
// Shortcut for explicitly casting a string_view to a string. Saves 8 characters compared to
// `std::string(view)`.
inline std::string
str(std::string_view s)
{
return std::string{s};
}
/// Split a string on a given delimiter
//
/// @param str is the string to split
/// @param delimiter is the character to split on
/// @return a vector of std::string_views with the split words, excluding the delimeter
std::vector<std::string_view>
split(std::string_view str, char delimiter);
} // namespace llarp
#endif