File indexing completed on 2024-04-28 04:01:23

0001 /* -*- C++ -*-
0002     Wrap functors in jobs in ThreadWeaver.
0003 
0004     SPDX-FileCopyrightText: 2005-2013 Mirko Boehm <mirko@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #ifndef LAMBDA_H
0010 #define LAMBDA_H
0011 
0012 #include "job.h"
0013 #include "threadweaver_export.h"
0014 
0015 namespace ThreadWeaver
0016 {
0017 /** @brief Lambda is a template that takes any type on which operator() is available, and executes it in run(). */
0018 template<typename T>
0019 class Lambda : public Job
0020 {
0021 public:
0022     explicit Lambda(T t_)
0023         : t(t_)
0024     {
0025     }
0026 
0027 protected:
0028     void run(JobPointer, Thread *) override
0029     {
0030         t();
0031     }
0032 
0033 private:
0034     T t;
0035 };
0036 
0037 }
0038 
0039 #endif // LAMBDA_H