QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
GuardedTransition.h
Go to the documentation of this file.
1#pragma once
2
4
5#include <functional>
6
12{
13 Q_OBJECT
14 Q_DISABLE_COPY(GuardedTransition)
15
16public:
17 using Guard = std::function<bool()>;
18
24 template<typename Func>
25 GuardedTransition(const typename QtPrivate::FunctionPointer<Func>::Object* sender,
26 Func signalFn,
27 QAbstractState* target,
29 : QGCSignalTransition(sender, signalFn)
30 , _guard(std::move(guard))
31 {
32 setTargetState(target);
33 }
34
39 template<typename Func>
40 GuardedTransition(const typename QtPrivate::FunctionPointer<Func>::Object* sender,
41 Func signalFn,
43 : QGCSignalTransition(sender, signalFn)
44 , _guard(std::move(guard))
45 {
46 }
47
49 void setGuard(Guard guard) { _guard = std::move(guard); }
50
52 Guard guard() const { return _guard; }
53
54protected:
56 bool eventTest(QEvent* event) override;
57
58private:
59 Guard _guard;
60};
A transition that only fires if a guard predicate returns true.
GuardedTransition(const typename QtPrivate::FunctionPointer< Func >::Object *sender, Func signalFn, QAbstractState *target, Guard guard)
std::function< bool()> Guard
bool eventTest(QEvent *event) override
Override to check guard before allowing transition.
void setGuard(Guard guard)
Set the guard predicate.
Guard guard() const
Get the current guard predicate.
GuardedTransition(const typename QtPrivate::FunctionPointer< Func >::Object *sender, Func signalFn, Guard guard)
Base class for signal-based transitions that need access to QGCStateMachine and Vehicle.