VIPRA Documentation
Loading...
Searching...
No Matches
sub_condition.hpp
1#pragma once
2
3#include <functional>
4
5#include "vipra/vipra_behaviors/definitions/sim_pack.hpp"
6#include "vipra/vipra_behaviors/targets/target.hpp"
7
8namespace VIPRA::Behaviors {
9enum class BoolOp { AND, OR };
10
21inline constexpr auto short_circuit(VIPRA::idx idx, std::vector<bool>& met,
22 std::vector<bool> const& prevMet, BoolOp oper) -> bool
23{
24 if ( oper == BoolOp::AND && ! prevMet[idx] ) {
25 met[idx] = false;
26 return true;
27 }
28 if ( oper == BoolOp::OR && prevMet[idx] ) {
29 met[idx] = true;
30 return true;
31 }
32
33 return false;
34}
35
36using SubCondition =
37 std::function<void(Simpack, VIPRA::idxVec const&, std::vector<Target> const&,
38 std::vector<bool>&, std::vector<bool> const&, BoolOp)>;
39} // namespace VIPRA::Behaviors
Holds references to commonly used parameters for simpler passing.
Definition sim_pack.hpp:23