diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-09-10 21:58:38 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-09-10 21:59:57 -0300 |
| commit | 0a062f0fc8ace3a77bd7ef75d40eb6c1761be345 (patch) | |
| tree | 8e364e1b30931fad0876a87f40b00bf19343341d /BJC-Utils2/src/main | |
| parent | 763838e5c2be7d66ae0be2a6440b78e4f014d495 (diff) | |
Add BoundBlockReader
BoundBlockReader is a BlockReader that draws blocks from a pair of
functions.
Thus, it is the most general of the BlockReaders, in that you could
probably implement any of them with suitably chosen functions.
Diffstat (limited to 'BJC-Utils2/src/main')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java b/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java new file mode 100644 index 0000000..3c9a872 --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/BoundBlockReader.java @@ -0,0 +1,48 @@ +package bjc.utils.ioutils.blocks; + +import java.io.IOException; + +import java.util.function.Supplier; + +public class BoundBlockReader implements BlockReader { + private BooleanSupplier checker; + private Supplier<Block> getter; + + private Block current; + + private int blockNo; + + public BoundBlockReader(BooleanSupplier blockChecker, Supplier<Block> blockGetter) { + checker = blockChecker; + getter = blockGetter; + + blockNo += 1; + } + + @Override + public boolean hasNextBlock() { + return blockChecker.getAsBoolean(); + } + + @Override + public Block getBlock() { + return current; + } + + @Override + public boolean nextBlock() { + if(checker.getAsBoolean()) { + current = getter.get(); + blockNo += 1; + + return true; + } + + return false; + } + + @Override + public int getBlockCount() { + return blockNo; + } +} |
