/
usr
/
include
/
boost
/
process
/
detail
/
traits
/
/usr/include/boost/process/detail/traits
mkdir
upload
Name
Size
Mode
Actions
async.hpp
726
0644
edit
dl
rm
cmd_or_exe.hpp
3615
0644
edit
dl
rm
decl.hpp
1994
0644
edit
dl
rm
env.hpp
1553
0644
edit
dl
rm
error.hpp
600
0644
edit
dl
rm
group.hpp
687
0644
edit
dl
rm
wchar_t.hpp
7483
0644
edit
dl
rm
Edit:
/usr/include/boost/process/detail/traits/wchar_t.hpp
(7483B)
// Copyright (c) 2016 Klemens D. Morgenstern // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PROCESS_DETAIL_TRAITS_WCHAR_T_HPP_ #define BOOST_PROCESS_DETAIL_TRAITS_WCHAR_T_HPP_ #include <boost/process/detail/traits/decl.hpp> #include <boost/process/detail/traits/cmd_or_exe.hpp> #include <boost/process/detail/traits/env.hpp> #include <boost/process/locale.hpp> namespace boost { namespace process { namespace detail { //template template<typename T> struct is_wchar_t : std::false_type {}; template<> struct is_wchar_t<boost::filesystem::path> : std::is_same<typename boost::filesystem::path::value_type, wchar_t> { }; template<> struct is_wchar_t<const wchar_t* > : std::true_type {}; template<> struct is_wchar_t<wchar_t* > : std::true_type {}; template<std::size_t Size> struct is_wchar_t<const wchar_t [Size]> : std::true_type {}; template<std::size_t Size> struct is_wchar_t<const wchar_t (&)[Size]> : std::true_type {}; template<> struct is_wchar_t<std::wstring> : std::true_type {}; template<> struct is_wchar_t<std::vector<std::wstring>> : std::true_type {}; template<> struct is_wchar_t<std::initializer_list<std::wstring>> : std::true_type {}; template<> struct is_wchar_t<std::vector<wchar_t *>> : std::true_type {}; template<> struct is_wchar_t<std::initializer_list<wchar_t *>> : std::true_type {}; template<typename Char, typename T> struct char_converter { static T& conv(T & in) { return in; } static T&& conv(T&& in) { return std::move(in); } static const T& conv(const T & in) { return in; } }; template<typename Char, typename T> using char_converter_t = char_converter<Char, typename std::remove_cv<typename std::remove_reference<T>::type>::type>; template<> struct char_converter<char, const wchar_t*> { static std::string conv(const wchar_t* in) { std::size_t size = 0; while (in[size] != L'\0') size++; return ::boost::process::detail::convert(in, in + size); } }; template<> struct char_converter<char, wchar_t*> { static std::string conv(wchar_t* in) { std::size_t size = 0; while (in[size] != L'\0') size++; return ::boost::process::detail::convert(in, in + size); } }; template<std::size_t Size> struct char_converter<char, wchar_t[Size]> { static std::string conv(const wchar_t(&in)[Size]) { return ::boost::process::detail::convert(in, in + Size -1); } }; template<> struct char_converter<wchar_t, const char*> { static std::wstring conv(const char* in) { std::size_t size = 0; while (in[size] != '\0') size++; return ::boost::process::detail::convert(in, in + size); } }; template<> struct char_converter<wchar_t, char*> { static std::wstring conv(char* in) { std::size_t size = 0; while (in[size] != '\0') size++; return ::boost::process::detail::convert(in, in + size); } }; template<std::size_t Size> struct char_converter<wchar_t, char[Size]> { static std::wstring conv(const char(&in)[Size]) { return ::boost::process::detail::convert(in, in + Size -1); } }; //all the containers. template<> struct char_converter<wchar_t, std::string> { static std::wstring conv(const std::string & in) { return ::boost::process::detail::convert(in); } }; template<> struct char_converter<char, std::wstring> { static std::string conv(const std::wstring & in) { return ::boost::process::detail::convert(in); } }; template<> struct char_converter<wchar_t, std::vector<std::string>> { static std::vector<std::wstring> conv(const std::vector<std::string> & in) { std::vector<std::wstring> ret(in.size()); std::transform(in.begin(), in.end(), ret.begin(), [](const std::string & st) { return convert(st); }); return ret; } }; template<> struct char_converter<wchar_t, std::initializer_list<std::string>> { static std::vector<std::wstring> conv(const std::initializer_list<std::string> & in) { std::vector<std::wstring> ret(in.size()); std::transform(in.begin(), in.end(), ret.begin(), [](const std::string & st) { return convert(st); }); return ret; } }; template<> struct char_converter<wchar_t, std::vector<char* >> { static std::vector<std::wstring> conv(const std::vector<char* > & in) { std::vector<std::wstring> ret(in.size()); std::transform(in.begin(), in.end(), ret.begin(), [](const char* st) { std::size_t sz = 0; while (st[sz] != '\0') sz++; return convert(st, st + sz); }); return ret; } }; template<> struct char_converter<wchar_t, std::initializer_list<char *>> { static std::vector<std::wstring> conv(const std::initializer_list<char * > & in) { std::vector<std::wstring> ret(in.size()); std::transform(in.begin(), in.end(), ret.begin(), [](const char* st) { std::size_t sz = 0; while (st[sz] != '\0') sz++; return convert(st, st + sz); }); return ret; } }; template<> struct char_converter<char, std::vector<std::wstring>> { static std::vector<std::string> conv(const std::vector<std::wstring> & in) { std::vector<std::string> ret(in.size()); std::transform(in.begin(), in.end(), ret.begin(), [](const std::wstring & st) { return convert(st); }); return ret; } }; template<> struct char_converter<char, std::initializer_list<std::wstring>> { static std::vector<std::string> conv(const std::initializer_list<std::wstring> & in) { std::vector<std::string> ret(in.size()); std::transform(in.begin(), in.end(), ret.begin(), [](const std::wstring & st) { return convert(st); }); return ret; } }; template<> struct char_converter<char, std::vector<wchar_t* >> { static std::vector<std::string> conv(const std::vector<wchar_t* > & in) { std::vector<std::string> ret(in.size()); std::transform(in.begin(), in.end(), ret.begin(), [](const wchar_t* st) { std::size_t sz = 0; while (st[sz] != L'\0') sz++; return convert(st, st + sz); }); return ret; } }; template<> struct char_converter<char, std::initializer_list<wchar_t * >> { static std::vector<std::string> conv(const std::initializer_list<wchar_t *> & in) { std::vector<std::string> ret(in.size()); std::transform(in.begin(), in.end(), ret.begin(), [](const wchar_t* st) { std::size_t sz = 0; while (st[sz] != L'\0') sz++; return convert(st, st + sz); }); return ret; } }; }}} #endif /* BOOST_PROCESS_DETAIL_TRAITS_WCHAR_T_HPP_ */
Save
cmd:
run