<?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_1Task" kind="class" language="C++" prot="public">
    <compoundname>tf::Task</compoundname>
    <includes refid="task_8hpp" local="no">taskflow/core/task.hpp</includes>
      <sectiondef kind="friend">
      <memberdef kind="friend" id="classtf_1_1Task_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/task.hpp" line="152" column="3" bodyfile="taskflow/core/task.hpp" bodystart="152" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Task_1af3d14e26ba8af9e6cc5a32aad8446de7" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>class</type>
        <definition>friend class Runtime</definition>
        <argsstring></argsstring>
        <name>Runtime</name>
        <param>
          <type><ref refid="classtf_1_1Runtime" kindref="compound">Runtime</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="153" column="3" bodyfile="taskflow/core/task.hpp" bodystart="153" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Task_1af043dd6f6a359602805d9c7dd7539cca" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>class</type>
        <definition>friend class Taskflow</definition>
        <argsstring></argsstring>
        <name>Taskflow</name>
        <param>
          <type><ref refid="classtf_1_1Taskflow" kindref="compound">Taskflow</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="154" column="3" bodyfile="taskflow/core/task.hpp" bodystart="154" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Task_1a0aa0e12e4a0ba023033e808fb2132fdf" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>class</type>
        <definition>friend class TaskView</definition>
        <argsstring></argsstring>
        <name>TaskView</name>
        <param>
          <type><ref refid="classtf_1_1TaskView" kindref="compound">TaskView</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="155" column="3" bodyfile="taskflow/core/task.hpp" bodystart="155" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Task_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/task.hpp" line="156" column="3" bodyfile="taskflow/core/task.hpp" bodystart="156" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-attrib">
      <memberdef kind="variable" id="classtf_1_1Task_1abff81069222d0f449e0b43136aea2f05" prot="private" static="no" mutable="no">
        <type>Node *</type>
        <definition>Node* tf::Task::_node</definition>
        <argsstring></argsstring>
        <name>_node</name>
        <initializer>{nullptr}</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="381" column="10" bodyfile="taskflow/core/task.hpp" bodystart="381" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classtf_1_1Task_1a5ed7ba63e8eeaa0f21fe08c80aa474ba" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>tf::Task::Task</definition>
        <argsstring>()=default</argsstring>
        <name>Task</name>
        <briefdescription>
<para>constructs an empty task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="163" column="5"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a53deffe60d7c758df4265aeb81063928" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>tf::Task::Task</definition>
        <argsstring>(const Task &amp;other)</argsstring>
        <name>Task</name>
        <param>
          <type>const <ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
          <declname>other</declname>
        </param>
        <briefdescription>
<para>constructs the task with the copy of the other task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="168" column="5" bodyfile="taskflow/core/task.hpp" bodystart="389" bodyend="390"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1aebdcc47e47a119f261daab673a971458" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::operator=</definition>
        <argsstring>(const Task &amp;)</argsstring>
        <name>operator=</name>
        <param>
          <type>const <ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
          <defname>rhs</defname>
        </param>
        <briefdescription>
<para>replaces the contents with a copy of the other task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="173" column="10" bodyfile="taskflow/core/task.hpp" bodystart="416" bodyend="419"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a4b0e3d6a1985a353626c15970c51c820" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::operator=</definition>
        <argsstring>(std::nullptr_t)</argsstring>
        <name>operator=</name>
        <param>
          <type><ref refid="cpp/types/nullptr_t" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::nullptr_t</ref></type>
          <defname>ptr</defname>
        </param>
        <briefdescription>
<para>replaces the contents with a null pointer </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="178" column="10" bodyfile="taskflow/core/task.hpp" bodystart="422" bodyend="425"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1ad87bb498b0a4eae0c375bc59b66dbba8" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>bool</type>
        <definition>bool tf::Task::operator==</definition>
        <argsstring>(const Task &amp;rhs) const</argsstring>
        <name>operator==</name>
        <param>
          <type>const <ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
          <declname>rhs</declname>
        </param>
        <briefdescription>
