[wpilib] Add EventLoop (#4104)

This is a generic expansion of the command-based Trigger framework.
This commit is contained in:
Starlight220
2022-06-09 08:16:51 +03:00
committed by GitHub
parent 16a4888c52
commit 45b7fc445b
27 changed files with 1265 additions and 428 deletions

View File

@@ -0,0 +1,30 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
#include "frc/event/EventLoop.h"
using namespace frc;
EventLoop::EventLoop() {}
void EventLoop::Binding::Poll() {
if (condition()) {
action();
}
}
void EventLoop::Bind(std::function<bool()> condition,
wpi::unique_function<void()> action) {
m_bindings.emplace_back(Binding{condition, std::move(action)});
}
void EventLoop::Poll() {
for (Binding& binding : m_bindings) {
binding.Poll();
}
}
void EventLoop::Clear() {
m_bindings.clear();
}