<?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.6" xml:lang="en-US">
  <compounddef id="classtf_1_1Pipeflow" kind="class" language="C++" prot="public">
    <compoundname>tf::Pipeflow</compoundname>
    <includes refid="pipeline_8hpp" local="no">pipeline.hpp</includes>
      <sectiondef kind="friend">
      <memberdef kind="friend" id="classtf_1_1Pipeflow_1af65467c6cb27f4ef42522207f03ab9cf" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename...</type>
            <declname>Ps</declname>
            <defname>Ps</defname>
          </param>
        </templateparamlist>
        <type>class</type>
        <definition>friend class Pipeline</definition>
        <argsstring></argsstring>
        <name>Pipeline</name>
        <qualifiedname>tf::Pipeflow::Pipeline</qualifiedname>
        <param>
          <type><ref refid="classtf_1_1Pipeline" kindref="compound">Pipeline</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="105" column="16" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="105" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Pipeflow_1af64ddb98831b893b2388af2a2302acea" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename P</type>
          </param>
        </templateparamlist>
        <type>class</type>
        <definition>friend class ScalablePipeline</definition>
        <argsstring></argsstring>
        <name>ScalablePipeline</name>
        <qualifiedname>tf::Pipeflow::ScalablePipeline</qualifiedname>
        <param>
          <type><ref refid="classtf_1_1ScalablePipeline" kindref="compound">ScalablePipeline</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="108" column="16" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="108" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classtf_1_1Pipeflow_1a576c05629fadf8120eb4db27cf28e659" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename...</type>
            <declname>Ps</declname>
            <defname>Ps</defname>
          </param>
        </templateparamlist>
        <type>class</type>
        <definition>friend class DataPipeline</definition>
        <argsstring></argsstring>
        <name>DataPipeline</name>
        <qualifiedname>tf::Pipeflow::DataPipeline</qualifiedname>
        <param>
          <type><ref refid="classtf_1_1DataPipeline" kindref="compound">DataPipeline</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="111" column="16" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="111" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-attrib">
      <memberdef kind="variable" id="classtf_1_1Pipeflow_1a082a1a549ab50360c7e6e55a0fd4477f" prot="private" static="no" mutable="no">
        <type>size_t</type>
        <definition>size_t tf::Pipeflow::_line</definition>
        <argsstring></argsstring>
        <name>_line</name>
        <qualifiedname>tf::Pipeflow::_line</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="177" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="177" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Pipeflow_1a597744cac4ef0dd9e31e1d694f71f7ec" prot="private" static="no" mutable="no">
        <type>size_t</type>
        <definition>size_t tf::Pipeflow::_pipe</definition>
        <argsstring></argsstring>
        <name>_pipe</name>
        <qualifiedname>tf::Pipeflow::_pipe</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="178" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="178" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Pipeflow_1a16275ecab224bf1ede060d9e24b4eb48" prot="private" static="no" mutable="no">
        <type>size_t</type>
        <definition>size_t tf::Pipeflow::_token</definition>
        <argsstring></argsstring>
        <name>_token</name>
        <qualifiedname>tf::Pipeflow::_token</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="179" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="179" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Pipeflow_1a7474a98aa648d96011df53b085d53965" prot="private" static="no" mutable="no">
        <type>bool</type>
        <definition>bool tf::Pipeflow::_stop</definition>
        <argsstring></argsstring>
        <name>_stop</name>
        <qualifiedname>tf::Pipeflow::_stop</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="180" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="180" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Pipeflow_1a669318dadb120d96c277529670a02588" prot="private" static="no" mutable="no">
        <type>size_t</type>
        <definition>size_t tf::Pipeflow::_num_deferrals</definition>
        <argsstring></argsstring>
        <name>_num_deferrals</name>
        <qualifiedname>tf::Pipeflow::_num_deferrals</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="183" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="183" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1Pipeflow_1a444746d10472b56b8e6cb52fd35e3d84" prot="private" static="no" mutable="no">
        <type><ref refid="cpp/container/unordered_set" kindref="compound" external="/Users/twhuang/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::unordered_set</ref>&lt; size_t &gt;</type>
        <definition>std::unordered_set&lt;size_t&gt; tf::Pipeflow::_dependents</definition>
        <argsstring></argsstring>
        <name>_dependents</name>
        <qualifiedname>tf::Pipeflow::_dependents</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="184" column="22" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="184" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classtf_1_1Pipeflow_1a801877443f7046b9e450160c05c26d7d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>tf::Pipeflow::Pipeflow</definition>
        <argsstring>()=default</argsstring>
        <name>Pipeflow</name>
        <qualifiedname>tf::Pipeflow::Pipeflow</qualifiedname>
        <briefdescription>
