001package jmri;
002
003import javax.annotation.CheckReturnValue;
004
005/**
006 * Interface for {@link NamedBean} indicating that the bean may control more than one output.
007 * <p>
008 * Originally just used by {@link Turnout},
009 * this is available for any bean type with variable output span.
010 *
011 * @author Bob Jacobsen Copyright 2022
012 */
013public interface VariableControlSpanBean extends NamedBean {
014
015    /**
016     * Provide the number of input/output bits this bean controls.
017     * <p>
018     * Typically just one, some systems provide outputs that control two outputs, e.g. C/MRI.
019     *
020     * @return the number of bits
021     */
022    @CheckReturnValue
023    int getNumberControlBits();
024
025    /**
026     * Set number of input/output bits this bean controls.
027     *
028     * @param num the size of the input/output, currently 1 or 2
029     */
030    @InvokeOnLayoutThread
031    void setNumberControlBits(int num);
032
033}