<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14">
  <compounddef id="classforpy_1_1_thread_control" kind="class" language="C++" prot="public">
    <compoundname>forpy::ThreadControl</compoundname>
    <includes refid="ctpl_8h" local="no">ctpl.h</includes>
      <sectiondef kind="private-attrib">
      <memberdef kind="variable" id="classforpy_1_1_thread_control_1abf7578c3912777861f07cfef925b49b3" prot="private" static="no" mutable="no">
        <type>std::unique_ptr&lt; <ref refid="classforpy_1_1threading_1_1thread__pool" kindref="compound">threading::thread_pool</ref> &gt;</type>
        <definition>std::unique_ptr&lt;threading::thread_pool&gt; forpy::ThreadControl::ttp</definition>
        <argsstring></argsstring>
        <name>ttp</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="307" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="307" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-func">
      <memberdef kind="function" id="classforpy_1_1_thread_control_1ae6bc7e2ee638612891f8642d24aa4ed5" prot="private" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>forpy::ThreadControl::ThreadControl</definition>
        <argsstring>()</argsstring>
        <name>ThreadControl</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="302" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="302" bodyend="305"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1a426a23de1f70a330c883aaebfa60d4cb" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>forpy::ThreadControl::DISALLOW_COPY_AND_ASSIGN</definition>
        <argsstring>(ThreadControl)</argsstring>
        <name>DISALLOW_COPY_AND_ASSIGN</name>
        <param>
          <type><ref refid="classforpy_1_1_thread_control" kindref="compound">ThreadControl</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="306" column="1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-static-func">
      <memberdef kind="function" id="classforpy_1_1_thread_control_1aa1c69ee104ac7ee426894340bf8c6528" prot="public" static="yes" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classforpy_1_1_thread_control" kindref="compound">ThreadControl</ref> &amp;</type>
        <definition>static ThreadControl&amp; forpy::ThreadControl::getInstance</definition>
        <argsstring>()</argsstring>
        <name>getInstance</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="310" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="310" bodyend="313"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classforpy_1_1_thread_control_1aedabd435b20bc64d146d44e6904b3fa8" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::ThreadControl::set_num</definition>
        <argsstring>(size_t n)</argsstring>
        <name>set_num</name>
        <param>
          <type>size_t</type>
          <declname>n</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="315" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="315" bodyend="327"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1a51f18400b5ef897f11df5077d92bad58" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t forpy::ThreadControl::get_num</definition>
        <argsstring>()</argsstring>
        <name>get_num</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="329" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="329" bodyend="334"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1a2dd1bd07f64bccf6cb853760b22a1fc6" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t forpy::ThreadControl::get_idle</definition>
        <argsstring>()</argsstring>
        <name>get_idle</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="336" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="336" bodyend="341"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1a57bb4d6430a10c5dd955d2de1abdf023" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename C</type>
          </param>
          <param>
            <type>typename F</type>
          </param>
          <param>
            <type>typename M</type>
          </param>
          <param>
            <type>typename...</type>
            <declname>Rest</declname>
            <defname>Rest</defname>
          </param>
        </templateparamlist>
        <type>auto</type>
        <definition>auto forpy::ThreadControl::push_move</definition>
        <argsstring>(F &amp;&amp;f, C *c, M &amp;&amp;movable, Rest &amp;&amp;... rest) -&gt; std::future&lt; decltype((c-&gt; *f)(new forpy::Desk(0), movable, rest...))&gt;</argsstring>
        <name>push_move</name>
        <param>
          <type>F &amp;&amp;</type>
          <declname>f</declname>
        </param>
        <param>
          <type>C *</type>
          <declname>c</declname>
        </param>
        <param>
          <type>M &amp;&amp;</type>
          <declname>movable</declname>
        </param>
        <param>
          <type>Rest &amp;&amp;...</type>
          <declname>rest</declname>
        </param>
        <briefdescription>
