<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<tagfile doxygen_version="1.13.2">
  <compound kind="file">
    <name>version.hpp</name>
    <path>build/ion/src/include/ion/</path>
    <filename>version_8hpp.html</filename>
    <member kind="define">
      <type>#define</type>
      <name>ION_VERSION</name>
      <anchorfile>group__ion.html</anchorfile>
      <anchor>gafffe20fe20cc50ca97b6f02055b5f1b9</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>barrier.hpp</name>
    <path>ion/src/include/ion/</path>
    <filename>barrier_8hpp.html</filename>
    <class kind="class">ion::ArrivalToken</class>
    <class kind="class">ion::Barrier</class>
    <class kind="class">ion::FlexBarrier</class>
  </compound>
  <compound kind="file">
    <name>latch.hpp</name>
    <path>ion/src/include/ion/</path>
    <filename>latch_8hpp.html</filename>
    <class kind="class">ion::Latch</class>
  </compound>
  <compound kind="file">
    <name>signal.hpp</name>
    <path>ion/src/include/ion/</path>
    <filename>signal_8hpp.html</filename>
    <class kind="class">ion::SignalSource</class>
    <class kind="class">ion::SignalToken</class>
    <class kind="struct">ion::Status</class>
    <class kind="struct">ion::WaitAnyResult</class>
    <class kind="struct">ion::StatusTag</class>
    <class kind="struct">ion::DifferenceTag</class>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga900bfc681122dc91b7da4a4f17322352</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gae66324e0144a899e1b91441a5bfcc7ff</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga6044c1f7bcee9673b283031a75308de1</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga7ea7650418bbe18afb681a05ea4c1a6b</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1601990ad90432ffecbafa338569e573</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga2a103aa2f318803740cfe8f368d7bb9d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga4e15d7f7bb90118fb0b644c1d62483db</anchor>
      <arglist>(SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga8d2e3fd40ffa3c789072ed74a82d017e</anchor>
      <arglist>(StatusTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; Status&lt; T1 &gt;, Status&lt; T2 &gt; &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga18a0086c9a1d1f6c1b4c2c138e835c1d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="variable">
      <type>constexpr StatusTag</type>
      <name>status_tag</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gacb9de4f8af35974fb393e392064179b8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr DifferenceTag</type>
      <name>difference_tag</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gaafbf748779bbe3dae14eee447357010c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr StatusTag</type>
      <name>status_tag</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gacb9de4f8af35974fb393e392064179b8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr DifferenceTag</type>
      <name>difference_tag</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gaafbf748779bbe3dae14eee447357010c</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga900bfc681122dc91b7da4a4f17322352</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gae66324e0144a899e1b91441a5bfcc7ff</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga6044c1f7bcee9673b283031a75308de1</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga7ea7650418bbe18afb681a05ea4c1a6b</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1601990ad90432ffecbafa338569e573</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga2a103aa2f318803740cfe8f368d7bb9d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga4e15d7f7bb90118fb0b644c1d62483db</anchor>
      <arglist>(SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga8d2e3fd40ffa3c789072ed74a82d017e</anchor>
      <arglist>(StatusTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; Status&lt; T1 &gt;, Status&lt; T2 &gt; &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga18a0086c9a1d1f6c1b4c2c138e835c1d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>spinLock.hpp</name>
    <path>ion/src/include/ion/</path>
    <filename>spinLock_8hpp.html</filename>
    <class kind="class">ion::SpinLock</class>
  </compound>
  <compound kind="class">
    <name>ion::ArrivalToken</name>
    <filename>classion_1_1ArrivalToken.html</filename>
    <member kind="function" protection="protected">
      <type></type>
      <name>ArrivalToken</name>
      <anchorfile>classion_1_1ArrivalToken.html</anchorfile>
      <anchor>ac8f5f2011df8a556ce122598afc02039</anchor>
      <arglist>(std::uint64_t last, Expired expired)</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ion::Barrier</name>
    <filename>classion_1_1Barrier.html</filename>
    <templarg>class CompletionFunction</templarg>
    <member kind="function">
      <type>constexpr</type>
      <name>Barrier</name>
      <anchorfile>classion_1_1Barrier.html</anchorfile>
      <anchor>a16c5b3ef0027c46224146fd1ed19da03</anchor>
      <arglist>(std::ptrdiff_t expected, CompletionFunction func=CompletionFunction()) noexcept</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Arrive</name>
      <anchorfile>classion_1_1Barrier.html</anchorfile>
      <anchor>aa89256520d508721ae9e152b7b020ee0</anchor>
      <arglist>(std::ptrdiff_t n=1) noexcept -&gt; ArrivalToken</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Wait</name>
      <anchorfile>classion_1_1Barrier.html</anchorfile>
      <anchor>a586557fc4dd9324c3a91fb619f45ca68</anchor>
      <arglist>(ArrivalToken &amp;&amp;token) const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>ArriveAndWait</name>
      <anchorfile>classion_1_1Barrier.html</anchorfile>
      <anchor>a3568f0976bc29eb98481baff1cea2fc4</anchor>
      <arglist>(std::ptrdiff_t n=1) noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>ArriveAndDrop</name>
      <anchorfile>classion_1_1Barrier.html</anchorfile>
      <anchor>a42bd6d47543c8461b2c9f4896ad177ad</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static constexpr auto</type>
      <name>Max</name>
      <anchorfile>classion_1_1Barrier.html</anchorfile>
      <anchor>a7cf1c6fc30c061f8f43457eded972823</anchor>
      <arglist>() noexcept -&gt; std::ptrdiff_t</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ion::DifferenceTag</name>
    <filename>struction_1_1DifferenceTag.html</filename>
  </compound>
  <compound kind="class">
    <name>ion::FlexBarrier</name>
    <filename>classion_1_1FlexBarrier.html</filename>
    <templarg>class CompletionFunction</templarg>
    <member kind="function">
      <type>constexpr</type>
      <name>FlexBarrier</name>
      <anchorfile>classion_1_1FlexBarrier.html</anchorfile>
      <anchor>a7e040d55d0cda75f352e618401f0504f</anchor>
      <arglist>(std::uint32_t expected, CompletionFunction func=CompletionFunction()) noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>ArriveAndWait</name>
      <anchorfile>classion_1_1FlexBarrier.html</anchorfile>
      <anchor>a4d45ba56fb27b652efd4c23c6771becd</anchor>
      <arglist>(InvokePolicy policy, std::uint32_t n=1u, WaitFunction &amp;&amp;wait=WaitFunction()) noexcept</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static constexpr auto</type>
      <name>Max</name>
      <anchorfile>classion_1_1FlexBarrier.html</anchorfile>
      <anchor>a67f73b837cd5298ce196b250bdc0ad76</anchor>
      <arglist>() noexcept -&gt; std::uint32_t</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ion::Latch</name>
    <filename>classion_1_1Latch.html</filename>
    <member kind="function">
      <type>constexpr</type>
      <name>Latch</name>
      <anchorfile>classion_1_1Latch.html</anchorfile>
      <anchor>a8ef9786ee316ee0115c8db8c04d38aa7</anchor>
      <arglist>(std::ptrdiff_t expected) noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CountDown</name>
      <anchorfile>classion_1_1Latch.html</anchorfile>
      <anchor>a06f96091df08bbde1be78908936c41f0</anchor>
      <arglist>(std::ptrdiff_t n=1) noexcept</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>TryWait</name>
      <anchorfile>classion_1_1Latch.html</anchorfile>
      <anchor>a36a6e4cb30d14ac082586dc32f1520eb</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Wait</name>
      <anchorfile>classion_1_1Latch.html</anchorfile>
      <anchor>a9562cfbb3451783113360bc1be20589b</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>ArriveAndWait</name>
      <anchorfile>classion_1_1Latch.html</anchorfile>
      <anchor>a6f60130656a180c7c13a919e7feba6fa</anchor>
      <arglist>(std::ptrdiff_t n=1) noexcept</arglist>
    </member>
    <member kind="function" static="yes">
      <type>static constexpr std::ptrdiff_t</type>
      <name>Max</name>
      <anchorfile>classion_1_1Latch.html</anchorfile>
      <anchor>a235ac002e039cf60f8e538f79fc25ee4</anchor>
      <arglist>() noexcept</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ion::SignalSource</name>
    <filename>classion_1_1SignalSource.html</filename>
    <templarg>class T</templarg>
    <member kind="function">
      <type></type>
      <name>SignalSource</name>
      <anchorfile>classion_1_1SignalSource.html</anchorfile>
      <anchor>a48d0f75502a234f64094f148e7e8bfa2</anchor>
      <arglist>(ValueType initial=ValueType{}) noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>SignalSource</name>
      <anchorfile>classion_1_1SignalSource.html</anchorfile>
      <anchor>a259613ef98a063d96e1cc6ee2a74eaec</anchor>
      <arglist>(SignalSource const &amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Load</name>
      <anchorfile>classion_1_1SignalSource.html</anchorfile>
      <anchor>a1300faa1497bb065cb4e06effd51ac1f</anchor>
      <arglist>() const noexcept -&gt; ValueType</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Store</name>
      <anchorfile>classion_1_1SignalSource.html</anchorfile>
      <anchor>a7ea65dc8feb6e989ecd5bc8f78d625c6</anchor>
      <arglist>(ValueType value) noexcept</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>CompareExchangeWeak</name>
      <anchorfile>classion_1_1SignalSource.html</anchorfile>
      <anchor>aefee878e9c886a2ff9eee99f4c3129ac</anchor>
      <arglist>(ValueType &amp;expected, ValueType desired) noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>CompareExchangeStrong</name>
      <anchorfile>classion_1_1SignalSource.html</anchorfile>
      <anchor>af9fe78aeddad434653a8b9a7a823995e</anchor>
      <arglist>(ValueType &amp;expected, ValueType desired) noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>CompareExchangeTransform</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga5f8f864937d9b1c87aee3dc456971b9d</anchor>
      <arglist>(SignalSource&lt; T &gt; &amp;signal, UnaryOperation op) noexcept -&gt; T</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ion::SignalToken</name>
    <filename>classion_1_1SignalToken.html</filename>
    <templarg>class T</templarg>
    <member kind="function">
      <type></type>
      <name>SignalToken</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>abc3a28abb2c998c29486f2bb48321ef3</anchor>
      <arglist>() noexcept=default</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>SignalToken</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>ae59211f2e17d2b1bbcdf95c55df9806b</anchor>
      <arglist>(SignalSource&lt; T &gt; const *signal, std::optional&lt; ValueType &gt; last=std::nullopt) noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>SignalToken</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>ae5587c3f642488bc6f0fe6b09f89d25a</anchor>
      <arglist>(SignalToken &amp;&amp;other) noexcept</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>operator=</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>aee0b580c996efe7b934bbed893fa49ff</anchor>
      <arglist>(SignalToken &amp;&amp;other) noexcept -&gt; SignalToken &amp;</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>IsValid</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>ae0dc5ea76d1adc7433bb38d84c27d255</anchor>
      <arglist>() const noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Load</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>a12056cde638ea89ccaa031055d3aef00</anchor>
      <arglist>() const noexcept -&gt; ValueType</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>GetSource</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>af6435d5816a7395528bb764d129ea62e</anchor>
      <arglist>() const -&gt; SignalSource&lt; ValueType &gt; const *</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>GetLast</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>ae32b3a2e47e961fcdbdbb02d497d0746</anchor>
      <arglist>() const noexcept -&gt; ValueType</arglist>
    </member>
    <member kind="function">
      <type>constexpr void</type>
      <name>SetLast</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>aac9b9d311ca927a6ecf073dd1d4f2f02</anchor>
      <arglist>(ValueType last) noexcept</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Update</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>a9c1023a69b611bf591eaa387cc58d39d</anchor>
      <arglist>() noexcept -&gt; ValueType</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>operator==</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga728d42045c2288a0a4eb56804a28f0d1</anchor>
      <arglist>(SignalToken&lt; T &gt; const &amp;lhs, SignalToken&lt; T &gt; const &amp;rhs) noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>operator!=</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1605b40a132b9087a4612f13a57fa403</anchor>
      <arglist>(SignalToken&lt; T &gt; const &amp;lhs, SignalToken&lt; T &gt; const &amp;rhs) noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga900bfc681122dc91b7da4a4f17322352</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gae66324e0144a899e1b91441a5bfcc7ff</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga6044c1f7bcee9673b283031a75308de1</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga7ea7650418bbe18afb681a05ea4c1a6b</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1601990ad90432ffecbafa338569e573</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga2a103aa2f318803740cfe8f368d7bb9d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga4e15d7f7bb90118fb0b644c1d62483db</anchor>
      <arglist>(SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga8d2e3fd40ffa3c789072ed74a82d017e</anchor>
      <arglist>(StatusTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; Status&lt; T1 &gt;, Status&lt; T2 &gt; &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga18a0086c9a1d1f6c1b4c2c138e835c1d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>SignalToken</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>abc3a28abb2c998c29486f2bb48321ef3</anchor>
      <arglist>() noexcept=default</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>SignalToken</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>ae59211f2e17d2b1bbcdf95c55df9806b</anchor>
      <arglist>(SignalSource&lt; T &gt; const *signal, std::optional&lt; ValueType &gt; last=std::nullopt) noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>SignalToken</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>ae5587c3f642488bc6f0fe6b09f89d25a</anchor>
      <arglist>(SignalToken &amp;&amp;other) noexcept</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>operator=</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>aee0b580c996efe7b934bbed893fa49ff</anchor>
      <arglist>(SignalToken &amp;&amp;other) noexcept -&gt; SignalToken &amp;</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>IsValid</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>ae0dc5ea76d1adc7433bb38d84c27d255</anchor>
      <arglist>() const noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Load</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>a12056cde638ea89ccaa031055d3aef00</anchor>
      <arglist>() const noexcept -&gt; ValueType</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>GetSource</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>af6435d5816a7395528bb764d129ea62e</anchor>
      <arglist>() const -&gt; SignalSource&lt; ValueType &gt; const *</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>GetLast</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>ae32b3a2e47e961fcdbdbb02d497d0746</anchor>
      <arglist>() const noexcept -&gt; ValueType</arglist>
    </member>
    <member kind="function">
      <type>constexpr void</type>
      <name>SetLast</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>aac9b9d311ca927a6ecf073dd1d4f2f02</anchor>
      <arglist>(ValueType last) noexcept</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Update</name>
      <anchorfile>classion_1_1SignalToken.html</anchorfile>
      <anchor>a9c1023a69b611bf591eaa387cc58d39d</anchor>
      <arglist>() noexcept -&gt; ValueType</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga900bfc681122dc91b7da4a4f17322352</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gae66324e0144a899e1b91441a5bfcc7ff</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga6044c1f7bcee9673b283031a75308de1</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga7ea7650418bbe18afb681a05ea4c1a6b</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1601990ad90432ffecbafa338569e573</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga2a103aa2f318803740cfe8f368d7bb9d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga4e15d7f7bb90118fb0b644c1d62483db</anchor>
      <arglist>(SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga8d2e3fd40ffa3c789072ed74a82d017e</anchor>
      <arglist>(StatusTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; Status&lt; T1 &gt;, Status&lt; T2 &gt; &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga18a0086c9a1d1f6c1b4c2c138e835c1d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ion::SpinLock</name>
    <filename>classion_1_1SpinLock.html</filename>
    <member kind="function">
      <type>void</type>
      <name>lock</name>
      <anchorfile>classion_1_1SpinLock.html</anchorfile>
      <anchor>ad754fb26c1619f6c661516834c23e932</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>ION_FORCE_INLINE bool</type>
      <name>try_lock</name>
      <anchorfile>classion_1_1SpinLock.html</anchorfile>
      <anchor>a980af34bee63a0aebf51827fd531c8cf</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>unlock</name>
      <anchorfile>classion_1_1SpinLock.html</anchorfile>
      <anchor>aeaa8fc3db069b823be898813a8a13500</anchor>
      <arglist>() noexcept</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ion::Status</name>
    <filename>struction_1_1Status.html</filename>
    <templarg>class T</templarg>
  </compound>
  <compound kind="struct">
    <name>ion::StatusTag</name>
    <filename>struction_1_1StatusTag.html</filename>
  </compound>
  <compound kind="struct">
    <name>ion::WaitAnyResult</name>
    <filename>struction_1_1WaitAnyResult.html</filename>
    <templarg>class T1</templarg>
    <templarg>class T2</templarg>
    <member kind="variable">
      <type>std::size_t</type>
      <name>index</name>
      <anchorfile>struction_1_1WaitAnyResult.html</anchorfile>
      <anchor>acf8e5c8f806b1a895589ba748fce125a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::tuple&lt; T1, T2 &gt;</type>
      <name>result</name>
      <anchorfile>struction_1_1WaitAnyResult.html</anchorfile>
      <anchor>a3f3662a32d14a9726ac0977bb00215f8</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="group">
    <name>ion</name>
    <title>ion</title>
    <filename>group__ion.html</filename>
    <subgroup>ion_barriers</subgroup>
    <subgroup>ion_chrono</subgroup>
    <subgroup>ion_signals</subgroup>
    <subgroup>ion_locks</subgroup>
    <file>version.hpp</file>
    <member kind="define">
      <type>#define</type>
      <name>ION_VERSION</name>
      <anchorfile>group__ion.html</anchorfile>
      <anchor>gafffe20fe20cc50ca97b6f02055b5f1b9</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="group">
    <name>ion_barriers</name>
    <title>Barriers</title>
    <filename>group__ion__barriers.html</filename>
    <file>barrier.hpp</file>
    <file>latch.hpp</file>
    <class kind="class">ion::ArrivalToken</class>
    <class kind="class">ion::Barrier</class>
    <class kind="class">ion::FlexBarrier</class>
    <class kind="class">ion::Latch</class>
    <member kind="enumeration">
      <type></type>
      <name>ion::InvokePolicy</name>
      <anchorfile>group__ion__barriers.html</anchorfile>
      <anchor>ga24ac24c4f5778c268e1378eacb74eef9</anchor>
      <arglist></arglist>
      <enumvalue file="group__ion__barriers.html" anchor="gga24ac24c4f5778c268e1378eacb74eef9abb5fe5cd9c8c778e81b05ef53c166612">Allowed</enumvalue>
      <enumvalue file="group__ion__barriers.html" anchor="gga24ac24c4f5778c268e1378eacb74eef9ade99ae8770699a4725a85853a0790d24">Disallowed</enumvalue>
    </member>
  </compound>
  <compound kind="group">
    <name>ion_chrono</name>
    <title>Time utilities</title>
    <filename>group__ion__chrono.html</filename>
  </compound>
  <compound kind="group">
    <name>ion_signals</name>
    <title>Signals</title>
    <filename>group__ion__signals.html</filename>
    <file>signal.hpp</file>
    <class kind="class">ion::SignalSource</class>
    <class kind="class">ion::SignalToken</class>
    <class kind="struct">ion::Status</class>
    <class kind="struct">ion::WaitAnyResult</class>
    <class kind="struct">ion::StatusTag</class>
    <class kind="struct">ion::DifferenceTag</class>
    <member kind="function">
      <type>auto</type>
      <name>ion::CompareExchangeTransform</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga5f8f864937d9b1c87aee3dc456971b9d</anchor>
      <arglist>(SignalSource&lt; T &gt; &amp;signal, UnaryOperation op) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>ion::operator==</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga728d42045c2288a0a4eb56804a28f0d1</anchor>
      <arglist>(SignalToken&lt; T &gt; const &amp;lhs, SignalToken&lt; T &gt; const &amp;rhs) noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>ion::operator!=</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1605b40a132b9087a4612f13a57fa403</anchor>
      <arglist>(SignalToken&lt; T &gt; const &amp;lhs, SignalToken&lt; T &gt; const &amp;rhs) noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalSource::CompareExchangeTransform</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga5f8f864937d9b1c87aee3dc456971b9d</anchor>
      <arglist>(SignalSource&lt; T &gt; &amp;signal, UnaryOperation op) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>ion::SignalToken::operator==</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga728d42045c2288a0a4eb56804a28f0d1</anchor>
      <arglist>(SignalToken&lt; T &gt; const &amp;lhs, SignalToken&lt; T &gt; const &amp;rhs) noexcept -&gt; bool</arglist>
    </member>
    <member kind="function">
      <type>constexpr auto</type>
      <name>ion::SignalToken::operator!=</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1605b40a132b9087a4612f13a57fa403</anchor>
      <arglist>(SignalToken&lt; T &gt; const &amp;lhs, SignalToken&lt; T &gt; const &amp;rhs) noexcept -&gt; bool</arglist>
    </member>
    <member kind="variable">
      <type>constexpr StatusTag</type>
      <name>ion::status_tag</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gacb9de4f8af35974fb393e392064179b8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>constexpr DifferenceTag</type>
      <name>ion::difference_tag</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gaafbf748779bbe3dae14eee447357010c</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga900bfc681122dc91b7da4a4f17322352</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gae66324e0144a899e1b91441a5bfcc7ff</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga900bfc681122dc91b7da4a4f17322352</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>gae66324e0144a899e1b91441a5bfcc7ff</anchor>
      <arglist>(SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga6044c1f7bcee9673b283031a75308de1</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga7ea7650418bbe18afb681a05ea4c1a6b</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga6044c1f7bcee9673b283031a75308de1</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga7ea7650418bbe18afb681a05ea4c1a6b</anchor>
      <arglist>(StatusTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; Status&lt; T &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1601990ad90432ffecbafa338569e573</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga2a103aa2f318803740cfe8f368d7bb9d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga1601990ad90432ffecbafa338569e573</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::Wait</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga2a103aa2f318803740cfe8f368d7bb9d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T &gt; &amp;token, Predicate &amp;&amp;stop_waiting) noexcept -&gt; T</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga4e15d7f7bb90118fb0b644c1d62483db</anchor>
      <arglist>(SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga8d2e3fd40ffa3c789072ed74a82d017e</anchor>
      <arglist>(StatusTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; Status&lt; T1 &gt;, Status&lt; T2 &gt; &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga18a0086c9a1d1f6c1b4c2c138e835c1d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga4e15d7f7bb90118fb0b644c1d62483db</anchor>
      <arglist>(SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga8d2e3fd40ffa3c789072ed74a82d017e</anchor>
      <arglist>(StatusTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; Status&lt; T1 &gt;, Status&lt; T2 &gt; &gt;</arglist>
    </member>
    <member kind="function">
      <type>auto</type>
      <name>ion::SignalToken::WaitAny</name>
      <anchorfile>group__ion__signals.html</anchorfile>
      <anchor>ga18a0086c9a1d1f6c1b4c2c138e835c1d</anchor>
      <arglist>(DifferenceTag, SignalToken&lt; T1 &gt; &amp;token1, SignalToken&lt; T2 &gt; &amp;token2) noexcept -&gt; WaitAnyResult&lt; T1, T2 &gt;</arglist>
    </member>
  </compound>
  <compound kind="group">
    <name>ion_locks</name>
    <title>Locks</title>
    <filename>group__ion__locks.html</filename>
    <file>spinLock.hpp</file>
    <class kind="class">ion::SpinLock</class>
  </compound>
  <compound kind="page">
    <name>md_README</name>
    <title>README</title>
    <filename>md_README.html</filename>
    <docanchor file="md_README.html" title="ion">mainpage</docanchor>
  </compound>
</tagfile>
