@@ -38,42 +38,48 @@ struct JavaParameter {
3838 var name : String
3939}
4040
41- enum JavaModifier {
42- // Access modifiers
43- case `public`
44- case `private`
45- case `protected`
46-
47- // Non-access modifiers.
48- case `final`
49- case `static`
50- case `abstract`
51- case `transient`
52- case `synchronized`
53- case `volatile`
54- }
55-
56- struct JavaMethodSignature {
57- var modifiers : [ JavaModifier ]
58- var returnType : JavaType
59- var parameters : [ JavaParameter ]
60- }
61-
41+ /// Represent a Swift API parameter translated to Java.
6242struct TranslatedParameter {
43+ /// Java parameter(s) mapped to the Swift parameter.
44+ ///
45+ /// Array because one Swift parameter can be mapped to multiple parameters.
6346 var javaParameters : [ JavaParameter ]
47+
48+ /// Describes how to convert the Java parameter to the lowered arguments for
49+ /// the foreign function.
6450 var conversion : JavaConversionStep
6551}
6652
53+ /// Represent a Swift API result translated to Java.
6754struct TranslatedResult {
55+ /// Java type that represents the Swift result type.
6856 var javaResultType : JavaType
57+
58+ /// Required indirect return receivers for receiving the result.
59+ ///
60+ /// 'JavaParameter.name' is the suffix for the receiver variable names. For example
61+ ///
62+ /// var _result_pointer = MemorySegment.allocate(...)
63+ /// var _result_count = MemroySegment.allocate(...)
64+ /// downCall(_result_pointer, _result_count)
65+ /// return constructResult(_result_pointer, _result_count)
66+ ///
67+ /// This case, there're two out parameter, named '_pointer' and '_count'.
6968 var outParameters : [ JavaParameter ]
69+
70+ /// Describes how to construct the Java result from the foreign function return
71+ /// value and/or the out parameters.
7072 var conversion : JavaConversionStep
7173}
7274
75+ /// Translated function signature representing a Swift API.
76+ ///
77+ /// Since this holds the lowered signature, and the original `SwiftFunctionSignature`
78+ /// in it, this contains all the API information (except the name) to generate the
79+ /// cdecl thunk, Java binding, and the Java wrapper function.
7380struct TranslatedFunctionSignature {
7481 var loweredSignature : LoweredFunctionSignature
7582
76- ///
7783 var selfParameter : TranslatedParameter ?
7884 var parameters : [ TranslatedParameter ]
7985 var result : TranslatedResult
@@ -304,7 +310,7 @@ struct JavaTranslation {
304310 return TranslatedResult (
305311 javaResultType: javaType,
306312 outParameters: [
307- JavaParameter ( type: javaType, name: " _result " )
313+ JavaParameter ( type: javaType, name: " " )
308314 ] ,
309315 conversion: . constructSwiftValue( javaType)
310316 )
@@ -341,7 +347,7 @@ enum JavaConversionStep {
341347 // If `withArena` is true, `arena$` argument is added.
342348 case call( function: String , withArena: Bool )
343349
344- // Call '\(Type)(\(placeholder), arena $)'.
350+ // Call 'new \(Type)(\(placeholder), swiftArena $)'.
345351 case constructSwiftValue( JavaType )
346352
347353 // Construct the type using the placeholder as arguments.
0 commit comments