summaryrefslogtreecommitdiffstats
path: root/third_party/rust/uniffi_bindgen/src/bindings/swift/templates/Types.swift
blob: aba34f4b0bd49350f95d22ca747e6d86991cd6eb (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
{%- import "macros.swift" as swift %}
{%- for type_ in ci.iter_types() %}
{%- let type_name = type_|type_name %}
{%- let ffi_converter_name = type_|ffi_converter_name %}
{%- let canonical_type_name = type_|canonical_name %}
{%- let contains_object_references = ci.item_contains_object_references(type_) %}

{#
 # Map `Type` instances to an include statement for that type.
 #
 # There is a companion match in `KotlinCodeOracle::create_code_type()` which performs a similar function for the
 # Rust code.
 #
 #   - When adding additional types here, make sure to also add a match arm to that function.
 #   - To keep things manageable, let's try to limit ourselves to these 2 mega-matches
 #}
{%- match type_ %}

{%- when Type::Boolean %}
{%- include "BooleanHelper.swift" %}

{%- when Type::String %}
{%- include "StringHelper.swift" %}

{%- when Type::Bytes %}
{%- include "DataHelper.swift" %}

{%- when Type::Int8 %}
{%- include "Int8Helper.swift" %}

{%- when Type::Int16 %}
{%- include "Int16Helper.swift" %}

{%- when Type::Int32 %}
{%- include "Int32Helper.swift" %}

{%- when Type::Int64 %}
{%- include "Int64Helper.swift" %}

{%- when Type::UInt8 %}
{%- include "UInt8Helper.swift" %}

{%- when Type::UInt16 %}
{%- include "UInt16Helper.swift" %}

{%- when Type::UInt32 %}
{%- include "UInt32Helper.swift" %}

{%- when Type::UInt64 %}
{%- include "UInt64Helper.swift" %}

{%- when Type::Float32 %}
{%- include "Float32Helper.swift" %}

{%- when Type::Float64 %}
{%- include "Float64Helper.swift" %}

{%- when Type::Timestamp %}
{%- include "TimestampHelper.swift" %}

{%- when Type::Duration %}
{%- include "DurationHelper.swift" %}

{%- when Type::CallbackInterface { name, module_path } %}
{%- include "CallbackInterfaceTemplate.swift" %}

{%- when Type::ForeignExecutor %}
{%- include "ForeignExecutorTemplate.swift" %}

{%- when Type::Custom { name, module_path, builtin } %}
{%- include "CustomType.swift" %}

{%- when Type::Enum { name, module_path } %}
{%- let e = ci.get_enum_definition(name).unwrap() %}
{%- if ci.is_name_used_as_error(name) %}
{%- include "ErrorTemplate.swift" %}
{%- else %}
{%- include "EnumTemplate.swift" %}
{% endif %}

{%- when Type::Object{ name, module_path, imp } %}
{%- include "ObjectTemplate.swift" %}

{%- when Type::Record { name, module_path } %}
{%- include "RecordTemplate.swift" %}

{%- when Type::Optional { inner_type } %}
{%- include "OptionalTemplate.swift" %}

{%- when Type::Sequence { inner_type } %}
{%- include "SequenceTemplate.swift" %}

{%- when Type::Map { key_type, value_type } %}
{%- include "MapTemplate.swift" %}

{%- else %}
{%- endmatch %}
{%- endfor %}