diff options
Diffstat (limited to 'libbutl/url.ixx')
-rw-r--r-- | libbutl/url.ixx | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libbutl/url.ixx b/libbutl/url.ixx index 2feb347..7a6d86f 100644 --- a/libbutl/url.ixx +++ b/libbutl/url.ixx @@ -4,6 +4,28 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. { + // url_traits + // + template <typename H, typename S, typename P> + inline typename url_traits<H, S, P>::path_type url_traits<H, S, P>:: + translate_path (string_type&& path) + { + return path_type (basic_url<string_type>::decode (path)); + } + + template <typename H, typename S, typename P> + inline typename url_traits<H, S, P>::string_type url_traits<H, S, P>:: + translate_path (const path_type& path) + { + using url = basic_url<string_type>; + + return url::encode ( + string_type (path), + [] (typename url::char_type& c) {return !url::path_char (c);}); + } + + // basic_url + // template <typename S, typename T> inline basic_url<S, T>:: basic_url (scheme_type s, @@ -81,4 +103,18 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. std::move (f)) { } + + template <typename S, typename T> + inline basic_url<S, T>:: + basic_url (scheme_type s, + optional<path_type> p, + optional<string_type> q, + optional<string_type> f) + : scheme (std::move (s)), + path (std::move (p)), + query (std::move (q)), + fragment (std::move (f)), + rootless (true) + { + } } |