[API] Make all imgui.type classes to implement Comparable<> interface

This commit is contained in:
SpaiR committed 2023-02-28 19:02:41 +02:00
1 parent 068c1e0faa
commit 25fc8bae8f
7 files changed
+64 -16

No files matched your search

@@ -1,6 +1,6 @@
package imgui.type; package imgui.type;
public final class ImBoolean implements Cloneable { public final class ImBoolean implements Cloneable, Comparable<ImBoolean> {
private final boolean[] data = new boolean[]{false}; private final boolean[] data = new boolean[]{false};
public ImBoolean() { public ImBoolean() {
@@ -53,7 +53,13 @@ public final class ImBoolean implements Cloneable {
} }
@Override @Override
@SuppressWarnings("MethodDoesntCallSuperMethod")
public ImBoolean clone() { public ImBoolean clone() {
return new ImBoolean(this); return new ImBoolean(this);
} }
@Override
public int compareTo(final ImBoolean o) {
return Boolean.compare(get(), o.get());
}
} }
@@ -1,6 +1,6 @@
package imgui.type; package imgui.type;
public final class ImDouble implements Cloneable { public final class ImDouble implements Cloneable, Comparable<ImDouble> {
private final double[] data = new double[]{0.0d}; private final double[] data = new double[]{0.0d};
public ImDouble() { public ImDouble() {
@@ -53,7 +53,13 @@ public final class ImDouble implements Cloneable {
} }
@Override @Override
@SuppressWarnings("MethodDoesntCallSuperMethod")
public ImDouble clone() { public ImDouble clone() {
return new ImDouble(this); return new ImDouble(this);
} }
@Override
public int compareTo(final ImDouble o) {
return Double.compare(get(), o.get());
}
} }
@@ -1,6 +1,6 @@
package imgui.type; package imgui.type;
public final class ImFloat implements Cloneable { public final class ImFloat implements Cloneable, Comparable<ImFloat> {
private final float[] data = new float[]{0}; private final float[] data = new float[]{0};
public ImFloat() { public ImFloat() {
@@ -53,7 +53,13 @@ public final class ImFloat implements Cloneable {
} }
@Override @Override
@SuppressWarnings("MethodDoesntCallSuperMethod")
public ImFloat clone() { public ImFloat clone() {
return new ImFloat(this); return new ImFloat(this);
} }
@Override
public int compareTo(final ImFloat o) {
return Float.compare(get(), o.get());
}
} }
@@ -1,6 +1,6 @@
package imgui.type; package imgui.type;
public final class ImInt implements Cloneable { public final class ImInt implements Cloneable, Comparable<ImInt> {
private final int[] data = new int[]{0}; private final int[] data = new int[]{0};
public ImInt() { public ImInt() {
@@ -53,7 +53,13 @@ public final class ImInt implements Cloneable {
} }
@Override @Override
@SuppressWarnings("MethodDoesntCallSuperMethod")
public ImInt clone() { public ImInt clone() {
return new ImInt(this); return new ImInt(this);
} }
@Override
public int compareTo(final ImInt o) {
return Integer.compare(get(), o.get());
}
} }
@@ -1,6 +1,6 @@
package imgui.type; package imgui.type;
public final class ImLong implements Cloneable { public final class ImLong implements Cloneable, Comparable<ImLong> {
private final long[] data = new long[]{0}; private final long[] data = new long[]{0};
public ImLong() { public ImLong() {
@@ -53,7 +53,13 @@ public final class ImLong implements Cloneable {
} }
@Override @Override
@SuppressWarnings("MethodDoesntCallSuperMethod")
public ImLong clone() { public ImLong clone() {
return new ImLong(this); return new ImLong(this);
} }
@Override
public int compareTo(final ImLong o) {
return Long.compare(get(), o.get());
}
} }
@@ -1,6 +1,6 @@
package imgui.type; package imgui.type;
public final class ImShort implements Cloneable { public final class ImShort implements Cloneable, Comparable<ImShort> {
private final short[] data = new short[]{0}; private final short[] data = new short[]{0};
public ImShort() { public ImShort() {
@@ -53,7 +53,13 @@ public final class ImShort implements Cloneable {
} }
@Override @Override
@SuppressWarnings("MethodDoesntCallSuperMethod")
public ImShort clone() { public ImShort clone() {
return new ImShort(this); return new ImShort(this);
} }
@Override
public int compareTo(final ImShort o) {
return Short.compare(get(), o.get());
}
} }
@@ -4,9 +4,9 @@ import java.nio.charset.StandardCharsets;
import java.util.Objects; import java.util.Objects;
/** /**
* Wrapper for {@link String} to use inside of th Dear ImGui input widgets. * Wrapper for {@link String} to use inside th Dear ImGui input widgets.
*/ */
public final class ImString implements Cloneable { public final class ImString implements Cloneable, Comparable<ImString> {
/** /**
* Default size of the inner buffer, if {@link ImString} created with a constructor without args. * Default size of the inner buffer, if {@link ImString} created with a constructor without args.
*/ */
@@ -17,8 +17,8 @@ public final class ImString implements Cloneable {
public static final short CARET_LEN = 1; public static final short CARET_LEN = 1;
/** /**
* Configuration class to setup some specific behaviour for current string. * Configuration class to set up some specific behaviour for current string.
* This is useful when string used inside of ImGui#InputText*() methods. * This is useful when string used inside ImGui#InputText*() methods.
*/ */
public final InputData inputData = new InputData(); public final InputData inputData = new InputData();
@@ -32,6 +32,7 @@ public final class ImString implements Cloneable {
this(DEFAULT_LENGTH); this(DEFAULT_LENGTH);
} }
@SuppressWarnings("CopyConstructorMissesField")
public ImString(final ImString imString) { public ImString(final ImString imString) {
this(imString.text, imString.data.length); this(imString.text, imString.data.length);
this.inputData.allowedChars = imString.inputData.allowedChars; this.inputData.allowedChars = imString.inputData.allowedChars;
@@ -44,6 +45,7 @@ public final class ImString implements Cloneable {
/** /**
* Creates an {@link ImString} instance with provided size for the inner buffer. * Creates an {@link ImString} instance with provided size for the inner buffer.
*
* @param length size of the inner buffer to use * @param length size of the inner buffer to use
*/ */
public ImString(final int length) { public ImString(final int length) {
@@ -53,6 +55,7 @@ public final class ImString implements Cloneable {
/** /**
* Creates an {@link ImString} instance from provided string. * Creates an {@link ImString} instance from provided string.
* Inner buffer size will be equal to the length of the string + {@link ImString#CARET_LEN}. * Inner buffer size will be equal to the length of the string + {@link ImString#CARET_LEN}.
*
* @param text string to create a new {@link ImString} * @param text string to create a new {@link ImString}
*/ */
public ImString(final String text) { public ImString(final String text) {
@@ -61,7 +64,8 @@ public final class ImString implements Cloneable {
/** /**
* Create an {@link ImString} instance from provided string with custom size for the inner buffer. * Create an {@link ImString} instance from provided string with custom size for the inner buffer.
* @param text string to a create a new {@link ImString} *
* @param text string to a creation a new {@link ImString}
* @param length custom size for the inner buffer * @param length custom size for the inner buffer
*/ */
public ImString(final String text, final int length) { public ImString(final String text, final int length) {
@@ -140,8 +144,9 @@ public final class ImString implements Cloneable {
} }
/** /**
* Get the length of the text inside of the data buffer. * Get the length of the text inside the data buffer.
* @return length of the text inside of the data buffer *
* @return length of the text inside the data buffer
*/ */
public int getLength() { public int getLength() {
return get().length(); return get().length();
@@ -149,6 +154,7 @@ public final class ImString implements Cloneable {
/** /**
* Get the size of the data buffer. Buffer size will always have '+1' to its size, since it's used by the Dear ImGui to draw a caret char. * Get the size of the data buffer. Buffer size will always have '+1' to its size, since it's used by the Dear ImGui to draw a caret char.
*
* @return size of the data buffer * @return size of the data buffer
*/ */
public int getBufferSize() { public int getBufferSize() {
@@ -156,14 +162,14 @@ public final class ImString implements Cloneable {
} }
/** /**
* @return true if the length of the text inside of the data buffer is 0 * @return true if the length of the text inside the data buffer is 0
*/ */
public boolean isEmpty() { public boolean isEmpty() {
return getLength() == 0; return getLength() == 0;
} }
/** /**
* @return true if the length of the text inside of the data buffer is not 0 * @return true if the length of the text inside the data buffer is not 0
*/ */
public boolean isNotEmpty() { public boolean isNotEmpty() {
return !isEmpty(); return !isEmpty();
@@ -199,10 +205,16 @@ public final class ImString implements Cloneable {
} }
@Override @Override
@SuppressWarnings("MethodDoesntCallSuperMethod")
public ImString clone() { public ImString clone() {
return new ImString(this); return new ImString(this);
} }
@Override
public int compareTo(final ImString o) {
return get().compareTo(o.get());
}
/** /**
* Use this class to customize your ImGui input. * Use this class to customize your ImGui input.
*/ */
@@ -216,7 +228,7 @@ public final class ImString implements Cloneable {
public String allowedChars = ""; public String allowedChars = "";
/** /**
* If true, then string will be resized during the the {@link imgui.ImGui#inputText} and {@link imgui.ImGui#inputTextMultiline} methods. * If true, then string will be resized during the {@link imgui.ImGui#inputText} and {@link imgui.ImGui#inputTextMultiline} methods.
* Alternatively you can provide {@link imgui.flag.ImGuiInputTextFlags#CallbackResize} flag to the input text widgets to enable string resizing. * Alternatively you can provide {@link imgui.flag.ImGuiInputTextFlags#CallbackResize} flag to the input text widgets to enable string resizing.
* Resize factor of the string could be modified by changing {@link #resizeFactor} field. * Resize factor of the string could be modified by changing {@link #resizeFactor} field.
*/ */