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

Skip to content

Commit f1b730b

Browse files
committed
support get_task, for set task name...
1 parent a91882f commit f1b730b

File tree

4 files changed

+28
-20
lines changed

4 files changed

+28
-20
lines changed

examples/visualization_dsl.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,24 @@ int main() {
1717
def_task(D, { std::cout << "TaskD\n"; };);
1818
def_task(E, { std::cout << "TaskE\n"; };);
1919

20-
taskbuild(
20+
auto tasks = taskbuild(
2121
task(A)
2222
-> fork(B, C)
2323
-> task(D),
2424
merge(A, B)
2525
-> task(E)
2626
)(tf);
2727

28-
// std::cout << "[dump without name assignment]\n";
28+
std::cout << "[dump without name assignment]\n";
2929
tf.dump(std::cout);
3030

31-
// TODO: support set name
32-
// std::cout << "[dump with name assignment]\n";
33-
// A.name("A");
34-
// B.name("B");
35-
// C.name("C");
36-
// D.name("D");
37-
// E.name("E");
38-
// tf.dump(std::cout);
31+
std::cout << "[dump with name assignment]\n";
32+
tasks.get_task<A>().name("A");
33+
tasks.get_task<B>().name("B");
34+
tasks.get_task<C>().name("C");
35+
tasks.get_task<D>().name("D");
36+
tasks.get_task<E>().name("E");
37+
tf.dump(std::cout);
3938

4039
// ------------------------------------------------------
4140
// Dynamic Tasking

taskflow/dsl/connection.hpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,6 @@ struct Chain<auto (*)(F)->T, OUT> {
3636

3737
template <typename FROM, typename TO> struct OneToOneLink {
3838
template <typename JobsCB> struct InstanceType {
39-
template <typename J> struct IsJob {
40-
template <typename JobCb> struct apply {
41-
constexpr static bool value =
42-
std::is_same<typename JobCb::JobType, J>::value;
43-
};
44-
};
45-
4639
constexpr void build(JobsCB &jobsCb) {
4740
constexpr size_t JobsCBSize = std::tuple_size<JobsCB>::value;
4841
constexpr size_t FromJobIndex =

taskflow/dsl/job_trait.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ template <typename J, typename CONTEXT> struct JobCb {
1818
Task job_;
1919
};
2020

21+
template <typename J> struct IsJob {
22+
template <typename JobCb> struct apply {
23+
constexpr static bool value =
24+
std::is_same<typename JobCb::JobType, J>::value;
25+
};
26+
};
27+
2128
template <typename J, typename = void> struct JobTrait;
2229

2330
template <typename... J> struct SomeJob {

taskflow/dsl/task_dsl.hpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ template <typename CONTEXT = EmptyContext, typename... Chains> class TaskDsl {
1717
template <typename J> struct JobCbWithContext {
1818
using type = JobCb<J, CONTEXT>;
1919
};
20-
using JobsCb =
20+
using JobsCB =
2121
typename Map_t<AllJobs, JobCbWithContext>::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<JobsCB>;
2626
};
2727
using OneToOneLinkInstances =
2828
typename Map_t<OneToOneLinkSet,
@@ -35,6 +35,15 @@ template <typename CONTEXT = EmptyContext, typename... Chains> class TaskDsl {
3535
build_links(std::make_index_sequence<OneToOneLinkSet::size>{});
3636
}
3737

38+
template<typename Job>
39+
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_;
45+
}
46+
3847
private:
3948
template <size_t... Is>
4049
void build_jobs_cb(FlowBuilder &flow_builder, const CONTEXT &context,
@@ -49,7 +58,7 @@ template <typename CONTEXT = EmptyContext, typename... Chains> class TaskDsl {
4958
}
5059

5160
private:
52-
JobsCb jobsCb_;
61+
JobsCB jobsCb_;
5362
OneToOneLinkInstances links_;
5463
};
5564

0 commit comments

Comments
 (0)