package li.cil.oc.api.driver.item;
import li.cil.oc.api.machine.Architecture;
import net.minecraft.item.ItemStack;
/**
* May be implemented in processor drivers of processors that can be reconfigured.
* <p/>
* This is the case for OC's built-in CPUs, for example, which can be reconfigured
* to any registered architecture. It a CPU has such a driver, it may also be
* reconfigured by the machine it is running in (e.g. in the Lua case via
* <tt>computer.setArchitecture</tt>).
*/
public interface MutableProcessor extends Processor {
/**
* Get a list of all architectures supported by this processor.
*/
java.util.Collection<Class<? extends Architecture>> allArchitectures();
/**
* Set the architecture to use for the specified processor.
*
* @param stack the processor to set the architecture for.
* @param architecture the architecture to use on the processor.
*/
void setArchitecture(ItemStack stack, Class<? extends Architecture> architecture);
}