artdaq_mfextensions  v1_06_02
ma_cond_test_primary.h
1 #ifndef ERROR_HANDLER_MA_COND_TEST_PRIMARY_H
2 #define ERROR_HANDLER_MA_COND_TEST_PRIMARY_H
3 
4 #include "ErrorHandler/MessageAnalyzer/ma_test_function.h"
5 #include "ErrorHandler/MessageAnalyzer/ma_types.h"
6 
7 #include <boost/any.hpp>
8 #include <boost/shared_ptr.hpp>
9 
10 #include <list>
11 
12 namespace novadaq {
13 namespace errorhandler {
14 
15 typedef boost::any any_t;
16 typedef std::vector<boost::any> anys_t;
17 
18 class ma_cond_test_expr;
19 
21 {
22 public:
24  : cond_type(EXPR)
25  , op(CO_L)
26  , rhv_b(false)
27  , rhv_d(0.0)
28  , rhv_s()
29  {}
30 
31  bool evaluate(ma_condition const* cond) const;
32 
33  void insert_expr(ma_cond_test_expr const& expr);
34  void insert_func(std::string const& name, anys_t const& args);
35  void insert_compare_op(compare_op_t cop, any_t const& v);
36 
37 private:
38  cond_type_t cond_type;
39 
40  boost::shared_ptr<ma_test_function> func;
41 
42  compare_op_t op;
43  bool rhv_b;
44  double rhv_d;
45  std::string rhv_s;
46 
47  // shared_ptr to a test expression
48  boost::shared_ptr<ma_cond_test_expr> expr;
49 };
50 
51 typedef std::list<ma_cond_test_primary> test_primaries_t;
52 
53 } // end of namespace errorhandler
54 } // end of namespace novadaq
55 
56 #endif