From 71e726585827b36ada384a49686370f202a5012a Mon Sep 17 00:00:00 2001 From: SpaiR Date: Sat, 6 Jun 2020 16:40:08 +0300 Subject: [PATCH] Implement Cloneable for all primitive wrappers --- imgui-binding/src/main/java/imgui/ImBool.java | 11 ++++++++++- imgui-binding/src/main/java/imgui/ImDouble.java | 11 ++++++++++- imgui-binding/src/main/java/imgui/ImFloat.java | 11 ++++++++++- imgui-binding/src/main/java/imgui/ImInt.java | 11 ++++++++++- imgui-binding/src/main/java/imgui/ImLong.java | 11 ++++++++++- imgui-binding/src/main/java/imgui/ImShort.java | 11 ++++++++++- imgui-binding/src/main/java/imgui/ImString.java | 17 ++++++++++++++++- imgui-binding/src/main/java/imgui/ImVec2.java | 12 +++++++++++- imgui-binding/src/main/java/imgui/ImVec4.java | 14 +++++++++++++- 9 files changed, 100 insertions(+), 9 deletions(-) diff --git a/imgui-binding/src/main/java/imgui/ImBool.java b/imgui-binding/src/main/java/imgui/ImBool.java index 4916698..5ae98ac 100644 --- a/imgui-binding/src/main/java/imgui/ImBool.java +++ b/imgui-binding/src/main/java/imgui/ImBool.java @@ -2,12 +2,16 @@ package imgui; import java.util.Objects; -public final class ImBool { +public final class ImBool implements Cloneable { final boolean[] data = new boolean[]{false}; public ImBool() { } + public ImBool(final ImBool imBool) { + this.data[0] = imBool.data[0]; + } + public ImBool(final boolean value) { data[0] = value; } @@ -41,4 +45,9 @@ public final class ImBool { public int hashCode() { return Objects.hash(data[0]); } + + @Override + public ImBool clone() { + return new ImBool(this); + } } diff --git a/imgui-binding/src/main/java/imgui/ImDouble.java b/imgui-binding/src/main/java/imgui/ImDouble.java index 5bb3c1c..99c8ca8 100644 --- a/imgui-binding/src/main/java/imgui/ImDouble.java +++ b/imgui-binding/src/main/java/imgui/ImDouble.java @@ -2,12 +2,16 @@ package imgui; import java.util.Objects; -public final class ImDouble { +public final class ImDouble implements Cloneable { final double[] data = new double[]{0.0d}; public ImDouble() { } + public ImDouble(final ImDouble imDouble) { + this.data[0] = imDouble.data[0]; + } + public ImDouble(final double value) { set(value); } @@ -41,4 +45,9 @@ public final class ImDouble { public int hashCode() { return Objects.hash(data[0]); } + + @Override + public ImDouble clone() { + return new ImDouble(this); + } } diff --git a/imgui-binding/src/main/java/imgui/ImFloat.java b/imgui-binding/src/main/java/imgui/ImFloat.java index dad2b68..d04e16c 100644 --- a/imgui-binding/src/main/java/imgui/ImFloat.java +++ b/imgui-binding/src/main/java/imgui/ImFloat.java @@ -2,12 +2,16 @@ package imgui; import java.util.Objects; -public final class ImFloat { +public final class ImFloat implements Cloneable { final float[] data = new float[]{0}; public ImFloat() { } + public ImFloat(final ImFloat imFloat) { + this.data[0] = imFloat.data[0]; + } + public ImFloat(final float value) { set(value); } @@ -41,4 +45,9 @@ public final class ImFloat { public int hashCode() { return Objects.hash(data[0]); } + + @Override + public ImFloat clone() { + return new ImFloat(this); + } } diff --git a/imgui-binding/src/main/java/imgui/ImInt.java b/imgui-binding/src/main/java/imgui/ImInt.java index e7e9e6f..d0d158e 100644 --- a/imgui-binding/src/main/java/imgui/ImInt.java +++ b/imgui-binding/src/main/java/imgui/ImInt.java @@ -2,12 +2,16 @@ package imgui; import java.util.Objects; -public final class ImInt { +public final class ImInt implements Cloneable { final int[] data = new int[]{0}; public ImInt() { } + public ImInt(final ImInt imInt) { + this.data[0] = imInt.data[0]; + } + public ImInt(final int value) { set(value); } @@ -41,4 +45,9 @@ public final class ImInt { public int hashCode() { return Objects.hashCode(data[0]); } + + @Override + public ImInt clone() { + return new ImInt(this); + } } diff --git a/imgui-binding/src/main/java/imgui/ImLong.java b/imgui-binding/src/main/java/imgui/ImLong.java index 5c15780..3de7d1e 100644 --- a/imgui-binding/src/main/java/imgui/ImLong.java +++ b/imgui-binding/src/main/java/imgui/ImLong.java @@ -2,12 +2,16 @@ package imgui; import java.util.Objects; -public final class ImLong { +public final class ImLong implements Cloneable { final long[] data = new long[]{0}; public ImLong() { } + public ImLong(final ImLong imLong) { + this.data[0] = imLong.data[0]; + } + public ImLong(final long value) { set(value); } @@ -41,4 +45,9 @@ public final class ImLong { public int hashCode() { return Objects.hashCode(data[0]); } + + @Override + public ImLong clone() { + return new ImLong(this); + } } diff --git a/imgui-binding/src/main/java/imgui/ImShort.java b/imgui-binding/src/main/java/imgui/ImShort.java index 3278052..4abbd68 100644 --- a/imgui-binding/src/main/java/imgui/ImShort.java +++ b/imgui-binding/src/main/java/imgui/ImShort.java @@ -2,12 +2,16 @@ package imgui; import java.util.Objects; -public final class ImShort { +public final class ImShort implements Cloneable { final short[] data = new short[]{0}; public ImShort() { } + public ImShort(final ImShort imShort) { + this.data[0] = imShort.data[0]; + } + public ImShort(final short value) { set(value); } @@ -41,4 +45,9 @@ public final class ImShort { public int hashCode() { return Objects.hashCode(data[0]); } + + @Override + public ImShort clone() { + return new ImShort(this); + } } diff --git a/imgui-binding/src/main/java/imgui/ImString.java b/imgui-binding/src/main/java/imgui/ImString.java index 8b26fee..b1fa122 100644 --- a/imgui-binding/src/main/java/imgui/ImString.java +++ b/imgui-binding/src/main/java/imgui/ImString.java @@ -6,7 +6,7 @@ import java.util.Objects; /** * Wrapper for {@link String} to use inside of th Dear ImGui input widgets. */ -public final class ImString { +public final class ImString implements Cloneable { /** * Default size of the inner buffer, if {@link ImString} created with a constructor without args. */ @@ -32,6 +32,16 @@ public final class ImString { this(DEFAULT_LENGTH); } + public ImString(final ImString imString) { + this(imString.text, imString.data.length); + this.inputData.allowedChars = imString.inputData.allowedChars; + this.inputData.isResizable = imString.inputData.isResizable; + this.inputData.resizeFactor = imString.inputData.resizeFactor; + this.inputData.size = imString.inputData.size; + this.inputData.isDirty = imString.inputData.isDirty; + this.inputData.isResized = imString.inputData.isResized; + } + /** * Creates an {@link ImString} instance with provided size for the inner buffer. * @param length size of the inner buffer to use @@ -150,4 +160,9 @@ public final class ImString { public int hashCode() { return text.hashCode(); } + + @Override + public ImString clone() { + return new ImString(this); + } } diff --git a/imgui-binding/src/main/java/imgui/ImVec2.java b/imgui-binding/src/main/java/imgui/ImVec2.java index 249ec0c..39eb409 100644 --- a/imgui-binding/src/main/java/imgui/ImVec2.java +++ b/imgui-binding/src/main/java/imgui/ImVec2.java @@ -5,13 +5,18 @@ import java.util.Objects; /** * 2D vector (often used to store positions or sizes) */ -public final class ImVec2 { +public final class ImVec2 implements Cloneable { public float x; public float y; public ImVec2() { } + public ImVec2(final ImVec2 imVec2) { + this.x = imVec2.x; + this.y = imVec2.y; + } + public ImVec2(final float x, final float y) { this.x = x; this.y = y; @@ -41,4 +46,9 @@ public final class ImVec2 { public int hashCode() { return Objects.hash(x, y); } + + @Override + public ImVec2 clone() { + return new ImVec2(this); + } } diff --git a/imgui-binding/src/main/java/imgui/ImVec4.java b/imgui-binding/src/main/java/imgui/ImVec4.java index f1b2d98..220922d 100644 --- a/imgui-binding/src/main/java/imgui/ImVec4.java +++ b/imgui-binding/src/main/java/imgui/ImVec4.java @@ -5,7 +5,7 @@ import java.util.Objects; /** * 4D vector (often used to store floating-point colors) */ -public final class ImVec4 { +public final class ImVec4 implements Cloneable { public float x; public float y; public float z; @@ -14,6 +14,13 @@ public final class ImVec4 { public ImVec4() { } + public ImVec4(final ImVec4 imVec4) { + this.x = imVec4.x; + this.y = imVec4.y; + this.z = imVec4.z; + this.w = imVec4.w; + } + public ImVec4(final float x, final float y, final float z, final float w) { this.x = x; this.y = y; @@ -47,4 +54,9 @@ public final class ImVec4 { public int hashCode() { return Objects.hash(x, y, z, w); } + + @Override + public ImVec4 clone() { + return new ImVec4(this); + } }