Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / process / doc / windows_pseudocode.xml
1 <?xml version="1.0" standalone="yes"?>
2 <programlisting>
3 for (auto &amp; s : seq)
4     s.<methodname alt="boost::process::extend::handler::on_setup">on_setup</methodname>(*this);
5
6 if (<methodname alt="boost::process::extend::windows_executor::error">error</methodname>())
7 {
8     for (auto &amp; s : seq)
9        s.<methodname alt="boost::process::extend::handler::on_error">on_error</methodname>(*this, <methodname alt="boost::process::extend::windows_executor::error">error</methodname>());
10     return <classname alt="boost::process::child">child</classname>();
11 }
12 int err_code = <ulink url="https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425.aspx">CreateProcess</ulink>(
13          exe,
14          cmd_line,
15          proc_attrs,
16          thread_attrs,
17          creation_flags,
18          env,
19          work_dir,
20          startup_info,
21          proc_info);
22
23 <classname alt="boost::process::child">child</classname> c(proc_info, exit_code);
24
25 if (<methodname alt="boost::process::extend::windows_executor::error">error</methodname>())
26     for (auto &amp; s : seq)
27         s.<methodname alt="boost::process::extend::handler::on_error">on_error</methodname>(*this, <methodname alt="boost::process::extend::windows_executor::error">error</methodname>());
28 else
29     for (auto &amp; s : seq)
30         s.<methodname alt="boost::process::extend::handler::on_error">on_success</methodname>(*this);
31
32 //now we check again, because a on_success handler might've errored.
33 if (<methodname alt="boost::process::extend::windows_executor::error">error</methodname>())
34 {
35     for (auto &amp; s : seq)
36         s.<methodname alt="boost::process::extend::handler::on_error">on_error</methodname>(*this, <methodname alt="boost::process::extend::windows_executor::error">error</methodname>());
37     return <classname alt="boost::process::child">child</classname>();
38 }
39 else
40     return c;
41
42 </programlisting>