<?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.9.1" xml:lang="en-US">
  <compounddef id="classtf_1_1Taskflow" kind="class" language="C++" prot="public">
    <compoundname>tf::Taskflow</compoundname>
    <basecompoundref refid="classtf_1_1FlowBuilder" prot="public" virt="non-virtual">tf::FlowBuilder</basecompoundref>
    <includes refid="core_2taskflow_8hpp" local="no">taskflow/core/taskflow.hpp</includes>
    <innerclass refid="structtf_1_1Taskflow_1_1Dumper" prot="private">tf::Taskflow::Dumper</innerclass>
      <sectiondef kind="friend">
      <memberdef kind="friend" id="classtf_1_1Taskflow_1acd2b8699ab7559c0da687cd775e2c778" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>class</type>
        <definition>friend class Topology</definition>
        <argsstring></argsstring>
        <name>Topology</name>
        <param>
          <type>Topology</type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="69" column="3" bodyfile="taskflow/core/taskflow.hpp" bodystart="69" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Taskflow_1a763b2f90bc53f92d680a635fe28e858e" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>class</type>
        <definition>friend class Executor</definition>
        <argsstring></argsstring>
        <name>Executor</name>
        <param>
          <type><ref refid="classtf_1_1Executor" kindref="compound">Executor</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="70" column="3" bodyfile="taskflow/core/taskflow.hpp" bodystart="70" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Taskflow_1a61184f9bd9c801d0a5eccecfdbddc641" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>class</type>
        <definition>friend class FlowBuilder</definition>
        <argsstring></argsstring>
        <name>FlowBuilder</name>
        <param>
          <type><ref refid="classtf_1_1FlowBuilder" kindref="compound">FlowBuilder</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="71" column="3" bodyfile="taskflow/core/taskflow.hpp" bodystart="71" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Taskflow_1aa48945297ede77a161defc88033ce8a6" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>class</type>
        <definition>friend class Subflow</definition>
        <argsstring></argsstring>
        <name>Subflow</name>
        <param>
          <type><ref refid="classtf_1_1Subflow" kindref="compound">Subflow</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="72" column="3" bodyfile="taskflow/core/taskflow.hpp" bodystart="72" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-attrib">
      <memberdef kind="variable" id="classtf_1_1Taskflow_1aa4f464efc6b69669c093d6d5218150db" prot="private" static="no" mutable="yes">
        <type><ref refid="cpp/thread/mutex" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::mutex</ref></type>
        <definition>std::mutex tf::Taskflow::_mutex</definition>
        <argsstring></argsstring>
        <name>_mutex</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="289" column="24" bodyfile="taskflow/core/taskflow.hpp" bodystart="289" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Taskflow_1a5f4243689c241ccb5ca4316211d21a62" prot="private" static="no" mutable="no">
        <type><ref refid="cpp/string/basic_string" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::string</ref></type>
        <definition>std::string tf::Taskflow::_name</definition>
        <argsstring></argsstring>
        <name>_name</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="291" column="17" bodyfile="taskflow/core/taskflow.hpp" bodystart="291" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Taskflow_1a78a7df50a7d2aeacb7c5c6948f5dd94a" prot="private" static="no" mutable="no">
        <type><ref refid="classtf_1_1Graph" kindref="compound">Graph</ref></type>
        <definition>Graph tf::Taskflow::_graph</definition>
        <argsstring></argsstring>
        <name>_graph</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="293" column="11" bodyfile="taskflow/core/taskflow.hpp" bodystart="293" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Taskflow_1a7016553915989a1725addcf7d4e975bf" prot="private" static="no" mutable="no">
        <type><ref refid="cpp/container/queue" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::queue</ref>&lt; <ref refid="cpp/memory/shared_ptr" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::shared_ptr</ref>&lt; Topology &gt; &gt;</type>
        <definition>std::queue&lt;std::shared_ptr&lt;Topology&gt; &gt; tf::Taskflow::_topologies</definition>
        <argsstring></argsstring>
        <name>_topologies</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="295" column="16" bodyfile="taskflow/core/taskflow.hpp" bodystart="295" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Taskflow_1ad5d60317ed24250a1e1f919e65572d34" prot="private" static="no" mutable="no">
        <type>std::optional&lt; <ref refid="cpp/container/list" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::list</ref>&lt; <ref refid="classtf_1_1Taskflow" kindref="compound">Taskflow</ref> &gt;::iterator &gt;</type>
        <definition>std::optional&lt;std::list&lt;Taskflow&gt;::iterator&gt; tf::Taskflow::_satellite</definition>
        <argsstring></argsstring>
        <name>_satellite</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="296" column="20" bodyfile="taskflow/core/taskflow.hpp" bodystart="296" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classtf_1_1Taskflow_1a7242a74dcb16731b4e40816647b93305" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>tf::Taskflow::Taskflow</definition>
        <argsstring>(const std::string &amp;name)</argsstring>
        <name>Taskflow</name>
        <param>
          <type>const <ref refid="cpp/string/basic_string" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::string</ref> &amp;</type>
          <declname>name</declname>
        </param>
        <briefdescription>
