The Gaudi Framework  v32r2 (46d42edc)
StatusCodeSvc.h
Go to the documentation of this file.
1 #ifndef GAUDISVC_STATUSCODESVC_H
2 #define GAUDISVC_STATUSCODESVC_H
3 
5 #include "GaudiKernel/Service.h"
6 
7 #include "tbb/concurrent_unordered_map.h"
8 
9 #include <set>
10 #include <string>
11 
12 class StatusCodeSvc : public extends<Service, IStatusCodeSvc> {
13 public:
14  using extends::extends;
15  StatusCode initialize() override;
16  StatusCode reinitialize() override;
17  StatusCode finalize() override;
18 
19  void regFnc( const std::string& func, const std::string& lib ) override;
20  void list() const override;
21  bool suppressCheck() const override { return m_suppress.value(); }
22 
23 private:
24  struct StatCodeDat final {
25  // the atomic forces us to define these otherwise trivial constructors:
26  StatCodeDat( const std::string f, const std::string l ) : fnc( f ), lib( l ) {}
27  StatCodeDat( StatCodeDat&& o ) : fnc( o.fnc ), lib( o.lib ), count( o.count.load() ) {}
28  StatCodeDat( const StatCodeDat& o ) : fnc( o.fnc ), lib( o.lib ), count( o.count.load() ) {}
32  };
33 
34  void parseFilter( const std::string& str, std::string& fnc, std::string& lib ) const;
35  bool failsFilter( const std::string& fnc, const std::string& lib ) const;
36 
38  Gaudi::Property<bool> m_abort{this, "AbortOnError", false};
39  Gaudi::Property<bool> m_suppress{this, "SuppressCheck", false};
40  Gaudi::Property<bool> m_dict{this, "IgnoreDicts", true};
41 
42  tbb::concurrent_unordered_map<std::string, StatCodeDat> m_dat;
44 };
45 
46 #endif
std::atomic< unsigned int > count
Definition: StatusCodeSvc.h:31
Implementation of property with value of concrete type.
Definition: Property.h:352
Gaudi::Property< bool > m_dict
Definition: StatusCodeSvc.h:40
StatCodeDat(StatCodeDat &&o)
Definition: StatusCodeSvc.h:27
StatusCode reinitialize() override
void list() const override
bool failsFilter(const std::string &fnc, const std::string &lib) const
StatCodeDat(const std::string f, const std::string l)
Definition: StatusCodeSvc.h:26
STL class.
StatusCode initialize() override
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StatCodeDat(const StatCodeDat &o)
Definition: StatusCodeSvc.h:28
bool suppressCheck() const override
Definition: StatusCodeSvc.h:21
std::set< std::string > m_filterfnc
Definition: StatusCodeSvc.h:43
void parseFilter(const std::string &str, std::string &fnc, std::string &lib) const
void regFnc(const std::string &func, const std::string &lib) override
dictionary l
Definition: gaudirun.py:523
tbb::concurrent_unordered_map< std::string, StatCodeDat > m_dat
Definition: StatusCodeSvc.h:42
Gaudi::Property< bool > m_abort
Definition: StatusCodeSvc.h:38
Gaudi::Property< bool > m_suppress
Definition: StatusCodeSvc.h:39
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
Gaudi::Property< std::vector< std::string > > m_pFilter
Definition: StatusCodeSvc.h:37
StatusCode finalize() override
std::set< std::string > m_filterlib
Definition: StatusCodeSvc.h:43