From 52e56f42a568ca5d4587adb15d01c221b92e308e Mon Sep 17 00:00:00 2001 From: WakelessSloth56 Date: Fri, 16 Sep 2022 23:17:34 +0800 Subject: [PATCH] feat(api): quda functional interfaces --- .../api/java/function/QuadConsumer.java | 8 +++++++ .../api/java/function/QuadFunction.java | 8 +++++++ .../api/java/function/QuadPredicate.java | 24 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadConsumer.java create mode 100644 src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadFunction.java create mode 100644 src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadPredicate.java diff --git a/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadConsumer.java b/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadConsumer.java new file mode 100644 index 00000000..7c91d3ac --- /dev/null +++ b/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadConsumer.java @@ -0,0 +1,8 @@ +package org.auioc.mcmod.arnicalib.api.java.function; + +@FunctionalInterface +public interface QuadConsumer { + + void accept(A a, B b, C c, D d); + +} diff --git a/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadFunction.java b/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadFunction.java new file mode 100644 index 00000000..d381db7e --- /dev/null +++ b/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadFunction.java @@ -0,0 +1,8 @@ +package org.auioc.mcmod.arnicalib.api.java.function; + +@FunctionalInterface +public interface QuadFunction { + + R apply(A a, B b, C c, D d); + +} diff --git a/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadPredicate.java b/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadPredicate.java new file mode 100644 index 00000000..00b9d71f --- /dev/null +++ b/src/main/java/org/auioc/mcmod/arnicalib/api/java/function/QuadPredicate.java @@ -0,0 +1,24 @@ +package org.auioc.mcmod.arnicalib.api.java.function; + +import java.util.Objects; + +@FunctionalInterface +public interface QuadPredicate { + + boolean test(A a, B b, C c, D d); + + default QuadPredicate negate() { + return (A a, B b, C c, D d) -> !test(a, b, c, d); + } + + default QuadPredicate and(QuadPredicate other) { + Objects.requireNonNull(other); + return (A a, B b, C c, D d) -> test(a, b, c, d) && other.test(a, b, c, d); + } + + default QuadPredicate or(QuadPredicate other) { + Objects.requireNonNull(other); + return (A a, B b, C c, D d) -> test(a, b, c, d) || other.test(a, b, c, d); + } + +}