<para>constructs a taskflow with the given name </para>
        </briefdescription>
        <detaileddescription>
<para><programlisting filename=".cpp"><codeline><highlight class="normal"><ref refid="classtf_1_1Taskflow" kindref="compound">tf::Taskflow</ref><sp/>taskflow(</highlight><highlight class="stringliteral">&quot;My<sp/>Taskflow&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal"><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/>taskflow.name();<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>&quot;My<sp/>Taskflow&quot;</highlight></codeline>
</programlisting> </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="90" column="5" bodyfile="taskflow/core/taskflow.hpp" bodystart="304" bodyend="307"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1ade7fc641d136a3f8c96682c08040626a" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>tf::Taskflow::Taskflow</definition>
        <argsstring>()</argsstring>
        <name>Taskflow</name>
        <briefdescription>
<para>constructs a taskflow </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="95" column="5" bodyfile="taskflow/core/taskflow.hpp" bodystart="310" bodyend="311"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1afd790de6db6d16ddf4729967c1edebb5" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>tf::Taskflow::Taskflow</definition>
        <argsstring>(Taskflow &amp;&amp;rhs)</argsstring>
        <name>Taskflow</name>
        <param>
          <type><ref refid="classtf_1_1Taskflow" kindref="compound">Taskflow</ref> &amp;&amp;</type>
          <declname>rhs</declname>
        </param>
        <briefdescription>
<para>constructs a taskflow from a moved taskflow </para>
        </briefdescription>
        <detaileddescription>
<para>Constructing a taskflow <computeroutput>taskflow1</computeroutput> from a moved taskflow <computeroutput>taskflow2</computeroutput> will migrate the graph of <computeroutput>taskflow2</computeroutput> to <computeroutput>taskflow1</computeroutput>. After the move, <computeroutput>taskflow2</computeroutput> will become empty.</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal"><ref refid="classtf_1_1Taskflow" kindref="compound">tf::Taskflow</ref><sp/>taskflow1(std::move(taskflow2));</highlight></codeline>
<codeline><highlight class="normal">assert(taskflow2.empty());</highlight></codeline>
</programlisting></para>
<para>Notice that <computeroutput>taskflow2</computeroutput> should not be running in an executor during the move operation, or the behavior is undefined. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="112" column="5" bodyfile="taskflow/core/taskflow.hpp" bodystart="314" bodyend="324"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1aa4957a41e63e1d1a6f77c540d70d04fa" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classtf_1_1Taskflow" kindref="compound">Taskflow</ref> &amp;</type>
        <definition>Taskflow &amp; tf::Taskflow::operator=</definition>
        <argsstring>(Taskflow &amp;&amp;rhs)</argsstring>
        <name>operator=</name>
        <param>
          <type><ref refid="classtf_1_1Taskflow" kindref="compound">Taskflow</ref> &amp;&amp;</type>
          <declname>rhs</declname>
        </param>
        <briefdescription>
<para>move assignment operator </para>
        </briefdescription>
        <detaileddescription>
<para>Moving a taskflow <computeroutput>taskflow2</computeroutput> to another taskflow <computeroutput>taskflow1</computeroutput> will destroy the existing graph of <computeroutput>taskflow1</computeroutput> and assign it the graph of <computeroutput>taskflow2</computeroutput>. After the move, <computeroutput>taskflow2</computeroutput> will become empty.</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal">taskflow1<sp/>=<sp/><ref refid="cpp/utility/move" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::move</ref>(taskflow2);</highlight></codeline>
<codeline><highlight class="normal">assert(taskflow2.empty());</highlight></codeline>
</programlisting></para>
<para>Notice that both <computeroutput>taskflow1</computeroutput> and <computeroutput>taskflow2</computeroutput> should not be running in an executor during the move operation, or the behavior is undefined. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="129" column="14" bodyfile="taskflow/core/taskflow.hpp" bodystart="327" bodyend="337"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1aa966a69493ecc8ecb9131ef3c5354b8e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>tf::Taskflow::~Taskflow</definition>
        <argsstring>()=default</argsstring>
        <name>~Taskflow</name>
        <briefdescription>
<para>default destructor </para>
        </briefdescription>
        <detaileddescription>
<para>When the destructor is called, all tasks and their associated data (e.g., captured data) will be destroyed. It is your responsibility to ensure all submitted execution of this taskflow have completed before destroying it. For instance, the following code results in undefined behavior since the executor may still be running the taskflow while it is destroyed after the block.</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal">{</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><ref refid="classtf_1_1Taskflow" kindref="compound">tf::Taskflow</ref><sp/>taskflow;</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/>executor.run(taskflow);</highlight></codeline>
<codeline><highlight class="normal">}</highlight></codeline>
</programlisting></para>
<para>To fix the problem, we must wait for the execution to complete before destroying the taskflow.</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal">{</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><ref refid="classtf_1_1Taskflow" kindref="compound">tf::Taskflow</ref><sp/>taskflow;</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/>executor.run(taskflow).wait();</highlight></codeline>
<codeline><highlight class="normal">}</highlight></codeline>
</programlisting> </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="159" column="5"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1ac433018262e44b12c4cc9f0c4748d758" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Taskflow::dump</definition>
        <argsstring>(std::ostream &amp;ostream) const</argsstring>
        <name>dump</name>
        <param>
          <type><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::ostream</ref> &amp;</type>
          <declname>ostream</declname>
        </param>
        <briefdescription>