<para>compares if two tasks are associated with the same graph node </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="183" column="10" bodyfile="taskflow/core/task.hpp" bodystart="428" bodyend="430"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1af4e13636e3a494297b30c2b2e483f095" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>bool</type>
        <definition>bool tf::Task::operator!=</definition>
        <argsstring>(const Task &amp;rhs) const</argsstring>
        <name>operator!=</name>
        <param>
          <type>const <ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
          <declname>rhs</declname>
        </param>
        <briefdescription>
<para>compares if two tasks are not associated with the same graph node </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="188" column="10" bodyfile="taskflow/core/task.hpp" bodystart="433" bodyend="435"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a08ada0425b490997b6ff7f310107e5e3" 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::Task::name</definition>
        <argsstring>() const</argsstring>
        <name>name</name>
        <briefdescription>
<para>queries the name of the task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="193" column="23" bodyfile="taskflow/core/task.hpp" bodystart="502" bodyend="504"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a1a0afc89e8a6a416c511e74d82df135d" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Task::num_successors</definition>
        <argsstring>() const</argsstring>
        <name>num_successors</name>
        <briefdescription>
<para>queries the number of successors of the task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="198" column="12" bodyfile="taskflow/core/task.hpp" bodystart="522" bodyend="524"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a974dc1d738b62b829ad261beeafbd67c" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Task::num_dependents</definition>
        <argsstring>() const</argsstring>
        <name>num_dependents</name>
        <briefdescription>
<para>queries the number of predecessors of the task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="203" column="12" bodyfile="taskflow/core/task.hpp" bodystart="507" bodyend="509"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1ad49a92e8858c3c298bed0215e341b66b" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Task::num_strong_dependents</definition>
        <argsstring>() const</argsstring>
        <name>num_strong_dependents</name>
        <briefdescription>
<para>queries the number of strong dependents of the task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="208" column="12" bodyfile="taskflow/core/task.hpp" bodystart="512" bodyend="514"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1af3bf886291af7f39957d43d17083fe07" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Task::num_weak_dependents</definition>
        <argsstring>() const</argsstring>
        <name>num_weak_dependents</name>
        <briefdescription>
<para>queries the number of weak dependents of the task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="213" column="12" bodyfile="taskflow/core/task.hpp" bodystart="517" bodyend="519"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a9057ecd0f3833b717480e914f8568f02" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::name</definition>
        <argsstring>(const std::string &amp;name)</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>
          <declname>name</declname>
        </param>
        <briefdescription>
<para>assigns a name to the task </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>name</parametername>
</parameternamelist>
<parameterdescription>
<para>a <ulink url="https://en.cppreference.com/w/cpp/string/basic_string">std::string</ulink> acceptable string</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><computeroutput>*this</computeroutput> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="222" column="10" bodyfile="taskflow/core/task.hpp" bodystart="438" bodyend="441"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a2f6f4cec42d016e5eb89390f362ffe99" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename C</type>
          </param>
        </templateparamlist>
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::work</definition>
        <argsstring>(C &amp;&amp;callable)</argsstring>
        <name>work</name>
        <param>
          <type>C &amp;&amp;</type>
          <declname>callable</declname>
        </param>
        <briefdescription>
<para>assigns a callable </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>C</parametername>
</parameternamelist>
<parameterdescription>
<para>callable type</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>callable</parametername>
</parameternamelist>
<parameterdescription>
<para>callable to construct a task</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><computeroutput>*this</computeroutput> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="234" column="10" bodyfile="taskflow/core/task.hpp" bodystart="583" bodyend="604"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1ab38be520fe700cb4ca1f312308a95585" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename T</type>
          </param>
        </templateparamlist>
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::composed_of</definition>
        <argsstring>(T &amp;object)</argsstring>
        <name>composed_of</name>
        <param>
          <type>T &amp;</type>
          <declname>object</declname>
        </param>
        <briefdescription>
<para>creates a module task from a taskflow </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>T</parametername>
</parameternamelist>
<parameterdescription>
<para>object type </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>object</parametername>
</parameternamelist>
<parameterdescription>
<para>a custom object that defines <computeroutput>T::graph()</computeroutput> method</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><computeroutput>*this</computeroutput> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="245" column="10" bodyfile="taskflow/core/task.hpp" bodystart="410" bodyend="413"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a8c78c453295a553c1c016e4062da8588" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename...</type>
            <declname>Ts</declname>
            <defname>Ts</defname>
          </param>
        </templateparamlist>
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::precede</definition>
        <argsstring>(Ts &amp;&amp;... tasks)</argsstring>
        <name>precede</name>
        <param>
          <type>Ts &amp;&amp;...</type>
          <declname>tasks</declname>
        </param>
        <briefdescription>
