Belle II Software  release-08-01-10
ModuleCondition.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 #pragma once
9 
10 #include <memory>
11 #include <string>
12 
13 namespace Belle2 {
18  class Path;
30  public:
33  c_GT,
34  c_ST,
35  c_GE,
36  c_SE,
37  c_EQ,
38  c_NE
39  };
40 
42  enum class EAfterConditionPath {
43  c_End,
44  c_Continue,
45  };
46 
48  ModuleCondition(std::string expression, std::shared_ptr<Path> conditionPath, EAfterConditionPath afterConditionPath);
50  ~ModuleCondition() = default;
52  ModuleCondition(const ModuleCondition& other) = default;
54  ModuleCondition& operator=(const ModuleCondition& other) = default;
55 
57  bool evaluate(int value) const;
58 
60  const std::shared_ptr<Path>& getPath() const {return m_conditionPath; }
61 
63  int getConditionValue() const {return m_conditionValue; }
64 
67 
70 
72  std::string getString() const;
73 
77  static void exposePythonAPI();
78 
79  private:
81  ModuleCondition() = delete;
82 
83  std::shared_ptr<Path> m_conditionPath;
87  };
89 }
Wraps a condition set on a Module instance.
bool evaluate(int value) const
evaluate the condition using the given value.
ModuleCondition(std::string expression, std::shared_ptr< Path > conditionPath, EAfterConditionPath afterConditionPath)
initialize from string expression (see class doc).
std::shared_ptr< Path > m_conditionPath
The path which which will be executed if the condition is evaluated to true.
EConditionOperators m_conditionOperator
The operator of the condition (set by parsing the condition expression).
EConditionOperators
The supported condition operators.
@ c_GE
Greater or equal than: ">=".
@ c_SE
Smaller or equal than: "<=".
@ c_GT
Greater than: ">"
@ c_NE
Not equal: "!=".
@ c_EQ
Equal: "=" or "=="
@ c_ST
Smaller than: "<"
std::string getString() const
A string representation of this condition.
EAfterConditionPath
Different options for behaviour after a conditional path was executed.
@ c_End
End current event after the conditional path.
@ c_Continue
After the conditional path, resume execution after this module.
const std::shared_ptr< Path > & getPath() const
Returns the path of the condition.
EAfterConditionPath m_afterConditionPath
What to do after a conditional path is finished.
EConditionOperators getConditionOperator() const
Returns the value of the condition.
int m_conditionValue
Numeric value used in the condition (set by parsing the condition expression).
~ModuleCondition()=default
Destructor, nothing to see here.
int getConditionValue() const
Returns the value of the condition.
EAfterConditionPath getAfterConditionPath() const
What to do after a conditional path is finished.
static void exposePythonAPI()
Exposes methods of the ModuleCondition class to Python.
ModuleCondition(const ModuleCondition &other)=default
default copy constructor.
ModuleCondition()=delete
no default constructed objects.
ModuleCondition & operator=(const ModuleCondition &other)=default
and default assignment operator
Abstract base class for different kinds of events.