[commands] Add onlyWhile and onlyIf (#5291)

This commit is contained in:
Joseph Eng
2023-04-30 14:09:02 -07:00
committed by GitHub
parent 40ca094686
commit ee3b4621e5
7 changed files with 183 additions and 3 deletions

View File

@@ -151,6 +151,11 @@ CommandPtr CommandPtr::Until(std::function<bool()> condition) && {
return std::move(*this);
}
CommandPtr CommandPtr::OnlyWhile(std::function<bool()> condition) && {
AssertValid();
return std::move(*this).Until(std::not_fn(std::move(condition)));
}
CommandPtr CommandPtr::Unless(std::function<bool()> condition) && {
AssertValid();
m_ptr = std::make_unique<ConditionalCommand>(
@@ -159,6 +164,11 @@ CommandPtr CommandPtr::Unless(std::function<bool()> condition) && {
return std::move(*this);
}
CommandPtr CommandPtr::OnlyIf(std::function<bool()> condition) && {
AssertValid();
return std::move(*this).Unless(std::not_fn(std::move(condition)));
}
CommandPtr CommandPtr::DeadlineWith(CommandPtr&& parallel) && {
AssertValid();
std::vector<std::unique_ptr<Command>> vec;