The Gaudi Framework  v37r1 (a7f61348)
Gaudi::Accumulators::Counter< Atomicity, Arithmetic > Struct Template Reference

A basic integral counter;. More...

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

Inheritance diagram for Gaudi::Accumulators::Counter< Atomicity, Arithmetic >:
Collaboration diagram for Gaudi::Accumulators::Counter< Atomicity, Arithmetic >:

Public Member Functions

template<typename OWNER >
 Counter (OWNER *o, std::string const &name)
 
Counteroperator++ ()
 
Counteroperator+= (const Arithmetic v)
 
template<typename stream >
stream & printImpl (stream &o, bool tableFormat) const
 
std::ostreamprint (std::ostream &o, bool tableFormat=false) const override
 prints the counter to a stream More...
 
MsgStreamprint (MsgStream &o, bool tableFormat=false) const override
 
bool toBePrinted () const override
 hint whether we should print that counter or not. More...
 
- Public Member Functions inherited from Gaudi::Accumulators::BufferableCounter< atomicity::full, IntegralAccumulator, unsigned long >
 BufferableCounter ()=default
 
 BufferableCounter (OWNER *o, std::string const &name)
 
 BufferableCounter (BufferableCounter const &)=delete
 
Buffer< IntegralAccumulator, Atomicity, Args... > buffer ()
 
BufferableCounteroperator= (BufferableCounter const &)=delete
 
 ~BufferableCounter ()
 
- Public Member Functions inherited from Gaudi::Accumulators::PrintableCounter
 PrintableCounter ()=default
 
virtual ~PrintableCounter ()=default
 destructor More...
 
template<typename stream >
stream & printImpl (stream &s, std::string_view tag) const
 
virtual std::ostreamprint (std::ostream &o, std::string_view tag) const
 prints the counter to a stream in table format, with the given tag More...
 
virtual MsgStreamprint (MsgStream &o, std::string_view tag) const
 
std::string toString () const
 get a string representation More...
 
- Public Member Functions inherited from Gaudi::Accumulators::IntegralAccumulator< Atomicity, Args... >
IntegralAccumulatoroperator++ ()
 
IntegralAccumulator operator++ (int)
 
Args... nEntries () const
 
Args... sum () const
 
- Public Member Functions inherited from Gaudi::Accumulators::GenericAccumulator< Args..., Args..., Atomicity, Identity >
 GenericAccumulator ()=default
 
 GenericAccumulator (construct_empty_t, const GenericAccumulator< InputType, Args..., ato, Identity, Identity, VH > &)
 constructor of an empty GenericAccumulator, copying the (non existent) config from another GenericAccumulator More...
 
 GenericAccumulator (std::in_place_t, Args &&... args)
 
 GenericAccumulator (const GenericAccumulator &other)
 
GenericAccumulator operator+= (const InputType by)
 
GenericAccumulatoroperator= (const GenericAccumulator &other)
 
OutputType value () const
 
void reset ()
 
void mergeAndReset (GenericAccumulator< InputType, Args..., ato, Identity, Identity, VH > &other)
 
void operator+ (GenericAccumulator< InputType, Args..., ato, Identity, Identity, VH > &&other)
 

Static Public Member Functions

static Counter fromJSON (const nlohmann::json &j)
 

Static Public Attributes

static const std::string typeString { std::string{ "counter:Counter:" } + typeid( Arithmetic ).name() }
 
- Static Public Attributes inherited from Gaudi::Accumulators::BufferableCounter< atomicity::full, IntegralAccumulator, unsigned long >
static const std::string typeString
 

Friends

void reset (Counter &c)
 
void mergeAndReset (Counter &c, Counter &o)
 
void to_json (nlohmann::json &j, Counter const &c)
 

Additional Inherited Members

- Public Types inherited from Gaudi::Accumulators::GenericAccumulator< Args..., Args..., Atomicity, Identity >
using InputType = Args...
 
using OutputType = std::decay_t< std::result_of_t< Identity(Args...)> >
 
using InternalType = Args...
 
using JSONStringEntriesType = std::string
 
- Protected Member Functions inherited from Gaudi::Accumulators::BufferableCounter< atomicity::full, IntegralAccumulator, unsigned long >
 BufferableCounter (OWNER *o, std::string const &name, SELF &self, CARGS... args)
 
- Protected Member Functions inherited from Gaudi::Accumulators::GenericAccumulator< Args..., Args..., Atomicity, Identity >
 GenericAccumulator (Args... in)
 
void reset (Args... in)
 
auto rawValue () const
 
- Static Protected Member Functions inherited from Gaudi::Accumulators::GenericAccumulator< Args..., Args..., Atomicity, Identity >
static Args... extractJSONData (const nlohmann::json &j, const JSONStringEntriesType &entries)
 

