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) }}
10 {% if !loop.last %}, {% endif %}
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) %}
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),
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%}
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)