<para>dumps the taskflow to a DOT format through a <ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::ostream</ref> target </para>
        </briefdescription>
        <detaileddescription>
<para><programlisting filename=".cpp"><codeline><highlight class="normal">taskflow.dump(<ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref>);<sp/><sp/></highlight><highlight class="comment">//<sp/>dump<sp/>the<sp/>graph<sp/>to<sp/>the<sp/>standard<sp/>output</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"><ref refid="cpp/io/basic_ofstream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::ofstream</ref><sp/>ofs(</highlight><highlight class="stringliteral">&quot;output.dot&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal">taskflow.dump(ofs);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>dump<sp/>the<sp/>graph<sp/>to<sp/>the<sp/>file<sp/>output.dot</highlight></codeline>
</programlisting></para>
<para>For dynamically spawned tasks, such as module tasks, subflow tasks, and GPU tasks, you need to run the taskflow first before you can dump the entire graph.</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal"><ref refid="classtf_1_1Task" kindref="compound">tf::Task</ref><sp/>parent<sp/>=<sp/>taskflow.emplace([](<ref refid="classtf_1_1Subflow" kindref="compound">tf::Subflow</ref><sp/>sf){</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/>sf.<ref refid="classtf_1_1FlowBuilder_1a60d7a666cab71ecfa3010b2efb0d6b57" kindref="member">emplace</ref>([](){<sp/><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;child\n&quot;</highlight><highlight class="normal">;<sp/>});</highlight></codeline>
<codeline><highlight class="normal">});</highlight></codeline>
<codeline><highlight class="normal">taskflow.<ref refid="classtf_1_1Task_1a3318a49ff9d0a01cd1e8ee675251e3b7" kindref="member">dump</ref>(<ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref>);<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>this<sp/>dumps<sp/>only<sp/>the<sp/>parent<sp/>tasks</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal">executor.run(taskflow).wait();</highlight></codeline>
<codeline><highlight class="normal">taskflow.dump(<ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref>);<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>this<sp/>dumps<sp/>both<sp/>parent<sp/>and<sp/>child<sp/>tasks</highlight></codeline>
</programlisting> </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="184" column="10" bodyfile="taskflow/core/taskflow.hpp" bodystart="400" bodyend="404"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1a9c4900da1831dce708664a06b3e3a3fb" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="cpp/string/basic_string" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::string</ref></type>
        <definition>std::string tf::Taskflow::dump</definition>
        <argsstring>() const</argsstring>
        <name>dump</name>
        <briefdescription>
<para>dumps the taskflow to a <ref refid="cpp/string/basic_string" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::string</ref> of DOT format </para>
        </briefdescription>
        <detaileddescription>
<para>This method is similar to tf::Taskflow::dump(std::ostream&amp; ostream), but returning a string of the graph in DOT format. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="192" column="17" bodyfile="taskflow/core/taskflow.hpp" bodystart="393" bodyend="397"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1af4f03bca084deb5c2228ac8936d33649" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Taskflow::num_tasks</definition>
        <argsstring>() const</argsstring>
        <name>num_tasks</name>
        <briefdescription>
<para>queries the number of tasks </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="197" column="12" bodyfile="taskflow/core/taskflow.hpp" bodystart="345" bodyend="347"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1a224301842d94c44fd7fe99d8ac2ba241" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>bool</type>
        <definition>bool tf::Taskflow::empty</definition>
        <argsstring>() const</argsstring>
        <name>empty</name>
        <briefdescription>
<para>queries the emptiness of the taskflow </para>
        </briefdescription>
        <detaileddescription>
<para>An empty taskflow has no tasks. That is the return of <ref refid="classtf_1_1Taskflow_1af4f03bca084deb5c2228ac8936d33649" kindref="member">tf::Taskflow::num_tasks</ref> is zero. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="205" column="10" bodyfile="taskflow/core/taskflow.hpp" bodystart="350" bodyend="352"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1ad5706e5819aa01a63c4aa2e3485546b9" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Taskflow::name</definition>
        <argsstring>(const std::string &amp;)</argsstring>
        <name>name</name>
        <param>
          <type>const <ref refid="cpp/string/basic_string" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::string</ref> &amp;</type>
          <defname>name</defname>
        </param>
        <briefdescription>
