From db33b9e1043ee6568f9fc26c85bf15e4e1e5e9c5 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 13 Sep 2024 21:48:02 +0200 Subject: [PATCH] TaskTree: Simplify conditionalRecipe() Eliminate the internal Storage object. Use logical operators and rely on short-circuiting behavior. Change-Id: I13dcd39f2c7c5d2c40dc228ccff6d5dcdbd42394 Reviewed-by: hjk --- src/libs/solutions/tasking/conditional.cpp | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/src/libs/solutions/tasking/conditional.cpp b/src/libs/solutions/tasking/conditional.cpp index b6439d33453..19645e89916 100644 --- a/src/libs/solutions/tasking/conditional.cpp +++ b/src/libs/solutions/tasking/conditional.cpp @@ -10,33 +10,17 @@ namespace Tasking { static Group conditionRecipe(const Storage &bodyExecutedStorage, const ConditionData &condition) { - const Storage doExecuteBodyStorage(true); - const auto onSetup = [bodyExecutedStorage] { return *bodyExecutedStorage ? SetupResult::StopWithSuccess : SetupResult::Continue; }; - const auto onConditionDone = [doExecuteBodyStorage](DoneWith result) { - *doExecuteBodyStorage = result == DoneWith::Success; - return DoneResult::Success; - }; + const auto onBodyDone = [bodyExecutedStorage] { *bodyExecutedStorage = true; }; - const auto onContinuationSetup = [doExecuteBodyStorage, bodyExecutedStorage] { - *bodyExecutedStorage = *doExecuteBodyStorage; - return *doExecuteBodyStorage ? SetupResult::Continue : SetupResult::StopWithSuccess; - }; + const Group bodyTask { condition.m_body, onGroupDone(onBodyDone) }; return { - doExecuteBodyStorage, onGroupSetup(onSetup), - condition.m_condition ? Group { - *condition.m_condition, - onGroupDone(onConditionDone) - } : nullItem, - Group { - onGroupSetup(onContinuationSetup), - condition.m_body - } + condition.m_condition ? Group{ !*condition.m_condition || bodyTask } : bodyTask }; }