<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="cutter-Multi-Process">
<refmeta>
<refentrytitle role="top_of_page" id="cutter-Multi-Process.top_of_page">Multi Process</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>
  CUTTER Library
</refmiscinfo>
</refmeta>
<refnamediv>
<refname>Multi Process</refname>
<refpurpose>Utilities to run your tests on multi
processes.</refpurpose>
</refnamediv>

<refsynopsisdiv id="cutter-Multi-Process.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis><link linkend="CutSubProcess"><returnvalue>CutSubProcess</returnvalue></link> *     <link linkend="cut-take-new-sub-process">cut_take_new_sub_process</link>            (<parameter>const <link linkend="char"><type>char</type></link> *test_directory</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-run">cut_sub_process_run</link>                 (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-run-async">cut_sub_process_run_async</link>           (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-wait">cut_sub_process_wait</link>                (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-is-success">cut_sub_process_is_success</link>          (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-is-running">cut_sub_process_is_running</link>          (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-sub-process-get-test-directory">cut_sub_process_get_test_directory</link>  (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-test-directory">cut_sub_process_set_test_directory</link>  (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *test_directory</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-sub-process-get-source-directory">cut_sub_process_get_source_directory</link>
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-source-directory">cut_sub_process_set_source_directory</link>
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *source_directory</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-get-multi-thread">cut_sub_process_get_multi_thread</link>    (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-multi-thread">cut_sub_process_set_multi_thread</link>    (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter><link linkend="cut-boolean"><type>cut_boolean</type></link> multi_thread</parameter>);
<link linkend="int"><returnvalue>int</returnvalue></link>                 <link linkend="cut-sub-process-get-max-threads">cut_sub_process_get_max_threads</link>     (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-max-threads">cut_sub_process_set_max_threads</link>     (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> max_threads</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> **       <link linkend="cut-sub-process-get-exclude-files">cut_sub_process_get_exclude_files</link>   (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-exclude-files">cut_sub_process_set_exclude_files</link>   (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> **files</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> **       <link linkend="cut-sub-process-get-exclude-directories">cut_sub_process_get_exclude_directories</link>
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-exclude-directories">cut_sub_process_set_exclude_directories</link>
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> **directories</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> **       <link linkend="cut-sub-process-get-target-test-case-names">cut_sub_process_get_target_test_case_names</link>
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-target-test-case-names">cut_sub_process_set_target_test_case_names</link>
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> **names</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> **       <link linkend="cut-sub-process-get-target-test-names">cut_sub_process_get_target_test_names</link>
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-target-test-names">cut_sub_process_set_target_test_names</link>
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> **names</parameter>);
<link linkend="double"><returnvalue>double</returnvalue></link>              <link linkend="cut-sub-process-get-elapsed">cut_sub_process_get_elapsed</link>         (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="double"><returnvalue>double</returnvalue></link>              <link linkend="cut-sub-process-get-total-elapsed">cut_sub_process_get_total_elapsed</link>   (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-is-crashed">cut_sub_process_is_crashed</link>          (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-get-fatal-failures">cut_sub_process_get_fatal_failures</link>  (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-set-fatal-failures">cut_sub_process_set_fatal_failures</link>  (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter><link linkend="cut-boolean"><type>cut_boolean</type></link> fatal_failures</parameter>);
<link linkend="CutSubProcessGroup"><returnvalue>CutSubProcessGroup</returnvalue></link> * <link linkend="cut-take-new-sub-process-group">cut_take_new_sub_process_group</link>     (<parameter><type>void</type></parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-group-add">cut_sub_process_group_add</link>           (<parameter><link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> *group</parameter>,
                                                         <parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-group-run">cut_sub_process_group_run</link>           (<parameter><link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> *group</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-sub-process-group-run-async">cut_sub_process_group_run_async</link>     (<parameter><link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> *group</parameter>);
<link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         <link linkend="cut-sub-process-group-wait">cut_sub_process_group_wait</link>          (<parameter><link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> *group</parameter>);
                    <link linkend="CutSubProcess">CutSubProcess</link>;
                    <link linkend="CutSubProcessGroup">CutSubProcessGroup</link>;
</synopsis>
</refsynopsisdiv>

<refsect1 id="cutter-Multi-Process.description" role="desc">
<title role="desc.title">Description</title>
<para>
If your test target supports multi-process and/or
multi-thread, you need to test them. You can use
<link linkend="CutSubProcess"><type>CutSubProcess</type></link> and <link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> to do it.
</para>
<para>
<link linkend="CutSubProcess"><type>CutSubProcess</type></link> runs your test on another process and
forwards results of it to a test on your main
process. You will get results of test on another process
as results of test on your main process.
</para>
<para>
<link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> is a convenience object to run some
<link linkend="CutSubProcess"><type>CutSubProcess</type></link>.
</para>
</refsect1>
<refsect1 id="cutter-Multi-Process.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="cut-take-new-sub-process" role="function" condition="since:1.0.4">
<title>cut_take_new_sub_process ()</title>
<indexterm zone="cut-take-new-sub-process" role="1.0.4"><primary>cut_take_new_sub_process</primary></indexterm>
<programlisting><link linkend="CutSubProcess"><returnvalue>CutSubProcess</returnvalue></link> *     cut_take_new_sub_process            (<parameter>const <link linkend="char"><type>char</type></link> *test_directory</parameter>);</programlisting>
<para>
Creates sub cutter process that runs tests under
<parameter>test_directory</parameter> and returns it. A created sub process
is owned by Cutter.
</para><variablelist role="params">
<varlistentry><term><parameter>test_directory</parameter>&#160;:</term>
<listitem><simpara>a directory includes sub process test.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-run" role="function" condition="since:1.0.4">
<title>cut_sub_process_run ()</title>
<indexterm zone="cut-sub-process-run" role="1.0.4"><primary>cut_sub_process_run</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_run                 (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Runs sub cutter process.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if <parameter>sub_process</parameter> is completed
successfully, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link> otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-run-async" role="function" condition="since:1.0.4">
<title>cut_sub_process_run_async ()</title>
<indexterm zone="cut-sub-process-run-async" role="1.0.4"><primary>cut_sub_process_run_async</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_run_async           (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Runs sub cutter process asynchronously. The result of
<parameter>sub_process</parameter> can be gotten by <link linkend="cut-sub-process-wait"><function>cut_sub_process_wait()</function></link>.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-wait" role="function" condition="since:1.0.4">
<title>cut_sub_process_wait ()</title>
<indexterm zone="cut-sub-process-wait" role="1.0.4"><primary>cut_sub_process_wait</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_wait                (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Waits for sub cutter process that is ran asynchronously
to complete and returns the result.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if <parameter>sub_process</parameter> is completed
successfully, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link> otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-is-success" role="function" condition="since:1.0.4">
<title>cut_sub_process_is_success ()</title>
<indexterm zone="cut-sub-process-is-success" role="1.0.4"><primary>cut_sub_process_is_success</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_is_success          (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns whether <parameter>sub_process</parameter> is completed successfully or
not.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if <parameter>sub_process</parameter> is completed
successfully, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link> otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-is-running" role="function" condition="since:1.0.4">
<title>cut_sub_process_is_running ()</title>
<indexterm zone="cut-sub-process-is-running" role="1.0.4"><primary>cut_sub_process_is_running</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_is_running          (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns whether <parameter>sub_process</parameter> is running or not.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if <parameter>sub_process</parameter> is running, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link>
otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-test-directory" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_test_directory ()</title>
<indexterm zone="cut-sub-process-get-test-directory" role="1.0.4"><primary>cut_sub_process_get_test_directory</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_sub_process_get_test_directory  (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns a test directory that has tests to be ran.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>a test directory.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-set-test-directory" role="function" condition="since:1.0.4">
<title>cut_sub_process_set_test_directory ()</title>
<indexterm zone="cut-sub-process-set-test-directory" role="1.0.4"><primary>cut_sub_process_set_test_directory</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_test_directory  (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *test_directory</parameter>);</programlisting>
<para>
Sets <parameter>test_directory</parameter> as a test directory that has tests
to be ran. This is same as TEST_DIRECTORY required
command line argument.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>test_directory</parameter>&#160;:</term>
<listitem><simpara>a test directory.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-source-directory" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_source_directory ()</title>
<indexterm zone="cut-sub-process-get-source-directory" role="1.0.4"><primary>cut_sub_process_get_source_directory</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_sub_process_get_source_directory
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns a source directory that has source files.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>a source directory.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-set-source-directory" role="function" condition="since:1.0.4">
<title>cut_sub_process_set_source_directory ()</title>
<indexterm zone="cut-sub-process-set-source-directory" role="1.0.4"><primary>cut_sub_process_set_source_directory</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_source_directory
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *source_directory</parameter>);</programlisting>
<para>
Sets <parameter>source_directory</parameter> as a source directory that has
source files. This is same as --source-directory command
line option.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>source_directory</parameter>&#160;:</term>
<listitem><simpara>a source directory.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-multi-thread" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_multi_thread ()</title>
<indexterm zone="cut-sub-process-get-multi-thread" role="1.0.4"><primary>cut_sub_process_get_multi_thread</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_get_multi_thread    (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns whether <parameter>sub_process</parameter> is ran in multi-thread mode.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if <parameter>sub_process</parameter> is ran in multi-thread
mode, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link> otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-set-multi-thread" role="function" condition="since:1.0.4">
<title>cut_sub_process_set_multi_thread ()</title>
<indexterm zone="cut-sub-process-set-multi-thread" role="1.0.4"><primary>cut_sub_process_set_multi_thread</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_multi_thread    (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter><link linkend="cut-boolean"><type>cut_boolean</type></link> multi_thread</parameter>);</programlisting>
<para>
Sets whether <parameter>sub_process</parameter> is ran in multi-thread mode or
not. This is same as --multi-thread command line option.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>multi_thread</parameter>&#160;:</term>
<listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> to be ran in multi-thread mode.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-max-threads" role="function" condition="since:1.0.5">
<title>cut_sub_process_get_max_threads ()</title>
<indexterm zone="cut-sub-process-get-max-threads" role="1.0.5"><primary>cut_sub_process_get_max_threads</primary></indexterm>
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link>                 cut_sub_process_get_max_threads     (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns how many threads are used concurrently at a
maximum in <parameter>sub_process</parameter>.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>max number of threads used concurrently at a
maximum in <parameter>sub_process</parameter>.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.5</para></refsect2>
<refsect2 id="cut-sub-process-set-max-threads" role="function" condition="since:1.0.5">
<title>cut_sub_process_set_max_threads ()</title>
<indexterm zone="cut-sub-process-set-max-threads" role="1.0.5"><primary>cut_sub_process_set_max_threads</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_max_threads     (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> max_threads</parameter>);</programlisting>
<para>
Sets how many threads are used concurrently at a
maximum in <parameter>sub_process</parameter>. -1 means no limit. This is same
as --max-threads command line option.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>max_threads</parameter>&#160;:</term>
<listitem><simpara>max number of threads used concurrently at
a maximum.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.5</para></refsect2>
<refsect2 id="cut-sub-process-get-exclude-files" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_exclude_files ()</title>
<indexterm zone="cut-sub-process-get-exclude-files" role="1.0.4"><primary>cut_sub_process_get_exclude_files</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> **       cut_sub_process_get_exclude_files   (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns file names that are excluded from target test
files.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>file names that are excluded from target test files.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-set-exclude-files" role="function" condition="since:1.0.4">
<title>cut_sub_process_set_exclude_files ()</title>
<indexterm zone="cut-sub-process-set-exclude-files" role="1.0.4"><primary>cut_sub_process_set_exclude_files</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_exclude_files   (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> **files</parameter>);</programlisting>
<para>
Sets file names that are excluded from target test files.
This is same as --exclude-file command line option.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>files</parameter>&#160;:</term>
<listitem><simpara>file names that are excluded from target test
files.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-exclude-directories" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_exclude_directories ()</title>
<indexterm zone="cut-sub-process-get-exclude-directories" role="1.0.4"><primary>cut_sub_process_get_exclude_directories</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> **       cut_sub_process_get_exclude_directories
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns directory names that are excluded from target
test directories.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>directory names that are excluded from target
test directories.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-set-exclude-directories" role="function" condition="since:1.0.4">
<title>cut_sub_process_set_exclude_directories ()</title>
<indexterm zone="cut-sub-process-set-exclude-directories" role="1.0.4"><primary>cut_sub_process_set_exclude_directories</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_exclude_directories
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> **directories</parameter>);</programlisting>
<para>
Sets directory names that are excluded from target test
directories. This is same as --exclude-directory command line
option.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>directories</parameter>&#160;:</term>
<listitem><simpara>directory names that are excluded from
target test directories.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-target-test-case-names" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_target_test_case_names ()</title>
<indexterm zone="cut-sub-process-get-target-test-case-names" role="1.0.4"><primary>cut_sub_process_get_target_test_case_names</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> **       cut_sub_process_get_target_test_case_names
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns test case names that are ran.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>test case names that are ran.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-set-target-test-case-names" role="function" condition="since:1.0.4">
<title>cut_sub_process_set_target_test_case_names ()</title>
<indexterm zone="cut-sub-process-set-target-test-case-names" role="1.0.4"><primary>cut_sub_process_set_target_test_case_names</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_target_test_case_names
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> **names</parameter>);</programlisting>
<para>
Sets test case names that are ran. This is same as
--test-case command line option.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>names</parameter>&#160;:</term>
<listitem><simpara>test case names that are ran.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-target-test-names" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_target_test_names ()</title>
<indexterm zone="cut-sub-process-get-target-test-names" role="1.0.4"><primary>cut_sub_process_get_target_test_names</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> **       cut_sub_process_get_target_test_names
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns test names that are ran.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>test names that are ran.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-set-target-test-names" role="function" condition="since:1.0.4">
<title>cut_sub_process_set_target_test_names ()</title>
<indexterm zone="cut-sub-process-set-target-test-names" role="1.0.4"><primary>cut_sub_process_set_target_test_names</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_target_test_names
                                                        (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> **names</parameter>);</programlisting>
<para>
Sets test names that are ran. This is same as --test
command line option.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>names</parameter>&#160;:</term>
<listitem><simpara>test names that are ran.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-elapsed" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_elapsed ()</title>
<indexterm zone="cut-sub-process-get-elapsed" role="1.0.4"><primary>cut_sub_process_get_elapsed</primary></indexterm>
<programlisting><link linkend="double"><returnvalue>double</returnvalue></link>              cut_sub_process_get_elapsed         (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Gets the time while <parameter>sub_process</parameter> was running.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>the time while <parameter>sub_process</parameter> was running.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-total-elapsed" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_total_elapsed ()</title>
<indexterm zone="cut-sub-process-get-total-elapsed" role="1.0.4"><primary>cut_sub_process_get_total_elapsed</primary></indexterm>
<programlisting><link linkend="double"><returnvalue>double</returnvalue></link>              cut_sub_process_get_total_elapsed   (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Gets the sum of times that are used by each test.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>the sum of times that are used by each test.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-is-crashed" role="function" condition="since:1.0.4">
<title>cut_sub_process_is_crashed ()</title>
<indexterm zone="cut-sub-process-is-crashed" role="1.0.4"><primary>cut_sub_process_is_crashed</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_is_crashed          (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns whether <parameter>sub_process</parameter> was crashed or not.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if <parameter>sub_process</parameter> was crashed, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link>
otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-get-fatal-failures" role="function" condition="since:1.0.4">
<title>cut_sub_process_get_fatal_failures ()</title>
<indexterm zone="cut-sub-process-get-fatal-failures" role="1.0.4"><primary>cut_sub_process_get_fatal_failures</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_get_fatal_failures  (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Returns whether <parameter>sub_process</parameter> is ran in fatal-failures
mode. See <link linkend="cut-sub-process-set-fatal-failures"><function>cut_sub_process_set_fatal_failures()</function></link> more
details of fatal-failures mode.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if <parameter>sub_process</parameter> is ran in fatal-failures
mode, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link> otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-set-fatal-failures" role="function" condition="since:1.0.4">
<title>cut_sub_process_set_fatal_failures ()</title>
<indexterm zone="cut-sub-process-set-fatal-failures" role="1.0.4"><primary>cut_sub_process_set_fatal_failures</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_set_fatal_failures  (<parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>,
                                                         <parameter><link linkend="cut-boolean"><type>cut_boolean</type></link> fatal_failures</parameter>);</programlisting>
<para>
Sets whether <parameter>sub_process</parameter> is ran in fatal-failures mode or
not. In this mode, all failures are treated as fatal
problems. It means that test is aborted on failure. On
some environments, breakpoint is set.
</para>
<para>
This is same as --fatal-failures command line option.
</para><variablelist role="params">
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>fatal_failures</parameter>&#160;:</term>
<listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> to be ran in fatal-failures mode.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-take-new-sub-process-group" role="function" condition="since:1.0.4">
<title>cut_take_new_sub_process_group ()</title>
<indexterm zone="cut-take-new-sub-process-group" role="1.0.4"><primary>cut_take_new_sub_process_group</primary></indexterm>
<programlisting><link linkend="CutSubProcessGroup"><returnvalue>CutSubProcessGroup</returnvalue></link> * cut_take_new_sub_process_group     (<parameter><type>void</type></parameter>);</programlisting>
<para>
Creates a group of sub cutter process. A created group
is owned by Cutter.
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>a <link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link>.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-group-add" role="function" condition="since:1.0.4">
<title>cut_sub_process_group_add ()</title>
<indexterm zone="cut-sub-process-group-add" role="1.0.4"><primary>cut_sub_process_group_add</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_group_add           (<parameter><link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> *group</parameter>,
                                                         <parameter><link linkend="CutSubProcess"><type>CutSubProcess</type></link> *sub_process</parameter>);</programlisting>
<para>
Adds <parameter>sub_process</parameter> to <parameter>group</parameter>.
</para><variablelist role="params">
<varlistentry><term><parameter>group</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sub_process</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcess"><type>CutSubProcess</type></link>.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-group-run" role="function" condition="since:1.0.4">
<title>cut_sub_process_group_run ()</title>
<indexterm zone="cut-sub-process-group-run" role="1.0.4"><primary>cut_sub_process_group_run</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_group_run           (<parameter><link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> *group</parameter>);</programlisting>
<para>
Runs all sub cutter processes of <parameter>group</parameter> and returns the
result of them.
</para><variablelist role="params">
<varlistentry><term><parameter>group</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if all sub cutter processes of <parameter>group</parameter>
are completed successfully, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link> otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-group-run-async" role="function" condition="since:1.0.4">
<title>cut_sub_process_group_run_async ()</title>
<indexterm zone="cut-sub-process-group-run-async" role="1.0.4"><primary>cut_sub_process_group_run_async</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_sub_process_group_run_async     (<parameter><link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> *group</parameter>);</programlisting>
<para>
Runs all sub cutter processes of <parameter>group</parameter>
asynchronously. The result of them can be gotten by
<link linkend="cut-sub-process-group-wait"><function>cut_sub_process_group_wait()</function></link>.
</para><variablelist role="params">
<varlistentry><term><parameter>group</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link>.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="cut-sub-process-group-wait" role="function" condition="since:1.0.4">
<title>cut_sub_process_group_wait ()</title>
<indexterm zone="cut-sub-process-group-wait" role="1.0.4"><primary>cut_sub_process_group_wait</primary></indexterm>
<programlisting><link linkend="cut-boolean"><returnvalue>cut_boolean</returnvalue></link>         cut_sub_process_group_wait          (<parameter><link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link> *group</parameter>);</programlisting>
<para>
Waits for all sub cutter processes of <parameter>group</parameter> that are ran
asynchronously to complete and returns the result.
</para><variablelist role="params">
<varlistentry><term><parameter>group</parameter>&#160;:</term>
<listitem><simpara>a <link linkend="CutSubProcessGroup"><type>CutSubProcessGroup</type></link>.</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="CUT-TRUE:CAPS"><literal>CUT_TRUE</literal></link> if all sub cutter processes of <parameter>group</parameter>
are completed successfully, <link linkend="CUT-FALSE:CAPS"><literal>CUT_FALSE</literal></link> otherwise.</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="CutSubProcess" role="struct" condition="since:1.0.4">
<title>CutSubProcess</title>
<indexterm zone="CutSubProcess" role="1.0.4"><primary>CutSubProcess</primary></indexterm>
<programlisting>typedef struct _CutSubProcess CutSubProcess;</programlisting>
<para>
An object to represent sub cutter process. It contains
sub cutter process's parameters and results of sub cutter
process.
</para>
<para>
e.g.:
<informalexample><programlisting>
CutSubProcess *sub_process;

sub_process = cut_take_new_sub_process("test-dir");
cut_sub_process_set_multi_thread(sub_process, TRUE);
cut_assert_true(cut_sub_process_run(sub_process));
</programlisting></informalexample>
</para><para role="since">Since 1.0.4</para></refsect2>
<refsect2 id="CutSubProcessGroup" role="struct" condition="since:1.0.4">
<title>CutSubProcessGroup</title>
<indexterm zone="CutSubProcessGroup" role="1.0.4"><primary>CutSubProcessGroup</primary></indexterm>
<programlisting>typedef struct _CutSubProcessGroup CutSubProcessGroup;</programlisting>
<para>
An object to run sub cutter processes. This is just for
convenience.
</para>
<para>
e.g.:
<informalexample><programlisting>
CutSubProcess *sub_process1, *sub_process2, *sub_process3;
CutSubProcessGroup *group;

sub_process1 = cut_take_new_sub_process("test-dir1");
sub_process2 = cut_take_new_sub_process("test-dir2");
sub_process3 = cut_take_new_sub_process("test-dir3");

group = cut_take_new_sub_process_group();
cut_sub_process_group_add(group, sub_process1);
cut_sub_process_group_add(group, sub_process2);
cut_sub_process_group_add(group, sub_process3);
cut_assert_true(cut_sub_process_group_run(group));
</programlisting></informalexample>
</para><para role="since">Since 1.0.4</para></refsect2>

</refsect1>

</refentry>
