The Gaudi Framework  v41r0 (bdbe7744)
Loading...
Searching...
No Matches
Gaudi::Accumulators::Adder< Arithmetic, atomicity::full > Struct Template Reference

Adder specialization in the case of atomicity full. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/Gaudi/Accumulators.h>

Inheritance diagram for Gaudi::Accumulators::Adder< Arithmetic, atomicity::full >:
Collaboration diagram for Gaudi::Accumulators::Adder< Arithmetic, atomicity::full >:

Static Public Member Functions

static constexpr OutputType DefaultValue ()
static void merge (InternalType &a, Arithmetic b) noexcept
Static Public Member Functions inherited from Gaudi::Accumulators::BaseValueHandler< Arithmetic, atomicity::full >
static constexpr OutputType getValue (const InternalType &v) noexcept
static Arithmetic exchange (InternalType &v, Arithmetic newv) noexcept

Additional Inherited Members

Public Types inherited from Gaudi::Accumulators::BaseValueHandler< Arithmetic, atomicity::full >
using OutputType = Arithmetic
using InternalType = std::atomic<Arithmetic>

Detailed Description

template<typename Arithmetic>
struct Gaudi::Accumulators::Adder< Arithmetic, atomicity::full >

Adder specialization in the case of atomicity full.

Definition at line 371 of file Accumulators.h.

Member Function Documentation

◆ DefaultValue()

template<typename Arithmetic>
constexpr OutputType Gaudi::Accumulators::Adder< Arithmetic, atomicity::full >::DefaultValue ( )
inlinestaticconstexpr

Definition at line 374 of file Accumulators.h.

374{ return Arithmetic{}; }
An Adder ValueHandler operator(a, b) means a += b.

◆ merge()

template<typename Arithmetic>
void Gaudi::Accumulators::Adder< Arithmetic, atomicity::full >::merge ( InternalType & a,
Arithmetic b )
inlinestaticnoexcept

Definition at line 375 of file Accumulators.h.

375 {
376 if constexpr ( !std::is_floating_point_v<Arithmetic> ) { // avoid comparisons for floating points
377 if ( DefaultValue() == b ) return; // avoid atomic operation if b is "0"
378 }
379 fetch_add( a, b );
380 }
void fetch_add(AtomicType &atVar, Arithmetic value)
generic fetch_add, also dealing with atomic types with no fetch_add member method

The documentation for this struct was generated from the following file: