// file : bbot/utility -*- C++ -*- // copyright : Copyright (c) 2014-2017 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef BBOT_UTILITY #define BBOT_UTILITY #include // make_shared() #include // to_string(), stoull() #include // move(), forward(), declval(), make_pair() #include // assert() #include // make_move_iterator() #include #include #include // casecmp(), reverse_iterate(), etc #include #include #include namespace bbot { using std::move; using std::forward; using std::declval; using std::make_pair; using std::make_shared; using std::make_move_iterator; using std::to_string; using std::stoull; // // using butl::casecmp; using butl::reverse_iterate; using butl::exception_guard; using butl::make_exception_guard; // Process execution. // class tracer; template void run (tracer&, I&& in, O&& out, E&& err, P&&, A&&...); template butl::process_exit::code_type run_exit (tracer&, I&& in, O&& out, E&& err, P&&, A&&...); template inline void run (tracer& t, P&& p, A&&... a) { run (t, butl::fdnull (), 2, 2, forward

(p), forward (a)...); } template inline butl::process_exit::code_type run_exit (tracer& t, P&& p, A&&... a) { return run (t, butl::fdnull (), 2, 2, forward

(p), forward (a)...); } // Manifest parsing and serialization. // template T parse_manifest (const path&, const char* what, bool ignore_unknown = true); template void serialize_manifest (const T&, const path&, const char* what); template void serialize_manifest (const T&, ostream&, const string& name, const char* what); } #include #endif // BBOT_UTILITY