// Path: src/com/limelight/input/Device.java
// public class Device {
// 	private int id;
// 	private int numButtons;
// 	private int numAxes;
// 	
// 	public Device(int deviceID, int numButtons, int numAxes) {
// 		this.id = deviceID;
// 		this.numButtons = numButtons;
// 		this.numAxes = numAxes;
// 	}
// 	
// 	public int getId() {
// 		return id;
// 	}
// 	
// 	public int getNumButtons() {
// 		return numButtons;
// 	}
// 	
// 	public int getNumAxes() {
// 		return numAxes;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		return id;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object o) {
// 		return (o instanceof Device && ((Device) o).id == id);
// 	}
// }
// 
// Path: src/com/limelight/input/DeviceListener.java
// public interface DeviceListener {
// 	public void handleButton(Device device, int buttonId, boolean pressed);
// 	public void handleAxis(Device device, int axisId, float newValue, float lastValue);
// 	public void handleDeviceAdded(Device device);
// 	public void handleDeviceRemoved(Device device);
// }


import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import com.limelight.input.Device;
import com.limelight.input.DeviceListener;
	}
	
	public List<DeviceListener> getListeners() {
		return Collections.unmodifiableList(listeners);
	}
	
	public void removeListener(DeviceListener listener) {
		listeners.remove(listener);
	}
	
	public void deviceAttached(int deviceId, int numButtons, int numAxes) {
		Device dev = new Device(deviceId, numButtons, numAxes);
		
		devices.put(deviceId, dev);
		
		for (DeviceListener listener : listeners) {
			listener.handleDeviceAdded(dev);
		}
	}

	public void deviceRemoved(int deviceId) {
		Device dev = devices.get(deviceId);
		if (dev == null) {
			return;
		}
		
		for (DeviceListener listener : listeners) {
			listener.handleDeviceRemoved(dev);
		}
		
// Path: src/com/limelight/input/Device.java
// public class Device {
// 	private int id;
// 	private int numButtons;
// 	private int numAxes;
// 	
// 	public Device(int deviceID, int numButtons, int numAxes) {
// 		this.id = deviceID;
// 		this.numButtons = numButtons;
// 		this.numAxes = numAxes;
// 	}
// 	
// 	public int getId() {
// 		return id;
// 	}
// 	
// 	public int getNumButtons() {
// 		return numButtons;
// 	}
// 	
// 	public int getNumAxes() {
// 		return numAxes;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		return id;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object o) {
// 		return (o instanceof Device && ((Device) o).id == id);
// 	}
// }
// 
// Path: src/com/limelight/input/DeviceListener.java
// public interface DeviceListener {
// 	public void handleButton(Device device, int buttonId, boolean pressed);
// 	public void handleAxis(Device device, int axisId, float newValue, float lastValue);
// 	public void handleDeviceAdded(Device device);
// 	public void handleDeviceRemoved(Device device);
// }


// Path: src/com/limelight/input/gamepad/GamepadListener.java
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import com.limelight.input.Device;
import com.limelight.input.DeviceListener;

	}
	
	public List<DeviceListener> getListeners() {
		return Collections.unmodifiableList(listeners);
	}
	
	public void removeListener(DeviceListener listener) {
		listeners.remove(listener);
	}
	
	public void deviceAttached(int deviceId, int numButtons, int numAxes) {
		Device dev = new Device(deviceId, numButtons, numAxes);
		
		devices.put(deviceId, dev);
		
		for (DeviceListener listener : listeners) {
			listener.handleDeviceAdded(dev);
		}
	}

	public void deviceRemoved(int deviceId) {
		Device dev = devices.get(deviceId);
		if (dev == null) {
			return;
		}
		
		for (DeviceListener listener : listeners) {
			listener.handleDeviceRemoved(dev);
		}
		
		devices.remove(deviceId);