mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
- Remove use of std::set. The only place std::set was actually used was in ParallelRaceGroup, but this was of minimal utility as ParallelRaceGroup checked for duplicate subsystem requirements, so it would be very unusual to end up with duplicate commands in any case; replaced it with a vector. - Remove use of std::unordered_map except for SelectCommand. Replaced with vector. - Use pImpl idiom for CommandScheduler - Minimize include files (remove unnecessary ones) - Reformat include file order for consistency
52 lines
1.7 KiB
C++
52 lines
1.7 KiB
C++
/*----------------------------------------------------------------------------*/
|
|
/* Copyright (c) 2019 FIRST. All Rights Reserved. */
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
|
/* the project. */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#pragma once
|
|
|
|
#include <wpi/ArrayRef.h>
|
|
#include <wpi/SmallVector.h>
|
|
|
|
#include "frc2/command/CommandBase.h"
|
|
#include "frc2/command/CommandHelper.h"
|
|
#include "frc2/command/SetUtilities.h"
|
|
|
|
namespace frc2 {
|
|
/**
|
|
* Schedules the given commands when this command is initialized, and ends when
|
|
* all the commands are no longer scheduled. Useful for forking off from
|
|
* CommandGroups. If this command is interrupted, it will cancel all of the
|
|
* commands.
|
|
*/
|
|
class ProxyScheduleCommand
|
|
: public CommandHelper<CommandBase, ProxyScheduleCommand> {
|
|
public:
|
|
/**
|
|
* Creates a new ProxyScheduleCommand that schedules the given commands when
|
|
* initialized, and ends when they are all no longer scheduled.
|
|
*
|
|
* @param toSchedule the commands to schedule
|
|
*/
|
|
explicit ProxyScheduleCommand(wpi::ArrayRef<Command*> toSchedule);
|
|
|
|
ProxyScheduleCommand(ProxyScheduleCommand&& other) = default;
|
|
|
|
ProxyScheduleCommand(const ProxyScheduleCommand& other) = default;
|
|
|
|
void Initialize() override;
|
|
|
|
void End(bool interrupted) override;
|
|
|
|
void Execute() override;
|
|
|
|
bool IsFinished() override;
|
|
|
|
private:
|
|
wpi::SmallVector<Command*, 4> m_toSchedule;
|
|
bool m_finished{false};
|
|
};
|
|
} // namespace frc2
|