11 template <
typename T>
static void trimquot(T
const **begin, T
const **end)
13 if (*begin + 1 < *end && (*begin)[0] ==
'"' && (*end)[-1] ==
'"') {
19 template <
typename T,
typename U>
static void joinpath_(T
const *left, T
const *right, U *vec)
24 T
const *leftend = left + std::char_traits<T>::length(left);
26 while (left < leftend && (leftend[-1] ==
'/' || leftend[-1] ==
'\\')) {
29 llen = leftend - left;
32 T
const *rightend = right + std::char_traits<T>::length(right);
34 while (right < rightend && (right[0] ==
'/' || right[0] ==
'\\')) {
37 rlen = rightend - right;
39 vec->resize(llen + 1 + rlen);
41 std::char_traits<T>::copy(&vec->at(0), left, llen);
45 std::char_traits<T>::copy(&vec->at(llen + 1), right, rlen);
49 static std::string
joinpath(
char const *left,
char const *right)
51 std::vector<char> vec;
53 return std::string(vec.begin(), vec.end());
56 static std::string
joinpath(std::string
const &left, std::string
const &right)
58 return joinpath(left.c_str(), right.c_str());
63 static inline std::string
joinpath(
char const *left,
char const *right)
68 static inline std::string
joinpath(std::string
const &left, std::string
const &right)
73 static inline std::string
operator / (std::string
const &left, std::string
const &right)
80 static inline QString qjoinpath(char16_t
const *left, char16_t
const *right)
82 std::vector<char16_t> vec;
84 if (vec.empty())
return QString();
85 return QString::fromUtf16(&vec[0], vec.size());
88 inline QString
joinpath(QString
const &left, QString
const &right)
90 return qjoinpath((char16_t
const *)left.utf16(), (char16_t
const *)right.utf16());
93 static inline QString
operator / (QString
const &left, QString
const &right)
static void joinpath_(T const *left, T const *right, U *vec)
Definition: joinpath.h:19
static std::string joinpath(std::string const &left, std::string const &right)
Definition: joinpath.h:56
static void trimquot(T const **begin, T const **end)
Definition: joinpath.h:11
static std::string joinpath(char const *left, char const *right)
Definition: joinpath.h:49
static std::string joinpath(char const *left, char const *right)
Definition: joinpath.h:63
static std::string operator/(std::string const &left, std::string const &right)
Definition: joinpath.h:73