16
16
17
17
// Import swift-extract generated sources
18
18
19
- import com .example .swift .MySwiftLibrary ;
20
- import com .example .swift .MySwiftClass ;
21
-
22
19
// Import javakit/swiftkit support libraries
23
- import org .swift .swiftkit .SwiftArena ;
20
+ import org .swift .swiftkit .SwiftArrayRef ;
24
21
import org .swift .swiftkit .SwiftKit ;
25
- import org .swift .swiftkit .SwiftValueWitnessTable ;
26
-
27
- import java .util .Arrays ;
28
22
29
23
public class HelloJava2Swift {
30
24
@@ -38,26 +32,58 @@ public static void main(String[] args) {
38
32
}
39
33
40
34
static void examples () {
41
- MySwiftLibrary .helloWorld ();
35
+ // MySwiftLibrary.helloWorld();
36
+ //
37
+ // MySwiftLibrary.globalTakeInt(1337);
38
+ //
39
+ // // Example of using an arena; MyClass.deinit is run at end of scope
40
+ // try (var arena = SwiftArena.ofConfined()) {
41
+ // MySwiftClass obj = new MySwiftClass(arena, 2222, 7777);
42
+ //
43
+ // // just checking retains/releases work
44
+ // SwiftKit.retain(obj.$memorySegment());
45
+ // SwiftKit.release(obj.$memorySegment());
46
+ //
47
+ // obj.voidMethod();
48
+ // obj.takeIntMethod(42);
49
+ // }
42
50
43
- MySwiftLibrary .globalTakeInt (1337 );
51
+ // public func getArrayMySwiftClass() -> [MySwiftClass]
52
+ SwiftArrayRef <MySwiftClass > arr = ManualImportedMethods .getArrayMySwiftClass ();
44
53
45
- // Example of using an arena; MyClass.deinit is run at end of scope
46
- try (var arena = SwiftArena .ofConfined ()) {
47
- MySwiftClass obj = new MySwiftClass (arena , 2222 , 7777 );
54
+ MySwiftClass first = arr .get (0 , MySwiftClass ::new );
55
+ System .out .println ("[java] first = " + first );
48
56
49
- // just checking retains/releases work
50
- SwiftKit .retain (obj .$memorySegment ());
51
- SwiftKit .release (obj .$memorySegment ());
57
+ // FIXME: properties don't work yet, need the thunks!
58
+ // System.out.println("[java] first.getLen() = " + first.getLen());
59
+ // assert(first.getLen() == 1);
60
+ // System.out.println("[java] first.getCap() = " + first.getCap());
61
+ // assert(first.getCap() == 2);
62
+
63
+ System .out .println ("[java] first.getterForLen() = " + first .getterForLen ());
64
+ System .out .println ("[java] first.getForCap() = " + first .getterForCap ());
65
+ precondition (1 , first .getterForLen ());
66
+ precondition (11 , first .getterForCap ());
67
+
68
+ MySwiftClass second = arr .get (1 , MySwiftClass ::new );
69
+ System .out .println ("[java] second = " + second );
70
+ System .out .println ("[java] second.getterForLen() = " + second .getterForLen ());
71
+ System .out .println ("[java] second.getForCap() = " + second .getterForCap ());
72
+ precondition (2 , second .getterForLen ());
73
+ precondition (22 , second .getterForCap ());
52
74
53
- obj .voidMethod ();
54
- obj .takeIntMethod (42 );
55
- }
56
75
57
76
System .out .println ("DONE." );
58
77
}
59
78
79
+ private static void precondition (long expected , long got ) {
80
+ if (expected != got ) {
81
+ throw new AssertionError ("Expected '" + expected + "', but got '" + got + "'!" );
82
+ }
83
+ }
84
+
60
85
public static native long jniWriteString (String str );
61
86
public static native long jniGetInt ();
62
87
63
88
}
89
+
0 commit comments