Detailed Description

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
struct Gaudi::Accumulators::Counter< Atomicity, Arithmetic >

A basic integral counter;.

See also
Gaudi::Accumulators for detailed documentation

Definition at line 905 of file Accumulators.h.

Constructor & Destructor Documentation

◆ Counter()

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
template<typename OWNER >
Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::Counter ( OWNER *  o,
std::string const &  name 
)
inline

Definition at line 909 of file Accumulators.h.

910  : BufferableCounter<Atomicity, IntegralAccumulator, Arithmetic>( o, name, *this ) {}

Member Function Documentation

◆ fromJSON()

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
static Counter Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::fromJSON ( const nlohmann::json &  j)
inlinestatic

Definition at line 935 of file Accumulators.h.

935  {
937  }

◆ operator++()

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
Counter& Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::operator++ ( )
inline

Definition at line 911 of file Accumulators.h.

911 { return ( *this ) += 1; }

◆ operator+=()

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
Counter& Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::operator+= ( const Arithmetic  v)
inline

Definition at line 912 of file Accumulators.h.

912  {
913  BufferableCounter<Atomicity, IntegralAccumulator, Arithmetic>::operator+=( v );
914  return *this;
915  }

◆ print() [1/2]

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
MsgStream& Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::print ( MsgStream o,
bool  tableFormat = false 
) const
inlineoverridevirtual

Implements Gaudi::Accumulators::PrintableCounter.

Definition at line 928 of file Accumulators.h.

928 { return printImpl( o, tableFormat ); }

◆ print() [2/2]

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
std::ostream& Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::print ( std::ostream ,
bool  tableFormat = false 
) const
inlineoverridevirtual

prints the counter to a stream

Implements Gaudi::Accumulators::PrintableCounter.

Definition at line 925 of file Accumulators.h.

925  {
926  return printImpl( o, tableFormat );
927  }

◆ printImpl()

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
template<typename stream >
stream& Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::printImpl ( stream &  o,
bool  tableFormat 
) const
inline

Definition at line 919 of file Accumulators.h.

919  {
920  // Avoid printing empty counters in non DEBUG mode
921  auto fmt = ( tableFormat ? "|%|10d| |" : "#=%|-7lu|" );
922  return o << boost::format{ fmt } % this->nEntries();
923  }

◆ toBePrinted()

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
bool Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::toBePrinted ( ) const
inlineoverridevirtual

hint whether we should print that counter or not.

Typically empty counters may not be printed

Reimplemented from Gaudi::Accumulators::PrintableCounter.

Definition at line 929 of file Accumulators.h.

929 { return this->nEntries() > 0; }

Friends And Related Function Documentation

◆ mergeAndReset

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
void mergeAndReset ( Counter< Atomicity, Arithmetic > &  c,
Counter< Atomicity, Arithmetic > &  o 
)
friend

Definition at line 931 of file Accumulators.h.

931 { c.mergeAndReset( o ); }

◆ reset

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
void reset ( Counter< Atomicity, Arithmetic > &  c)
friend

Definition at line 930 of file Accumulators.h.

930 { c.reset(); }

◆ to_json

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
void to_json ( nlohmann::json &  j,
Counter< Atomicity, Arithmetic > const &  c 
)
friend

Definition at line 932 of file Accumulators.h.

932  {
933  j = { { "type", c.typeString }, { "empty", c.nEntries() == 0 }, { "nEntries", c.nEntries() } };
934  }

Member Data Documentation

◆ typeString

template<atomicity Atomicity = atomicity::full, typename Arithmetic = unsigned long>
const std::string Gaudi::Accumulators::Counter< Atomicity, Arithmetic >::typeString { std::string{ "counter:Counter:" } + typeid( Arithmetic ).name() }
inlinestatic

Definition at line 906 of file Accumulators.h.


The documentation for this struct was generated from the following file:
bug_34121.name
name
Definition: bug_34121.py:20
gaudirun.c
c
Definition: gaudirun.py:527
Gaudi::Accumulators::Counter::printImpl
stream & printImpl(stream &o, bool tableFormat) const
Definition: Accumulators.h:919
Gaudi::Accumulators::IntegralAccumulator< Atomicity, Args... >::nEntries
Args... nEntries() const
Definition: Accumulators.h:619
ProduceConsume.j
j
Definition: ProduceConsume.py:101
format
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:119
Gaudi::Accumulators::GenericAccumulator< unsigned long, unsigned long, Atomicity, Identity >::extractJSONData
static unsigned long extractJSONData(const nlohmann::json &j, const JSONStringEntriesType &entries)
Definition: Accumulators.h:481
fmt
Definition: MessageSvcSink.cpp:25
Properties.v
v
Definition: Properties.py:123