#!/bin/bash # Verify UniFFI C ABI symbols exist in the static library. # Run after build-ios.sh or independently to diagnose FFI issues. set -e LIB="${1:-bindings/ios/simulator/libzx_document_ffi.a}" if [ ! -f "$LIB" ]; then echo "ERROR: Library not found: $LIB" exit 1 fi echo "==> Checking UniFFI C ABI symbols in $LIB..." PASS=0 FAIL=0 check() { if nm "$LIB" 2>/dev/null | grep -q "_$1"; then PASS=$((PASS + 1)) else echo " MISSING: _$1" FAIL=$((FAIL + 1)) fi } # API dispatch functions check uniffi_zx_document_ffi_fn_func_detect_material_type check uniffi_zx_document_ffi_fn_func_parse_markdown check uniffi_zx_document_ffi_fn_func_parse_text check uniffi_zx_document_ffi_fn_func_read_image_meta check uniffi_zx_document_ffi_fn_func_read_text_stats check uniffi_zx_document_ffi_fn_func_search_markdown_blocks check uniffi_zx_document_ffi_fn_func_search_text_content check uniffi_zx_document_ffi_fn_func_create_note_anchor check uniffi_zx_document_ffi_fn_func_push_reading_event check uniffi_zx_document_ffi_fn_func_update_reading_position check uniffi_zx_document_ffi_fn_func_export_pending_events check uniffi_zx_document_ffi_fn_func_clear_exported_events # Buffer management check ffi_zx_document_ffi_rustbuffer_alloc check ffi_zx_document_ffi_rustbuffer_from_bytes check ffi_zx_document_ffi_rustbuffer_free check ffi_zx_document_ffi_rustbuffer_reserve check ffi_zx_document_ffi_uniffi_contract_version echo "" echo "Results: $PASS passed, $FAIL missing" if [ "$FAIL" -gt 0 ]; then echo "ERROR: $FAIL required symbol(s) missing." exit 1 fi echo "All symbols OK!"