29 #include "fastjet/LimitedWarning.hh"
35 FASTJET_BEGIN_NAMESPACE
37 ostream * LimitedWarning::_default_ostr = &cerr;
38 std::list< LimitedWarning::Summary > LimitedWarning::_global_warnings_summary;
39 int LimitedWarning::_max_warn_default = 5;
43 void LimitedWarning::warn(
const std::string & warning) {
44 warn(warning, _default_ostr);
47 void LimitedWarning::warn(
const std::string & warning, std::ostream * ostr) {
48 if (_this_warning_summary == 0) {
50 _global_warnings_summary.push_back(Summary(warning, 0));
51 _this_warning_summary = & (_global_warnings_summary.back());
53 if (_n_warn_so_far < _max_warn) {
55 ostringstream warnstr;
56 warnstr <<
"WARNING: ";
59 if (_n_warn_so_far == _max_warn) warnstr <<
" (LAST SUCH WARNING)";
65 (*ostr) << warnstr.str();
71 if (_this_warning_summary->second < numeric_limits<unsigned>::max()) {
72 _this_warning_summary->second++;
77 string LimitedWarning::summary() {
79 for (list<Summary>::const_iterator it = _global_warnings_summary.begin();
80 it != _global_warnings_summary.end(); it++) {
81 str << it->second <<
" times: " << it->first << endl;