Skip to content

Commit 1c7f5f5

Browse files
committed
Add user data to FunctionalTask
1 parent 0fa36d1 commit 1c7f5f5

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

render_pipeline/rppanda/task/functional_task.hpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@ class RENDER_PIPELINE_DECL FunctionalTask : public AsyncTask
3535
using TaskFunc = std::function<DoneStatus(FunctionalTask*)>;
3636
using BirthFunc = std::function<void(FunctionalTask*)>;
3737
using DeathFunc = std::function<void(FunctionalTask*, bool)>;
38+
using UserDataType = std::shared_ptr<void>;
3839

3940
public:
4041
FunctionalTask(const TaskFunc& func = nullptr, const std::string& name = {});
42+
FunctionalTask(const TaskFunc& func, const UserDataType& data, const std::string& name = {});
4143
FunctionalTask(TaskFunc&& func, const std::string& name = {});
44+
FunctionalTask(TaskFunc&& func, const UserDataType& data, const std::string& name = {});
4245

4346
ALLOC_DELETED_CHAIN(FunctionalTask);
4447

@@ -56,6 +59,9 @@ class RENDER_PIPELINE_DECL FunctionalTask : public AsyncTask
5659
void set_upon_death(DeathFunc&& func);
5760
const DeathFunc& get_upon_death() const;
5861

62+
void set_user_data(const UserDataType& data);
63+
UserDataType get_user_data() const;
64+
5965
protected:
6066
bool is_runnable() override;
6167
DoneStatus do_task() override;
@@ -66,6 +72,7 @@ class RENDER_PIPELINE_DECL FunctionalTask : public AsyncTask
6672
TaskFunc function_;
6773
BirthFunc upon_birth_;
6874
DeathFunc upon_death_;
75+
UserDataType user_data_;
6976

7077
public:
7178
static TypeHandle get_class_type();
@@ -124,6 +131,16 @@ inline const FunctionalTask::DeathFunc& FunctionalTask::get_upon_death() const
124131
return upon_death_;
125132
}
126133

134+
inline void FunctionalTask::set_user_data(const UserDataType& data)
135+
{
136+
user_data_ = data;
137+
}
138+
139+
inline FunctionalTask::UserDataType FunctionalTask::get_user_data() const
140+
{
141+
return user_data_;
142+
}
143+
127144
inline bool FunctionalTask::is_runnable()
128145
{
129146
return bool(function_);

src/rppanda/task/functional_task.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,27 @@ namespace rppanda {
2525

2626
TypeHandle FunctionalTask::type_handle_;
2727

28-
FunctionalTask::FunctionalTask(const TaskFunc& func, const std::string& name) : AsyncTask(name), function_(func)
28+
FunctionalTask::FunctionalTask(const TaskFunc& func, const std::string& name) :
29+
FunctionalTask(func, {}, name)
2930
{
3031
}
3132

32-
FunctionalTask::FunctionalTask(TaskFunc&& func, const std::string& name) : AsyncTask(name), function_(func)
33+
FunctionalTask::FunctionalTask(const TaskFunc& func, const UserDataType& data, const std::string& name) :
34+
AsyncTask(name), function_(func), user_data_(data)
3335
{
3436
}
3537

38+
FunctionalTask::FunctionalTask(TaskFunc&& func, const std::string& name) :
39+
FunctionalTask(std::move(func), {}, name)
40+
{
41+
}
42+
43+
FunctionalTask::FunctionalTask(TaskFunc&& func, const UserDataType& data, const std::string& name) :
44+
AsyncTask(name), function_(func), user_data_(data)
45+
{
46+
47+
}
48+
3649
FunctionalTask::~FunctionalTask() = default;
3750

3851
void FunctionalTask::upon_birth(AsyncTaskManager* manager)

0 commit comments

Comments
 (0)