mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
SCRIPT Move java files
This commit is contained in:
committed by
Peter Johnson
parent
7ca1be9bae
commit
c350c5f112
@@ -0,0 +1,52 @@
|
||||
// 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.
|
||||
|
||||
package org.wpilib.commands3;
|
||||
|
||||
/**
|
||||
* A scope for when a binding is live. Bindings tied to a scope must be deleted when the scope
|
||||
* becomes inactive.
|
||||
*/
|
||||
@SuppressWarnings("PMD.ImplicitFunctionalInterface")
|
||||
interface BindingScope {
|
||||
/**
|
||||
* Checks if the scope is active. Bindings for inactive scopes are removed from the scheduler.
|
||||
*
|
||||
* @return True if the scope is still active, false if not.
|
||||
*/
|
||||
boolean active();
|
||||
|
||||
static BindingScope global() {
|
||||
return Global.INSTANCE;
|
||||
}
|
||||
|
||||
static BindingScope forCommand(Scheduler scheduler, Command command) {
|
||||
return new ForCommand(scheduler, command);
|
||||
}
|
||||
|
||||
/** A global binding scope. Bindings in this scope are always active. */
|
||||
final class Global implements BindingScope {
|
||||
// No reason not to be a singleton.
|
||||
public static final Global INSTANCE = new Global();
|
||||
|
||||
@Override
|
||||
public boolean active() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A binding scoped to the lifetime of a specific command. This should be used when a binding is
|
||||
* created within a command, tying the lifetime of the binding to the declaring command.
|
||||
*
|
||||
* @param scheduler The scheduler managing the command.
|
||||
* @param command The command being scoped to.
|
||||
*/
|
||||
record ForCommand(Scheduler scheduler, Command command) implements BindingScope {
|
||||
@Override
|
||||
public boolean active() {
|
||||
return scheduler.isRunning(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user