| 652 | |
| 653 | template <typename NewTaskHeadInfo> |
| 654 | auto uses_head() -> TInlineTask<NewTaskHeadInfo> |
| 655 | requires(!HAS_HEAD) |
| 656 | { |
| 657 | DAXA_DBG_ASSERT_TRUE_M(value._internal._attachments.size() == 0, "Detected invalid task head attachment use! Task heads must be added to tasks BEFORE ANY non-head attachments are added to a task!"); |
| 658 | auto head_default_stage = task_type_default_stage(NewTaskHeadInfo::TYPE); |
| 659 | if (value._internal._name.size() == 0) |
| 660 | { |
| 661 | value._internal._name = NewTaskHeadInfo::NAME; |
| 662 | } |
| 663 | TInlineTask<NewTaskHeadInfo> ret = {}; |
| 664 | |
| 665 | TaskStages default_stage = value._internal._default_stage != TaskStages::NONE ? value._internal._default_stage : head_default_stage; |
| 666 | for (u32 i = 0; i < NewTaskHeadInfo::ATTACHMENT_COUNT; ++i) |
| 667 | { |
| 668 | ret.value._internal._attachments.push_back(detail::complete_head_attachment_info(NewTaskHeadInfo::AT._internal.value[i], {}, default_stage, value._internal._name)); |
| 669 | } |
| 670 | ret.value._internal._callback = this->value._internal._callback; |
| 671 | ret.value._internal._name = this->value._internal._name; |
| 672 | ret.value._internal._task_type = this->value._internal._task_type; |
| 673 | return ret; |
| 674 | } |
| 675 | |
| 676 | auto reads(TaskHeadT::Views const & views) -> TInlineTask & |
| 677 | requires(HAS_HEAD) |
nothing calls this directly
no test coverage detected