13 const auto onSetup = [bodyExecutedStorage] {
14 return *bodyExecutedStorage ? SetupResult::StopWithSuccess : SetupResult::Continue;
17 const auto onBodyDone = [bodyExecutedStorage] { *bodyExecutedStorage =
true; };
19 const Group bodyTask { condition.m_body, onGroupDone(onBodyDone) };
22 onGroupSetup(onSetup),
23 condition.m_condition ?
Group{ !*condition.m_condition || bodyTask } : bodyTask
29 Storage<
bool> bodyExecutedStorage;
32 for (
const ConditionData &condition : conditions)
33 recipes << conditionRecipe(bodyExecutedStorage, condition);
35 return Group { bodyExecutedStorage, recipes };
40 return conditionsRecipe(m_conditions);
44 : m_conditions{{ifItem.m_condition, thenItem.m_body}}
48 : m_conditions(elseIfItem.m_conditions)
50 m_conditions.append({elseIfItem.m_nextCondition, thenItem.m_body});
55 return conditionsRecipe(m_conditions);
59 : m_conditions(thenItem.m_conditions)
61 m_conditions.append({{}, elseItem.m_body});
65 : m_conditions(thenItem.m_conditions)
66 , m_nextCondition(elseIfItem.m_condition)
71 return {ifItem, thenItem};
76 return {elseIfItem, thenItem};
81 return {thenItem, elseIfItem};
86 return {thenItem, elseItem};
operator ExecutableItem() const
\inheaderfile solutions/tasking/tasktree.h \inmodule TaskingSolution
\inheaderfile solutions/tasking/tasktree.h \inmodule TaskingSolution
operator ExecutableItem() const
\inmodule TaskingSolution
static ExecutableItem conditionsRecipe(const QList< ConditionData > &conditions)
ElseItem operator>>(const ThenItem &thenItem, const Else &elseItem)
ElseIfItem operator>>(const ThenItem &thenItem, const ElseIf &elseIfItem)
static Group conditionRecipe(const Storage< bool > &bodyExecutedStorage, const ConditionData &condition)
ThenItem operator>>(const If &ifItem, const Then &thenItem)
ThenItem operator>>(const ElseIfItem &elseIfItem, const Then &thenItem)