summaryrefslogtreecommitdiff
path: root/BJC-Utils2
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java10
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/IHolder.java8
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/lazy/LazyHolder.java (renamed from BJC-Utils2/src/main/java/bjc/utils/data/LazyHolder.java)13
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/lazy/LazyPair.java31
4 files changed, 61 insertions, 1 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java b/BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java
index d6266ca..fba801b 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java
@@ -1,5 +1,6 @@
package bjc.utils.data;
+import java.util.function.Consumer;
import java.util.function.Function;
/**
@@ -69,4 +70,13 @@ public class GenHolder<T> implements IHolder<T> {
public <E> E unwrap(Function<T, E> f) {
return f.apply(held);
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see bjc.utils.data.IHolder#doWith(java.util.function.Consumer)
+ */
+ public void doWith(Consumer<T> f) {
+ f.accept(held);
+ }
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/IHolder.java b/BJC-Utils2/src/main/java/bjc/utils/data/IHolder.java
index b6e752b..ddcb2f6 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/IHolder.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/IHolder.java
@@ -1,5 +1,6 @@
package bjc.utils.data;
+import java.util.function.Consumer;
import java.util.function.Function;
/**
@@ -42,4 +43,11 @@ public interface IHolder<T> {
*/
public <E> E unwrap(Function<T, E> f);
+ /**
+ * Call a provided function with the value being held
+ *
+ * @param f
+ * The function to call
+ */
+ public void doWith(Consumer<T> f);
} \ No newline at end of file
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/LazyHolder.java b/BJC-Utils2/src/main/java/bjc/utils/data/lazy/LazyHolder.java
index db5b6ef..43dec86 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/LazyHolder.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/lazy/LazyHolder.java
@@ -1,8 +1,10 @@
-package bjc.utils.data;
+package bjc.utils.data.lazy;
+import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
+import bjc.utils.data.IHolder;
import bjc.utils.funcdata.FunctionalList;
/**
@@ -87,4 +89,13 @@ public class LazyHolder<T> implements IHolder<T> {
return f.apply(held);
}
+ @Override
+ public void doWith(Consumer<T> f) {
+ transform((val) -> {
+ f.accept(val);
+
+ return val;
+ });
+ }
+
}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/lazy/LazyPair.java b/BJC-Utils2/src/main/java/bjc/utils/data/lazy/LazyPair.java
new file mode 100644
index 0000000..f680ed7
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/lazy/LazyPair.java
@@ -0,0 +1,31 @@
+package bjc.utils.data.lazy;
+
+import java.util.function.BiConsumer;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+
+import bjc.utils.data.IPair;
+import bjc.utils.data.Pair;
+
+public class LazyPair<L, R> implements IPair<L, R> {
+ private LazyHolder<Pair<L, R>> del;
+
+ @Override
+ public <L2, R2> IPair<L2, R2> apply(Function<L, L2> lf,
+ Function<R, R2> rf) {
+ return del.unwrap((par) -> par.apply(lf, rf));
+ }
+
+ @Override
+ public <E> E merge(BiFunction<L, R, E> bf) {
+ return del.unwrap((par) -> par.merge(bf));
+ }
+
+ @Override
+ public void doWith(BiConsumer<L, R> bc) {
+ del.doWith((par) -> {
+ par.doWith(bc);
+ });
+ }
+
+}