<para>assigns a name to the taskflow </para>
        </briefdescription>
        <detaileddescription>
<para><programlisting filename=".cpp"><codeline><highlight class="normal">taskflow.name(</highlight><highlight class="stringliteral">&quot;assign<sp/>another<sp/>name&quot;</highlight><highlight class="normal">);</highlight></codeline>
</programlisting> </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="214" column="10" bodyfile="taskflow/core/taskflow.hpp" bodystart="355" bodyend="357"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1a911edd95acc1322433bddfcfeaf2ccb0" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>const <ref refid="cpp/string/basic_string" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::string</ref> &amp;</type>
        <definition>const std::string &amp; tf::Taskflow::name</definition>
        <argsstring>() const</argsstring>
        <name>name</name>
        <briefdescription>
<para>queries the name of the taskflow </para>
        </briefdescription>
        <detaileddescription>
<para><programlisting filename=".cpp"><codeline><highlight class="normal"><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;my<sp/>name<sp/>is:<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>taskflow.name();</highlight></codeline>
</programlisting> </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="223" column="23" bodyfile="taskflow/core/taskflow.hpp" bodystart="360" bodyend="362"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1a1f00bbe72a1553c9656ecae4d98bb9af" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Taskflow::clear</definition>
        <argsstring>()</argsstring>
        <name>clear</name>
        <briefdescription>
<para>clears the associated task dependency graph </para>
        </briefdescription>
        <detaileddescription>
<para>When you clear a taskflow, all tasks and their associated data (e.g., captured data in task callables) will be destroyed. The behavior of clearing a running taskflow is undefined. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="232" column="10" bodyfile="taskflow/core/taskflow.hpp" bodystart="340" bodyend="342"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1a6350d0d6653ae9ae7b94c35e42fffe07" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename V</type>
          </param>
        </templateparamlist>
        <type>void</type>
        <definition>void tf::Taskflow::for_each_task</definition>
        <argsstring>(V &amp;&amp;visitor) const</argsstring>
        <name>for_each_task</name>
        <param>
          <type>V &amp;&amp;</type>
          <declname>visitor</declname>
        </param>
        <briefdescription>
<para>applies a visitor to each task in the taskflow </para>
        </briefdescription>
        <detaileddescription>
<para>A visitor is a callable that takes an argument of type <ref refid="classtf_1_1Task" kindref="compound">tf::Task</ref> and returns nothing. The following example iterates each task in a taskflow and prints its name:</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal">taskflow.for_each_task([](<ref refid="classtf_1_1Task" kindref="compound">tf::Task</ref><sp/>task){</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/>task.<ref refid="classtf_1_1Task_1a08ada0425b490997b6ff7f310107e5e3" kindref="member">name</ref>()<sp/>&lt;&lt;<sp/></highlight><highlight class="charliteral">&apos;\n&apos;</highlight><highlight class="normal">;</highlight></codeline>
<codeline><highlight class="normal">});</highlight></codeline>
</programlisting> </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="248" column="10" bodyfile="taskflow/core/taskflow.hpp" bodystart="371" bodyend="375"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1a354a7673fabeaf3be66928ad6b573900" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Taskflow::remove_dependency</definition>
        <argsstring>(Task from, Task to)</argsstring>
        <name>remove_dependency</name>
        <param>
          <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref></type>
          <declname>from</declname>
        </param>
        <param>
          <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref></type>
          <declname>to</declname>
        </param>
        <briefdescription>
