From faedf1fe8c22e4ccfa375951166bd1a41a4e3b94 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Sun, 26 Mar 2017 23:00:28 -0400 Subject: More FDS work --- .../src/main/java/bjc/utils/cli/fds/FDSState.java | 85 ++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java (limited to 'BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java') diff --git a/BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java b/BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java new file mode 100644 index 0000000..a0ad5e6 --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java @@ -0,0 +1,85 @@ +package bjc.utils.cli.fds; + +import java.util.function.Consumer; + +import bjc.utils.ioutils.Block; + +/** + * Internal state for an FDS interface. + * + * @author bjculkin + * + * @param + * The state type of the interface. + */ +public class FDSState { + /** + * The input mode for the interface. + * + * @author bjculkin + * + */ + public static enum InputMode { + /** + * Normal mode. + * + * Reads only the first character in the block as a command. + */ + NORMAL, + /** + * Reads every character in the block as a command. + */ + CHORD, + /** + * Reads every character in the block, but after a terminal + * command, data will be read inline separated by spaces until a + * semicolon is read. + * + * The semicolon can be escaped with a backslash. + */ + INLINE, + /** + * Reads every character in the block, but after a terminal + * command, data will be read inline with each character being a + * separate item until a semicolon is read. + * + * The semicolon can be escaped with a backslash. + */ + } + + /** + * The state of the interface + */ + public S state; + /** + * The input mode for the interface. + */ + public InputMode mode; + + /** + * Function to add a command block to be processed. + */ + public Consumer enqueCommand; + + /** + * Function to add a data block to be processed. + */ + public Consumer enqueData; + + /** + * Create a new interface state. + * + * @param stat + * The initial state for the interface. + * + * @param inputMode + * The input mode for the interface. + */ + public FDSState(S stat, InputMode inputMode, Consumer comQueue, Consumer dataQueue) { + state = stat; + mode = inputMode; + + enqueCommand = comQueue; + enqueData = dataQueue; + } +} \ No newline at end of file -- cgit v1.2.3