15#include <initializer_list>
23namespace rex::string {
25constexpr char32_t kUTF8PathSeparator =
static_cast<char32_t>(rex::platform::kPathSeparator);
26constexpr char32_t kUTF8GuestPathSeparator = U
'\\';
35REX_API std::string_view utf8_strip_leading_slashes(
const std::string_view path);
44 const std::string_view right_path,
45 char32_t separator = kUTF8PathSeparator);
48 char32_t separator = kUTF8PathSeparator);
51 char32_t separator = kUTF8PathSeparator);
53inline std::string
utf8_join_paths(std::initializer_list<const std::string_view> paths,
54 char32_t separator = kUTF8PathSeparator) {
56 for (
auto path : paths) {
62inline std::string utf8_join_guest_paths(
const std::string_view left_path,
63 const std::string_view right_path) {
64 return utf8_join_paths(left_path, right_path, kUTF8GuestPathSeparator);
67inline std::string utf8_join_guest_paths(
const std::vector<std::string>& paths) {
71inline std::string utf8_join_guest_paths(
const std::vector<std::string_view>& paths) {
75inline std::string utf8_join_guest_paths(std::initializer_list<const std::string_view> paths) {
81 char32_t new_separator = kUTF8PathSeparator);
88 char32_t separator = kUTF8PathSeparator);
90inline std::string utf8_find_name_from_guest_path(
const std::string_view path) {
99 char32_t separator = kUTF8PathSeparator);
101inline std::string utf8_find_base_name_from_guest_path(
const std::string_view path) {
110 char32_t separator = kUTF8PathSeparator);
112inline std::string utf8_find_base_guest_path(
const std::string_view path) {
122 char32_t separator = kUTF8PathSeparator);
127inline std::string utf8_canonicalize_guest_path(
const std::string_view path) {
std::string utf8_canonicalize_path(const std::string_view path, char32_t separator=kUTF8PathSeparator)
std::vector< std::string_view > utf8_split_path(const std::string_view path)
std::string utf8_join_paths(const std::string_view left_path, const std::string_view right_path, char32_t separator=kUTF8PathSeparator)
std::string utf8_find_base_name_from_path(const std::string_view path, char32_t separator=kUTF8PathSeparator)
std::string utf8_find_name_from_path(const std::string_view path, char32_t separator=kUTF8PathSeparator)
std::string utf8_fix_path_separators(const std::string_view path, char32_t new_separator=kUTF8PathSeparator)
std::string NormalizeGuestPath(std::string_view path)
std::string utf8_find_base_path(const std::string_view path, char32_t separator=kUTF8PathSeparator)
Integer types, byte order wrappers and size literals.