<para>default constructor </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="118" column="3"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Pipeflow_1afee054e6a99965d4b3e36ff903227e6c" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Pipeflow::line</definition>
        <argsstring>() const</argsstring>
        <name>line</name>
        <qualifiedname>tf::Pipeflow::line</qualifiedname>
        <briefdescription>
<para>queries the line identifier of the present token </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="123" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="123" bodyend="125"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Pipeflow_1a4914c1f381a3016e98285b019cf60d6d" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Pipeflow::pipe</definition>
        <argsstring>() const</argsstring>
        <name>pipe</name>
        <qualifiedname>tf::Pipeflow::pipe</qualifiedname>
        <briefdescription>
<para>queries the pipe identifier of the present token </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="130" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="130" bodyend="132"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Pipeflow_1a295e5d884665c076f4ef5d78139f7c51" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Pipeflow::token</definition>
        <argsstring>() const</argsstring>
        <name>token</name>
        <qualifiedname>tf::Pipeflow::token</qualifiedname>
        <briefdescription>
<para>queries the token identifier </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="137" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="137" bodyend="139"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Pipeflow_1a830b7f204cb87fff17e8d424918d9453" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Pipeflow::stop</definition>
        <argsstring>()</argsstring>
        <name>stop</name>
        <qualifiedname>tf::Pipeflow::stop</qualifiedname>
        <briefdescription>
<para>stops the pipeline scheduling </para>
        </briefdescription>
        <detaileddescription>
<para>Only the first pipe can call this method to stop the pipeline. Calling stop from other pipes will throw exception. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="147" column="8" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="147" bodyend="152"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Pipeflow_1a2f909c75e15b6bdf83faf2c0b74c7a74" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t tf::Pipeflow::num_deferrals</definition>
        <argsstring>() const</argsstring>
        <name>num_deferrals</name>
        <qualifiedname>tf::Pipeflow::num_deferrals</qualifiedname>
        <briefdescription>
<para>queries the number of deferrals </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="157" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="157" bodyend="159"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1Pipeflow_1a5fbd2326b68a69826423bf0528a7c961" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::Pipeflow::defer</definition>
        <argsstring>(size_t token)</argsstring>
        <name>defer</name>
        <qualifiedname>tf::Pipeflow::defer</qualifiedname>
        <param>
          <type>size_t</type>
          <declname>token</declname>
        </param>
        <briefdescription>
<para>pushes token in _dependents </para>
        </briefdescription>
        <detaileddescription>
<para>Only the first pipe can call this method to defer the current scheduling token to the given token. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="167" column="8" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="167" bodyend="172"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>class to create a pipeflow object used by the pipe callable </para>
    </briefdescription>
    <detaileddescription>
