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
10{
11 Q_OBJECT
12 Q_DISABLE_COPY(GuardedTransition)
13
14public:
15 using Guard = std::function<bool()>;
16
22 template<typename Func>
23 GuardedTransition(const typename QtPrivate::FunctionPointer<Func>::Object* sender,
24 Func signalFn,
25 QAbstractState* target,
27 : QGCSignalTransition(sender, signalFn)
28 , _guard(std::move(guard))
29 {
30 setTargetState(target);
31 }
32
37 template<typename Func>
38 GuardedTransition(const typename QtPrivate::FunctionPointer<Func>::Object* sender,
39 Func signalFn,
41 : QGCSignalTransition(sender, signalFn)
42 , _guard(std::move(guard))
43 {
44 }
45
47 void setGuard(Guard guard) { _guard = std::move(guard); }
48
50 Guard guard() const { return _guard; }
51
52protected:
54 bool eventTest(QEvent* event) override;
55
56private:
57 Guard _guard;
58};
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.