Skip to content

iOS backend — hand-written / stub registry

GENERATED — do not edit. Run python3 scripts/ios_handwritten_report.py.

Every hand-written, stubbed, or sugar site in the iOS backend, from the in-code // KANAMA-IOS-{STUB,HANDWRITTEN,SUGAR} markers. The point: nothing silently no-ops without being listed here, so we don't repeat the deep-dive bugs from unwired annotations/signals. scripts/check_ios_no_silent_stubs.py fails CI on an un-annotated bare-default return.

Totals: 0 STUB · 12 HANDWRITTEN · 9 SUGAR (21 marked sites).

STUB

Silent stubs — should call real Godot but don't yet (follow up to avoid silent-no-op bugs).

(none)

HANDWRITTEN

Intentionally bespoke — not generatable from extension_api.json; correct as-is.

Location Note
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/Engine.kt:6 [glue] Engine singleton. Not retired to the generated wrapper because
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/FileAccess.kt:7 [glue] FileAccess static facade. The desktop shape is hand-shaped
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:116 [platform] KanamaScope bridges Godot's main thread to Kotlin coroutines; not generatable from extension_api.json.
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:130 [platform] MainThread.post is a no-op shim; on iOS main thread dispatch is handled by Godot's frame loop, not a JVM executor.
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:193 [runtime] signal/connect/emitSignal/await use the custom GDExtension
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:295 [platform] AutoCloseable no-op base for non-refcounted objects
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:580 [runtime] Tweener/PropertyTweener/Tween use the Variant tween_property path
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:699 [platform] pure-Kotlin math helpers (no Godot call). Bespoke utility,
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:761 [glue] ResourceLoader singleton. Not retired to the generated wrapper:
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:837 [platform] GD global helpers (rand*, print) — Kotlin/native impls, bespoke.
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/IosGodotApi.kt:923 [glue] thin cinterop facade over the C shim helpers used by the bespoke
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/ProjectSettings.kt:6 [glue] ProjectSettings singleton. Not retired to the generated wrapper:

SUGAR

Hand-added inside a GENERATED wrapper file — regeneration overwrites it; re-add after.

Location Note
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/BoxMesh.kt:70 [glue] desktop-parity constructor sugar (the desktop wrapper's
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/BoxShape3D.kt:28 [glue] desktop-parity constructor sugar (the desktop wrapper's
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/Image.kt:38 [runtime] get_data / load_png_from_buffer are PackedByteArray shapes
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/Image.kt:229 [runtime] create_from_data is STATIC + PackedByteArray — both
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/ImageTexture.kt:25 [runtime] create_from_image is STATIC — the instance dispatch
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/ParticleProcessMaterial.kt:802 [glue] downcast a Resource (null if not), mirroring the desktop
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/PlaneMesh.kt:95 [glue] downcast a Resource (null if not), mirroring the desktop
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/ProceduralSkyMaterial.kt:202 [glue] downcast a Resource (null if not), mirroring the desktop
ios-runtime/src/iosMain/kotlin/net/multigesture/kanama/api/StandardMaterial3D.kt:14 [glue] desktop-parity constructor sugar (the desktop wrapper's