<para>adds precedence links from this to other tasks </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>Ts</parametername>
</parameternamelist>
<parameterdescription>
<para>parameter pack</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>tasks</parametername>
</parameternamelist>
<parameterdescription>
<para>one or multiple tasks</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><computeroutput>*this</computeroutput> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="257" column="10" bodyfile="taskflow/core/task.hpp" bodystart="394" bodyend="398"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a331b1b726555072e7c7d10941257f664" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename...</type>
            <declname>Ts</declname>
            <defname>Ts</defname>
          </param>
        </templateparamlist>
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::succeed</definition>
        <argsstring>(Ts &amp;&amp;... tasks)</argsstring>
        <name>succeed</name>
        <param>
          <type>Ts &amp;&amp;...</type>
          <declname>tasks</declname>
        </param>
        <briefdescription>
<para>adds precedence links from other tasks to this </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>Ts</parametername>
</parameternamelist>
<parameterdescription>
<para>parameter pack</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>tasks</parametername>
</parameternamelist>
<parameterdescription>
<para>one or multiple tasks</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para><computeroutput>*this</computeroutput> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="269" column="10" bodyfile="taskflow/core/task.hpp" bodystart="402" bodyend="406"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a26709523eb112f2d024f4c0e9d2f0019" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::release</definition>
        <argsstring>(Semaphore &amp;semaphore)</argsstring>
        <name>release</name>
        <param>
          <type><ref refid="classtf_1_1Semaphore" kindref="compound">Semaphore</ref> &amp;</type>
          <declname>semaphore</declname>
        </param>
        <briefdescription>
<para>makes the task release this semaphore </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="274" column="10" bodyfile="taskflow/core/task.hpp" bodystart="468" bodyend="474"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a1c64e317dba24a8cf4f8da6123bc33af" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename I</type>
          </param>
        </templateparamlist>
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::release</definition>
        <argsstring>(I first, I last)</argsstring>
        <name>release</name>
        <param>
          <type>I</type>
          <declname>first</declname>
        </param>
        <param>
          <type>I</type>
          <declname>last</declname>
        </param>
        <briefdescription>
<para>makes the task release the given range of semaphores </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="280" column="10" bodyfile="taskflow/core/task.hpp" bodystart="478" bodyend="489"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a076ab9c6f3a0346e16cfb5fee7dc4ce8" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::acquire</definition>
        <argsstring>(Semaphore &amp;semaphore)</argsstring>
        <name>acquire</name>
        <param>
          <type><ref refid="classtf_1_1Semaphore" kindref="compound">Semaphore</ref> &amp;</type>
          <declname>semaphore</declname>
        </param>
        <briefdescription>
<para>makes the task acquire this semaphore </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="285" column="10" bodyfile="taskflow/core/task.hpp" bodystart="444" bodyend="450"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a39efdef7d401205115d10c3c2e76e456" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename I</type>
          </param>
        </templateparamlist>
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::acquire</definition>
        <argsstring>(I first, I last)</argsstring>
        <name>acquire</name>
        <param>
          <type>I</type>
          <declname>first</declname>
        </param>
        <param>
          <type>I</type>
          <declname>last</declname>
        </param>
        <briefdescription>
<para>makes the task acquire the given range of semaphores </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="291" column="10" bodyfile="taskflow/core/task.hpp" bodystart="454" bodyend="465"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1afd82ab6d6518d1142a72c4d2c97ff114" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classtf_1_1Task" kindref="compound">Task</ref> &amp;</type>
        <definition>Task &amp; tf::Task::data</definition>
        <argsstring>(void *data)</argsstring>
        <name>data</name>
        <param>
          <type>void *</type>
          <declname>data</declname>
        </param>
        <briefdescription>