<para><ref refid="classtf_1_1Pipeflow" kindref="compound">Pipeflow</ref> represents a <emphasis>scheduling token</emphasis> in the pipeline scheduling framework. A pipeflow is created by the pipeline scheduler at runtime to pass to the pipe callable. Users can query the present statistics of that scheduling token, including the line identifier, pipe identifier, and token identifier, and build their application algorithms based on these statistics. At the first stage, users can explicitly call the stop method to stop the pipeline scheduler.</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal"><ref refid="classtf_1_1Pipe" kindref="compound">tf::Pipe</ref>{<ref refid="namespacetf_1abb7a11e41fd457f69e7ff45d4c769564a7b804a28d6154ab8007287532037f1d0" kindref="member">tf::PipeType::SERIAL</ref>,<sp/>[](<ref refid="classtf_1_1Pipeflow" kindref="compound">tf::Pipeflow</ref>&amp;<sp/>pf){</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><ref refid="cpp/io/basic_ostream" kindref="compound" external="/Users/twhuang/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::cout</ref><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;token<sp/>id=&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>pf.token()</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>at<sp/>line=&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>pf.line()</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;<sp/>at<sp/>pipe=&quot;</highlight><highlight class="normal"><sp/>&lt;&lt;<sp/>pf.pipe()</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><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>
<para><ref refid="classtf_1_1Pipeflow" kindref="compound">Pipeflow</ref> can only be created privately by the <ref refid="classtf_1_1Pipeline" kindref="compound">tf::Pipeline</ref> and be used through the pipe callable. </para>
    </detaileddescription>
    <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" line="102" column="1" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/pipeline.hpp" bodystart="102" bodyend="186"/>
    <listofallmembers>
      <member refid="classtf_1_1Pipeflow_1a444746d10472b56b8e6cb52fd35e3d84" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>_dependents</name></member>
      <member refid="classtf_1_1Pipeflow_1a082a1a549ab50360c7e6e55a0fd4477f" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>_line</name></member>
      <member refid="classtf_1_1Pipeflow_1a669318dadb120d96c277529670a02588" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>_num_deferrals</name></member>
      <member refid="classtf_1_1Pipeflow_1a597744cac4ef0dd9e31e1d694f71f7ec" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>_pipe</name></member>
      <member refid="classtf_1_1Pipeflow_1a7474a98aa648d96011df53b085d53965" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>_stop</name></member>
      <member refid="classtf_1_1Pipeflow_1a16275ecab224bf1ede060d9e24b4eb48" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>_token</name></member>
      <member refid="classtf_1_1Pipeflow_1a576c05629fadf8120eb4db27cf28e659" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>DataPipeline</name></member>
      <member refid="classtf_1_1Pipeflow_1a5fbd2326b68a69826423bf0528a7c961" prot="public" virt="non-virtual"><scope>tf::Pipeflow</scope><name>defer</name></member>
      <member refid="classtf_1_1Pipeflow_1afee054e6a99965d4b3e36ff903227e6c" prot="public" virt="non-virtual"><scope>tf::Pipeflow</scope><name>line</name></member>
      <member refid="classtf_1_1Pipeflow_1a2f909c75e15b6bdf83faf2c0b74c7a74" prot="public" virt="non-virtual"><scope>tf::Pipeflow</scope><name>num_deferrals</name></member>
      <member refid="classtf_1_1Pipeflow_1a4914c1f381a3016e98285b019cf60d6d" prot="public" virt="non-virtual"><scope>tf::Pipeflow</scope><name>pipe</name></member>
      <member refid="classtf_1_1Pipeflow_1a801877443f7046b9e450160c05c26d7d" prot="public" virt="non-virtual"><scope>tf::Pipeflow</scope><name>Pipeflow</name></member>
      <member refid="classtf_1_1Pipeflow_1af65467c6cb27f4ef42522207f03ab9cf" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>Pipeline</name></member>
      <member refid="classtf_1_1Pipeflow_1af64ddb98831b893b2388af2a2302acea" prot="private" virt="non-virtual"><scope>tf::Pipeflow</scope><name>ScalablePipeline</name></member>
      <member refid="classtf_1_1Pipeflow_1a830b7f204cb87fff17e8d424918d9453" prot="public" virt="non-virtual"><scope>tf::Pipeflow</scope><name>stop</name></member>
      <member refid="classtf_1_1Pipeflow_1a295e5d884665c076f4ef5d78139f7c51" prot="public" virt="non-virtual"><scope>tf::Pipeflow</scope><name>token</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
