Line data Source code
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 :
20 : class ma_cond_test_primary
21 : {
22 : public:
23 0 : ma_cond_test_primary()
24 0 : : cond_type(EXPR)
25 0 : , op(CO_L)
26 0 : , rhv_b(false)
27 0 : , rhv_d(0.0)
28 0 : , rhv_s()
29 0 : {}
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
|