| /* |
| * Copyright 2025 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| {% from 'art/api_kotlin_types.kt' import kotlin_annotation, kotlin_declaration, kotlin_definition, check_if_doc_present, generate_kdoc, add_kdoc_disclaimer with context %} |
| {{ add_kdoc_disclaimer() }} |
| package {{ kotlin_package }} |
| |
| {% set callbackName = 'on' + function_pointer.name.chunks[:-1] | map('title') | join %} |
| |
| //* Generating KDocs |
| {% set all_callback_info = kdocs.callbacks %} |
| {% set funtion_pointer_info = all_callback_info.get(function_pointer.name.get()) %} |
| {% set main_doc = funtion_pointer_info.doc if funtion_pointer_info else "" %} |
| {% set arg_docs_map = funtion_pointer_info.args if funtion_pointer_info else {} %} |
| |
| {% set function_pointer_args = function_pointer.arguments | list %} |
| public fun interface {{ function_pointer.name.CamelCase() }} { |
| {% if check_if_doc_present(main_doc, "", arg_docs_map, function_pointer_args) == 'True' %} |
| {{ generate_kdoc(main_doc, return_str, arg_docs_map, function_pointer_args , indent_prefix = " ",line_wrap_prefix = "\n * ") }} |
| {%- endif %} |
| @Suppress("INAPPLICABLE_JVM_NAME") //* Required for @JvmName on global function. |
| @JvmName("{{ callbackName }}") //* Required to access Inline Value Class parameters via JNI. |
| public fun {{ callbackName }}( |
| {%- for arg in kotlin_record_members(function_pointer.arguments) -%} |
| {{ kotlin_annotation(arg) }} {{ as_varName(arg.name) }}: {{ kotlin_declaration(arg) }},{{ ' ' }} |
| {%- endfor -%}); |
| } |
| |
| {% set args_list = kotlin_record_members(function_pointer.arguments) | list %} |
| |
| internal class {{ function_pointer.name.CamelCase() }}Runnable( |
| private val callback: {{ function_pointer.name.CamelCase() }}, |
| {% for arg in args_list %} |
| private val {{ as_varName(arg.name) }}: {{ kotlin_declaration(arg) }}{{ ',' |
| if not loop.last }} |
| {% endfor %} |
| ) : Runnable { |
| override fun run() { |
| callback.{{ callbackName }}( |
| {%- for arg in args_list -%} |
| {{ as_varName(arg.name) }}{{ ', ' if not loop.last }} |
| {%- endfor -%} |
| ) |
| } |
| } |