<para>For member functions (with parameters). </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="345" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="345" bodyend="348"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1a9a571c8aff74a8b5a8d1f35e2f78c5bf" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename C</type>
          </param>
          <param>
            <type>typename F</type>
          </param>
          <param>
            <type>typename...</type>
            <declname>Rest</declname>
            <defname>Rest</defname>
          </param>
        </templateparamlist>
        <type>auto</type>
        <definition>auto forpy::ThreadControl::push</definition>
        <argsstring>(F &amp;&amp;f, C *c, Rest &amp;&amp;... rest) -&gt; std::future&lt; decltype((c-&gt; *f)(new forpy::Desk(0), rest...))&gt;</argsstring>
        <name>push</name>
        <param>
          <type>F &amp;&amp;</type>
          <declname>f</declname>
        </param>
        <param>
          <type>C *</type>
          <declname>c</declname>
        </param>
        <param>
          <type>Rest &amp;&amp;...</type>
          <declname>rest</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="351" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="351" bodyend="354"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1a780dfd52ce073ba59f5dcc0471aa87bc" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename F</type>
          </param>
          <param>
            <type>typename...</type>
            <declname>Rest</declname>
            <defname>Rest</defname>
          </param>
        </templateparamlist>
        <type>auto</type>
        <definition>auto forpy::ThreadControl::push</definition>
        <argsstring>(F &amp;&amp;f, Rest &amp;&amp;... rest) -&gt; std::future&lt; decltype(f(new Desk(0), rest...))&gt;</argsstring>
        <name>push</name>
        <param>
          <type>F &amp;&amp;</type>
          <declname>f</declname>
        </param>
        <param>
          <type>Rest &amp;&amp;...</type>
          <declname>rest</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="357" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="357" bodyend="360"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1ad029013c63ffe66d16e061e7fe93aecc" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename F</type>
          </param>
        </templateparamlist>
        <type>auto</type>
        <definition>auto forpy::ThreadControl::push</definition>
        <argsstring>(F &amp;&amp;f) -&gt; std::future&lt; decltype(f(new Desk(0)))&gt;</argsstring>
        <name>push</name>
        <param>
          <type>F &amp;&amp;</type>
          <declname>f</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="363" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="363" bodyend="365"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1ac926db74a6c0bd18a118398a0763d43d" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::ThreadControl::stop</definition>
        <argsstring>(const bool &amp;wait=false)</argsstring>
        <name>stop</name>
        <param>
          <type>const bool &amp;</type>
          <declname>wait</declname>
          <defval>false</defval>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="367" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="367" bodyend="370"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_thread_control_1a47aed3131614927ccbd654c08d1f1e35" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>forpy::ThreadControl::~ThreadControl</definition>
        <argsstring>()</argsstring>
        <name>~ThreadControl</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="372" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="372" bodyend="376"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <collaborationgraph>
      <node id="206">
        <label>forpy::ThreadControl</label>
        <link refid="classforpy_1_1_thread_control"/>
        <childnode refid="207" relation="usage">
          <edgelabel>ttp</edgelabel>
        </childnode>
      </node>
      <node id="207">
        <label>std::unique_ptr&lt; forpy::threading::thread_pool &gt;</label>
        <childnode refid="208" relation="usage">
          <edgelabel>ptr</edgelabel>
        </childnode>
      </node>
      <node id="208">
        <label>forpy::threading::thread_pool</label>
        <link refid="classforpy_1_1threading_1_1thread__pool"/>
        <childnode refid="209" relation="usage">
          <edgelabel>q</edgelabel>
        </childnode>
        <childnode refid="211" relation="usage">
          <edgelabel>threads</edgelabel>
        </childnode>
        <childnode refid="214" relation="usage">
          <edgelabel>flags</edgelabel>
        </childnode>
      </node>
      <node id="209">
        <label>forpy::threading::detail::Queue&lt; std::function&lt; void(forpy::Desk)&gt; *&gt;</label>
        <link refid="classforpy_1_1threading_1_1detail_1_1_queue"/>
        <childnode refid="210" relation="usage">
          <edgelabel>q</edgelabel>
        </childnode>
      </node>
      <node id="212">
        <label>std::unique_ptr&lt; std::thread &gt;</label>
        <childnode refid="213" relation="usage">
          <edgelabel>ptr</edgelabel>
        </childnode>
      </node>
      <node id="213">
        <label>std::thread</label>
      </node>
      <node id="214">
        <label>std::vector&lt; std::shared_ptr&lt; std::atomic&lt; bool &gt; &gt; &gt;</label>
      </node>
      <node id="210">
        <label>std::queue&lt; std::function&lt; void(forpy::Desk)&gt; *&gt;</label>
      </node>
      <node id="211">
        <label>std::vector&lt; std::unique_ptr&lt; std::thread &gt; &gt;</label>
        <childnode refid="212" relation="usage">
          <edgelabel>elements</edgelabel>
        </childnode>
      </node>
    </collaborationgraph>
    <location file="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" line="300" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/util/threading/ctpl.h" bodystart="300" bodyend="377"/>
    <listofallmembers>
      <member refid="classforpy_1_1_thread_control_1a426a23de1f70a330c883aaebfa60d4cb" prot="private" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>DISALLOW_COPY_AND_ASSIGN</name></member>
      <member refid="classforpy_1_1_thread_control_1a2dd1bd07f64bccf6cb853760b22a1fc6" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>get_idle</name></member>
      <member refid="classforpy_1_1_thread_control_1a51f18400b5ef897f11df5077d92bad58" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>get_num</name></member>
      <member refid="classforpy_1_1_thread_control_1aa1c69ee104ac7ee426894340bf8c6528" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>getInstance</name></member>
      <member refid="classforpy_1_1_thread_control_1a9a571c8aff74a8b5a8d1f35e2f78c5bf" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>push</name></member>
      <member refid="classforpy_1_1_thread_control_1a780dfd52ce073ba59f5dcc0471aa87bc" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>push</name></member>
      <member refid="classforpy_1_1_thread_control_1ad029013c63ffe66d16e061e7fe93aecc" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>push</name></member>
      <member refid="classforpy_1_1_thread_control_1a57bb4d6430a10c5dd955d2de1abdf023" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>push_move</name></member>
      <member refid="classforpy_1_1_thread_control_1aedabd435b20bc64d146d44e6904b3fa8" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>set_num</name></member>
      <member refid="classforpy_1_1_thread_control_1ac926db74a6c0bd18a118398a0763d43d" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>stop</name></member>
      <member refid="classforpy_1_1_thread_control_1ae6bc7e2ee638612891f8642d24aa4ed5" prot="private" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>ThreadControl</name></member>
      <member refid="classforpy_1_1_thread_control_1abf7578c3912777861f07cfef925b49b3" prot="private" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>ttp</name></member>
      <member refid="classforpy_1_1_thread_control_1a47aed3131614927ccbd654c08d1f1e35" prot="public" virt="non-virtual"><scope>forpy::ThreadControl</scope><name>~ThreadControl</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
