DAS  3.0
Das Analysis System
LimitedWarning

#include <fjcore.hh>

+ Collaboration diagram for LimitedWarning:

Public Member Functions

 LimitedWarning ()
 
 LimitedWarning (int max_warn_in)
 
void warn (const char *warning)
 
void warn (const std::string &warning)
 
void warn (const char *warning, std::ostream *ostr)
 
void warn (const std::string &warning, std::ostream *ostr)
 
int max_warn () const
 
int n_warn_so_far () const
 

Static Public Member Functions

static void set_default_stream (std::ostream *ostr)
 
static void set_default_max_warn (int max_warn)
 
static std::string summary ()
 

Private Types

typedef std::pair< std::string, unsigned int > Summary
 

Private Attributes

int _max_warn
 
int _n_warn_so_far
 
Summary_this_warning_summary
 

Static Private Attributes

static int _max_warn_default = 5
 
static std::ostream * _default_ostr = &cerr
 
static std::list< Summary_global_warnings_summary
 

Member Typedef Documentation

◆ Summary

typedef std::pair<std::string, unsigned int> Summary
private

Constructor & Destructor Documentation

◆ LimitedWarning() [1/2]

◆ LimitedWarning() [2/2]

LimitedWarning ( int  max_warn_in)
inline
431 : _max_warn(max_warn_in), _n_warn_so_far(0), _this_warning_summary(0) {}

Member Function Documentation

◆ max_warn()

int max_warn ( ) const
inline
442 {return _max_warn;}

◆ n_warn_so_far()

int n_warn_so_far ( ) const
inline
443 {return _n_warn_so_far;}

◆ set_default_max_warn()

static void set_default_max_warn ( int  max_warn)
inlinestatic
439  {
441  }

◆ set_default_stream()

static void set_default_stream ( std::ostream *  ostr)
inlinestatic
436  {
437  _default_ostr = ostr;
438  }

◆ summary()

string summary ( )
static
3677  {
3678  ostringstream str;
3679  for (list<Summary>::const_iterator it = _global_warnings_summary.begin();
3680  it != _global_warnings_summary.end(); it++) {
3681  str << it->second << " times: " << it->first << endl;
3682  }
3683  return str.str();
3684 }

◆ warn() [1/4]

void warn ( const char *  warning)
inline
432 {warn(warning, _default_ostr);}

◆ warn() [2/4]

void warn ( const char *  warning,
std::ostream *  ostr 
)
3656  {
3657  if (_this_warning_summary == 0) {
3658  _global_warnings_summary.push_back(Summary(warning, 0));
3660  }
3661  if (_n_warn_so_far < _max_warn) {
3662  ostringstream warnstr;
3663  warnstr << "WARNING from FastJet: ";
3664  warnstr << warning;
3665  _n_warn_so_far++;
3666  if (_n_warn_so_far == _max_warn) warnstr << " (LAST SUCH WARNING)";
3667  warnstr << std::endl;
3668  if (ostr) {
3669  (*ostr) << warnstr.str();
3670  ostr->flush(); // get something written to file even if the program aborts
3671  }
3672  }
3673  if (_this_warning_summary->second < numeric_limits<unsigned>::max()) {
3674  _this_warning_summary->second++;
3675  }
3676 }

◆ warn() [3/4]

void warn ( const std::string &  warning)
inline
433 {warn(warning.c_str(), _default_ostr);}

◆ warn() [4/4]

void warn ( const std::string &  warning,
std::ostream *  ostr 
)
inline
435 {warn(warning.c_str(), ostr);}

Member Data Documentation

◆ _default_ostr

FJCORE_BEGIN_NAMESPACE ostream * _default_ostr = &cerr
staticprivate

◆ _global_warnings_summary

std::list< LimitedWarning::Summary > _global_warnings_summary
staticprivate

◆ _max_warn

int _max_warn
private

◆ _max_warn_default

int _max_warn_default = 5
staticprivate

◆ _n_warn_so_far

int _n_warn_so_far
private

◆ _this_warning_summary

Summary* _this_warning_summary
private

The documentation for this class was generated from the following files:
LimitedWarning::warn
void warn(const char *warning)
Definition: fjcore.hh:432
LimitedWarning::max_warn
int max_warn() const
Definition: fjcore.hh:442
LimitedWarning::Summary
std::pair< std::string, unsigned int > Summary
Definition: fjcore.hh:449
LimitedWarning::_max_warn_default
static int _max_warn_default
Definition: fjcore.hh:447
LimitedWarning::_default_ostr
static std::ostream * _default_ostr
Definition: fjcore.hh:448
LimitedWarning::_this_warning_summary
Summary * _this_warning_summary
Definition: fjcore.hh:451
LimitedWarning::_n_warn_so_far
int _n_warn_so_far
Definition: fjcore.hh:446
LimitedWarning::_max_warn
int _max_warn
Definition: fjcore.hh:446
LimitedWarning::_global_warnings_summary
static std::list< Summary > _global_warnings_summary
Definition: fjcore.hh:450