Backed out 5 changesets (bug 1890092, bug 1888683) for causing build bustages & crash...
[gecko.git] / third_party / rust / uniffi_bindgen / src / bindings / kotlin / templates / RecordTemplate.kt
blobb588ca1398396aab4e568909794e82e8f11f43f4
1 {%- let rec = ci|get_record_definition(name) %}
3 data class {{ type_name }} (
4     {%- for field in rec.fields() %}
5     var {{ field.name()|var_name }}: {{ field|type_name(ci) -}}
6     {%- match field.default_value() %}
7         {%- when Some with(literal) %} = {{ literal|render_literal(field, ci) }}
8         {%- else %}
9     {%- endmatch -%}
10     {% if !loop.last %}, {% endif %}
11     {%- endfor %}
12 ) {% if contains_object_references %}: Disposable {% endif %}{
13     {% if contains_object_references %}
14     @Suppress("UNNECESSARY_SAFE_CALL") // codegen is much simpler if we unconditionally emit safe calls here
15     override fun destroy() {
16         {% call kt::destroy_fields(rec) %}
17     }
18     {% endif %}
19     companion object
22 public object {{ rec|ffi_converter_name }}: FfiConverterRustBuffer<{{ type_name }}> {
23     override fun read(buf: ByteBuffer): {{ type_name }} {
24         return {{ type_name }}(
25         {%- for field in rec.fields() %}
26             {{ field|read_fn }}(buf),
27         {%- endfor %}
28         )
29     }
31     override fun allocationSize(value: {{ type_name }}) = (
32         {%- for field in rec.fields() %}
33             {{ field|allocation_size_fn }}(value.{{ field.name()|var_name }}){% if !loop.last %} +{% endif%}
34         {%- endfor %}
35     )
37     override fun write(value: {{ type_name }}, buf: ByteBuffer) {
38         {%- for field in rec.fields() %}
39             {{ field|write_fn }}(value.{{ field.name()|var_name }}, buf)
40         {%- endfor %}
41     }