Deskflow
1.26.0.418
Keyboard and mouse sharing utility
Toggle main menu visibility
Loading...
Searching...
No Matches
FinalAction.h
Go to the documentation of this file.
1
/*
2
* Deskflow -- mouse and keyboard sharing utility
3
* SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
4
* SPDX-FileCopyrightText: (C) 2021 Barrier Contributors
5
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6
*/
7
8
#pragma once
9
10
#include <utility>
11
12
namespace
deskflow
{
13
17
template
<
class
Callable>
class
FinalAction
18
{
19
public
:
20
FinalAction
() noexcept = default;
21
22
explicit
FinalAction
(Callable callable) noexcept : m_callable{callable}
23
{
24
// do nothing
25
}
26
27
~FinalAction
() noexcept
28
{
29
if
(!m_invoked) {
30
m_callable();
31
}
32
}
33
34
FinalAction
(
FinalAction
&&other) noexcept : m_callable{std::move(other.m_callable)}
35
{
36
std::swap(m_invoked, other.m_invoked);
37
}
38
39
FinalAction
(
const
FinalAction
&) =
delete
;
40
FinalAction
&
operator=
(
const
FinalAction
&) =
delete
;
41
42
private
:
43
bool
m_invoked =
false
;
44
Callable m_callable;
45
};
46
47
template
<
class
Callable>
inline
FinalAction<Callable>
finally
(Callable &&callable)
noexcept
48
{
49
return
FinalAction<Callable>
(std::forward<Callable>(callable));
50
}
51
52
}
// namespace deskflow
deskflow::FinalAction
The FinalAction class implements a common pattern for calling an action at the end of a function.
Definition
FinalAction.h:18
deskflow::FinalAction::FinalAction
FinalAction(FinalAction &&other) noexcept
Definition
FinalAction.h:34
deskflow::FinalAction::FinalAction
FinalAction() noexcept=default
deskflow::FinalAction::operator=
FinalAction & operator=(const FinalAction &)=delete
deskflow::FinalAction::FinalAction
FinalAction(const FinalAction &)=delete
deskflow::FinalAction::~FinalAction
~FinalAction() noexcept
Definition
FinalAction.h:27
deskflow
Definition
DaemonApp.h:18
src
lib
base
FinalAction.h
Generated by
1.18.0