<para>assigns pointer to user data </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>data</parametername>
</parameternamelist>
<parameterdescription>
<para>pointer to user data</para>
</parameterdescription>
</parameteritem>
</parameterlist>
The following example shows how to attach user data to a task and run the task iteratively while changing the data value:</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;attach<sp/>data<sp/>to<sp/>a<sp/>task&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classtf_1_1Task_1a320827cb70295a6fe2cc37691405409c" kindref="member">data</ref>;</highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>create<sp/>a<sp/>task<sp/>and<sp/>attach<sp/>it<sp/>the<sp/>data</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>A<sp/>=<sp/>taskflow.placeholder();</highlight></codeline>
<codeline><highlight class="normal">A.data(&amp;<ref refid="classtf_1_1Task_1a320827cb70295a6fe2cc37691405409c" kindref="member">data</ref>).work([A](){</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>d<sp/>=<sp/>*</highlight><highlight class="keyword">static_cast&lt;</highlight><highlight class="keywordtype">int</highlight><highlight class="normal">*</highlight><highlight class="keyword">&gt;</highlight><highlight class="normal">(A.data());</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/></highlight><highlight class="stringliteral">&quot;data<sp/>is<sp/>&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>d<sp/>&lt;&lt;<sp/><ref refid="cpp/io/manip/endl" kindref="compound" external="/home/thuang295/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::endl</ref>;</highlight></codeline>
<codeline><highlight class="normal">});</highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="comment">//<sp/>run<sp/>the<sp/>taskflow<sp/>iteratively<sp/>with<sp/>changing<sp/>data</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(<ref refid="classtf_1_1Task_1a320827cb70295a6fe2cc37691405409c" kindref="member">data</ref><sp/>=<sp/>0;<sp/><ref refid="classtf_1_1Task_1a320827cb70295a6fe2cc37691405409c" kindref="member">data</ref>&lt;10;<sp/><ref refid="classtf_1_1Task_1a320827cb70295a6fe2cc37691405409c" kindref="member">data</ref>++){</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/>executor.<ref refid="classtf_1_1Executor_1a8d08f0cb79e7b3780087975d13368a96" kindref="member">run</ref>(taskflow).wait();</highlight></codeline>
<codeline><highlight class="normal">}</highlight></codeline>
</programlisting></para>
<para><simplesect kind="return"><para><computeroutput>*this</computeroutput> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="322" column="10" bodyfile="taskflow/core/task.hpp" bodystart="612" bodyend="615"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a302f51ed717d0a4e99edc50f92a571f3" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Task::reset</definition>
        <argsstring>()</argsstring>
        <name>reset</name>
        <briefdescription>
<para>resets the task handle to null </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="327" column="10" bodyfile="taskflow/core/task.hpp" bodystart="492" bodyend="494"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1aec3ab712e12137542b7e4bc311ee9f20" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Task::reset_work</definition>
        <argsstring>()</argsstring>
        <name>reset_work</name>
        <briefdescription>
<para>resets the associated work to a placeholder </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="332" column="10" bodyfile="taskflow/core/task.hpp" bodystart="497" bodyend="499"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a8149edcf9ec2bfac18dd171f7a55ce06" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>bool</type>
        <definition>bool tf::Task::empty</definition>
        <argsstring>() const</argsstring>
        <name>empty</name>
        <briefdescription>
<para>queries if the task handle points to a task node </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="337" column="10" bodyfile="taskflow/core/task.hpp" bodystart="527" bodyend="529"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1afc4ecb89dd4e4645b3ec3fb7c1bb0ec5" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>bool</type>
        <definition>bool tf::Task::has_work</definition>
        <argsstring>() const</argsstring>
        <name>has_work</name>
        <briefdescription>
<para>queries if the task has a work assigned </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="342" column="10" bodyfile="taskflow/core/task.hpp" bodystart="532" bodyend="534"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1aff13a503d4a3c994eb08cb6f22e1b427" 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::Task::for_each_successor</definition>
        <argsstring>(V &amp;&amp;visitor) const</argsstring>
        <name>for_each_successor</name>
        <param>
          <type>V &amp;&amp;</type>
          <declname>visitor</declname>
        </param>
        <briefdescription>
