123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- // Copyright (c) 2006, 2007 Julio M. Merino Vidal
- // Copyright (c) 2008 Ilya Sokolov, Boris Schaeling
- // Copyright (c) 2009 Boris Schaeling
- // Copyright (c) 2010 Felipe Tanus, Boris Schaeling
- // Copyright (c) 2011, 2012 Jeff Flinn, Boris Schaeling
- // 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_ARGS_HPP
- #define BOOST_PROCESS_ARGS_HPP
- #include <boost/process/v1/detail/basic_cmd.hpp>
- #include <iterator>
- namespace boost { namespace process { BOOST_PROCESS_V1_INLINE namespace v1 { namespace detail {
- struct args_
- {
- template<typename T>
- using remove_reference_t = typename std::remove_reference<T>::type;
- template<typename T>
- using value_type = typename remove_reference_t<T>::value_type;
- template<typename T>
- using vvalue_type = value_type<value_type<T>>;
- template <class Range>
- arg_setter_<vvalue_type<Range>, true> operator()(Range &&range) const
- {
- return arg_setter_<vvalue_type<Range>, true>(std::forward<Range>(range));
- }
- template <class Range>
- arg_setter_<vvalue_type<Range>, true> operator+=(Range &&range) const
- {
- return arg_setter_<vvalue_type<Range>, true>(std::forward<Range>(range));
- }
- template <class Range>
- arg_setter_<vvalue_type<Range>, false> operator= (Range &&range) const
- {
- return arg_setter_<vvalue_type<Range>, false>(std::forward<Range>(range));
- }
- template<typename Char>
- arg_setter_<Char, true> operator()(std::basic_string<Char> && str) const
- {
- return arg_setter_<Char, true> (str);
- }
- template<typename Char>
- arg_setter_<Char, true> operator+=(std::basic_string<Char> && str) const
- {
- return arg_setter_<Char, true> (str);
- }
- template<typename Char>
- arg_setter_<Char, false> operator= (std::basic_string<Char> && str) const
- {
- return arg_setter_<Char, false>(str);
- }
- template<typename Char>
- arg_setter_<Char, true> operator()(const std::basic_string<Char> & str) const
- {
- return arg_setter_<Char, true> (str);
- }
- template<typename Char>
- arg_setter_<Char, true> operator+=(const std::basic_string<Char> & str) const
- {
- return arg_setter_<Char, true> (str);
- }
- template<typename Char>
- arg_setter_<Char, false> operator= (const std::basic_string<Char> & str) const
- {
- return arg_setter_<Char, false>(str);
- }
- template<typename Char>
- arg_setter_<Char, true> operator()(std::basic_string<Char> & str) const
- {
- return arg_setter_<Char, true> (str);
- }
- template<typename Char>
- arg_setter_<Char, true> operator+=(std::basic_string<Char> & str) const
- {
- return arg_setter_<Char, true> (str);
- }
- template<typename Char>
- arg_setter_<Char, false> operator= (std::basic_string<Char> & str) const
- {
- return arg_setter_<Char, false>(str);
- }
- template<typename Char>
- arg_setter_<Char, true> operator()(const Char* str) const
- {
- return arg_setter_<Char, true> (str);
- }
- template<typename Char>
- arg_setter_<Char, true> operator+=(const Char* str) const
- {
- return arg_setter_<Char, true> (str);
- }
- template<typename Char>
- arg_setter_<Char, false> operator= (const Char* str) const
- {
- return arg_setter_<Char, false>(str);
- }
- // template<typename Char, std::size_t Size>
- // arg_setter_<Char, true> operator()(const Char (&str) [Size]) const
- // {
- // return arg_setter_<Char, true> (str);
- // }
- // template<typename Char, std::size_t Size>
- // arg_setter_<Char, true> operator+=(const Char (&str) [Size]) const
- // {
- // return arg_setter_<Char, true> (str);
- // }
- // template<typename Char, std::size_t Size>
- // arg_setter_<Char, false> operator= (const Char (&str) [Size]) const
- // {
- // return arg_setter_<Char, false>(str);
- // }
- arg_setter_<char, true> operator()(std::initializer_list<const char*> &&range) const
- {
- return arg_setter_<char, true>(range.begin(), range.end());
- }
- arg_setter_<char, true> operator+=(std::initializer_list<const char*> &&range) const
- {
- return arg_setter_<char, true>(range.begin(), range.end());
- }
- arg_setter_<char, false> operator= (std::initializer_list<const char*> &&range) const
- {
- return arg_setter_<char, false>(range.begin(), range.end());
- }
- arg_setter_<char, true> operator()(std::initializer_list<std::string> &&range) const
- {
- return arg_setter_<char, true>(range.begin(), range.end());
- }
- arg_setter_<char, true> operator+=(std::initializer_list<std::string> &&range) const
- {
- return arg_setter_<char, true>(range.begin(), range.end());
- }
- arg_setter_<char, false> operator= (std::initializer_list<std::string> &&range) const
- {
- return arg_setter_<char, false>(range.begin(), range.end());
- }
- arg_setter_<wchar_t, true> operator()(std::initializer_list<const wchar_t*> &&range) const
- {
- return arg_setter_<wchar_t, true>(range.begin(), range.end());
- }
- arg_setter_<wchar_t, true> operator+=(std::initializer_list<const wchar_t*> &&range) const
- {
- return arg_setter_<wchar_t, true>(range.begin(), range.end());
- }
- arg_setter_<wchar_t, false> operator= (std::initializer_list<const wchar_t*> &&range) const
- {
- return arg_setter_<wchar_t, false>(range.begin(), range.end());
- }
- arg_setter_<wchar_t, true> operator()(std::initializer_list<std::wstring> &&range) const
- {
- return arg_setter_<wchar_t, true>(range.begin(), range.end());
- }
- arg_setter_<wchar_t, true> operator+=(std::initializer_list<std::wstring> &&range) const
- {
- return arg_setter_<wchar_t, true>(range.begin(), range.end());
- }
- arg_setter_<wchar_t, false> operator= (std::initializer_list<std::wstring> &&range) const
- {
- return arg_setter_<wchar_t, false>(range.begin(), range.end());
- }
- };
- }
- constexpr boost::process::v1::detail::args_ args{};
- ///Alias for \xmlonly <globalname alt="boost::process::v1::args">args</globalname> \endxmlonly .
- constexpr boost::process::v1::detail::args_ argv{};
- }}}
- #endif
|