diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-01 20:43:09 -0500 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-01 20:43:09 -0500 |
| commit | df852b8a67f4b8f1c3e6f89d8c3630e678c49c14 (patch) | |
| tree | 5a364ba3828d8fe39014add97d6eee6d1710248c /BJC-Utils2/src/main/java/bjc/utils | |
| parent | d41419d6d4dad49d454c34562d020a042c0dbe26 (diff) | |
Implemented support for lazy pairs
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/GenHolder.java | 10 | ||||
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/IHolder.java | 8 | ||||
| -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.java | 31 |
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); + }); + } + +} |
