code: def total_events(self, cond, valfld=None):
          
          results = self.results
  
          if cond == "*" and valfld is None:
              return sum(results.values())
          val = self.key_gids.index(valfld) if valfld is not None else None
  
          if cond == "*":
              tot = 0
              for key in results:
                  tot += results[key] * int(key[val])
              return tot
              
          match = re.search("(\w+)(!=|==)\"([^\"]*)\"", cond)
          condpos = self.key_gids.index(match.group(1))
          invert = (match.group(2) == '!=')
          recond = re.compile(match.group(3))
  
          tot = 0
          for key in results:
              match = recond.search(key[condpos])
              if (not invert and match is not None) or (invert and match is None):
                  if valfld is None:
                      tot += results[key]
                  else:
                      tot += results[key] * int(key[val])
          return tot
docs: Return total number of events in the rule'result set. A condition
          could be provided to select the events to count. If value field (valfld)
          is passed the function compute the sum taking the product of each value with
          correspondent event counter.