<para>applies an visitor callable to each successor of the task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="348" column="10" bodyfile="taskflow/core/task.hpp" bodystart="554" bodyend="558"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a3bf68937662bf291637e4a763476b2e4" 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::Task::for_each_dependent</definition>
        <argsstring>(V &amp;&amp;visitor) const</argsstring>
        <name>for_each_dependent</name>
        <param>
          <type>V &amp;&amp;</type>
          <declname>visitor</declname>
        </param>
        <briefdescription>
<para>applies an visitor callable to each dependents of the task </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="354" column="10" bodyfile="taskflow/core/task.hpp" bodystart="562" bodyend="566"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a1c9301f2a330cc23ee18e8f61688141f" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Task::hash_value</definition>
        <argsstring>() const</argsstring>
        <name>hash_value</name>
        <briefdescription>
<para>obtains a hash value of the underlying node </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="359" column="12" bodyfile="taskflow/core/task.hpp" bodystart="569" bodyend="571"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1af2df95e6c8c5870c033d692e88af0bc2" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="namespacetf_1a1355048578785a80414707ff308b395a" kindref="member">TaskType</ref></type>
        <definition>TaskType tf::Task::type</definition>
        <argsstring>() const</argsstring>
        <name>type</name>
        <briefdescription>
<para>returns the task type </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="364" column="14" bodyfile="taskflow/core/task.hpp" bodystart="537" bodyend="550"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a3318a49ff9d0a01cd1e8ee675251e3b7" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Task::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 task through an output stream </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="369" column="10" bodyfile="taskflow/core/task.hpp" bodystart="574" bodyend="579"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Task_1a320827cb70295a6fe2cc37691405409c" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void *</type>
        <definition>void * tf::Task::data</definition>
        <argsstring>() const</argsstring>
        <name>data</name>
        <briefdescription>
<para>queries pointer to user data </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="374" column="10" bodyfile="taskflow/core/task.hpp" bodystart="607" bodyend="609"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-func">
      <memberdef kind="function" id="classtf_1_1Task_1a43d108a6cc0417cc470a00b5e95a65f5" prot="private" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>tf::Task::Task</definition>
        <argsstring>(Node *)</argsstring>
        <name>Task</name>
        <param>
          <type>Node *</type>
          <defname>node</defname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="taskflow/core/task.hpp" line="379" column="5" bodyfile="taskflow/core/task.hpp" bodystart="385" bodyend="386"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>class to create a task handle over a node in a taskflow graph </para>
    </briefdescription>
    <detaileddescription>
