Skip to content

Commit 71e7265

Browse files
committed
Implement Cloneable for all primitive wrappers
1 parent 1e52d6e commit 71e7265

File tree

9 files changed

+100
-9
lines changed

9 files changed

+100
-9
lines changed

imgui-binding/src/main/java/imgui/ImBool.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import java.util.Objects;
44

5-
public final class ImBool {
5+
public final class ImBool implements Cloneable {
66
final boolean[] data = new boolean[]{false};
77

88
public ImBool() {
99
}
1010

11+
public ImBool(final ImBool imBool) {
12+
this.data[0] = imBool.data[0];
13+
}
14+
1115
public ImBool(final boolean value) {
1216
data[0] = value;
1317
}
@@ -41,4 +45,9 @@ public boolean equals(final Object o) {
4145
public int hashCode() {
4246
return Objects.hash(data[0]);
4347
}
48+
49+
@Override
50+
public ImBool clone() {
51+
return new ImBool(this);
52+
}
4453
}

imgui-binding/src/main/java/imgui/ImDouble.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import java.util.Objects;
44

5-
public final class ImDouble {
5+
public final class ImDouble implements Cloneable {
66
final double[] data = new double[]{0.0d};
77

88
public ImDouble() {
99
}
1010

11+
public ImDouble(final ImDouble imDouble) {
12+
this.data[0] = imDouble.data[0];
13+
}
14+
1115
public ImDouble(final double value) {
1216
set(value);
1317
}
@@ -41,4 +45,9 @@ public boolean equals(final Object o) {
4145
public int hashCode() {
4246
return Objects.hash(data[0]);
4347
}
48+
49+
@Override
50+
public ImDouble clone() {
51+
return new ImDouble(this);
52+
}
4453
}

imgui-binding/src/main/java/imgui/ImFloat.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import java.util.Objects;
44

5-
public final class ImFloat {
5+
public final class ImFloat implements Cloneable {
66
final float[] data = new float[]{0};
77

88
public ImFloat() {
99
}
1010

11+
public ImFloat(final ImFloat imFloat) {
12+
this.data[0] = imFloat.data[0];
13+
}
14+
1115
public ImFloat(final float value) {
1216
set(value);
1317
}
@@ -41,4 +45,9 @@ public boolean equals(final Object o) {
4145
public int hashCode() {
4246
return Objects.hash(data[0]);
4347
}
48+
49+
@Override
50+
public ImFloat clone() {
51+
return new ImFloat(this);
52+
}
4453
}

imgui-binding/src/main/java/imgui/ImInt.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import java.util.Objects;
44

5-
public final class ImInt {
5+
public final class ImInt implements Cloneable {
66
final int[] data = new int[]{0};
77

88
public ImInt() {
99
}
1010

11+
public ImInt(final ImInt imInt) {
12+
this.data[0] = imInt.data[0];
13+
}
14+
1115
public ImInt(final int value) {
1216
set(value);
1317
}
@@ -41,4 +45,9 @@ public boolean equals(final Object o) {
4145
public int hashCode() {
4246
return Objects.hashCode(data[0]);
4347
}
48+
49+
@Override
50+
public ImInt clone() {
51+
return new ImInt(this);
52+
}
4453
}

imgui-binding/src/main/java/imgui/ImLong.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import java.util.Objects;
44

5-
public final class ImLong {
5+
public final class ImLong implements Cloneable {
66
final long[] data = new long[]{0};
77

88
public ImLong() {
99
}
1010

11+
public ImLong(final ImLong imLong) {
12+
this.data[0] = imLong.data[0];
13+
}
14+
1115
public ImLong(final long value) {
1216
set(value);
1317
}
@@ -41,4 +45,9 @@ public boolean equals(final Object o) {
4145
public int hashCode() {
4246
return Objects.hashCode(data[0]);
4347
}
48+
49+
@Override
50+
public ImLong clone() {
51+
return new ImLong(this);
52+
}
4453
}

imgui-binding/src/main/java/imgui/ImShort.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import java.util.Objects;
44

5-
public final class ImShort {
5+
public final class ImShort implements Cloneable {
66
final short[] data = new short[]{0};
77

88
public ImShort() {
99
}
1010

11+
public ImShort(final ImShort imShort) {
12+
this.data[0] = imShort.data[0];
13+
}
14+
1115
public ImShort(final short value) {
1216
set(value);
1317
}
@@ -41,4 +45,9 @@ public boolean equals(final Object o) {
4145
public int hashCode() {
4246
return Objects.hashCode(data[0]);
4347
}
48+
49+
@Override
50+
public ImShort clone() {
51+
return new ImShort(this);
52+
}
4453
}

imgui-binding/src/main/java/imgui/ImString.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/**
77
* Wrapper for {@link String} to use inside of th Dear ImGui input widgets.
88
*/
9-
public final class ImString {
9+
public final class ImString implements Cloneable {
1010
/**
1111
* Default size of the inner buffer, if {@link ImString} created with a constructor without args.
1212
*/
@@ -32,6 +32,16 @@ public ImString() {
3232
this(DEFAULT_LENGTH);
3333
}
3434

35+
public ImString(final ImString imString) {
36+
this(imString.text, imString.data.length);
37+
this.inputData.allowedChars = imString.inputData.allowedChars;
38+
this.inputData.isResizable = imString.inputData.isResizable;
39+
this.inputData.resizeFactor = imString.inputData.resizeFactor;
40+
this.inputData.size = imString.inputData.size;
41+
this.inputData.isDirty = imString.inputData.isDirty;
42+
this.inputData.isResized = imString.inputData.isResized;
43+
}
44+
3545
/**
3646
* Creates an {@link ImString} instance with provided size for the inner buffer.
3747
* @param length size of the inner buffer to use
@@ -150,4 +160,9 @@ public boolean equals(final Object o) {
150160
public int hashCode() {
151161
return text.hashCode();
152162
}
163+
164+
@Override
165+
public ImString clone() {
166+
return new ImString(this);
167+
}
153168
}

imgui-binding/src/main/java/imgui/ImVec2.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
/**
66
* 2D vector (often used to store positions or sizes)
77
*/
8-
public final class ImVec2 {
8+
public final class ImVec2 implements Cloneable {
99
public float x;
1010
public float y;
1111

1212
public ImVec2() {
1313
}
1414

15+
public ImVec2(final ImVec2 imVec2) {
16+
this.x = imVec2.x;
17+
this.y = imVec2.y;
18+
}
19+
1520
public ImVec2(final float x, final float y) {
1621
this.x = x;
1722
this.y = y;
@@ -41,4 +46,9 @@ public boolean equals(final Object o) {
4146
public int hashCode() {
4247
return Objects.hash(x, y);
4348
}
49+
50+
@Override
51+
public ImVec2 clone() {
52+
return new ImVec2(this);
53+
}
4454
}

imgui-binding/src/main/java/imgui/ImVec4.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/**
66
* 4D vector (often used to store floating-point colors)
77
*/
8-
public final class ImVec4 {
8+
public final class ImVec4 implements Cloneable {
99
public float x;
1010
public float y;
1111
public float z;
@@ -14,6 +14,13 @@ public final class ImVec4 {
1414
public ImVec4() {
1515
}
1616

17+
public ImVec4(final ImVec4 imVec4) {
18+
this.x = imVec4.x;
19+
this.y = imVec4.y;
20+
this.z = imVec4.z;
21+
this.w = imVec4.w;
22+
}
23+
1724
public ImVec4(final float x, final float y, final float z, final float w) {
1825
this.x = x;
1926
this.y = y;
@@ -47,4 +54,9 @@ public boolean equals(final Object o) {
4754
public int hashCode() {
4855
return Objects.hash(x, y, z, w);
4956
}
57+
58+
@Override
59+
public ImVec4 clone() {
60+
return new ImVec4(this);
61+
}
5062
}

0 commit comments

Comments
 (0)