Skip to content

Commit 6ce2bf5

Browse files
committed
add shortcut wrap methods for dynamic values
1 parent 2a1880b commit 6ce2bf5

File tree

15 files changed

+120
-6
lines changed

15 files changed

+120
-6
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.cleanroommc.modularui.api.value;
22

3-
public interface IEnumValue<T extends Enum<T>> {
3+
public interface IEnumValue<T extends Enum<T>> extends IValue<T> {
44

55
Class<T> getEnumClass();
66
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.cleanroommc.modularui.utils;
2+
3+
import java.util.function.DoubleConsumer;
4+
5+
@FunctionalInterface
6+
public interface FloatConsumer extends DoubleConsumer {
7+
8+
void accept(float value);
9+
10+
@Override
11+
default void accept(double value) {
12+
accept((float) value);
13+
}
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.cleanroommc.modularui.utils;
2+
3+
import java.util.function.DoubleSupplier;
4+
5+
@FunctionalInterface
6+
public interface FloatSupplier extends DoubleSupplier {
7+
8+
float getAsFloat();
9+
10+
@Override
11+
default double getAsDouble() {
12+
return getAsFloat();
13+
}
14+
}

src/main/java/com/cleanroommc/modularui/utils/ReverseIterable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public ReverseIterable(List<T> list) {
2222
@Override
2323
public Iterator<T> iterator() {
2424
ListIterator<T> iterator = this.list.listIterator(this.list.size());
25-
return new ListIterator<T>() {
25+
return new ListIterator<>() {
2626
@Override
2727
public boolean hasNext() {
2828
return iterator.hasPrevious();

src/main/java/com/cleanroommc/modularui/value/BinaryEnumValue.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
*/
1111
public class BinaryEnumValue<T extends Enum<T>> extends EnumValue<T> implements IBoolValue<T> {
1212

13+
public static <T extends Enum<T>, V extends EnumValue<T> & IBoolValue<T>> Dynamic<T> wrap(V val) {
14+
return new Dynamic<>(val.getEnumClass(), val::getValue, val::setValue);
15+
}
16+
1317
public BinaryEnumValue(Class<T> enumClass, T value) {
1418
super(enumClass, value);
1519
if (enumClass.getEnumConstants().length != 2) {

src/main/java/com/cleanroommc/modularui/value/BoolValue.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,19 @@
55
import com.cleanroommc.modularui.api.value.IStringValue;
66
import com.cleanroommc.modularui.utils.BooleanConsumer;
77

8+
import java.util.concurrent.atomic.AtomicBoolean;
89
import java.util.function.BooleanSupplier;
910

1011
public class BoolValue implements IBoolValue<Boolean>, IStringValue<Boolean> {
1112

13+
public static Dynamic wrap(IBoolValue<?> val) {
14+
return new Dynamic(val::getBoolValue, val::setBoolValue);
15+
}
16+
17+
public static Dynamic wrapAtomic(AtomicBoolean val) {
18+
return new Dynamic(val::get, val::set);
19+
}
20+
1221
private boolean value;
1322

1423
public BoolValue(boolean value) {

src/main/java/com/cleanroommc/modularui/value/ByteValue.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
public class ByteValue implements IByteValue<Byte> {
66

7+
public static Dynamic wrap(IByteValue<?> val) {
8+
return new Dynamic(val::getByteValue, val::setByteValue);
9+
}
10+
711
protected byte value;
812

913
@Override
@@ -28,8 +32,8 @@ public void setValue(Byte value) {
2832

2933
public static class Dynamic extends ByteValue {
3034

31-
private Supplier getter;
32-
private Consumer setter;
35+
private final Supplier getter;
36+
private final Consumer setter;
3337

3438
public Dynamic(Supplier getter, Consumer setter) {
3539
this.getter = getter;
@@ -48,9 +52,12 @@ public byte getByteValue() {
4852
}
4953

5054
public interface Supplier {
55+
5156
byte getByte();
5257
}
58+
5359
public interface Consumer {
60+
5461
void setByte(byte b);
5562
}
5663
}

src/main/java/com/cleanroommc/modularui/value/ConstValue.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
import com.cleanroommc.modularui.api.value.IValue;
44

5+
import org.jetbrains.annotations.ApiStatus;
6+
7+
/**
8+
* @deprecated use {@link ObjectValue} instead
9+
*/
10+
@ApiStatus.ScheduledForRemoval(inVersion = "3.2.0")
11+
@Deprecated
512
public class ConstValue<T> implements IValue<T> {
613

714
protected T value;

src/main/java/com/cleanroommc/modularui/value/DoubleValue.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,24 @@
22

33
import com.cleanroommc.modularui.api.value.IDoubleValue;
44
import com.cleanroommc.modularui.api.value.IStringValue;
5+
import com.cleanroommc.modularui.utils.FloatConsumer;
6+
import com.cleanroommc.modularui.utils.FloatSupplier;
7+
8+
import com.google.common.util.concurrent.AtomicDouble;
59

610
import java.util.function.DoubleConsumer;
711
import java.util.function.DoubleSupplier;
812

913
public class DoubleValue implements IDoubleValue<Double> {
1014

15+
public static Dynamic wrap(IDoubleValue<?> val) {
16+
return new Dynamic(val::getDoubleValue, val::setDoubleValue);
17+
}
18+
19+
public static Dynamic wrapAtomic(AtomicDouble val) {
20+
return new Dynamic(val::get, val::set);
21+
}
22+
1123
private double value;
1224

1325
public DoubleValue(double value) {
@@ -36,6 +48,10 @@ public void setDoubleValue(double val) {
3648

3749
public static class Dynamic implements IDoubleValue<Double>, IStringValue<Double> {
3850

51+
public static Dynamic ofFloat(FloatSupplier getter, FloatConsumer setter) {
52+
return new Dynamic(getter, setter);
53+
}
54+
3955
private final DoubleSupplier getter;
4056
private final DoubleConsumer setter;
4157

src/main/java/com/cleanroommc/modularui/value/DynamicValue.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22

33
import com.cleanroommc.modularui.api.value.IValue;
44

5+
import org.jetbrains.annotations.ApiStatus;
56
import org.jetbrains.annotations.Nullable;
67

78
import java.util.function.Consumer;
89
import java.util.function.Supplier;
910

11+
/**
12+
* @deprecated use {@link ObjectValue.Dynamic} instead
13+
*/
14+
@ApiStatus.ScheduledForRemoval(inVersion = "3.2.0")
15+
@Deprecated
1016
public class DynamicValue<T> implements IValue<T> {
1117

1218
private final Supplier<T> getter;

0 commit comments

Comments
 (0)