<para>removes dependencies that go from task <computeroutput>from</computeroutput> to task <computeroutput>to</computeroutput> </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>from</parametername>
</parameternamelist>
<parameterdescription>
<para>from task (dependent) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>to</parametername>
</parameternamelist>
<parameterdescription>
<para>to task (successor)</para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal"><ref refid="classtf_1_1Taskflow" kindref="compound">tf::Taskflow</ref><sp/>taskflow;</highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>a<sp/>=<sp/>taskflow.<ref refid="classtf_1_1FlowBuilder_1acab0b4ac82260f47fdb36a3244ee3aaf" kindref="member">placeholder</ref>().<ref refid="classtf_1_1Task_1a08ada0425b490997b6ff7f310107e5e3" kindref="member">name</ref>(</highlight><highlight class="stringliteral">&quot;a&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>b<sp/>=<sp/>taskflow.<ref refid="classtf_1_1FlowBuilder_1acab0b4ac82260f47fdb36a3244ee3aaf" kindref="member">placeholder</ref>().<ref refid="classtf_1_1Task_1a08ada0425b490997b6ff7f310107e5e3" kindref="member">name</ref>(</highlight><highlight class="stringliteral">&quot;b&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>c<sp/>=<sp/>taskflow.<ref refid="classtf_1_1FlowBuilder_1acab0b4ac82260f47fdb36a3244ee3aaf" kindref="member">placeholder</ref>().<ref refid="classtf_1_1Task_1a08ada0425b490997b6ff7f310107e5e3" kindref="member">name</ref>(</highlight><highlight class="stringliteral">&quot;c&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>d<sp/>=<sp/>taskflow.<ref refid="classtf_1_1FlowBuilder_1acab0b4ac82260f47fdb36a3244ee3aaf" kindref="member">placeholder</ref>().<ref refid="classtf_1_1Task_1a08ada0425b490997b6ff7f310107e5e3" kindref="member">name</ref>(</highlight><highlight class="stringliteral">&quot;d&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal">a.precede(b,<sp/>c,<sp/>d);</highlight></codeline>
<codeline><highlight class="normal">assert(a.num_successors()<sp/>==<sp/>3);</highlight></codeline>
<codeline><highlight class="normal">assert(b.num_dependents()<sp/>==<sp/>1);</highlight></codeline>
<codeline><highlight class="normal">assert(c.num_dependents()<sp/>==<sp/>1);</highlight></codeline>
<codeline><highlight class="normal">assert(d.num_dependents()<sp/>==<sp/>1);</highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal">taskflow.<ref refid="classtf_1_1Taskflow_1a354a7673fabeaf3be66928ad6b573900" kindref="member">remove_dependency</ref>(a,<sp/>b);</highlight></codeline>
<codeline><highlight class="normal">assert(a.num_successors()<sp/>==<sp/>2);</highlight></codeline>
<codeline><highlight class="normal">assert(b.num_dependents()<sp/>==<sp/>0);</highlight></codeline>
</programlisting> </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="276" column="17" bodyfile="taskflow/core/taskflow.hpp" bodystart="378" bodyend="390"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1a8da984d149b439e88468bf26e02ecf27" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classtf_1_1Graph" kindref="compound">Graph</ref> &amp;</type>
        <definition>Graph &amp; tf::Taskflow::graph</definition>
        <argsstring>()</argsstring>
        <name>graph</name>
        <briefdescription>
<para>returns a reference to the underlying graph object </para>
        </briefdescription>
        <detaileddescription>
<para>A graph object (of type <ref refid="classtf_1_1Graph" kindref="compound">tf::Graph</ref>) is the ultimate storage for the task dependency graph and should only be used as an opaque data structure to interact with the executor (e.g., composition). </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="285" column="11" bodyfile="taskflow/core/taskflow.hpp" bodystart="365" bodyend="367"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-func">
      <memberdef kind="function" id="classtf_1_1Taskflow_1a34c956aeab7ae7e44add3538504ea9aa" prot="private" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Taskflow::_dump</definition>
        <argsstring>(std::ostream &amp;, const Graph *) const</argsstring>
        <name>_dump</name>
        <param>
          <type><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::ostream</ref> &amp;</type>
          <defname>os</defname>
        </param>
        <param>
          <type>const <ref refid="classtf_1_1Graph" kindref="compound">Graph</ref> *</type>
          <defname>top</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="298" column="10" bodyfile="taskflow/core/taskflow.hpp" bodystart="407" bodyend="438"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1a22bd6faed11509c504c4a9cb8cb81fd6" prot="private" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Taskflow::_dump</definition>
        <argsstring>(std::ostream &amp;, const Node *, Dumper &amp;) const</argsstring>
        <name>_dump</name>
        <param>
          <type><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::ostream</ref> &amp;</type>
          <defname>os</defname>
        </param>
        <param>
          <type>const Node *</type>
          <defname>node</defname>
        </param>
        <param>
          <type>Dumper &amp;</type>
          <defname>dumper</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="299" column="10" bodyfile="taskflow/core/taskflow.hpp" bodystart="441" bodyend="502"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Taskflow_1afdfa1f01d5471d3cddc39b3bae11c464" prot="private" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Taskflow::_dump</definition>
        <argsstring>(std::ostream &amp;, const Graph *, Dumper &amp;) const</argsstring>
        <name>_dump</name>
        <param>
          <type><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::ostream</ref> &amp;</type>
          <defname>os</defname>
        </param>
        <param>
          <type>const <ref refid="classtf_1_1Graph" kindref="compound">Graph</ref> *</type>
          <defname>graph</defname>
        </param>
        <param>
          <type>Dumper &amp;</type>
          <defname>dumper</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/taskflow.hpp" line="300" column="10" bodyfile="taskflow/core/taskflow.hpp" bodystart="505" bodyend="538"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>class to create a taskflow object </para>
    </briefdescription>
    <detaileddescription>
