blob: a2c6311931e4ed763e4f0f0126b72273ad8cef0f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
{%- if func.is_async() %}
public func {{ func.name()|fn_name }}({%- call swift::arg_list_decl(func) -%}) async {% call swift::throws(func) %}{% match func.return_type() %}{% when Some with (return_type) %} -> {{ return_type|type_name }}{% when None %}{% endmatch %} {
return {% call swift::try(func) %} await uniffiRustCallAsync(
rustFutureFunc: {
{{ func.ffi_func().name() }}(
{%- for arg in func.arguments() %}
{{ arg|lower_fn }}({{ arg.name()|var_name }}){% if !loop.last %},{% endif %}
{%- endfor %}
)
},
pollFunc: {{ func.ffi_rust_future_poll(ci) }},
completeFunc: {{ func.ffi_rust_future_complete(ci) }},
freeFunc: {{ func.ffi_rust_future_free(ci) }},
{%- match func.return_type() %}
{%- when Some(return_type) %}
liftFunc: {{ return_type|lift_fn }},
{%- when None %}
liftFunc: { $0 },
{%- endmatch %}
{%- match func.throws_type() %}
{%- when Some with (e) %}
errorHandler: {{ e|ffi_converter_name }}.lift
{%- else %}
errorHandler: nil
{% endmatch %}
)
}
{% else %}
{%- match func.return_type() -%}
{%- when Some with (return_type) %}
public func {{ func.name()|fn_name }}({%- call swift::arg_list_decl(func) -%}) {% call swift::throws(func) %} -> {{ return_type|type_name }} {
return {% call swift::try(func) %} {{ return_type|lift_fn }}(
{% call swift::to_ffi_call(func) %}
)
}
{%- when None %}
public func {{ func.name()|fn_name }}({% call swift::arg_list_decl(func) %}) {% call swift::throws(func) %} {
{% call swift::to_ffi_call(func) %}
}
{% endmatch %}
{%- endif %}
|