<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<tagfile doxygen_version="1.13.2">
  <compound kind="file">
    <name>version.hpp</name>
    <path>build/perfc/src/include/perfc/</path>
    <filename>version_8hpp.html</filename>
    <member kind="define">
      <type>#define</type>
      <name>PERFC_VERSION</name>
      <anchorfile>group__perfc.html</anchorfile>
      <anchor>ga8529c41ff37411ae27c96507a0ad890f</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>counter.hpp</name>
    <path>perfc/src/include/perfc/</path>
    <filename>counter_8hpp.html</filename>
    <class kind="struct">perfc::Timestamped</class>
    <class kind="class">perfc::Counter&lt; T, void, typename std::enable_if&lt; std::is_integral&lt; T &gt;::value &gt;::type &gt;</class>
    <class kind="class">perfc::Counter&lt; T, void, typename std::enable_if&lt;!std::is_integral&lt; T &gt;::value &gt;::type &gt;</class>
    <class kind="class">perfc::Counter&lt; T, Clock, typename std::enable_if&lt;!std::is_void&lt; Clock &gt;::value &gt;::type &gt;</class>
    <namespace>perfc</namespace>
    <member kind="typedef">
      <type>Counter&lt; double, std::chrono::steady_clock &gt;</type>
      <name>CounterDoubleTs</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac1be72d212c53c91fc3e1f79c574912d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, std::chrono::steady_clock &gt;</type>
      <name>CounterU64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaac3556b2ff63f9b46606b2365eee9d34</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, std::chrono::steady_clock &gt;</type>
      <name>CounterI64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaf3453ecd9dc2956e891cc2c9198ee9ae</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; double, void &gt;</type>
      <name>CounterDouble</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga8591cbbd6ed134401d5ce95a882eb044</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, void &gt;</type>
      <name>CounterU64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac0038ef700e52dc51c32a23dfdfb791b</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, void &gt;</type>
      <name>CounterI64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gab00d9571fc6ffe2225459438c0492efc</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CounterAcquire</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gacf578efa76429ef1c953a6faf388d902</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CounterRelease</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga273cb29cc86359f1dd5bd15d9d888fca</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; double, std::chrono::steady_clock &gt;</type>
      <name>CounterDoubleTs</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac1be72d212c53c91fc3e1f79c574912d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, std::chrono::steady_clock &gt;</type>
      <name>CounterU64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaac3556b2ff63f9b46606b2365eee9d34</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, std::chrono::steady_clock &gt;</type>
      <name>CounterI64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaf3453ecd9dc2956e891cc2c9198ee9ae</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; double, void &gt;</type>
      <name>CounterDouble</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga8591cbbd6ed134401d5ce95a882eb044</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, void &gt;</type>
      <name>CounterU64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac0038ef700e52dc51c32a23dfdfb791b</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, void &gt;</type>
      <name>CounterI64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gab00d9571fc6ffe2225459438c0492efc</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CounterAcquire</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gacf578efa76429ef1c953a6faf388d902</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CounterRelease</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga273cb29cc86359f1dd5bd15d9d888fca</anchor>
      <arglist>() noexcept</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>perfc.hpp</name>
    <path>perfc/src/include/perfc/</path>
    <filename>perfc_8hpp.html</filename>
    <includes id="counter_8hpp" name="counter.hpp" local="no" import="no" module="no" objc="no">perfc/counter.hpp</includes>
    <includes id="register_8hpp" name="register.hpp" local="no" import="no" module="no" objc="no">perfc/register.hpp</includes>
  </compound>
  <compound kind="file">
    <name>register.hpp</name>
    <path>perfc/src/include/perfc/</path>
    <filename>register_8hpp.html</filename>
    <class kind="struct">perfc::CounterTypes</class>
    <class kind="class">perfc::Locked</class>
    <class kind="class">perfc::ScopedRegistration</class>
    <class kind="class">perfc::Register</class>
    <class kind="struct">perfc::Register::Entry</class>
    <namespace>perfc</namespace>
  </compound>
  <compound kind="class">
    <name>perfc::Counter</name>
    <filename>classperfc_1_1Counter.html</filename>
    <templarg>class T</templarg>
    <templarg>class Clock</templarg>
    <templarg>class</templarg>
    <member kind="enumeration">
      <type></type>
      <name>MemoryOrder</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga734a1017d1dea4364ac2de74bb0ed224</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>perfc::Counter&lt; T, Clock, typename std::enable_if&lt;!std::is_void&lt; Clock &gt;::value &gt;::type &gt;</name>
    <filename>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</filename>
    <templarg>class T</templarg>
    <templarg>class Clock</templarg>
    <member kind="typedef">
      <type>Clock</type>
      <name>ClockType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a6874d0c93e58e1dac5931426d94b3262</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>typename ClockType::time_point</type>
      <name>TimePointType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a5a5ecb4533d117b46b5a4c93ad76ed7d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Timestamped&lt; T, TimePointType &gt;</type>
      <name>ValueType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>ac6dd31da9b7e4b44814bebf454f79c7f</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::atomic&lt; ValueType &gt;</type>
      <name>CounterType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a6d16dc6b2e2fa209015882ea7a2b4965</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a3ad3da2840247398993cf33544dc16e4</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>ae9d7c237ff787a13ad5821354f3c6719</anchor>
      <arglist>(T value) noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a545523fe85462cac2678c5c29abfa311</anchor>
      <arglist>(ValueType value) noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a822838304bf727a47d9f581143068cb1</anchor>
      <arglist>(Counter const &amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>IsLockFree</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a265b2f77c086578a6a8c571c0d4126cc</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Store</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a347924e84a2ffffcfc2e18673bd29f3a</anchor>
      <arglist>(T value, MemoryOrder order=MemoryOrder::Release) noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Store</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a06981e3f15e91f8571ba9f375e9b42fe</anchor>
      <arglist>(ValueType value, MemoryOrder order=MemoryOrder::Release) noexcept</arglist>
    </member>
    <member kind="function">
      <type>ValueType</type>
      <name>Load</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a0e3e10210b7d903d5322e7859484532a</anchor>
      <arglist>(MemoryOrder order=MemoryOrder::Acquire) const noexcept</arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static constexpr bool</type>
      <name>IS_ALWAYS_LOCK_FREE</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html</anchorfile>
      <anchor>a8a8eb6dbe593d31d360581ff3741e8a4</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>MemoryOrder</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga734a1017d1dea4364ac2de74bb0ed224</anchor>
      <arglist></arglist>
    </member>
    <docanchor file="classperfc_1_1Counter_3_01T_00_01Clock_00_01typename_01std_1_1enable__if_3_9std_1_1is__void_3_01ded3e3f5695ab44199e4a4b489d26d95.html">counter_clock</docanchor>
  </compound>
  <compound kind="class">
    <name>perfc::Counter&lt; T, void, typename std::enable_if&lt; std::is_integral&lt; T &gt;::value &gt;::type &gt;</name>
    <filename>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</filename>
    <templarg>class T</templarg>
    <member kind="typedef">
      <type>void</type>
      <name>ClockType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a7f8a52c2a49ac51bcb8a010efbc7aedb</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>void</type>
      <name>TimePointType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a95ffdd3530a400a643e5f69bfce4ef7b</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>T</type>
      <name>ValueType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>ac6bd738b2ff5a4fa284b0f9ec89cccb6</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::atomic&lt; T &gt;</type>
      <name>CounterType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a4fcabaa5cbe1c3849d6691c7d5a8e7be</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a82248450984f56ad68757f3307c28fb7</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>ab1042fcab56b8c6298874b3601c49d15</anchor>
      <arglist>(T value) noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>ac00cc17c09966c69b989715efed90afe</anchor>
      <arglist>(Counter const &amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>IsLockFree</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a959bb3a6942be960de30643ea6c7c599</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Store</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a4cace09ab7d950d1abf39d156ce23dac</anchor>
      <arglist>(T value, MemoryOrder order=MemoryOrder::Release) noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>Load</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>acdacaf5378a1da41ff37270b753d68fe</anchor>
      <arglist>(MemoryOrder order=MemoryOrder::Acquire) const noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>FetchAdd</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a82237eb09fd8d90775a1c0f7c7c45d9e</anchor>
      <arglist>(T value, MemoryOrder order=MemoryOrder::Release) noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>FetchSub</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a830125f0b22167fa96724700373b8bac</anchor>
      <arglist>(T value, MemoryOrder order=MemoryOrder::Release) noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>operator++</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>af362505d22f68f38cecc35f388270aa8</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>operator++</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a2eedccb7aad4a37d8e95b530793666ad</anchor>
      <arglist>(int) noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>operator--</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>aa3e7200edd1dc37b5e6ca1c6f4d031a5</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>operator--</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>add00580e27c6bd990b38825765a7cf9e</anchor>
      <arglist>(int) noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>operator+=</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a4bba00e377db656667c8a0fadbe90365</anchor>
      <arglist>(T value) noexcept</arglist>
    </member>
    <member kind="function">
      <type>T</type>
      <name>operator-=</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a41264476432031d338bef35779342420</anchor>
      <arglist>(T value) noexcept</arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static constexpr bool</type>
      <name>IS_ALWAYS_LOCK_FREE</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html</anchorfile>
      <anchor>a843ca0278d4ced681b49f0f80ba1160a</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>MemoryOrder</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga734a1017d1dea4364ac2de74bb0ed224</anchor>
      <arglist></arglist>
    </member>
    <docanchor file="classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_01std_1_1is__integral_e90916d9b085b9cebabc5ae1190e5947.html">counter_integral</docanchor>
  </compound>
  <compound kind="class">
    <name>perfc::Counter&lt; T, void, typename std::enable_if&lt;!std::is_integral&lt; T &gt;::value &gt;::type &gt;</name>
    <filename>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</filename>
    <templarg>class T</templarg>
    <member kind="typedef">
      <type>void</type>
      <name>ClockType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>a3486b8ff9adb1254da6c3306231526aa</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>void</type>
      <name>TimePointType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>a398f5166e934dd76331e23f6994e9ef7</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>T</type>
      <name>ValueType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>ab9dbd2d9e592592b89ef305bee1381f4</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::atomic&lt; ValueType &gt;</type>
      <name>CounterType</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>a0b1f132c28c2e0e067c046bd33d2d3fc</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>ae66fb3dd6d88f705aa8653c16385f3d5</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>a1588fdc30f07acd0651c1da0955e3de1</anchor>
      <arglist>(T value) noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Counter</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>a7bfebdf8e812c43170c1850ad743c117</anchor>
      <arglist>(Counter const &amp;)=delete</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>IsLockFree</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>aa928e589b8a744cc7a06bc86f3906e23</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Store</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>a52c926bbebafeee11d7e3d1a2e21c0d2</anchor>
      <arglist>(T value, MemoryOrder order=MemoryOrder::Release) noexcept</arglist>
    </member>
    <member kind="function">
      <type>ValueType</type>
      <name>Load</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>ad0e096fd55470817b25b6e5bbb551167</anchor>
      <arglist>(MemoryOrder order=MemoryOrder::Acquire) const noexcept</arglist>
    </member>
    <member kind="variable" static="yes">
      <type>static constexpr bool</type>
      <name>IS_ALWAYS_LOCK_FREE</name>
      <anchorfile>classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html</anchorfile>
      <anchor>af9757bcf689cf811a4b0b298b292e20b</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>MemoryOrder</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga734a1017d1dea4364ac2de74bb0ed224</anchor>
      <arglist></arglist>
    </member>
    <docanchor file="classperfc_1_1Counter_3_01T_00_01void_00_01typename_01std_1_1enable__if_3_9std_1_1is__integral_3547dc46889b733c526ddb3e6e22e7a42.html">counter_nonintegral</docanchor>
  </compound>
  <compound kind="struct">
    <name>perfc::CounterTypes</name>
    <filename>structperfc_1_1CounterTypes.html</filename>
    <templarg>class... CounterType</templarg>
    <member kind="typedef">
      <type>std::variant&lt; std::add_pointer_t&lt; CounterType &gt;... &gt;</type>
      <name>CounterVariant</name>
      <anchorfile>structperfc_1_1CounterTypes.html</anchorfile>
      <anchor>a31de1be1d700bd94114f6cc06825f3cd</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>perfc::Register::Entry</name>
    <filename>structperfc_1_1Register_1_1Entry.html</filename>
    <member kind="variable">
      <type>CounterVariant</type>
      <name>counter</name>
      <anchorfile>structperfc_1_1Register_1_1Entry.html</anchorfile>
      <anchor>a2dde389b0859333c0e0660b6af84cb8f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>MetadataType</type>
      <name>metadata</name>
      <anchorfile>structperfc_1_1Register_1_1Entry.html</anchorfile>
      <anchor>a9a4c8aee32d325c5beb379b5a3cbe675</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>perfc::Locked</name>
    <filename>classperfc_1_1Locked.html</filename>
    <templarg>class T</templarg>
    <templarg>class Mutex</templarg>
    <member kind="typedef">
      <type>std::add_pointer_t&lt; T &gt;</type>
      <name>PointerType</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>ab0d5fe0f42a17e95f9e709c3c6ac2942</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::add_lvalue_reference_t&lt; T &gt;</type>
      <name>ReferenceType</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>aa41332bb288e7e4af85e806c3ba9f86f</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Locked</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>afe4cdd602fa535b9edbfb9bb24fc5998</anchor>
      <arglist>(ReferenceType t, Mutex &amp;mutex)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Locked</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>ae2876c367e77a611b015e5dbe14b9902</anchor>
      <arglist>(Locked &amp;&amp;other) noexcept</arglist>
    </member>
    <member kind="function">
      <type>Locked &amp;</type>
      <name>operator=</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>abcd96a9b42b59ff5804b988ea7f54c16</anchor>
      <arglist>(Locked &amp;&amp;other) noexcept</arglist>
    </member>
    <member kind="function">
      <type>PointerType</type>
      <name>Get</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>afd42cb03818e4933c4cba0bc55eb9c1a</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>ReferenceType</type>
      <name>operator*</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>a52e9b07c922a47b25c0ab006cd36bbb9</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>PointerType</type>
      <name>operator-&gt;</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>ab45d5bca1d238572f0428cf95776c846</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>operator bool</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>a0d62935c4b4989b09c4199649ca2bb78</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Unlock</name>
      <anchorfile>classperfc_1_1Locked.html</anchorfile>
      <anchor>a0415561bd6f6918af5f99ab98299e0db</anchor>
      <arglist>() noexcept</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>perfc::Register</name>
    <filename>classperfc_1_1Register.html</filename>
    <templarg>class CounterTypes</templarg>
    <templarg>class TMetadata</templarg>
    <templarg>class TMutex</templarg>
    <class kind="struct">perfc::Register::Entry</class>
    <member kind="typedef">
      <type>TMutex</type>
      <name>Mutex</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>adeb0a713679e82f20ebc67e09a71d8b8</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>TMetadata</type>
      <name>MetadataType</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>ae2ec6a5cb8d2e1dc73677aa1b34b4045</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>typename CounterTypes::CounterVariant</type>
      <name>CounterVariant</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>a64ebc5106b41060b19e938cbc6640e55</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>std::vector&lt; Entry &gt;</type>
      <name>Container</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>acb5710dedc570bdb87dbf2f2c88c69ca</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Locked&lt; Container, Mutex &gt;</type>
      <name>LockedContainer</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>ac78a321ea84d31607e9d85ddf8ed6b7b</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Locked&lt; Container const, Mutex &gt;</type>
      <name>LockedContainerConst</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>a0a969c8977409f0d63efaf4122d35cb0</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>LockedContainer</type>
      <name>Lock</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>af699ec77c936131bb2438c270d07b27e</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type>LockedContainerConst</type>
      <name>Lock</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>a19ff1bbbd3194ab442ca7d81b8785741</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>ScopedRegistration</type>
      <name>Add</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>a6a8e23d5a361cc83ef6ba48801a79c38</anchor>
      <arglist>(CounterVariant counter, MetadataType metadata)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>Remove</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>a83a8bce4c8bedda660f8cd1cd37d5ce1</anchor>
      <arglist>(CounterVariant counter)</arglist>
    </member>
    <member kind="function">
      <type>LockedContainer</type>
      <name>Lock</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>af699ec77c936131bb2438c270d07b27e</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type>LockedContainerConst</type>
      <name>Lock</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>a19ff1bbbd3194ab442ca7d81b8785741</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>ScopedRegistration</type>
      <name>Add</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>a6a8e23d5a361cc83ef6ba48801a79c38</anchor>
      <arglist>(CounterVariant counter, MetadataType metadata)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>Remove</name>
      <anchorfile>classperfc_1_1Register.html</anchorfile>
      <anchor>a83a8bce4c8bedda660f8cd1cd37d5ce1</anchor>
      <arglist>(CounterVariant counter)</arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>perfc::ScopedRegistration</name>
    <filename>classperfc_1_1ScopedRegistration.html</filename>
    <member kind="function">
      <type></type>
      <name>ScopedRegistration</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a772425e8d03f701bc267e9de9a2c42c2</anchor>
      <arglist>() noexcept=default</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>ScopedRegistration</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a08f7be477e9a4149905a0a09bf580396</anchor>
      <arglist>(ScopedRegistration &amp;&amp;) noexcept=default</arglist>
    </member>
    <member kind="function">
      <type>ScopedRegistration &amp;</type>
      <name>operator=</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>ac34fa74b603b804d01a87c1157a4d021</anchor>
      <arglist>(ScopedRegistration &amp;&amp;) noexcept=default</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>~ScopedRegistration</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a9cf07faae637e0c87dff5c51ccc17bcb</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>IsValid</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a2ec4efc8b1f80278bdb1dd54fe993594</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>operator bool</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a9772aa86868f84e0254652639e41aafe</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Release</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>aff745caf56be56173c4aa2cce10f2d65</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Reset</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a590318cef9bac993b12c5bb32862501c</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Swap</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>aa00a5fe6b8248dc077ed69a261ea826c</anchor>
      <arglist>(ScopedRegistration &amp;other) noexcept</arglist>
    </member>
    <member kind="function" protection="protected">
      <type></type>
      <name>ScopedRegistration</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a245e6ccfef4c47f14cb033485185b935</anchor>
      <arglist>(std::function&lt; void()&gt; dereg)</arglist>
    </member>
    <member kind="friend" protection="protected">
      <type>friend class</type>
      <name>Register</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a50b077c938015f9329d1dfdf49b5fb1c</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>IsValid</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a2ec4efc8b1f80278bdb1dd54fe993594</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>operator bool</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a9772aa86868f84e0254652639e41aafe</anchor>
      <arglist>() const noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Release</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>aff745caf56be56173c4aa2cce10f2d65</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Reset</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>a590318cef9bac993b12c5bb32862501c</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>Swap</name>
      <anchorfile>classperfc_1_1ScopedRegistration.html</anchorfile>
      <anchor>aa00a5fe6b8248dc077ed69a261ea826c</anchor>
      <arglist>(ScopedRegistration &amp;other) noexcept</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>perfc::Timestamped</name>
    <filename>structperfc_1_1Timestamped.html</filename>
    <templarg>class T</templarg>
    <templarg>class TimePoint</templarg>
    <member kind="variable">
      <type>T</type>
      <name>value</name>
      <anchorfile>structperfc_1_1Timestamped.html</anchorfile>
      <anchor>acd769d60111142bf297c41000041cd90</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>TimePoint</type>
      <name>timestamp</name>
      <anchorfile>structperfc_1_1Timestamped.html</anchorfile>
      <anchor>a3ce136c74100a749bc788eb6f9f49216</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="namespace">
    <name>perfc</name>
    <filename>namespaceperfc.html</filename>
    <class kind="class">perfc::Counter</class>
    <class kind="class">perfc::Counter&lt; T, Clock, typename std::enable_if&lt;!std::is_void&lt; Clock &gt;::value &gt;::type &gt;</class>
    <class kind="class">perfc::Counter&lt; T, void, typename std::enable_if&lt; std::is_integral&lt; T &gt;::value &gt;::type &gt;</class>
    <class kind="class">perfc::Counter&lt; T, void, typename std::enable_if&lt;!std::is_integral&lt; T &gt;::value &gt;::type &gt;</class>
    <class kind="struct">perfc::CounterTypes</class>
    <class kind="class">perfc::Locked</class>
    <class kind="class">perfc::Register</class>
    <class kind="class">perfc::ScopedRegistration</class>
    <class kind="struct">perfc::Timestamped</class>
    <member kind="typedef">
      <type>Counter&lt; double, std::chrono::steady_clock &gt;</type>
      <name>CounterDoubleTs</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac1be72d212c53c91fc3e1f79c574912d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, std::chrono::steady_clock &gt;</type>
      <name>CounterU64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaac3556b2ff63f9b46606b2365eee9d34</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, std::chrono::steady_clock &gt;</type>
      <name>CounterI64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaf3453ecd9dc2956e891cc2c9198ee9ae</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; double, void &gt;</type>
      <name>CounterDouble</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga8591cbbd6ed134401d5ce95a882eb044</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, void &gt;</type>
      <name>CounterU64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac0038ef700e52dc51c32a23dfdfb791b</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, void &gt;</type>
      <name>CounterI64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gab00d9571fc6ffe2225459438c0492efc</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumeration">
      <type></type>
      <name>MemoryOrder</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga734a1017d1dea4364ac2de74bb0ed224</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CounterAcquire</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gacf578efa76429ef1c953a6faf388d902</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CounterRelease</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga273cb29cc86359f1dd5bd15d9d888fca</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; double, std::chrono::steady_clock &gt;</type>
      <name>CounterDoubleTs</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac1be72d212c53c91fc3e1f79c574912d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, std::chrono::steady_clock &gt;</type>
      <name>CounterU64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaac3556b2ff63f9b46606b2365eee9d34</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, std::chrono::steady_clock &gt;</type>
      <name>CounterI64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaf3453ecd9dc2956e891cc2c9198ee9ae</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; double, void &gt;</type>
      <name>CounterDouble</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga8591cbbd6ed134401d5ce95a882eb044</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, void &gt;</type>
      <name>CounterU64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac0038ef700e52dc51c32a23dfdfb791b</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, void &gt;</type>
      <name>CounterI64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gab00d9571fc6ffe2225459438c0492efc</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CounterAcquire</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gacf578efa76429ef1c953a6faf388d902</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>CounterRelease</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga273cb29cc86359f1dd5bd15d9d888fca</anchor>
      <arglist>() noexcept</arglist>
    </member>
  </compound>
  <compound kind="group">
    <name>perfc</name>
    <title>Basic performance counters</title>
    <filename>group__perfc.html</filename>
    <subgroup>perfc_counter</subgroup>
    <subgroup>perfc_register</subgroup>
    <file>perfc.hpp</file>
    <file>version.hpp</file>
    <member kind="define">
      <type>#define</type>
      <name>PERFC_VERSION</name>
      <anchorfile>group__perfc.html</anchorfile>
      <anchor>ga8529c41ff37411ae27c96507a0ad890f</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="group">
    <name>perfc_counter</name>
    <title>Counters</title>
    <filename>group__perfc__counter.html</filename>
    <file>counter.hpp</file>
    <class kind="struct">perfc::Timestamped</class>
    <class kind="class">perfc::Counter&lt; T, void, typename std::enable_if&lt; std::is_integral&lt; T &gt;::value &gt;::type &gt;</class>
    <class kind="class">perfc::Counter&lt; T, void, typename std::enable_if&lt;!std::is_integral&lt; T &gt;::value &gt;::type &gt;</class>
    <class kind="class">perfc::Counter&lt; T, Clock, typename std::enable_if&lt;!std::is_void&lt; Clock &gt;::value &gt;::type &gt;</class>
    <member kind="enumeration">
      <type></type>
      <name>perfc::Counter::MemoryOrder</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga734a1017d1dea4364ac2de74bb0ed224</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; double, std::chrono::steady_clock &gt;</type>
      <name>perfc::CounterDoubleTs</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac1be72d212c53c91fc3e1f79c574912d</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, std::chrono::steady_clock &gt;</type>
      <name>perfc::CounterU64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaac3556b2ff63f9b46606b2365eee9d34</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, std::chrono::steady_clock &gt;</type>
      <name>perfc::CounterI64Ts</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gaf3453ecd9dc2956e891cc2c9198ee9ae</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; double, void &gt;</type>
      <name>perfc::CounterDouble</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga8591cbbd6ed134401d5ce95a882eb044</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::uint64_t, void &gt;</type>
      <name>perfc::CounterU64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gac0038ef700e52dc51c32a23dfdfb791b</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef">
      <type>Counter&lt; std::int64_t, void &gt;</type>
      <name>perfc::CounterI64</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gab00d9571fc6ffe2225459438c0492efc</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>perfc::CounterAcquire</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>gacf578efa76429ef1c953a6faf388d902</anchor>
      <arglist>() noexcept</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>perfc::CounterRelease</name>
      <anchorfile>group__perfc__counter.html</anchorfile>
      <anchor>ga273cb29cc86359f1dd5bd15d9d888fca</anchor>
      <arglist>() noexcept</arglist>
    </member>
  </compound>
  <compound kind="group">
    <name>perfc_register</name>
    <title>Counter Register</title>
    <filename>group__perfc__register.html</filename>
    <file>register.hpp</file>
    <class kind="struct">perfc::CounterTypes</class>
    <class kind="class">perfc::Locked</class>
    <class kind="class">perfc::ScopedRegistration</class>
    <class kind="class">perfc::Register</class>
  </compound>
  <compound kind="page">
    <name>index</name>
    <title>perfc</title>
    <filename>index.html</filename>
    <docanchor file="index.html" title="perfc">mainpage</docanchor>
    <docanchor file="index.html" title="Counters">counters</docanchor>
    <docanchor file="index.html" title="Register">register</docanchor>
    <docanchor file="index.html" title="Performance Considerations">performance</docanchor>
    <docanchor file="index.html" title="Benchmarks">benchmarks</docanchor>
    <docanchor file="index.html" title="AtomicCounter">concept_atomic_counter</docanchor>
    <docanchor file="index.html" title="Thread Safety">thread-safety</docanchor>
  </compound>
</tagfile>