<para>A taskflow manages a task dependency graph where each task represents a callable object (e.g., <ulink url="https://en.cppreference.com/w/cpp/language/lambda">lambda</ulink>, <ulink url="https://en.cppreference.com/w/cpp/utility/functional/function">std::function</ulink>) and an edge represents a dependency between two tasks. A task is one of the following types:</para>
<para><orderedlist>
<listitem><para>static task : the callable constructible from <computeroutput>std::function&lt;void()&gt;</computeroutput> </para>
</listitem><listitem><para>subflow task : the callable constructible from <computeroutput>std::function&lt;void(tf::Subflow&amp;)&gt;</computeroutput> </para>
</listitem><listitem><para>condition task : the callable constructible from <computeroutput>std::function&lt;int()&gt;</computeroutput> </para>
</listitem><listitem><para>multi-condition task: the callable constructible from <computeroutput>std::function&lt;tf::SmallVector&lt;int&gt;()&gt;</computeroutput> </para>
</listitem><listitem><para>module task : the task constructed from <ref refid="classtf_1_1FlowBuilder_1ac6f22228d4c2ea2e643c4b0d42c0e92a" kindref="member">tf::Taskflow::composed_of</ref> <computeroutput>std::function&lt;void(tf::Runtime&amp;)&gt;</computeroutput> </para>
</listitem></orderedlist>
</para>
<para>Each task is a basic computation unit and is run by one worker thread from an executor. The following example creates a simple taskflow graph of four static tasks, <computeroutput>A</computeroutput>, <computeroutput>B</computeroutput>, <computeroutput>C</computeroutput>, and <computeroutput>D</computeroutput>, where <computeroutput>A</computeroutput> runs before <computeroutput>B</computeroutput> and <computeroutput>C</computeroutput> and <computeroutput>D</computeroutput> runs after <computeroutput>B</computeroutput> and <computeroutput>C</computeroutput>.</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal"><ref refid="classtf_1_1Executor" kindref="compound">tf::Executor</ref><sp/>executor;</highlight></codeline>
<codeline><highlight class="normal"><ref refid="classtf_1_1Taskflow" kindref="compound">tf::Taskflow</ref><sp/>taskflow(</highlight><highlight class="stringliteral">&quot;simple&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"><ref refid="classtf_1_1Task" kindref="compound">tf::Task</ref><sp/>A<sp/>=<sp/>taskflow.emplace([](){<sp/><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;TaskA\n&quot;</highlight><highlight class="normal">;<sp/>});</highlight></codeline>
<codeline><highlight class="normal"><ref refid="classtf_1_1Task" kindref="compound">tf::Task</ref><sp/>B<sp/>=<sp/>taskflow.emplace([](){<sp/><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;TaskB\n&quot;</highlight><highlight class="normal">;<sp/>});</highlight></codeline>
<codeline><highlight class="normal"><ref refid="classtf_1_1Task" kindref="compound">tf::Task</ref><sp/>C<sp/>=<sp/>taskflow.emplace([](){<sp/><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;TaskC\n&quot;</highlight><highlight class="normal">;<sp/>});</highlight></codeline>
<codeline><highlight class="normal"><ref refid="classtf_1_1Task" kindref="compound">tf::Task</ref><sp/>D<sp/>=<sp/>taskflow.emplace([](){<sp/><ref refid="cpp/io/basic_ostream" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;TaskD\n&quot;</highlight><highlight class="normal">;<sp/>});</highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal">A.<ref refid="classtf_1_1Task_1a8c78c453295a553c1c016e4062da8588" kindref="member">precede</ref>(B,<sp/>C);<sp/><sp/></highlight><highlight class="comment">//<sp/>A<sp/>runs<sp/>before<sp/>B<sp/>and<sp/>C</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal">D.<ref refid="classtf_1_1Task_1a331b1b726555072e7c7d10941257f664" kindref="member">succeed</ref>(B,<sp/>C);<sp/><sp/></highlight><highlight class="comment">//<sp/>D<sp/>runs<sp/>after<sp/><sp/>B<sp/>and<sp/>C</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal">executor.<ref refid="classtf_1_1Executor_1a8d08f0cb79e7b3780087975d13368a96" kindref="member">run</ref>(taskflow).wait();</highlight></codeline>
</programlisting></para>
<para>The taskflow object itself is NOT thread-safe. You should not modifying the graph while it is running, such as adding new tasks, adding new dependencies, and moving the taskflow to another. To minimize the overhead of task creation, our runtime leverages a global object pool to recycle tasks in a thread-safe manner.</para>
<para>Please refer to <ref refid="Cookbook" kindref="compound">Cookbook</ref> to learn more about each task type and how to submit a taskflow to an executor. </para>
    </detaileddescription>
    <inheritancegraph>
      <node id="2">
        <label>tf::FlowBuilder</label>
        <link refid="classtf_1_1FlowBuilder"/>
      </node>
      <node id="1">
        <label>tf::Taskflow</label>
        <link refid="classtf_1_1Taskflow"/>
        <childnode refid="2" relation="public-inheritance">
        </childnode>
      </node>
    </inheritancegraph>
    <collaborationgraph>
      <node id="2">
        <label>tf::FlowBuilder</label>
        <link refid="classtf_1_1FlowBuilder"/>
        <childnode refid="3" relation="usage">
          <edgelabel>_graph</edgelabel>
        </childnode>
      </node>
      <node id="4">
        <label>std::vector&lt; std::unique_ptr&lt; Node &gt; &gt;</label>
      </node>
      <node id="3">
        <label>tf::Graph</label>
        <link refid="classtf_1_1Graph"/>
        <childnode refid="4" relation="public-inheritance">
        </childnode>
      </node>
      <node id="1">
        <label>tf::Taskflow</label>
        <link refid="classtf_1_1Taskflow"/>
        <childnode refid="2" relation="public-inheritance">
        </childnode>
      </node>
    </collaborationgraph>
    <location file="taskflow/core/taskflow.hpp" line="67" column="1" bodyfile="taskflow/core/taskflow.hpp" bodystart="67" bodyend="301"/>
    <listofallmembers>
      <member refid="classtf_1_1Taskflow_1a34c956aeab7ae7e44add3538504ea9aa" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>_dump</name></member>
      <member refid="classtf_1_1Taskflow_1a22bd6faed11509c504c4a9cb8cb81fd6" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>_dump</name></member>
      <member refid="classtf_1_1Taskflow_1afdfa1f01d5471d3cddc39b3bae11c464" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>_dump</name></member>
      <member refid="classtf_1_1Taskflow_1a78a7df50a7d2aeacb7c5c6948f5dd94a" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>_graph</name></member>
      <member refid="classtf_1_1Taskflow_1aa4f464efc6b69669c093d6d5218150db" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>_mutex</name></member>
      <member refid="classtf_1_1Taskflow_1a5f4243689c241ccb5ca4316211d21a62" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>_name</name></member>
      <member refid="classtf_1_1Taskflow_1ad5d60317ed24250a1e1f919e65572d34" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>_satellite</name></member>
      <member refid="classtf_1_1Taskflow_1a7016553915989a1725addcf7d4e975bf" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>_topologies</name></member>
      <member refid="classtf_1_1Taskflow_1a1f00bbe72a1553c9656ecae4d98bb9af" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>clear</name></member>
      <member refid="classtf_1_1FlowBuilder_1ac6f22228d4c2ea2e643c4b0d42c0e92a" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>composed_of</name></member>
      <member refid="classtf_1_1Taskflow_1ac433018262e44b12c4cc9f0c4748d758" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>dump</name></member>
      <member refid="classtf_1_1Taskflow_1a9c4900da1831dce708664a06b3e3a3fb" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>dump</name></member>
      <member refid="classtf_1_1FlowBuilder_1a60d7a666cab71ecfa3010b2efb0d6b57" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>emplace</name></member>
      <member refid="classtf_1_1FlowBuilder_1a60d7a666cab71ecfa3010b2efb0d6b57" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>emplace</name></member>
      <member refid="classtf_1_1FlowBuilder_1a60d7a666cab71ecfa3010b2efb0d6b57" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>emplace</name></member>
      <member refid="classtf_1_1FlowBuilder_1a60d7a666cab71ecfa3010b2efb0d6b57" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>emplace</name></member>
      <member refid="classtf_1_1FlowBuilder_1a60d7a666cab71ecfa3010b2efb0d6b57" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>emplace</name></member>
      <member refid="classtf_1_1FlowBuilder_1a1f6118326ad434f6c839007a1a79fe1b" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>emplace</name></member>
      <member refid="classtf_1_1Taskflow_1a224301842d94c44fd7fe99d8ac2ba241" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>empty</name></member>
      <member refid="classtf_1_1FlowBuilder_1a5627f7962099ac7c4986993cffa7b909" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>erase</name></member>
      <member refid="classtf_1_1FlowBuilder_1a4e0d618d8eb0b3b2e5e00443a10bf512" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>exclusive_scan</name></member>
      <member refid="classtf_1_1Taskflow_1a763b2f90bc53f92d680a635fe28e858e" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>Executor</name></member>
      <member refid="classtf_1_1FlowBuilder_1a46a96f5889e6ac87b1ff8d6313b5f471" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>find_if</name></member>
      <member refid="classtf_1_1FlowBuilder_1a95fa2719fa7bbe7d171cf474ddb06726" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>find_if_not</name></member>
      <member refid="classtf_1_1Taskflow_1a61184f9bd9c801d0a5eccecfdbddc641" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>FlowBuilder</name></member>
      <member refid="classtf_1_1FlowBuilder_1a67d023d5493da1594a1d2eaea89da179" prot="public" virt="non-virtual" ambiguityscope="tf::FlowBuilder::"><scope>tf::Taskflow</scope><name>FlowBuilder</name></member>
      <member refid="classtf_1_1FlowBuilder_1aae3edfa278baa75b08414e083c14c836" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>for_each</name></member>
      <member refid="classtf_1_1FlowBuilder_1a3b132bd902331a11b04b4ad66cf8bf77" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>for_each_index</name></member>
      <member refid="classtf_1_1Taskflow_1a6350d0d6653ae9ae7b94c35e42fffe07" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>for_each_task</name></member>
      <member refid="classtf_1_1Taskflow_1a8da984d149b439e88468bf26e02ecf27" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>graph</name></member>
      <member refid="classtf_1_1FlowBuilder_1a1c2ace9290d83c2a006614a4d66ad588" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>inclusive_scan</name></member>
      <member refid="classtf_1_1FlowBuilder_1a0b589a5bbf9b18e6484fa9e554d39a39" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>inclusive_scan</name></member>
      <member refid="classtf_1_1FlowBuilder_1a90f3d9b9d6fcf4df8e7d7878dfdd130d" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>linearize</name></member>
      <member refid="classtf_1_1FlowBuilder_1a4ec89b554d15ad5fb96f4fdb10dbbb16" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>linearize</name></member>
      <member refid="classtf_1_1FlowBuilder_1a6be5d7f053a868647c3b9e0d9cdf6b68" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>max_element</name></member>
      <member refid="classtf_1_1FlowBuilder_1a6bf43eeaa81900084a472be1d36d46a6" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>min_element</name></member>
      <member refid="classtf_1_1Taskflow_1ad5706e5819aa01a63c4aa2e3485546b9" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>name</name></member>
      <member refid="classtf_1_1Taskflow_1a911edd95acc1322433bddfcfeaf2ccb0" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>name</name></member>
      <member refid="classtf_1_1Taskflow_1af4f03bca084deb5c2228ac8936d33649" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>num_tasks</name></member>
      <member refid="classtf_1_1Taskflow_1aa4957a41e63e1d1a6f77c540d70d04fa" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>operator=</name></member>
      <member refid="classtf_1_1FlowBuilder_1acab0b4ac82260f47fdb36a3244ee3aaf" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>placeholder</name></member>
      <member refid="classtf_1_1FlowBuilder_1afb24798ebf46e253a40b01bffb1da6a7" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>reduce</name></member>
      <member refid="classtf_1_1Taskflow_1a354a7673fabeaf3be66928ad6b573900" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>remove_dependency</name></member>
      <member refid="classtf_1_1FlowBuilder_1a35e180eb63de6c9f28e43185e837a4fa" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>sort</name></member>
      <member refid="classtf_1_1FlowBuilder_1a7d844e9856c7c65b26ccdb83ffdab1d6" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>sort</name></member>
      <member refid="classtf_1_1Taskflow_1aa48945297ede77a161defc88033ce8a6" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>Subflow</name></member>
      <member refid="classtf_1_1Taskflow_1a7242a74dcb16731b4e40816647b93305" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>Taskflow</name></member>
      <member refid="classtf_1_1Taskflow_1ade7fc641d136a3f8c96682c08040626a" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>Taskflow</name></member>
      <member refid="classtf_1_1Taskflow_1afd790de6db6d16ddf4729967c1edebb5" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>Taskflow</name></member>
      <member refid="classtf_1_1Taskflow_1acd2b8699ab7559c0da687cd775e2c778" prot="private" virt="non-virtual"><scope>tf::Taskflow</scope><name>Topology</name></member>
      <member refid="classtf_1_1FlowBuilder_1a97be7ceef6fa4276e3b074c10c13b826" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>transform</name></member>
      <member refid="classtf_1_1FlowBuilder_1a7ea96d3fa0aa9e3ff337a9f1e37682b0" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>transform</name></member>
      <member refid="classtf_1_1FlowBuilder_1a8549478ef819699b30f8daf88f04d577" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>transform_exclusive_scan</name></member>
      <member refid="classtf_1_1FlowBuilder_1a82f3c3f49a2d52cd52f6eac07a659e9c" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>transform_inclusive_scan</name></member>
      <member refid="classtf_1_1FlowBuilder_1a49f7e17d02c708035b9134d8c6c89f90" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>transform_inclusive_scan</name></member>
      <member refid="classtf_1_1FlowBuilder_1aa62d24438c0860e76153ffd129deba41" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>transform_reduce</name></member>
      <member refid="classtf_1_1FlowBuilder_1adcd90e5b46299f4ccab33caf46edcbc0" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>transform_reduce</name></member>
      <member refid="classtf_1_1Taskflow_1aa966a69493ecc8ecb9131ef3c5354b8e" prot="public" virt="non-virtual"><scope>tf::Taskflow</scope><name>~Taskflow</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
