summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-09-10 21:28:40 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-09-10 21:28:40 -0300
commit4c624c06bae3080a5dc8d92a78c75cf1f84a3970 (patch)
tree004f74165a6f4e9caea377864e16e936bdf121d2 /BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java
parent034ba698cc03f2c831b9e4603f55f4a55f955c80 (diff)
Add more BlockReaders
Adds a new type of block reader, the ToggleBlockReader. This switches between two different sources every block. Also, make sure all of the BlockReaders keep their own block count.
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java b/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java
new file mode 100644
index 0000000..0be90f6
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java
@@ -0,0 +1,57 @@
+package bjc.utils.ioutils.blocks;
+
+import java.io.IOException;
+
+import bjc.utils.date.BooleanToggle;
+
+public class ToggledBlockReader {
+ private BlockReader leftSource;
+ private BlockReader rightSource;
+
+ /*
+ * We choose the left source when this is true.
+ */
+ private BooleanToggle leftToggle;
+
+ private int blockNo;
+
+ public ToggledBlockReader(BlockReader left, BlockReader right) {
+ leftSource = left;
+ rightSource = right;
+
+ blockNo = 0;
+
+ leftToggle = new BooleanToggle();
+ }
+
+ @Override
+ public boolean hasNextBlock() {
+ if(leftToggle.peek()) return left.hasNextBlock();
+ else return right.hasNextBlock();
+ }
+
+ @Override
+ public Block getBlock() {
+ if(leftToggle.peek()) return left.getBlock();
+ else return right.getBlock();
+ }
+
+ @Override
+ public boolean nextBlock() {
+ boolean succ;
+
+ if(leftToggle.get()) {
+ succ = leftSource.nextBlock();
+ } else {
+ succ = rightSource.nextBlock();
+ }
+
+ if(succ) blockNo += 1;
+ return succ;
+ }
+
+ @Override
+ public int getBlockCount() {
+ return blockNo;
+ }
+}