Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 90af336

Browse files
committed
refactor: rename job to task
1 parent f1b730b commit 90af336

File tree

6 files changed

+96
-91
lines changed

6 files changed

+96
-91
lines changed

examples/condition_dsl.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,19 @@ int main() {
5454
std::cout << "done with counter equal to " << rcounter << '\n';
5555
});
5656

57-
taskbuild(
57+
auto tasks = taskbuild(
5858
task(A)
5959
-> task(B)
6060
-> task(C),
6161
task(C)
6262
-> fork(B, D)
6363
)(taskflow, context);
6464

65+
tasks.get_task<A>().name("A");
66+
tasks.get_task<B>().name("B");
67+
tasks.get_task<C>().name("C");
68+
tasks.get_task<D>().name("D");
69+
6570
// visualizes the taskflow
6671
taskflow.dump(std::cout);
6772

taskflow/dsl/connection.hpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
// 2020/08/28 - Created by netcan: https://github.com/netcan
22
#pragma once
33
#include "../core/flow_builder.hpp"
4-
#include "job_trait.hpp"
4+
#include "task_trait.hpp"
55
#include "tuple_utils.hpp"
66
#include "type_list.hpp"
77

88
namespace tf {
99
namespace dsl {
1010
template <typename F, typename T> class Connection {
11-
using FROMs = typename JobTrait<F>::JobList;
12-
using TOs = typename JobTrait<T>::JobList;
11+
using FROMs = typename TaskTrait<F>::TaskList;
12+
using TOs = typename TaskTrait<T>::TaskList;
1313

1414
public:
15-
using FromJobList = Unique_t<Flatten_t<FROMs>>;
16-
using ToJobList = Unique_t<Flatten_t<TOs>>;
15+
using FromTaskList = Unique_t<Flatten_t<FROMs>>;
16+
using ToTaskList = Unique_t<Flatten_t<TOs>>;
1717
};
1818

1919
template <typename T, typename OUT = TypeList<>> struct Chain;
@@ -35,17 +35,17 @@ struct Chain<auto (*)(F)->T, OUT> {
3535
};
3636

3737
template <typename FROM, typename TO> struct OneToOneLink {
38-
template <typename JobsCB> struct InstanceType {
39-
constexpr void build(JobsCB &jobsCb) {
40-
constexpr size_t JobsCBSize = std::tuple_size<JobsCB>::value;
41-
constexpr size_t FromJobIndex =
42-
TupleElementByF_v<JobsCB, IsJob<FROM>::template apply>;
43-
constexpr size_t ToJobIndex =
44-
TupleElementByF_v<JobsCB, IsJob<TO>::template apply>;
45-
static_assert(FromJobIndex < JobsCBSize && ToJobIndex < JobsCBSize,
46-
"fatal: not find JobCb in JobsCB");
47-
std::get<FromJobIndex>(jobsCb).job_.precede(
48-
std::get<ToJobIndex>(jobsCb).job_);
38+
template <typename TasksCB> struct InstanceType {
39+
constexpr void build(TasksCB &tasksCb) {
40+
constexpr size_t TasksCBSize = std::tuple_size<TasksCB>::value;
41+
constexpr size_t FromTaskIndex =
42+
TupleElementByF_v<TasksCB, IsTask<FROM>::template apply>;
43+
constexpr size_t ToTaskIndex =
44+
TupleElementByF_v<TasksCB, IsTask<TO>::template apply>;
45+
static_assert(FromTaskIndex < TasksCBSize && ToTaskIndex < TasksCBSize,
46+
"fatal: not find TaskCb in TasksCB");
47+
std::get<FromTaskIndex>(tasksCb).task_.precede(
48+
std::get<ToTaskIndex>(tasksCb).task_);
4949
}
5050
};
5151
};

taskflow/dsl/job_trait.hpp

Lines changed: 0 additions & 45 deletions
This file was deleted.

taskflow/dsl/task_analyzer.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ template <typename... Links> class TaskAnalyzer {
2222
};
2323

2424
template <typename Link> class OneToOneLinkSetF {
25-
using FromJobList = typename Link::FromJobList;
26-
using ToJobList = typename Link::ToJobList;
25+
using FromTaskList = typename Link::FromTaskList;
26+
using ToTaskList = typename Link::ToTaskList;
2727

2828
public:
29-
using type = typename BuildOneToOneLink<FromJobList, ToJobList>::type;
29+
using type = typename BuildOneToOneLink<FromTaskList, ToTaskList>::type;
3030
};
3131

3232
public:
33-
using AllJobs = Unique_t<
34-
Concat_t<typename Links::FromJobList..., typename Links::ToJobList...>>;
33+
using AllTasks = Unique_t<
34+
Concat_t<typename Links::FromTaskList..., typename Links::ToTaskList...>>;
3535
using OneToOneLinkSet =
3636
Unique_t<Flatten_t<Map_t<TypeList<Links...>, OneToOneLinkSetF>>>;
3737
};

taskflow/dsl/task_dsl.hpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// 2020/08/28 - Created by netcan: https://github.com/netcan
22
#pragma once
33
#include "../core/flow_builder.hpp"
4-
#include "job_trait.hpp"
4+
#include "task_trait.hpp"
55
#include "meta_macro.hpp"
66
#include "task_analyzer.hpp"
77

@@ -12,53 +12,53 @@ template <typename CONTEXT = EmptyContext, typename... Chains> class TaskDsl {
1212
using Links = Unique_t<Flatten_t<TypeList<typename Chain<Chains>::type...>>>;
1313
using Analyzer = typename Links::template exportTo<TaskAnalyzer>;
1414

15-
using AllJobs = typename Analyzer::AllJobs;
15+
using AllTasks = typename Analyzer::AllTasks;
1616

17-
template <typename J> struct JobCbWithContext {
18-
using type = JobCb<J, CONTEXT>;
17+
template <typename TASK> struct TaskCbWithContext {
18+
using type = TaskCb<TASK, CONTEXT>;
1919
};
20-
using JobsCB =
21-
typename Map_t<AllJobs, JobCbWithContext>::template exportTo<std::tuple>;
20+
using TasksCB =
21+
typename Map_t<AllTasks, TaskCbWithContext>::template exportTo<std::tuple>;
2222

2323
using OneToOneLinkSet = typename Analyzer::OneToOneLinkSet;
2424
template <typename OneToOneLink> struct OneToOneLinkInstanceType {
25-
using type = typename OneToOneLink::template InstanceType<JobsCB>;
25+
using type = typename OneToOneLink::template InstanceType<TasksCB>;
2626
};
2727
using OneToOneLinkInstances =
2828
typename Map_t<OneToOneLinkSet,
2929
OneToOneLinkInstanceType>::template exportTo<std::tuple>;
3030

3131
public:
3232
constexpr TaskDsl(FlowBuilder &flow_builder, const CONTEXT &context = {}) {
33-
build_jobs_cb(flow_builder, context,
34-
std::make_index_sequence<AllJobs::size>{});
33+
build_tasks_cb(flow_builder, context,
34+
std::make_index_sequence<AllTasks::size>{});
3535
build_links(std::make_index_sequence<OneToOneLinkSet::size>{});
3636
}
3737

38-
template<typename Job>
38+
template<typename TASK>
3939
Task& get_task() {
40-
constexpr size_t JobsCBSize = std::tuple_size<JobsCB>::value;
41-
constexpr size_t JobIndex =
42-
TupleElementByF_v<JobsCB, IsJob<Job>::template apply>;
43-
static_assert(JobIndex < JobsCBSize, "fatal: not find JobCb in JobsCB");
44-
return std::get<JobIndex>(jobsCb_).job_;
40+
constexpr size_t TasksCBSize = std::tuple_size<TasksCB>::value;
41+
constexpr size_t TaskIndex =
42+
TupleElementByF_v<TasksCB, IsTask<TASK>::template apply>;
43+
static_assert(TaskIndex < TasksCBSize, "fatal: not find TaskCb in TasksCB");
44+
return std::get<TaskIndex>(tasksCb_).task_;
4545
}
4646

4747
private:
4848
template <size_t... Is>
49-
void build_jobs_cb(FlowBuilder &flow_builder, const CONTEXT &context,
49+
void build_tasks_cb(FlowBuilder &flow_builder, const CONTEXT &context,
5050
std::index_sequence<Is...>) {
51-
auto _ = {0, (std::get<Is>(jobsCb_).build(flow_builder, context), 0)...};
51+
auto _ = {0, (std::get<Is>(tasksCb_).build(flow_builder, context), 0)...};
5252
(void)_;
5353
}
5454

5555
template <size_t... Is> void build_links(std::index_sequence<Is...>) {
56-
auto _ = {0, (std::get<Is>(links_).build(jobsCb_), 0)...};
56+
auto _ = {0, (std::get<Is>(links_).build(tasksCb_), 0)...};
5757
(void)_;
5858
}
5959

6060
private:
61-
JobsCB jobsCb_;
61+
TasksCB tasksCb_;
6262
OneToOneLinkInstances links_;
6363
};
6464

@@ -77,27 +77,27 @@ constexpr TaskDsl<CONTEXT, Chains...> taskDsl(FlowBuilder &flow_builder,
7777
///////////////////////////////////////////////////////////////////////////////
7878
// def_task(TASK_NAME, { return a action lambda })
7979
#define def_task(name, ...) \
80-
struct name : tf::dsl::JobSignature, tf::dsl::EmptyContext { \
80+
struct name : tf::dsl::TaskSignature, tf::dsl::EmptyContext { \
8181
name(const EmptyContext &context) : EmptyContext(context) {} \
8282
auto operator()() { return [] __VA_ARGS__; } \
8383
};
8484
#define def_taskc(name, Context, ...) \
85-
struct name : tf::dsl::JobSignature, Context { \
85+
struct name : tf::dsl::TaskSignature, Context { \
8686
name(const Context &context) : Context(context) {} \
8787
auto operator()() { \
8888
/* copy *this(copy CONTEXT to lambda) */ \
8989
return [*this] __VA_ARGS__; \
9090
} \
9191
};
9292

93-
// some_task(A, B, C) means SomeJob
94-
#define some_task(...) auto (*)(tf::dsl::SomeJob<__VA_ARGS__>)
93+
// some_task(A, B, C) means SomeTask
94+
#define some_task(...) auto (*)(tf::dsl::SomeTask<__VA_ARGS__>)
9595
// same as some_task
9696
#define fork(...) some_task(__VA_ARGS__)
9797
// same as some_task
9898
#define merge(...) some_task(__VA_ARGS__)
9999
// task(A) means a task A
100-
#define task(Job) auto (*)(Job)
100+
#define task(Task) auto (*)(Task)
101101
// taskbuild(...) build a task dsl graph
102102
#define taskbuild(...) \
103103
tf::dsl::taskDsl<void TF_PASTE(TF_REPEAT_, TF_GET_ARG_COUNT(__VA_ARGS__))( \

taskflow/dsl/task_trait.hpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// 2020/08/28 - Created by netcan: https://github.com/netcan
2+
#pragma once
3+
#include "../core/flow_builder.hpp"
4+
#include "../core/task.hpp"
5+
#include "type_list.hpp"
6+
#include <type_traits>
7+
8+
namespace tf {
9+
namespace dsl {
10+
struct TaskSignature {};
11+
12+
template <typename TASK, typename CONTEXT> struct TaskCb {
13+
using TaskType = TASK;
14+
void build(FlowBuilder &build, const CONTEXT &context) {
15+
task_ = build.emplace(TaskType{context}());
16+
}
17+
18+
Task task_;
19+
};
20+
21+
template <typename TASK> struct IsTask {
22+
template <typename TaskCb> struct apply {
23+
constexpr static bool value =
24+
std::is_same<typename TaskCb::TaskType, TASK>::value;
25+
};
26+
};
27+
28+
template <typename TASK, typename = void> struct TaskTrait;
29+
30+
template <typename... TASK> struct SomeTask {
31+
using TaskList =
32+
Unique_t<Flatten_t<TypeList<typename TaskTrait<TASK>::TaskList...>>>;
33+
};
34+
35+
// a task self
36+
template <typename TASK>
37+
struct TaskTrait<TASK, std::enable_if_t<std::is_base_of<TaskSignature, TASK>::value>> {
38+
using TaskList = TypeList<TASK>;
39+
};
40+
41+
template <typename... TASK> struct TaskTrait<SomeTask<TASK...>> {
42+
using TaskList = typename SomeTask<TASK...>::TaskList;
43+
};
44+
} // namespace dsl
45+
} // namespace tf

0 commit comments

Comments
 (0)