|
5 | 5 | #include "task_analyzer.hpp" |
6 | 6 |
|
7 | 7 | namespace tf { |
| 8 | +namespace dsl { |
8 | 9 | template <typename... Chains> class TaskDsl { |
9 | 10 | using Links = Unique_t<Flatten_t<TypeList<typename Chain<Chains>::type...>>>; |
10 | 11 | using Analyzer = typename Links::template exportTo<TaskAnalyzer>; |
@@ -42,17 +43,24 @@ template <typename... Chains> class TaskDsl { |
42 | 43 | JobsCb jobsCb_; |
43 | 44 | OneToOneLinkInstances links_; |
44 | 45 | }; |
| 46 | +} |
| 47 | +} // namespace tf |
45 | 48 |
|
46 | | -#define __def_task(name, ...) \ |
47 | | - struct name : tf::JobSignature { \ |
| 49 | +// def_task(TASK_NAME, { return a action lambda }) |
| 50 | +#define def_task(name, ...) \ |
| 51 | + struct name : tf::dsl::JobSignature { \ |
48 | 52 | auto operator()() __VA_ARGS__ \ |
49 | 53 | } |
50 | 54 |
|
51 | | -#define __some_tsk(...) auto (*)(tf::SomeJob<__VA_ARGS__>) |
52 | | -#define __fork(...) __some_tsk(__VA_ARGS__) |
53 | | -#define __merge(...) __some_tsk(__VA_ARGS__) |
54 | | -#define __tsk(Job) auto (*)(Job) |
55 | | -#define __chain(link) link->void |
56 | | -#define __taskbuild(...) tf::TaskDsl<__VA_ARGS__> |
57 | | - |
58 | | -} // namespace tf |
| 55 | +// some_task(A, B, C) means SomeJob |
| 56 | +#define some_task(...) auto (*)(tf::dsl::SomeJob<__VA_ARGS__>) |
| 57 | +// same as some_task |
| 58 | +#define fork(...) some_task(__VA_ARGS__) |
| 59 | +// same as some_task |
| 60 | +#define merge(...) some_task(__VA_ARGS__) |
| 61 | +// task(A) means a task A |
| 62 | +#define task(Job) auto (*)(Job) |
| 63 | +// chain(task(A) -> task(B) -> ...) for build a task chain |
| 64 | +#define chain(link) link->void |
| 65 | +// taskbuild(...) build a task dsl graph |
| 66 | +#define taskbuild(...) tf::dsl::TaskDsl<__VA_ARGS__> |
0 commit comments