<para>A task is a wrapper over a node in a taskflow graph. It provides a set of methods for users to access and modify the attributes of the associated node in the taskflow graph. A task is very lightweight object (i.e., only storing a node pointer) that can be trivially copied around, and it does not own the lifetime of the associated node. </para>
    </detaileddescription>
    <location file="taskflow/core/task.hpp" line="150" column="1" bodyfile="taskflow/core/task.hpp" bodystart="150" bodyend="382"/>
    <listofallmembers>
      <member refid="classtf_1_1Task_1abff81069222d0f449e0b43136aea2f05" prot="private" virt="non-virtual"><scope>tf::Task</scope><name>_node</name></member>
      <member refid="classtf_1_1Task_1a076ab9c6f3a0346e16cfb5fee7dc4ce8" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>acquire</name></member>
      <member refid="classtf_1_1Task_1a39efdef7d401205115d10c3c2e76e456" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>acquire</name></member>
      <member refid="classtf_1_1Task_1ab38be520fe700cb4ca1f312308a95585" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>composed_of</name></member>
      <member refid="classtf_1_1Task_1afd82ab6d6518d1142a72c4d2c97ff114" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>data</name></member>
      <member refid="classtf_1_1Task_1a320827cb70295a6fe2cc37691405409c" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>data</name></member>
      <member refid="classtf_1_1Task_1a3318a49ff9d0a01cd1e8ee675251e3b7" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>dump</name></member>
      <member refid="classtf_1_1Task_1a8149edcf9ec2bfac18dd171f7a55ce06" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>empty</name></member>
      <member refid="classtf_1_1Task_1a763b2f90bc53f92d680a635fe28e858e" prot="private" virt="non-virtual"><scope>tf::Task</scope><name>Executor</name></member>
      <member refid="classtf_1_1Task_1a61184f9bd9c801d0a5eccecfdbddc641" prot="private" virt="non-virtual"><scope>tf::Task</scope><name>FlowBuilder</name></member>
      <member refid="classtf_1_1Task_1a3bf68937662bf291637e4a763476b2e4" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>for_each_dependent</name></member>
      <member refid="classtf_1_1Task_1aff13a503d4a3c994eb08cb6f22e1b427" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>for_each_successor</name></member>
      <member refid="classtf_1_1Task_1afc4ecb89dd4e4645b3ec3fb7c1bb0ec5" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>has_work</name></member>
      <member refid="classtf_1_1Task_1a1c9301f2a330cc23ee18e8f61688141f" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>hash_value</name></member>
      <member refid="classtf_1_1Task_1a08ada0425b490997b6ff7f310107e5e3" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>name</name></member>
      <member refid="classtf_1_1Task_1a9057ecd0f3833b717480e914f8568f02" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>name</name></member>
      <member refid="classtf_1_1Task_1a974dc1d738b62b829ad261beeafbd67c" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>num_dependents</name></member>
      <member refid="classtf_1_1Task_1ad49a92e8858c3c298bed0215e341b66b" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>num_strong_dependents</name></member>
      <member refid="classtf_1_1Task_1a1a0afc89e8a6a416c511e74d82df135d" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>num_successors</name></member>
      <member refid="classtf_1_1Task_1af3bf886291af7f39957d43d17083fe07" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>num_weak_dependents</name></member>
      <member refid="classtf_1_1Task_1af4e13636e3a494297b30c2b2e483f095" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>operator!=</name></member>
      <member refid="classtf_1_1Task_1aebdcc47e47a119f261daab673a971458" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>operator=</name></member>
      <member refid="classtf_1_1Task_1a4b0e3d6a1985a353626c15970c51c820" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>operator=</name></member>
      <member refid="classtf_1_1Task_1ad87bb498b0a4eae0c375bc59b66dbba8" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>operator==</name></member>
      <member refid="classtf_1_1Task_1a8c78c453295a553c1c016e4062da8588" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>precede</name></member>
      <member refid="classtf_1_1Task_1a26709523eb112f2d024f4c0e9d2f0019" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>release</name></member>
      <member refid="classtf_1_1Task_1a1c64e317dba24a8cf4f8da6123bc33af" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>release</name></member>
      <member refid="classtf_1_1Task_1a302f51ed717d0a4e99edc50f92a571f3" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>reset</name></member>
      <member refid="classtf_1_1Task_1aec3ab712e12137542b7e4bc311ee9f20" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>reset_work</name></member>
      <member refid="classtf_1_1Task_1af3d14e26ba8af9e6cc5a32aad8446de7" prot="private" virt="non-virtual"><scope>tf::Task</scope><name>Runtime</name></member>
      <member refid="classtf_1_1Task_1a331b1b726555072e7c7d10941257f664" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>succeed</name></member>
      <member refid="classtf_1_1Task_1a5ed7ba63e8eeaa0f21fe08c80aa474ba" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>Task</name></member>
      <member refid="classtf_1_1Task_1a53deffe60d7c758df4265aeb81063928" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>Task</name></member>
      <member refid="classtf_1_1Task_1a43d108a6cc0417cc470a00b5e95a65f5" prot="private" virt="non-virtual"><scope>tf::Task</scope><name>Task</name></member>
      <member refid="classtf_1_1Task_1af043dd6f6a359602805d9c7dd7539cca" prot="private" virt="non-virtual"><scope>tf::Task</scope><name>Taskflow</name></member>
      <member refid="classtf_1_1Task_1a0aa0e12e4a0ba023033e808fb2132fdf" prot="private" virt="non-virtual"><scope>tf::Task</scope><name>TaskView</name></member>
      <member refid="classtf_1_1Task_1af2df95e6c8c5870c033d692e88af0bc2" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>type</name></member>
      <member refid="classtf_1_1Task_1a2f6f4cec42d016e5eb89390f362ffe99" prot="public" virt="non-virtual"><scope>tf::Task</scope><name>work</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
