LCOV - code coverage report
Current view: top level - /opt/artdaq/srcs/artdaq-mfextensions/ErrorHandler/MessageAnalyzer - ma_domain_cond.h (source / functions) Coverage Total Hit
Test: artdaq.info.cleaned Lines: 0.0 % 7 0
Test Date: 2025-09-04 00:45:34 Functions: 0.0 % 2 0

            Line data    Source code
       1              : #ifndef ERROR_HANDLER_MA_DOMAIN_COND_H
       2              : #define ERROR_HANDLER_MA_DOMAIN_COND_H
       3              : 
       4              : // from novadaq
       5              : #include "ErrorHandler/MessageAnalyzer/ma_condition.h"
       6              : #include "ErrorHandler/MessageAnalyzer/ma_types.h"
       7              : 
       8              : // from ups
       9              : #include <boost/shared_ptr.hpp>
      10              : 
      11              : // from system
      12              : #include <list>
      13              : 
      14              : namespace novadaq {
      15              : namespace errorhandler {
      16              : 
      17              : // An elemental domain condition could be one of the followings:
      18              : // 1. rule_cond_1.$[s|t] = rule_cond_2.$[s|t] ( = "string literal" )
      19              : // 2. '(' >> domain_expr >> ')'
      20              : 
      21              : class ma_rule;
      22              : class ma_domain_expr;
      23              : 
      24              : class ma_domain_cond
      25              : {
      26              : public:
      27              :         ma_domain_cond();
      28              : 
      29              :         // evaluate domains of this ma_domain_cond, then merge the
      30              :         // result with passed in domains
      31              :         void evaluate(ma_domains& domains) const;
      32              : 
      33              :         // insert condition idx and $s/$t
      34            0 :         void insert_cond_arg(cond_idx_t ci, arg_t arg, size_t size)
      35              :         {
      36            0 :                 conds.push_back(std::make_pair(ci, arg));
      37            0 :                 cond_size = size;
      38            0 :         }
      39              : 
      40              :         // insert string condition ( cond.$s = 'str_cond' )
      41            0 :         void insert_str_cond(std::string const& str)
      42              :         {
      43            0 :                 str_cond = str;
      44            0 :         }
      45              : 
      46              :         // insert domain_expr ( cond_type = EXPR )
      47              :         void insert_expr(ma_domain_expr const& expr);
      48              : 
      49              :         // and-merge domains from worksheet into domains
      50              :         ma_domains&
      51              :         and_merge(ma_domains& domains, ma_domains& worksheet) const;
      52              : 
      53              : private:
      54              :         // type of this elemental condition
      55              :         cond_type_t cond_type;
      56              : 
      57              :         // case CONDS: rule_cond_args connected with '='
      58              :         cond_arg_list_t conds;
      59              :         std::string str_cond;
      60              :         size_t cond_size;  // # of conds in the parent rule
      61              : 
      62              :         // case EXPR: an expression
      63              :         // it has to be a ptr to domain_expression to avoid circulic inclusion
      64              :         boost::shared_ptr<ma_domain_expr> expr;
      65              : };
      66              : 
      67              : typedef std::list<ma_domain_cond> domain_conds_t;
      68              : 
      69              : }  // end of namespace errorhandler
      70              : }  // end of namespace novadaq
      71              : 
      72              : #endif
        

Generated by: LCOV version 2.0-1