12 #pragma warning(disable : 4521)
19 #include "frc2/command/CommandGroupBase.h"
20 #include "frc2/command/CommandHelper.h"
32 :
public CommandHelper<CommandGroupBase, ParallelDeadlineGroup> {
45 std::vector<std::unique_ptr<Command>>&& commands);
56 template <
class T,
class... Types,
57 typename = std::enable_if_t<
58 std::is_base_of_v<Command, std::remove_reference_t<T>>>,
59 typename = std::enable_if_t<std::conjunction_v<
60 std::is_base_of<Command, std::remove_reference_t<Types>>...>>>
62 SetDeadline(std::make_unique<std::remove_reference_t<T>>(
63 std::forward<T>(deadline)));
64 AddCommands(std::forward<Types>(commands)...);
75 template <
class... Types,
76 typename = std::enable_if_t<std::conjunction_v<
77 std::is_base_of<Command, std::remove_reference_t<Types>>...>>>
78 void AddCommands(Types&&... commands) {
79 std::vector<std::unique_ptr<Command>> foo;
80 ((void)foo.emplace_back(std::make_unique<std::remove_reference_t<Types>>(
81 std::forward<Types>(commands))),
83 AddCommands(std::move(foo));
90 void End(
bool interrupted)
override;
97 void AddCommands(std::vector<std::unique_ptr<Command>>&& commands)
override;
99 void SetDeadline(std::unique_ptr<Command>&& deadline);
101 std::vector<std::pair<std::unique_ptr<Command>,
bool>> m_commands;
103 bool m_runWhenDisabled{
true};
104 bool m_finished{
true};