Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
TMethodJob.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
4 * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
5 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6 */
7
8#pragma once
9
10#include "IJob.h"
11
13
16template <class T> class TMethodJob : public IJob
17{
18public:
20 TMethodJob(T *object, void (T::*method)(void *), void *arg = nullptr);
21 ~TMethodJob() override = default;
22
23 // IJob overrides
24 void run() override;
25
26private:
27 T *m_object;
28 void (T::*m_method)(void *);
29 void *m_arg;
30};
31
32template <class T>
33inline TMethodJob<T>::TMethodJob(T *object, void (T::*method)(void *), void *arg)
34 : m_object(object),
35 m_method(method),
36 m_arg(arg)
37{
38 // do nothing
39}
40
41template <class T> inline void TMethodJob<T>::run()
42{
43 if (m_object != nullptr) {
44 (m_object->*m_method)(m_arg);
45 }
46}
Job interface.
Definition IJob.h:17
TMethodJob(T *object, void(T::*method)(void *), void *arg=nullptr)
run() invokes object->method(arg)
Definition TMethodJob.h:33
~TMethodJob() override=default
void run() override
Run the job.
Definition TMethodJob.h:41