From da136759203d90977cf78f586542c74ced2af4c7 Mon Sep 17 00:00:00 2001 From: Jan Walther Date: Tue, 18 Jun 2024 11:39:38 +0200 Subject: [PATCH] Initial support for CoreGraphics / Dispatch --- .github/workflows/ci.yml | 14 +- .gitignore | 1 + Cargo.lock | 16 ++ crates/header-translator/src/config.rs | 1 + crates/header-translator/src/id.rs | 2 +- crates/header-translator/src/method.rs | 8 +- crates/header-translator/src/rust_type.rs | 2 +- crates/header-translator/src/stmt.rs | 72 +++++++- .../header-translator/src/unexposed_attr.rs | 15 ++ .../src/topics/about_generated/list_data.md | 2 + .../objc2-core-graphics/Cargo.toml | 172 ++++++++++++++++++ .../objc2-core-graphics/README.md | 14 ++ .../objc2-core-graphics/src/generated | 1 + .../objc2-core-graphics/src/lib.rs | 20 ++ .../translation-config.toml | 9 + framework-crates/objc2-dispatch/Cargo.toml | 44 +++++ framework-crates/objc2-dispatch/README.md | 14 ++ framework-crates/objc2-dispatch/src/generated | 1 + framework-crates/objc2-dispatch/src/lib.rs | 20 ++ .../objc2-dispatch/translation-config.toml | 9 + 20 files changed, 414 insertions(+), 23 deletions(-) create mode 100644 framework-crates/objc2-core-graphics/Cargo.toml create mode 100644 framework-crates/objc2-core-graphics/README.md create mode 120000 framework-crates/objc2-core-graphics/src/generated create mode 100644 framework-crates/objc2-core-graphics/src/lib.rs create mode 100644 framework-crates/objc2-core-graphics/translation-config.toml create mode 100644 framework-crates/objc2-dispatch/Cargo.toml create mode 100644 framework-crates/objc2-dispatch/README.md create mode 120000 framework-crates/objc2-dispatch/src/generated create mode 100644 framework-crates/objc2-dispatch/src/lib.rs create mode 100644 framework-crates/objc2-dispatch/translation-config.toml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b36dbb07d..d5a0f0ad4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,13 +46,13 @@ env: --package=objc2-exception-helper # BEGIN AUTOMATICALLY GENERATED - FRAMEWORKS_MACOS_10_12: --package=objc2-accounts --package=objc2-app-kit --package=objc2-automator --package=objc2-av-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-wlan --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-input-method-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-multipeer-connectivity --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-store-kit --package=objc2-web-kit - FRAMEWORKS_MACOS_10_13: --package=objc2-accounts --package=objc2-app-kit --package=objc2-automator --package=objc2-av-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-wlan --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-external-accessory --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-input-method-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-multipeer-connectivity --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-store-kit --package=objc2-vision --package=objc2-web-kit - FRAMEWORKS_MACOS_11: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-business-chat --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-device-check --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-system-extensions --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit - FRAMEWORKS_MACOS_12: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-business-chat --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-system-extensions --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit - FRAMEWORKS_MACOS_13: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-background-assets --package=objc2-business-chat --package=objc2-call-kit --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-fx --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-screen-capture-kit --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-system-extensions --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit - FRAMEWORKS_MACOS_14: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-background-assets --package=objc2-business-chat --package=objc2-call-kit --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-fx --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-screen-capture-kit --package=objc2-sensitive-content-analysis --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-symbols --package=objc2-system-extensions --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit - FRAMEWORKS_IOS_10: --package=objc2-accounts --package=objc2-ad-support --package=objc2-av-kit --package=objc2-call-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-motion --package=objc2-event-kit --package=objc2-external-accessory --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-multipeer-connectivity --package=objc2-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-social --package=objc2-speech --package=objc2-store-kit --package=objc2-ui-kit --package=objc2-user-notifications + FRAMEWORKS_MACOS_10_12: --package=objc2-accounts --package=objc2-app-kit --package=objc2-automator --package=objc2-av-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-graphics --package=objc2-core-image --package=objc2-core-location --package=objc2-core-wlan --package=objc2-dispatch --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-input-method-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-multipeer-connectivity --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-store-kit --package=objc2-web-kit + FRAMEWORKS_MACOS_10_13: --package=objc2-accounts --package=objc2-app-kit --package=objc2-automator --package=objc2-av-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-graphics --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-wlan --package=objc2-dispatch --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-external-accessory --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-input-method-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-multipeer-connectivity --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-store-kit --package=objc2-vision --package=objc2-web-kit + FRAMEWORKS_MACOS_11: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-business-chat --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-graphics --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-device-check --package=objc2-dispatch --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-system-extensions --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit + FRAMEWORKS_MACOS_12: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-business-chat --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-graphics --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-dispatch --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-system-extensions --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit + FRAMEWORKS_MACOS_13: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-background-assets --package=objc2-business-chat --package=objc2-call-kit --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-graphics --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-dispatch --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-fx --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-screen-capture-kit --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-system-extensions --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit + FRAMEWORKS_MACOS_14: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-kit --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-automator --package=objc2-av-kit --package=objc2-background-assets --package=objc2-business-chat --package=objc2-call-kit --package=objc2-class-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-graphics --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-core-wlan --package=objc2-data-detection --package=objc2-device-check --package=objc2-dispatch --package=objc2-event-kit --package=objc2-exception-handling --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-finder-sync --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-input-method-kit --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-mail-kit --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-fx --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-ml-compute --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-osa-kit --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-screen-capture-kit --package=objc2-sensitive-content-analysis --package=objc2-service-management --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-symbols --package=objc2-system-extensions --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-virtualization --package=objc2-vision --package=objc2-web-kit + FRAMEWORKS_IOS_10: --package=objc2-accounts --package=objc2-ad-support --package=objc2-av-kit --package=objc2-call-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-contacts-ui --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-graphics --package=objc2-core-image --package=objc2-core-location --package=objc2-core-motion --package=objc2-dispatch --package=objc2-event-kit --package=objc2-external-accessory --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-multipeer-connectivity --package=objc2-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-social --package=objc2-speech --package=objc2-store-kit --package=objc2-ui-kit --package=objc2-user-notifications FRAMEWORKS_GNUSTEP: --package=objc2-app-kit --package=objc2-foundation # END AUTOMATICALLY GENERATED diff --git a/.gitignore b/.gitignore index 3bd0d1508..375472497 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ target/ tests-ios/* !tests-ios/prelude.rs +.idea/ diff --git a/Cargo.lock b/Cargo.lock index e15ddfcd6..119869044 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -582,6 +582,18 @@ dependencies = [ "objc2-foundation", ] +[[package]] +name = "objc2-core-graphics" +version = "0.2.2" +dependencies = [ + "bitflags", + "block2", + "libc", + "objc2", + "objc2-foundation", + "objc2-metal", +] + [[package]] name = "objc2-core-image" version = "0.2.2" @@ -650,6 +662,10 @@ dependencies = [ "objc2-foundation", ] +[[package]] +name = "objc2-dispatch" +version = "0.2.2" + [[package]] name = "objc2-encode" version = "4.0.3" diff --git a/crates/header-translator/src/config.rs b/crates/header-translator/src/config.rs index f9f7e91ba..20abc0867 100644 --- a/crates/header-translator/src/config.rs +++ b/crates/header-translator/src/config.rs @@ -22,6 +22,7 @@ fn uses_system_config(library_name: &str) -> bool { "System" | "bitflags" | "block2" | "libc" | "objc2" => true, // Temporary "CoreFoundation" => true, + "CoreGraphics" => true, _ => false, } } diff --git a/crates/header-translator/src/id.rs b/crates/header-translator/src/id.rs index 3794b4a65..f2093817f 100644 --- a/crates/header-translator/src/id.rs +++ b/crates/header-translator/src/id.rs @@ -178,7 +178,7 @@ impl Location { } } } else { - error!(location = ?self, "failed getting crate name"); + error!(location = ?self, ?library, "failed getting crate name"); LocationLibrary::System } } diff --git a/crates/header-translator/src/method.rs b/crates/header-translator/src/method.rs index ae92abb36..b372ade25 100644 --- a/crates/header-translator/src/method.rs +++ b/crates/header-translator/src/method.rs @@ -81,7 +81,7 @@ impl MethodModifiers { UnexposedAttr::UIActor => { this.mainthreadonly = true; } - attr => error!(?attr, "unknown attribute"), + attr => error!(?attr, "unknown attribute on method modifiers"), } } } @@ -128,7 +128,7 @@ impl MethodModifiers { EntityKind::AnnotateAttr => { // TODO: `UI_APPEARANCE_SELECTOR` } - _ => error!("unknown"), + kind => error!(?kind, "unknown entity kind"), }); this @@ -428,13 +428,13 @@ impl Method { UnexposedAttr::Sendable => sendable = Some(true), UnexposedAttr::NonSendable => sendable = Some(false), UnexposedAttr::NoEscape => no_escape = true, - attr => error!(?attr, "unknown attribute"), + attr => error!(?attr, "unknown attribute on method"), } } } // For some reason we recurse into array types EntityKind::IntegerLiteral => {} - _ => error!("unknown"), + kind => error!(?kind, "unknown entity kind"), }); let ty = entity.get_type().expect("argument type"); diff --git a/crates/header-translator/src/rust_type.rs b/crates/header-translator/src/rust_type.rs index b4b9de47b..12b10a9ec 100644 --- a/crates/header-translator/src/rust_type.rs +++ b/crates/header-translator/src/rust_type.rs @@ -457,7 +457,7 @@ impl Ty { // Ignored for now; these are usually also emitted on the method/property, // which is where they will be useful in any case. } - Some(attr) => error!(?attr, "unknown attribute"), + Some(attr) => error!(?attr, "unknown attribute b"), None => {} } diff --git a/crates/header-translator/src/stmt.rs b/crates/header-translator/src/stmt.rs index e700d55bb..7810cd5e7 100644 --- a/crates/header-translator/src/stmt.rs +++ b/crates/header-translator/src/stmt.rs @@ -562,6 +562,8 @@ pub enum Stmt { result_type: Ty, // Some -> inline function. body: Option<()>, + must_use: bool, + pure: bool, safe: bool, }, /// typedef Type TypedefName; @@ -577,7 +579,15 @@ fn parse_fn_param_children(entity: &Entity<'_>, context: &Context<'_>) { immediate_children(entity, |entity, _span| match entity.get_kind() { EntityKind::UnexposedAttr => { if let Some(attr) = UnexposedAttr::parse(&entity, context) { - error!(?attr, "unknown attribute"); + match attr { + UnexposedAttr::NoEscape => { + // TODO: Pass this up + }, + _ => { + error!(?attr, "unknown attribute f"); + } + } + } } EntityKind::ObjCClassRef @@ -587,7 +597,10 @@ fn parse_fn_param_children(entity: &Entity<'_>, context: &Context<'_>) { EntityKind::NSConsumed => { error!("found NSConsumed, which requires manual handling"); } - kind => error!(?kind, "unknown"), + EntityKind::IntegerLiteral => { + // This is an array, probably fine... + } + kind => error!(?kind, ?entity, "unknown abc"), }); } @@ -1075,7 +1088,7 @@ impl Stmt { | EntityKind::TypeRef | EntityKind::ParmDecl | EntityKind::EnumDecl => {} - _ => error!("unknown"), + kind => error!(?kind, "unknown entity kind"), }); if context @@ -1141,7 +1154,7 @@ impl Stmt { match attr { UnexposedAttr::Sendable => sendable = Some(true), UnexposedAttr::NonSendable => sendable = Some(false), - attr => error!(?attr, "unknown attribute"), + attr => error!(?attr, "unknown attribute e"), } } } @@ -1163,7 +1176,7 @@ impl Stmt { boxable = true; } EntityKind::UnionDecl => error!("can't handle unions in structs yet"), - _ => error!("unknown"), + kind => error!(?kind, "unknown entity kind"), }); vec![Self::StructDecl { @@ -1235,7 +1248,15 @@ impl Stmt { immediate_children(&entity, |entity, _span| match entity.get_kind() { EntityKind::UnexposedAttr => { if let Some(attr) = UnexposedAttr::parse(&entity, context) { - error!(?attr, "unknown attribute"); + match attr { + UnexposedAttr::Deprecated => { + // TODO: Do we pass through the deprecated attribute here? + }, + _ => { + error!(?attr, "unknown attribute d"); + } + } + } } EntityKind::VisibilityAttr => {} @@ -1279,7 +1300,7 @@ impl Stmt { EntityKind::VisibilityAttr => { // Already exposed as entity.get_visibility() } - _ => error!("unknown"), + kind => error!(?kind, "unknown entity kind"), }); if id.name.is_none() { @@ -1335,7 +1356,7 @@ impl Stmt { immediate_children(entity, |entity, _span| match entity.get_kind() { EntityKind::UnexposedAttr => { if let Some(attr) = UnexposedAttr::parse(&entity, context) { - error!(?attr, "unknown attribute"); + error!(?attr, "unknown attribute c"); } } EntityKind::VisibilityAttr => {} @@ -1381,6 +1402,8 @@ impl Stmt { let result_type = entity.get_result_type().expect("function result type"); let result_type = Ty::parse_function_return(result_type, context); let mut arguments = Vec::new(); + let mut must_use = false; + let mut is_pure = false; if entity.is_static_method() { warn!("unexpected static method"); @@ -1389,7 +1412,13 @@ impl Stmt { immediate_children(entity, |entity, _span| match entity.get_kind() { EntityKind::UnexposedAttr => { if let Some(attr) = UnexposedAttr::parse(&entity, context) { - error!(?attr, "unknown attribute"); + match attr { + UnexposedAttr::NotOnEmbedded => { + // TODO: We might have to make availability mut here... + }, + _ => error!(?attr, "unknown attribute a") + } + } } EntityKind::ObjCClassRef @@ -1406,7 +1435,13 @@ impl Stmt { EntityKind::VisibilityAttr => { // CG_EXTERN or UIKIT_EXTERN } - _ => error!("unknown"), + EntityKind::WarnUnusedResultAttr => { + must_use = true; + } + EntityKind::PureAttr => { + is_pure = true; + } + kind => error!(?kind, "unknown entity kind"), }); let body = if entity.is_inline_function() { @@ -1420,6 +1455,8 @@ impl Stmt { availability, arguments, result_type, + must_use, + pure: is_pure, body, safe: !data.unsafe_, }] @@ -2347,10 +2384,15 @@ impl Stmt { availability: _, arguments, result_type, + must_use, + pure: _, body: Some(_), safe: _, } => { write!(f, "// TODO: ")?; + if *must_use { + writeln!(f, "#[must_use]")?; + } write!(f, "pub fn {}(", id.name)?; for (param, arg_ty) in arguments { let param = handle_reserved(&crate::to_snake_case(param)); @@ -2363,9 +2405,14 @@ impl Stmt { availability, arguments, result_type, + must_use, + pure: _, body: None, safe: false, } => { + if *must_use { + writeln!(f, "#[must_use]")?; + } writeln!(f, "extern \"C\" {{")?; write!(f, " {}", self.cfg_gate_ln(config))?; @@ -2385,12 +2432,17 @@ impl Stmt { availability, arguments, result_type, + must_use, + pure: _, body: None, safe: true, } => { write!(f, "{}", self.cfg_gate_ln(config))?; write!(f, "{availability}")?; writeln!(f, "#[inline]")?; + if *must_use { + writeln!(f, "#[must_use]")?; + } write!(f, "pub extern \"C\" fn {}(", id.name)?; for (param, arg_ty) in arguments { let param = handle_reserved(&crate::to_snake_case(param)); diff --git a/crates/header-translator/src/unexposed_attr.rs b/crates/header-translator/src/unexposed_attr.rs index 0e90ecc35..661dcfffa 100644 --- a/crates/header-translator/src/unexposed_attr.rs +++ b/crates/header-translator/src/unexposed_attr.rs @@ -3,6 +3,7 @@ use clang::token::{Token, TokenKind}; use clang::{Entity, EntityKind}; use crate::context::Context; +use crate::unexposed_attr::UnexposedAttr::{Deprecated, NoEscape, NotOnEmbedded}; /// Parts of `EntityKind::UnexposedAttr` that we can easily parse. #[derive(Clone, Debug, PartialEq, Eq, Hash)] @@ -29,6 +30,8 @@ pub enum UnexposedAttr { NonIsolated, NoEscape, + NotOnEmbedded, + Deprecated } impl UnexposedAttr { @@ -177,6 +180,18 @@ impl UnexposedAttr { let _ = get_arguments(); None } + "CF_IMPLICIT_BRIDGING_ENABLED" => { + None + }, + "CG_UNAVAILABLE_EMBEDDED" => { + Some(NotOnEmbedded) + }, + "__CG_DEPRECATED_ENUMERATOR" => { + Some(Deprecated) + }, + "CF_NOESCAPE" => { + Some(NoEscape) + } // For some reason we don't need to extract the arguments for // these, perhaps because they simply delegate to other macros. "AS_API_AVAILABLE" | "AS_HEADER_AUDIT_BEGIN" => None, diff --git a/crates/objc2/src/topics/about_generated/list_data.md b/crates/objc2/src/topics/about_generated/list_data.md index 2942a8081..54d6e68d3 100644 --- a/crates/objc2/src/topics/about_generated/list_data.md +++ b/crates/objc2/src/topics/about_generated/list_data.md @@ -20,6 +20,7 @@ | `ContactsUI` | [![`objc2-contacts-ui`](https://badgen.net/crates/v/objc2-contacts-ui)](https://crates.io/crates/objc2-contacts-ui) | [![docs.rs](https://docs.rs/objc2-contacts-ui/badge.svg)](https://docs.rs/objc2-contacts-ui/) | | `CoreBluetooth` | [![`objc2-core-bluetooth`](https://badgen.net/crates/v/objc2-core-bluetooth)](https://crates.io/crates/objc2-core-bluetooth) | [![docs.rs](https://docs.rs/objc2-core-bluetooth/badge.svg)](https://docs.rs/objc2-core-bluetooth/) | | `CoreData` | [![`objc2-core-data`](https://badgen.net/crates/v/objc2-core-data)](https://crates.io/crates/objc2-core-data) | [![docs.rs](https://docs.rs/objc2-core-data/badge.svg)](https://docs.rs/objc2-core-data/) | +| `CoreGraphics` | [![`objc2-core-graphics`](https://badgen.net/crates/v/objc2-core-graphics)](https://crates.io/crates/objc2-core-graphics) | [![docs.rs](https://docs.rs/objc2-core-graphics/badge.svg)](https://docs.rs/objc2-core-graphics/) | | `CoreImage` | [![`objc2-core-image`](https://badgen.net/crates/v/objc2-core-image)](https://crates.io/crates/objc2-core-image) | [![docs.rs](https://docs.rs/objc2-core-image/badge.svg)](https://docs.rs/objc2-core-image/) | | `CoreLocation` | [![`objc2-core-location`](https://badgen.net/crates/v/objc2-core-location)](https://crates.io/crates/objc2-core-location) | [![docs.rs](https://docs.rs/objc2-core-location/badge.svg)](https://docs.rs/objc2-core-location/) | | `CoreML` | [![`objc2-core-ml`](https://badgen.net/crates/v/objc2-core-ml)](https://crates.io/crates/objc2-core-ml) | [![docs.rs](https://docs.rs/objc2-core-ml/badge.svg)](https://docs.rs/objc2-core-ml/) | @@ -27,6 +28,7 @@ | `CoreWLAN` | [![`objc2-core-wlan`](https://badgen.net/crates/v/objc2-core-wlan)](https://crates.io/crates/objc2-core-wlan) | [![docs.rs](https://docs.rs/objc2-core-wlan/badge.svg)](https://docs.rs/objc2-core-wlan/) | | `DataDetection` | [![`objc2-data-detection`](https://badgen.net/crates/v/objc2-data-detection)](https://crates.io/crates/objc2-data-detection) | [![docs.rs](https://docs.rs/objc2-data-detection/badge.svg)](https://docs.rs/objc2-data-detection/) | | `DeviceCheck` | [![`objc2-device-check`](https://badgen.net/crates/v/objc2-device-check)](https://crates.io/crates/objc2-device-check) | [![docs.rs](https://docs.rs/objc2-device-check/badge.svg)](https://docs.rs/objc2-device-check/) | +| `Dispatch` | [![`objc2-dispatch`](https://badgen.net/crates/v/objc2-dispatch)](https://crates.io/crates/objc2-dispatch) | [![docs.rs](https://docs.rs/objc2-dispatch/badge.svg)](https://docs.rs/objc2-dispatch/) | | `EventKit` | [![`objc2-event-kit`](https://badgen.net/crates/v/objc2-event-kit)](https://crates.io/crates/objc2-event-kit) | [![docs.rs](https://docs.rs/objc2-event-kit/badge.svg)](https://docs.rs/objc2-event-kit/) | | `ExceptionHandling` | [![`objc2-exception-handling`](https://badgen.net/crates/v/objc2-exception-handling)](https://crates.io/crates/objc2-exception-handling) | [![docs.rs](https://docs.rs/objc2-exception-handling/badge.svg)](https://docs.rs/objc2-exception-handling/) | | `ExtensionKit` | [![`objc2-extension-kit`](https://badgen.net/crates/v/objc2-extension-kit)](https://crates.io/crates/objc2-extension-kit) | [![docs.rs](https://docs.rs/objc2-extension-kit/badge.svg)](https://docs.rs/objc2-extension-kit/) | diff --git a/framework-crates/objc2-core-graphics/Cargo.toml b/framework-crates/objc2-core-graphics/Cargo.toml new file mode 100644 index 000000000..fbf92eb4d --- /dev/null +++ b/framework-crates/objc2-core-graphics/Cargo.toml @@ -0,0 +1,172 @@ +# This file has been automatically generated by `objc2`'s `header-translator`. +# DO NOT EDIT + +[package] +name = "objc2-core-graphics" +version = "0.2.2" # Remember to update html_root_url in lib.rs +description = "Bindings to the CoreGraphics framework" +edition = "2021" +rust-version = "1.60" +keywords = ["cocoa", "apple", "framework", "macos", "ios"] +categories = [ + "api-bindings", + "development-tools::ffi", + "external-ffi-bindings", + "os::macos-apis", +] +repository = "https://github.com/madsmtm/objc2" +license = "MIT" + +[lints] +workspace = true + +[dependencies] +bitflags = { version = "2.5.0", default-features = false, optional = true } +block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } +libc = { version = "0.2.80", default-features = false, optional = true } +objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } + +[target.'cfg(not(target_os = "watchos"))'.dependencies] +objc2-metal = { path = "../objc2-metal", version = "0.2.2", default-features = false, optional = true } + +[package.metadata.docs.rs] +default-target = "aarch64-apple-darwin" +features = ["all"] +targets = [ + "aarch64-apple-darwin", + "x86_64-apple-darwin", + "aarch64-apple-ios", + "aarch64-apple-tvos", + "aarch64-apple-watchos", + "aarch64-apple-ios-macabi", +] + +[features] +default = ["std"] + +# Currently not possible to turn off, put here for forwards compatibility. +std = ["alloc", "bitflags?/std", "block2?/std", "libc?/std", "objc2/std", "objc2-foundation/std", "objc2-metal?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-foundation/alloc", "objc2-metal?/alloc"] +bitflags = ["dep:bitflags", "objc2-foundation/bitflags", "objc2-metal?/bitflags"] +block2 = ["dep:block2", "objc2-foundation/block2", "objc2-metal?/block2"] +libc = ["dep:libc", "objc2-foundation/libc"] +objc2-metal = ["dep:objc2-metal"] + +CGAffineTransform = ["objc2-foundation/NSGeometry"] +CGBase = [] +CGBitmapContext = [] +CGColor = ["objc2-foundation/NSGeometry"] +CGColorConversionInfo = [] +CGColorSpace = ["objc2-foundation/NSGeometry"] +CGContext = ["objc2-foundation/NSGeometry"] +CGConvertColorDataWithFormat = ["objc2-foundation/NSGeometry"] +CGDataConsumer = [] +CGDataProvider = [] +CGDirectDisplay = [ + "bitflags", + "objc2-foundation/NSGeometry", +] +CGDirectDisplayMetal = ["objc2-metal?/MTLDevice"] +CGDirectPalette = [] +CGDisplayConfiguration = [ + "bitflags", + "objc2-foundation/NSGeometry", +] +CGDisplayFade = [] +CGDisplayStream = ["objc2-foundation/NSGeometry"] +CGError = [] +CGEvent = ["objc2-foundation/NSGeometry"] +CGEventSource = [] +CGEventTypes = ["bitflags"] +CGFont = ["objc2-foundation/NSGeometry"] +CGFunction = ["objc2-foundation/NSGeometry"] +CGGeometry = ["objc2-foundation/NSGeometry"] +CGGradient = [ + "bitflags", + "objc2-foundation/NSGeometry", +] +CGImage = [ + "bitflags", + "objc2-foundation/NSGeometry", +] +CGLayer = ["objc2-foundation/NSGeometry"] +CGPDFArray = ["objc2-foundation/NSGeometry"] +CGPDFContentStream = [] +CGPDFContext = ["objc2-foundation/NSGeometry"] +CGPDFDictionary = ["objc2-foundation/NSGeometry"] +CGPDFDocument = [ + "bitflags", + "objc2-foundation/NSGeometry", +] +CGPDFObject = ["objc2-foundation/NSGeometry"] +CGPDFOperatorTable = [] +CGPDFPage = ["objc2-foundation/NSGeometry"] +CGPDFScanner = ["objc2-foundation/NSGeometry"] +CGPDFStream = [] +CGPDFString = [] +CGPSConverter = [] +CGPath = ["objc2-foundation/NSGeometry"] +CGPattern = ["objc2-foundation/NSGeometry"] +CGRemoteOperation = [ + "bitflags", + "objc2-foundation/NSGeometry", +] +CGSession = [] +CGShading = ["objc2-foundation/NSGeometry"] +CGWindow = [ + "bitflags", + "objc2-foundation/NSGeometry", +] +CGWindowLevel = [] +all = [ + "CGAffineTransform", + "CGBase", + "CGBitmapContext", + "CGColor", + "CGColorConversionInfo", + "CGColorSpace", + "CGContext", + "CGConvertColorDataWithFormat", + "CGDataConsumer", + "CGDataProvider", + "CGDirectDisplay", + "CGDirectDisplayMetal", + "CGDirectPalette", + "CGDisplayConfiguration", + "CGDisplayFade", + "CGDisplayStream", + "CGError", + "CGEvent", + "CGEventSource", + "CGEventTypes", + "CGFont", + "CGFunction", + "CGGeometry", + "CGGradient", + "CGImage", + "CGLayer", + "CGPDFArray", + "CGPDFContentStream", + "CGPDFContext", + "CGPDFDictionary", + "CGPDFDocument", + "CGPDFObject", + "CGPDFOperatorTable", + "CGPDFPage", + "CGPDFScanner", + "CGPDFStream", + "CGPDFString", + "CGPSConverter", + "CGPath", + "CGPattern", + "CGRemoteOperation", + "CGSession", + "CGShading", + "CGWindow", + "CGWindowLevel", + "bitflags", + "block2", + "libc", + "objc2-metal", +] diff --git a/framework-crates/objc2-core-graphics/README.md b/framework-crates/objc2-core-graphics/README.md new file mode 100644 index 000000000..c803ebe36 --- /dev/null +++ b/framework-crates/objc2-core-graphics/README.md @@ -0,0 +1,14 @@ +# `objc2-core-graphics` + +[![Latest version](https://badgen.net/crates/v/objc2-core-graphics)](https://crates.io/crates/objc2-core-graphics) +[![License](https://badgen.net/badge/license/MIT/blue)](../LICENSE.txt) +[![Documentation](https://docs.rs/objc2-core-graphics/badge.svg)](https://docs.rs/objc2-core-graphics/) +[![CI](https://github.com/madsmtm/objc2/actions/workflows/ci.yml/badge.svg)](https://github.com/madsmtm/objc2/actions/workflows/ci.yml) + +Rust bindings to Apple's framework CoreGraphics. + +This README is kept intentionally small to consolidate the documentation, see +[the Rust docs](https://docs.rs/objc2-core-graphics/) for more details on this crate. + +This crate is part of the [`objc2` project](https://github.com/madsmtm/objc2), +see that for related crates. diff --git a/framework-crates/objc2-core-graphics/src/generated b/framework-crates/objc2-core-graphics/src/generated new file mode 120000 index 000000000..e6080a65d --- /dev/null +++ b/framework-crates/objc2-core-graphics/src/generated @@ -0,0 +1 @@ +../../../generated/CoreGraphics \ No newline at end of file diff --git a/framework-crates/objc2-core-graphics/src/lib.rs b/framework-crates/objc2-core-graphics/src/lib.rs new file mode 100644 index 000000000..a57096c44 --- /dev/null +++ b/framework-crates/objc2-core-graphics/src/lib.rs @@ -0,0 +1,20 @@ +//! # Bindings to the `CoreGraphics` framework +//! +//! See [Apple's docs][apple-doc] and [the general docs on framework crates][framework-crates] for more information. +//! +//! [apple-doc]: https://developer.apple.com/documentation/coregraphics/ +//! [framework-crates]: https://docs.rs/objc2/latest/objc2/topics/about_generated/index.html +#![no_std] +#![cfg_attr(docsrs, feature(doc_auto_cfg))] +// Update in Cargo.toml as well. +#![doc(html_root_url = "https://docs.rs/objc2-core-graphics/0.2.2")] + +#[cfg(feature = "alloc")] +extern crate alloc; + +#[cfg(feature = "std")] +extern crate std; + +mod generated; +#[allow(unused_imports, unreachable_pub)] +pub use self::generated::*; diff --git a/framework-crates/objc2-core-graphics/translation-config.toml b/framework-crates/objc2-core-graphics/translation-config.toml new file mode 100644 index 000000000..a4ac55114 --- /dev/null +++ b/framework-crates/objc2-core-graphics/translation-config.toml @@ -0,0 +1,9 @@ +framework = "CoreGraphics" +crate = "objc2-core-graphics" +required-dependencies = ["objc2-foundation", "objc2-dispatch"] +macos = "10.8" +maccatalyst = "13.0" +ios = "2.0" +tvos = "9.0" +watchos = "2.0" +visionos = "1.0" diff --git a/framework-crates/objc2-dispatch/Cargo.toml b/framework-crates/objc2-dispatch/Cargo.toml new file mode 100644 index 000000000..b290b8eed --- /dev/null +++ b/framework-crates/objc2-dispatch/Cargo.toml @@ -0,0 +1,44 @@ +# This file has been automatically generated by `objc2`'s `header-translator`. +# DO NOT EDIT + +[package] +name = "objc2-dispatch" +version = "0.2.2" # Remember to update html_root_url in lib.rs +description = "Bindings to the Dispatch framework" +edition = "2021" +rust-version = "1.60" +keywords = ["cocoa", "apple", "framework", "macos", "ios"] +categories = [ + "api-bindings", + "development-tools::ffi", + "external-ffi-bindings", + "os::macos-apis", +] +repository = "https://github.com/madsmtm/objc2" +license = "MIT" + +[lints] +workspace = true + +[dependencies] + +[package.metadata.docs.rs] +default-target = "aarch64-apple-darwin" +features = ["all"] +targets = [ + "aarch64-apple-darwin", + "x86_64-apple-darwin", + "aarch64-apple-ios", + "aarch64-apple-tvos", + "aarch64-apple-watchos", + "aarch64-apple-ios-macabi", +] + +[features] +default = ["std"] + +# Currently not possible to turn off, put here for forwards compatibility. +std = ["alloc"] +alloc = [] + +all = [] diff --git a/framework-crates/objc2-dispatch/README.md b/framework-crates/objc2-dispatch/README.md new file mode 100644 index 000000000..124c4fd2c --- /dev/null +++ b/framework-crates/objc2-dispatch/README.md @@ -0,0 +1,14 @@ +# `objc2-dispatch` + +[![Latest version](https://badgen.net/crates/v/objc2-dispatch)](https://crates.io/crates/objc2-dispatch) +[![License](https://badgen.net/badge/license/MIT/blue)](../LICENSE.txt) +[![Documentation](https://docs.rs/objc2-dispatch/badge.svg)](https://docs.rs/objc2-dispatch/) +[![CI](https://github.com/madsmtm/objc2/actions/workflows/ci.yml/badge.svg)](https://github.com/madsmtm/objc2/actions/workflows/ci.yml) + +Rust bindings to Apple's framework Dispatch. + +This README is kept intentionally small to consolidate the documentation, see +[the Rust docs](https://docs.rs/objc2-dispatch/) for more details on this crate. + +This crate is part of the [`objc2` project](https://github.com/madsmtm/objc2), +see that for related crates. diff --git a/framework-crates/objc2-dispatch/src/generated b/framework-crates/objc2-dispatch/src/generated new file mode 120000 index 000000000..fb3314b24 --- /dev/null +++ b/framework-crates/objc2-dispatch/src/generated @@ -0,0 +1 @@ +../../../generated/Dispatch \ No newline at end of file diff --git a/framework-crates/objc2-dispatch/src/lib.rs b/framework-crates/objc2-dispatch/src/lib.rs new file mode 100644 index 000000000..e8f16d088 --- /dev/null +++ b/framework-crates/objc2-dispatch/src/lib.rs @@ -0,0 +1,20 @@ +//! # Bindings to the `Dispatch` framework +//! +//! See [Apple's docs][apple-doc] and [the general docs on framework crates][framework-crates] for more information. +//! +//! [apple-doc]: https://developer.apple.com/documentation/dispatch/ +//! [framework-crates]: https://docs.rs/objc2/latest/objc2/topics/about_generated/index.html +#![no_std] +#![cfg_attr(docsrs, feature(doc_auto_cfg))] +// Update in Cargo.toml as well. +#![doc(html_root_url = "https://docs.rs/objc2-dispatch/0.2.2")] + +#[cfg(feature = "alloc")] +extern crate alloc; + +#[cfg(feature = "std")] +extern crate std; + +mod generated; +#[allow(unused_imports, unreachable_pub)] +pub use self::generated::*; diff --git a/framework-crates/objc2-dispatch/translation-config.toml b/framework-crates/objc2-dispatch/translation-config.toml new file mode 100644 index 000000000..83acb71df --- /dev/null +++ b/framework-crates/objc2-dispatch/translation-config.toml @@ -0,0 +1,9 @@ +framework = "Dispatch" +crate = "objc2-dispatch" +required-dependencies = [] +macos = "10.10" +maccatalyst = "13.0" +ios = "8.0" +tvos = "9.0" +watchos = "2.0" +visionos = "1.0"