123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551 |
- namespace boost { namespace process { namespace detail {
- template<typename T> using is_streambuf = typename std::is_same<T, boost::asio::streambuf>::type;
- template<typename T> using is_const_buffer =
- std::integral_constant<bool,
- std::is_same< boost::asio::const_buffer, T>::value |
- std::is_base_of<boost::asio::const_buffer, T>::value
- >;
- template<typename T> using is_mutable_buffer =
- std::integral_constant<bool,
- std::is_same< boost::asio::mutable_buffer, T>::value |
- std::is_base_of<boost::asio::mutable_buffer, T>::value
- >;
- struct null_t {constexpr null_t() = default;};
- struct close_t;
- template<class>
- struct std_in_
- {
- constexpr std_in_() = default;
- api::close_in close() const {return api::close_in(); }
- api::close_in operator=(const close_t &) const {return api::close_in();}
- api::close_in operator<(const close_t &) const {return api::close_in();}
- api::null_in null() const {return api::null_in();}
- api::null_in operator=(const null_t &) const {return api::null_in();}
- api::null_in operator<(const null_t &) const {return api::null_in();}
- api::file_in operator=(const boost::filesystem::path &p) const {return p;}
- api::file_in operator=(const std::string & p) const {return p;}
- api::file_in operator=(const std::wstring &p) const {return p;}
- api::file_in operator=(const char * p) const {return p;}
- api::file_in operator=(const wchar_t * p) const {return p;}
- api::file_in operator<(const boost::filesystem::path &p) const {return p;}
- api::file_in operator<(const std::string &p) const {return p;}
- api::file_in operator<(const std::wstring &p) const {return p;}
- api::file_in operator<(const char*p) const {return p;}
- api::file_in operator<(const wchar_t * p) const {return p;}
- api::file_in operator=(FILE * f) const {return f;}
- api::file_in operator<(FILE * f) const {return f;}
- template<typename Char, typename Traits> api::pipe_in operator=(basic_pipe<Char, Traits> & p) const {return p;}
- template<typename Char, typename Traits> api::pipe_in operator<(basic_pipe<Char, Traits> & p) const {return p;}
- template<typename Char, typename Traits> api::pipe_in operator=(basic_opstream<Char, Traits> & p) const {return p.pipe();}
- template<typename Char, typename Traits> api::pipe_in operator<(basic_opstream<Char, Traits> & p) const {return p.pipe();}
- template<typename Char, typename Traits> api::pipe_in operator=(basic_pstream <Char, Traits> & p) const {return p.pipe();}
- template<typename Char, typename Traits> api::pipe_in operator<(basic_pstream <Char, Traits> & p) const {return p.pipe();}
- api::async_pipe_in operator=(async_pipe & p) const {return p;}
- api::async_pipe_in operator<(async_pipe & p) const {return p;}
- template<typename T, typename = typename std::enable_if<
- is_const_buffer<T>::value || is_mutable_buffer<T>::value
- >::type>
- api::async_in_buffer<const T> operator=(const T & buf) const {return buf;}
- template<typename T, typename = typename std::enable_if<is_streambuf<T>::value>::type >
- api::async_in_buffer<T> operator=(T & buf) const {return buf;}
- template<typename T, typename = typename std::enable_if<
- is_const_buffer<T>::value || is_mutable_buffer<T>::value
- >::type>
- api::async_in_buffer<const T> operator<(const T & buf) const {return buf;}
- template<typename T, typename = typename std::enable_if<is_streambuf<T>::value>::type >
- api::async_in_buffer<T> operator<(T & buf) const {return buf;}
- };
- template<int p1, int p2 = -1>
- struct std_out_
- {
- constexpr std_out_() = default;
- api::close_out<p1,p2> close() const {return api::close_out<p1,p2>(); }
- api::close_out<p1,p2> operator=(const close_t &) const {return api::close_out<p1,p2>();}
- api::close_out<p1,p2> operator>(const close_t &) const {return api::close_out<p1,p2>();}
- api::null_out<p1,p2> null() const {return api::null_out<p1,p2>();}
- api::null_out<p1,p2> operator=(const null_t &) const {return api::null_out<p1,p2>();}
- api::null_out<p1,p2> operator>(const null_t &) const {return api::null_out<p1,p2>();}
- api::file_out<p1,p2> operator=(const boost::filesystem::path &p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator=(const std::string &p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator=(const std::wstring &p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator=(const char * p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator=(const wchar_t * p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator>(const boost::filesystem::path &p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator>(const std::string &p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator>(const std::wstring &p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator>(const char * p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator>(const wchar_t * p) const {return api::file_out<p1,p2>(p);}
- api::file_out<p1,p2> operator=(FILE * f) const {return f;}
- api::file_out<p1,p2> operator>(FILE * f) const {return f;}
- template<typename Char, typename Traits> api::pipe_out<p1,p2> operator=(basic_pipe<Char, Traits> & p) const {return p;}
- template<typename Char, typename Traits> api::pipe_out<p1,p2> operator>(basic_pipe<Char, Traits> & p) const {return p;}
- template<typename Char, typename Traits> api::pipe_out<p1,p2> operator=(basic_ipstream<Char, Traits> & p) const {return p.pipe();}
- template<typename Char, typename Traits> api::pipe_out<p1,p2> operator>(basic_ipstream<Char, Traits> & p) const {return p.pipe();}
- template<typename Char, typename Traits> api::pipe_out<p1,p2> operator=(basic_pstream <Char, Traits> & p) const {return p.pipe();}
- template<typename Char, typename Traits> api::pipe_out<p1,p2> operator>(basic_pstream <Char, Traits> & p) const {return p.pipe();}
- api::async_pipe_out<p1, p2> operator=(async_pipe & p) const {return p;}
- api::async_pipe_out<p1, p2> operator>(async_pipe & p) const {return p;}
- api::async_out_buffer<p1, p2, const asio::mutable_buffer> operator=(const asio::mutable_buffer & buf) const {return buf;}
- api::async_out_buffer<p1, p2, const asio::mutable_buffers_1> operator=(const asio::mutable_buffers_1 & buf) const {return buf;}
- api::async_out_buffer<p1, p2, asio::streambuf> operator=(asio::streambuf & os) const {return os ;}
- api::async_out_buffer<p1, p2, const asio::mutable_buffer> operator>(const asio::mutable_buffer & buf) const {return buf;}
- api::async_out_buffer<p1, p2, const asio::mutable_buffers_1> operator>(const asio::mutable_buffers_1 & buf) const {return buf;}
- api::async_out_buffer<p1, p2, asio::streambuf> operator>(asio::streambuf & os) const {return os ;}
- api::async_out_future<p1,p2, std::string> operator=(std::future<std::string> & fut) const { return fut;}
- api::async_out_future<p1,p2, std::string> operator>(std::future<std::string> & fut) const { return fut;}
- api::async_out_future<p1,p2, std::vector<char>> operator=(std::future<std::vector<char>> & fut) const { return fut;}
- api::async_out_future<p1,p2, std::vector<char>> operator>(std::future<std::vector<char>> & fut) const { return fut;}
- template<int pin, typename = typename std::enable_if<
- (((p1 == 1) && (pin == 2)) ||
- ((p1 == 2) && (pin == 1)))
- && (p2 == -1)>::type>
- constexpr std_out_<1, 2> operator& (const std_out_<pin>&) const
- {
- return std_out_<1, 2> ();
- }
- };
- struct close_t
- {
- constexpr close_t() = default;
- template<int T, int U>
- api::close_out<T,U> operator()(std_out_<T,U>) {return api::close_out<T,U>();}
- };
- }
- constexpr boost::process::detail::close_t close;
- constexpr boost::process::detail::null_t null;
- constexpr boost::process::detail::std_in_<void> std_in;
- constexpr boost::process::detail::std_out_<1> std_out;
- constexpr boost::process::detail::std_out_<2> std_err;
- }}
|