From ba1e6d11537d6a2ba4178307db9f0a0953266265 Mon Sep 17 00:00:00 2001 From: samuelsleight Date: Mon, 19 Jun 2023 22:15:42 +0100 Subject: [PATCH 1/8] Add some new `unexposed_attr`s from CoreFoundation --- .../header-translator/src/unexposed_attr.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/crates/header-translator/src/unexposed_attr.rs b/crates/header-translator/src/unexposed_attr.rs index dc3f0c3f7..79590e821 100644 --- a/crates/header-translator/src/unexposed_attr.rs +++ b/crates/header-translator/src/unexposed_attr.rs @@ -54,11 +54,14 @@ impl UnexposedAttr { // TODO: Add error domain here Some(Self::ErrorEnum) } - "NS_TYPED_ENUM" | "NS_STRING_ENUM" | "CF_TYPED_ENUM" => Some(Self::TypedEnum), + "NS_TYPED_ENUM" | "NS_STRING_ENUM" | "CF_TYPED_ENUM" | "CF_STRING_ENUM" => { + Some(Self::TypedEnum) + } "_NS_TYPED_EXTENSIBLE_ENUM" | "NS_TYPED_EXTENSIBLE_ENUM" | "CF_TYPED_EXTENSIBLE_ENUM" - | "NS_EXTENSIBLE_STRING_ENUM" => Some(Self::TypedExtensibleEnum), + | "NS_EXTENSIBLE_STRING_ENUM" + | "CF_EXTENSIBLE_STRING_ENUM" => Some(Self::TypedExtensibleEnum), "NS_SWIFT_BRIDGED_TYPEDEF" | "CF_SWIFT_BRIDGED_TYPEDEF" => Some(Self::BridgedTypedef), "CF_BRIDGED_TYPE" => Some(Self::Bridged), "CF_BRIDGED_MUTABLE_TYPE" => Some(Self::BridgedMutable), @@ -78,11 +81,12 @@ impl UnexposedAttr { "NS_SWIFT_UI_ACTOR" | "WK_SWIFT_UI_ACTOR" => Some(Self::UIActor), "NS_SWIFT_NONISOLATED" | "UIKIT_SWIFT_ACTOR_INDEPENDENT" => Some(Self::NonIsolated), // TODO - "NS_FORMAT_FUNCTION" | "NS_FORMAT_ARGUMENT" => { + "CF_FORMAT_ARGUMENT" | "CF_FORMAT_FUNCTION" | "NS_FORMAT_FUNCTION" + | "NS_FORMAT_ARGUMENT" => { let _ = get_arguments(); None } - "NS_NOESCAPE" => Some(Self::NoEscape), + "CF_NOESCAPE" | "NS_NOESCAPE" => Some(Self::NoEscape), // TODO: We could potentially automatically elide this argument // from the method call, though it's rare enough that it's // probably not really worth the effort. @@ -115,8 +119,10 @@ impl UnexposedAttr { | "API_DEPRECATED_WITH_REPLACEMENT" | "API_UNAVAILABLE_BEGIN" | "API_UNAVAILABLE" + | "CF_AVAILABLE" | "CF_AVAILABLE_IOS" | "CF_AVAILABLE_MAC" + | "CF_DEPRECATED" | "CF_SWIFT_UNAVAILABLE" | "CG_AVAILABLE_BUT_DEPRECATED" | "CG_AVAILABLE_STARTING" @@ -194,6 +200,7 @@ impl UnexposedAttr { | "AVKIT_INIT_UNAVAILABLE" | "CB_CM_API_AVAILABLE" | "MP_INIT_UNAVAILABLE" + | "CF_AUTOMATED_REFCOUNT_UNAVAILABLE" | "NS_AUTOMATED_REFCOUNT_UNAVAILABLE" | "NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE" | "NS_UNAVAILABLE" @@ -205,6 +212,7 @@ impl UnexposedAttr { s if s.starts_with("FILEPROVIDER_API_AVAILABILITY_") => None, // Might be interesting in the future "CF_SWIFT_NAME" + | "CF_SWIFT_UNAVAILABLE_FROM_ASYNC" | "DISPATCH_SWIFT_NAME" | "NS_REFINED_FOR_SWIFT_ASYNC" | "NS_SWIFT_ASYNC_NAME" @@ -217,7 +225,8 @@ impl UnexposedAttr { let _ = get_arguments(); None } - "CF_REFINED_FOR_SWIFT" + "CF_IMPLICIT_BRIDGING_ENABLED" + | "CF_REFINED_FOR_SWIFT" | "NS_REFINED_FOR_SWIFT" | "NS_SWIFT_DISABLE_ASYNC" | "NS_SWIFT_NOTHROW" => None, From fe5ff79ef1ca0c4265ac484f04f00adff3068cd5 Mon Sep 17 00:00:00 2001 From: samuelsleight Date: Mon, 19 Jun 2023 22:16:12 +0100 Subject: [PATCH 2/8] Treat `Bridged` types like `BridgedTypedef` types --- crates/header-translator/src/stmt.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/header-translator/src/stmt.rs b/crates/header-translator/src/stmt.rs index 8de27125a..045ca03a4 100644 --- a/crates/header-translator/src/stmt.rs +++ b/crates/header-translator/src/stmt.rs @@ -2408,7 +2408,10 @@ impl Stmt { writeln!(f, "pub type {} = {};", id.name, ty.typedef())?; } kind => { - if !matches!(kind, None | Some(UnexposedAttr::BridgedTypedef)) { + if !matches!( + kind, + None | Some(UnexposedAttr::BridgedTypedef | UnexposedAttr::Bridged) + ) { error!("invalid alias kind {kind:?} for {ty:?}"); } // "bridged" typedefs should use a normal type alias. From 548a68de4156aba133e6e5ca6e7e6499652023b2 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Mon, 9 Dec 2024 20:56:38 +0100 Subject: [PATCH 3/8] Mark mach and arm as system headers too --- crates/header-translator/src/context.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/crates/header-translator/src/context.rs b/crates/header-translator/src/context.rs index e0192bd1c..2b92da043 100644 --- a/crates/header-translator/src/context.rs +++ b/crates/header-translator/src/context.rs @@ -67,6 +67,14 @@ impl<'a> Context<'a> { if path.starts_with("sys") { return Some(Location::from_components(vec!["libc".into()])); } + if path.starts_with("mach") { + // Will be moved to the `mach` crate in `libc` v1.0 + return Some(Location::from_components(vec!["libc".into()])); + } + if path.starts_with("arm") { + // Temporary + return Some(Location::from_components(vec!["System".into()])); + } } } } From 24331c378558c293287b822b00aaf46d2372783f Mon Sep 17 00:00:00 2001 From: samuelsleight Date: Sat, 24 Jun 2023 18:34:22 +0100 Subject: [PATCH 4/8] Don't fail on functions tagged with `ReturnsRetained` --- crates/header-translator/src/stmt.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crates/header-translator/src/stmt.rs b/crates/header-translator/src/stmt.rs index 045ca03a4..edaafbb5d 100644 --- a/crates/header-translator/src/stmt.rs +++ b/crates/header-translator/src/stmt.rs @@ -1358,6 +1358,9 @@ impl Stmt { UnexposedAttr::UIActor => { warn!("unhandled UIActor on function declaration") } + UnexposedAttr::ReturnsRetained => { + // TODO: Ignore for now, but at some point handle in a similar way to in methods + } _ => error!(?attr, "unknown attribute"), } } From 9fb2da14fd22149c7289ff69a8fd8f50d7f70f10 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Mon, 9 Dec 2024 20:50:17 +0100 Subject: [PATCH 5/8] More detailed error message on unknown attributes --- crates/header-translator/src/method.rs | 4 ++-- crates/header-translator/src/rust_type.rs | 2 +- crates/header-translator/src/stmt.rs | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/header-translator/src/method.rs b/crates/header-translator/src/method.rs index 1e8cbf359..cc4c712ac 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"), } } } @@ -429,7 +429,7 @@ 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 argument"), } } } diff --git a/crates/header-translator/src/rust_type.rs b/crates/header-translator/src/rust_type.rs index 38d696fdb..394fc27f0 100644 --- a/crates/header-translator/src/rust_type.rs +++ b/crates/header-translator/src/rust_type.rs @@ -473,7 +473,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 on type"), None => {} } diff --git a/crates/header-translator/src/stmt.rs b/crates/header-translator/src/stmt.rs index edaafbb5d..f0aa7b67e 100644 --- a/crates/header-translator/src/stmt.rs +++ b/crates/header-translator/src/stmt.rs @@ -539,7 +539,7 @@ 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"); + error!(?attr, "unknown attribute on fn param"); } } EntityKind::ObjCClassRef @@ -1097,7 +1097,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 on struct"), } } } @@ -1191,7 +1191,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 on enum constant"); } } EntityKind::VisibilityAttr => {} @@ -1298,7 +1298,7 @@ impl Stmt { // don't generally restrict statics in this // fashion, so it shouldn't matter for us. UnexposedAttr::NonIsolated => {} - attr => error!(?attr, "unknown attribute"), + attr => error!(?attr, "unknown attribute on var"), } } } @@ -1361,7 +1361,7 @@ impl Stmt { UnexposedAttr::ReturnsRetained => { // TODO: Ignore for now, but at some point handle in a similar way to in methods } - _ => error!(?attr, "unknown attribute"), + _ => error!(?attr, "unknown attribute on function"), } } } From 3a565e0344a623bad7881298338b20b4a4a644f8 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Mon, 9 Dec 2024 20:55:52 +0100 Subject: [PATCH 6/8] Small tweaks to make CoreFoundation work --- crates/header-translator/src/id.rs | 6 +++++- crates/header-translator/src/rust_type.rs | 3 ++- crates/header-translator/src/stmt.rs | 7 ++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/crates/header-translator/src/id.rs b/crates/header-translator/src/id.rs index f4bd7bbb3..cec7ef7e3 100644 --- a/crates/header-translator/src/id.rs +++ b/crates/header-translator/src/id.rs @@ -186,7 +186,11 @@ impl Location { } pub fn assert_file(&self, file_name: &str) { - assert_eq!(self.file_name(), Some(file_name)); + assert_eq!( + self.file_name(), + Some(file_name), + "expected {self:?} to be in {file_name:?}" + ); } } diff --git a/crates/header-translator/src/rust_type.rs b/crates/header-translator/src/rust_type.rs index 394fc27f0..f8e6b4e49 100644 --- a/crates/header-translator/src/rust_type.rs +++ b/crates/header-translator/src/rust_type.rs @@ -1725,7 +1725,8 @@ impl Ty { FormatterFn(move |f| match self { Self::Primitive(Primitive::NSInteger) => write!(f, "#[repr(isize)] // NSInteger"), Self::Primitive(Primitive::NSUInteger) => write!(f, "#[repr(usize)] // NSUInteger"), - _ => panic!("invalid closed enum repr"), + Self::Primitive(Primitive::U32) => write!(f, "#[repr(u32)]"), + _ => panic!("invalid closed enum repr: {self:?}"), }) } diff --git a/crates/header-translator/src/stmt.rs b/crates/header-translator/src/stmt.rs index f0aa7b67e..6c6670f64 100644 --- a/crates/header-translator/src/stmt.rs +++ b/crates/header-translator/src/stmt.rs @@ -539,7 +539,12 @@ 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 on fn param"); + match attr { + UnexposedAttr::NoEscape => { + // TODO: Use this if mapping `fn + context ptr` to closure. + } + _ => error!(?attr, "unknown attribute on fn param"), + } } } EntityKind::ObjCClassRef From 1eb7555a5b01e36bb5fef95672d9126543beaf4f Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Mon, 9 Dec 2024 22:58:50 +0100 Subject: [PATCH 7/8] Add CoreFoundation framework Co-authored-by: samuelsleight Co-authored-by: silvanshade --- .github/workflows/ci.yml | 26 +- Cargo.lock | 41 ++ crates/header-translator/src/config.rs | 10 +- crates/header-translator/src/id.rs | 12 +- crates/header-translator/src/main.rs | 5 +- crates/header-translator/system-config.toml | 1 - crates/objc2/Cargo.toml | 4 +- crates/objc2/src/top_level_traits.rs | 2 +- .../src/topics/about_generated/CHANGELOG.md | 3 + .../src/topics/about_generated/list_data.md | 1 + ...foundation_interop.md => crate_interop.md} | 8 +- crates/objc2/src/topics/mod.rs | 4 +- .../objc2-accessibility/Cargo.toml | 15 +- framework-crates/objc2-app-kit/Cargo.toml | 198 +++++++-- .../objc2-authentication-services/Cargo.toml | 12 +- framework-crates/objc2-automator/Cargo.toml | 10 +- framework-crates/objc2-av-kit/Cargo.toml | 14 +- .../objc2-business-chat/Cargo.toml | 8 +- framework-crates/objc2-contacts-ui/Cargo.toml | 8 +- .../objc2-core-foundation/Cargo.toml | 142 +++++++ .../objc2-core-foundation/README.md | 14 + .../objc2-core-foundation/src/generated | 1 + .../objc2-core-foundation/src/geometry.rs | 379 +++++++++++++++++ .../objc2-core-foundation/src/lib.rs | 44 ++ .../translation-config.toml | 49 +++ framework-crates/objc2-core-image/Cargo.toml | 35 +- .../objc2-file-provider/Cargo.toml | 15 +- framework-crates/objc2-foundation/Cargo.toml | 20 +- .../objc2-foundation/src/geometry.rs | 364 +--------------- framework-crates/objc2-foundation/src/lib.rs | 4 +- .../objc2-foundation/src/number.rs | 8 +- .../objc2-foundation/src/tests/auto_traits.rs | 1 - .../objc2-foundation/src/tests/value.rs | 8 +- .../objc2-foundation/src/value.rs | 6 +- .../objc2-game-controller/Cargo.toml | 15 +- framework-crates/objc2-game-kit/Cargo.toml | 10 +- .../objc2-input-method-kit/Cargo.toml | 9 +- .../objc2-link-presentation/Cargo.toml | 10 +- .../Cargo.toml | 10 +- framework-crates/objc2-map-kit/Cargo.toml | 41 +- .../objc2-media-player/Cargo.toml | 13 +- framework-crates/objc2-metal-kit/Cargo.toml | 12 +- .../objc2-metal/Cargo.modified.toml | 1 + framework-crates/objc2-metal/Cargo.toml | 15 +- framework-crates/objc2-metal/src/lib.rs | 4 - framework-crates/objc2-osa-kit/Cargo.toml | 10 +- framework-crates/objc2-photos-ui/Cargo.toml | 14 +- framework-crates/objc2-photos/Cargo.toml | 17 +- framework-crates/objc2-quartz-core/Cargo.toml | 58 ++- framework-crates/objc2-quartz-core/src/lib.rs | 4 - .../objc2-screen-capture-kit/Cargo.toml | 17 +- .../objc2-screen-saver/Cargo.toml | 8 +- framework-crates/objc2-store-kit/Cargo.toml | 13 +- framework-crates/objc2-ui-kit/Cargo.toml | 394 +++++++++--------- framework-crates/objc2-ui-kit/src/geometry.rs | 73 ---- framework-crates/objc2-ui-kit/src/gesture | 0 framework-crates/objc2-ui-kit/src/lib.rs | 7 - .../objc2-virtualization/Cargo.toml | 15 +- framework-crates/objc2-vision/Cargo.toml | 21 +- .../objc2-web-kit/Cargo.modified.toml | 1 + framework-crates/objc2-web-kit/Cargo.toml | 23 +- generated | 2 +- 62 files changed, 1401 insertions(+), 888 deletions(-) rename crates/objc2/src/topics/{core_foundation_interop.md => crate_interop.md} (91%) create mode 100644 framework-crates/objc2-core-foundation/Cargo.toml create mode 100644 framework-crates/objc2-core-foundation/README.md create mode 120000 framework-crates/objc2-core-foundation/src/generated create mode 100644 framework-crates/objc2-core-foundation/src/geometry.rs create mode 100644 framework-crates/objc2-core-foundation/src/lib.rs create mode 100644 framework-crates/objc2-core-foundation/translation-config.toml delete mode 100644 framework-crates/objc2-ui-kit/src/geometry.rs delete mode 100644 framework-crates/objc2-ui-kit/src/gesture diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d1217268..1700a01ed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,19 +45,19 @@ env: --package=objc2-exception-helper # BEGIN AUTOMATICALLY GENERATED - FRAMEWORKS_MACOS_10_12: --package=objc2-accounts --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-screen-saver --package=objc2-service-management --package=objc2-social --package=objc2-store-kit --package=objc2-web-kit - FRAMEWORKS_MACOS_10_13: --package=objc2-accounts --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-screen-saver --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-screen-saver --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-screen-saver --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-screen-saver --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-screen-saver --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_MACOS_15: --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-screen-saver --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_IOS_17: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-av-kit --package=objc2-background-assets --package=objc2-background-tasks --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-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-sensitive-content-analysis --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-symbols --package=objc2-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-vision --package=objc2-web-kit - FRAMEWORKS_TVOS_17: --package=objc2-accessibility --package=objc2-ad-support --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-av-kit --package=objc2-background-tasks --package=objc2-cloud-kit --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-data-detection --package=objc2-device-check --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-link-presentation --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-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-sound-analysis --package=objc2-store-kit --package=objc2-symbols --package=objc2-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-vision - FRAMEWORKS_MAC_CATALYST_17: --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-background-tasks --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-ui --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --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-photos --package=objc2-photos-ui --package=objc2-quartz-core --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-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-vision --package=objc2-web-kit - FRAMEWORKS_VISIONOS_1: --package=objc2-accessibility --package=objc2-ad-services --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-av-kit --package=objc2-background-assets --package=objc2-background-tasks --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-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --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-multipeer-connectivity --package=objc2-natural-language --package=objc2-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-symbols --package=objc2-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-vision --package=objc2-web-kit - FRAMEWORKS_WATCHOS_10: --package=objc2-accessibility --package=objc2-authentication-services --package=objc2-av-kit --package=objc2-call-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-extension-kit --package=objc2-foundation --package=objc2-game-kit --package=objc2-health-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-photos-ui --package=objc2-sound-analysis --package=objc2-store-kit --package=objc2-symbols --package=objc2-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications + FRAMEWORKS_MACOS_10_12: --package=objc2-accounts --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-foundation --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-screen-saver --package=objc2-service-management --package=objc2-social --package=objc2-store-kit --package=objc2-web-kit + FRAMEWORKS_MACOS_10_13: --package=objc2-accounts --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-foundation --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-screen-saver --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-foundation --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-screen-saver --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-foundation --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-screen-saver --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-foundation --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-screen-saver --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-foundation --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-screen-saver --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_MACOS_15: --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-foundation --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-screen-saver --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-foundation --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_IOS_17: --package=objc2-accessibility --package=objc2-accounts --package=objc2-ad-services --package=objc2-ad-support --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-av-kit --package=objc2-background-assets --package=objc2-background-tasks --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-foundation --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --package=objc2-map-kit --package=objc2-media-player --package=objc2-metal --package=objc2-metal-kit --package=objc2-metric-kit --package=objc2-multipeer-connectivity --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-sensitive-content-analysis --package=objc2-social --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-symbols --package=objc2-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-vision --package=objc2-web-kit + FRAMEWORKS_TVOS_17: --package=objc2-accessibility --package=objc2-ad-support --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-av-kit --package=objc2-background-tasks --package=objc2-cloud-kit --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-foundation --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-data-detection --package=objc2-device-check --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-link-presentation --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-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-sound-analysis --package=objc2-store-kit --package=objc2-symbols --package=objc2-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-vision + FRAMEWORKS_MAC_CATALYST_17: --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-background-tasks --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-foundation --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-ui --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --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-photos --package=objc2-photos-ui --package=objc2-quartz-core --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-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-vision --package=objc2-web-kit + FRAMEWORKS_VISIONOS_1: --package=objc2-accessibility --package=objc2-ad-services --package=objc2-app-tracking-transparency --package=objc2-authentication-services --package=objc2-automatic-assessment-configuration --package=objc2-av-kit --package=objc2-background-assets --package=objc2-background-tasks --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-foundation --package=objc2-core-image --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-extension-kit --package=objc2-external-accessory --package=objc2-file-provider --package=objc2-file-provider-ui --package=objc2-foundation --package=objc2-game-controller --package=objc2-game-kit --package=objc2-health-kit --package=objc2-identity-lookup --package=objc2-link-presentation --package=objc2-local-authentication --package=objc2-local-authentication-embedded-ui --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-multipeer-connectivity --package=objc2-natural-language --package=objc2-network-extension --package=objc2-photos --package=objc2-photos-ui --package=objc2-quartz-core --package=objc2-sound-analysis --package=objc2-speech --package=objc2-store-kit --package=objc2-symbols --package=objc2-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications --package=objc2-vision --package=objc2-web-kit + FRAMEWORKS_WATCHOS_10: --package=objc2-accessibility --package=objc2-authentication-services --package=objc2-av-kit --package=objc2-call-kit --package=objc2-cloud-kit --package=objc2-contacts --package=objc2-core-bluetooth --package=objc2-core-data --package=objc2-core-foundation --package=objc2-core-location --package=objc2-core-ml --package=objc2-core-motion --package=objc2-data-detection --package=objc2-device-check --package=objc2-event-kit --package=objc2-extension-kit --package=objc2-foundation --package=objc2-game-kit --package=objc2-health-kit --package=objc2-local-authentication --package=objc2-map-kit --package=objc2-media-player --package=objc2-natural-language --package=objc2-nearby-interaction --package=objc2-network-extension --package=objc2-photos-ui --package=objc2-sound-analysis --package=objc2-store-kit --package=objc2-symbols --package=objc2-ui-kit --package=objc2-uniform-type-identifiers --package=objc2-user-notifications FRAMEWORKS_GNUSTEP: --package=objc2-app-kit --package=objc2-foundation # END AUTOMATICALLY GENERATED diff --git a/Cargo.lock b/Cargo.lock index e751753f6..84ba7cf6c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -367,6 +367,7 @@ dependencies = [ "libc", "memoffset", "objc2-app-kit", + "objc2-core-foundation", "objc2-encode", "objc2-exception-helper", "objc2-foundation", @@ -382,6 +383,7 @@ dependencies = [ "bitflags", "block2", "objc2", + "objc2-core-foundation", "objc2-foundation", ] @@ -420,6 +422,7 @@ dependencies = [ "objc2", "objc2-cloud-kit", "objc2-core-data", + "objc2-core-foundation", "objc2-core-image", "objc2-foundation", "objc2-quartz-core", @@ -442,6 +445,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -460,6 +464,7 @@ version = "0.2.2" dependencies = [ "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", "objc2-osa-kit", ] @@ -472,6 +477,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -499,6 +505,7 @@ version = "0.2.2" dependencies = [ "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -547,6 +554,7 @@ dependencies = [ "objc2", "objc2-app-kit", "objc2-contacts", + "objc2-core-foundation", "objc2-foundation", ] @@ -569,12 +577,23 @@ dependencies = [ "objc2-foundation", ] +[[package]] +name = "objc2-core-foundation" +version = "0.2.2" +dependencies = [ + "bitflags", + "block2", + "libc", + "objc2", +] + [[package]] name = "objc2-core-image" version = "0.2.2" dependencies = [ "block2", "objc2", + "objc2-core-foundation", "objc2-foundation", "objc2-metal", ] @@ -695,6 +714,7 @@ dependencies = [ "bitflags", "block2", "objc2", + "objc2-core-foundation", "objc2-foundation", "objc2-uniform-type-identifiers", ] @@ -729,6 +749,7 @@ dependencies = [ "dispatch", "libc", "objc2", + "objc2-core-foundation", "static_assertions", ] @@ -740,6 +761,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -750,6 +772,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -780,6 +803,7 @@ version = "0.2.2" dependencies = [ "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -790,6 +814,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -809,6 +834,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", "objc2-local-authentication", ] @@ -832,6 +858,7 @@ dependencies = [ "objc2", "objc2-app-kit", "objc2-contacts", + "objc2-core-foundation", "objc2-core-location", "objc2-foundation", ] @@ -844,6 +871,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -855,6 +883,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", "objc2-metal-kit", "objc2-quartz-core", @@ -876,6 +905,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", "objc2-metal", "objc2-quartz-core", @@ -947,6 +977,7 @@ dependencies = [ "bitflags", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -958,6 +989,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-core-image", "objc2-core-location", "objc2-foundation", @@ -972,6 +1004,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-core-location", "objc2-foundation", "objc2-map-kit", @@ -989,6 +1022,7 @@ dependencies = [ "bitflags", "block2", "objc2", + "objc2-core-foundation", "objc2-foundation", "objc2-metal", ] @@ -1001,6 +1035,7 @@ dependencies = [ "block2", "libc", "objc2", + "objc2-core-foundation", "objc2-foundation", ] @@ -1010,6 +1045,7 @@ version = "0.2.2" dependencies = [ "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -1069,6 +1105,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -1097,6 +1134,7 @@ dependencies = [ "objc2", "objc2-cloud-kit", "objc2-core-data", + "objc2-core-foundation", "objc2-core-image", "objc2-core-location", "objc2-foundation", @@ -1134,6 +1172,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] @@ -1143,6 +1182,7 @@ version = "0.2.2" dependencies = [ "block2", "objc2", + "objc2-core-foundation", "objc2-core-image", "objc2-core-ml", "objc2-foundation", @@ -1156,6 +1196,7 @@ dependencies = [ "block2", "objc2", "objc2-app-kit", + "objc2-core-foundation", "objc2-foundation", ] diff --git a/crates/header-translator/src/config.rs b/crates/header-translator/src/config.rs index 2e1d5053b..2f4def198 100644 --- a/crates/header-translator/src/config.rs +++ b/crates/header-translator/src/config.rs @@ -18,12 +18,10 @@ pub struct Config { } fn uses_system_config(library_name: &str) -> bool { - match library_name { - "System" | "bitflags" | "block2" | "libc" | "objc2" => true, - // Temporary - "CoreFoundation" => true, - _ => false, - } + matches!( + library_name, + "System" | "bitflags" | "block2" | "libc" | "objc2" + ) } impl Config { diff --git a/crates/header-translator/src/id.rs b/crates/header-translator/src/id.rs index cec7ef7e3..e4a7002d4 100644 --- a/crates/header-translator/src/id.rs +++ b/crates/header-translator/src/id.rs @@ -155,8 +155,6 @@ impl Location { "block2" => LocationLibrary::Block2, "libc" => LocationLibrary::Libc, "objc2" => LocationLibrary::Objc2, - // Temporary - "CoreFoundation" => LocationLibrary::System, library => { if let Some(krate) = config.libraries.get(library).map(|lib| &*lib.krate) { if library == emission_library { @@ -242,19 +240,11 @@ impl ItemIdentifier { } pub fn with_name(name: N, entity: &Entity<'_>, context: &Context<'_>) -> Self { - let mut location = context.get_location(entity).unwrap_or_else(|| { + let location = context.get_location(entity).unwrap_or_else(|| { warn!(?entity, "ItemIdentifier from unknown header"); Location::from_components(vec!["__Unknown__".into()]) }); - // TODO: Get rid of these hacks - if let Some("CGFloat" | "CGPoint" | "CGRect" | "CGSize") = name.to_option() { - location = Location::from_components(vec!["Foundation".into(), "NSGeometry".into()]); - } - if let Some("CFTimeInterval") = name.to_option() { - location = Location::from_components(vec!["System".into()]); - } - Self { name, location } } diff --git a/crates/header-translator/src/main.rs b/crates/header-translator/src/main.rs index 3bfe88033..9e30875f2 100644 --- a/crates/header-translator/src/main.rs +++ b/crates/header-translator/src/main.rs @@ -557,7 +557,10 @@ fn update_ci(workspace_dir: &Path, config: &Config) -> io::Result<()> { .as_ref() .is_some_and(|v| VersionReq::parse("<=10.0").unwrap().matches(v)) })?; - writer(&mut ci, config, "FRAMEWORKS_GNUSTEP", |lib| lib.gnustep)?; + writer(&mut ci, config, "FRAMEWORKS_GNUSTEP", |lib| { + // HACK: CoreFoundation uses mach types that GNUStep doesn't support + lib.gnustep && lib.krate != "objc2-core-foundation" + })?; write!(&mut ci, " # END AUTOMATICALLY GENERATED{after}")?; diff --git a/crates/header-translator/system-config.toml b/crates/header-translator/system-config.toml index f3612e183..b38967e11 100644 --- a/crates/header-translator/system-config.toml +++ b/crates/header-translator/system-config.toml @@ -18,7 +18,6 @@ class.NSObject.methods.release.skipped = true # TODO: Move these # `ns_consumed`, `cf_consumed` and `os_consumed` -fn.CFAutorelease.skipped = true fn.IOServiceGetMatchingService.skipped = true fn.IOServiceGetMatchingServices.skipped = true fn.IOServiceAddMatchingNotification.skipped = true diff --git a/crates/objc2/Cargo.toml b/crates/objc2/Cargo.toml index b6b4d2017..fbff87ff9 100644 --- a/crates/objc2/Cargo.toml +++ b/crates/objc2/Cargo.toml @@ -126,12 +126,14 @@ iai = { version = "0.1", git = "https://github.com/madsmtm/iai", branch = "callg static_assertions = "1.1.0" memoffset = "0.9.0" block2 = { path = "../block2", default-features = false } +objc2-core-foundation = { path = "../../framework-crates/objc2-core-foundation", default-features = false, features = [ + "CFCGTypes", +] } objc2-foundation = { path = "../../framework-crates/objc2-foundation", default-features = false, features = [ "NSArray", "NSDate", "NSDictionary", "NSEnumerator", - "NSGeometry", "NSKeyValueObserving", "NSNotification", "NSObject", diff --git a/crates/objc2/src/top_level_traits.rs b/crates/objc2/src/top_level_traits.rs index f5dde1850..253c2bd79 100644 --- a/crates/objc2/src/top_level_traits.rs +++ b/crates/objc2/src/top_level_traits.rs @@ -522,7 +522,7 @@ pub unsafe trait MainThreadOnly: private::SealedMainThreadOnly { /// use objc2::{MainThreadOnly, MainThreadMarker}; /// # #[cfg(available_in_app_kit)] /// use objc2_app_kit::NSView; - /// use objc2_foundation::CGRect; + /// use objc2_core_foundation::CGRect; /// # /// # use objc2::rc::{Allocated, Retained}; /// # diff --git a/crates/objc2/src/topics/about_generated/CHANGELOG.md b/crates/objc2/src/topics/about_generated/CHANGELOG.md index 87aea5efd..cbb95eb7c 100644 --- a/crates/objc2/src/topics/about_generated/CHANGELOG.md +++ b/crates/objc2/src/topics/about_generated/CHANGELOG.md @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). querying the underlying data. * Added new framework crates: - `ScreenSaver` / `objc2-screen-saver`. + - `CoreFoundation` / `objc2-core-foundation`. ### Changed * Allow using `MainThreadBound` without the `NSThread` feature flag. @@ -80,6 +81,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). * **BREAKING**: No longer special-case `NSObjectProtocol` objects. Certain methods that previously used `&NSObject` for convenience now use the more correct `&ProtocolObject`. +* **BREAKING**: Moved `CGFloat`, `CGPoint`, `CGSize` and `CGRect` from + `objc2-foundation` to `objc2-core-foundation`. ### Deprecated * Moved `MainThreadMarker` from `objc2-foundation` to `objc2`. diff --git a/crates/objc2/src/topics/about_generated/list_data.md b/crates/objc2/src/topics/about_generated/list_data.md index daa9c8475..7bcbcb189 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/) | +| `CoreFoundation` | [![`objc2-core-foundation`](https://badgen.net/crates/v/objc2-core-foundation)](https://crates.io/crates/objc2-core-foundation) | [![docs.rs](https://docs.rs/objc2-core-foundation/badge.svg)](https://docs.rs/objc2-core-foundation/) | | `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/) | diff --git a/crates/objc2/src/topics/core_foundation_interop.md b/crates/objc2/src/topics/crate_interop.md similarity index 91% rename from crates/objc2/src/topics/core_foundation_interop.md rename to crates/objc2/src/topics/crate_interop.md index e643b1126..0bdff8f88 100644 --- a/crates/objc2/src/topics/core_foundation_interop.md +++ b/crates/objc2/src/topics/crate_interop.md @@ -1,10 +1,8 @@ -# Interop with `core-foundation`-like crates +# Interop with other crates -The `objc2` project does not [yet](https://github.com/madsmtm/objc2/issues/556) provide bindings to CoreFoundation and similar frameworks. +The `objc2` project may not provide bindings for all frameworks, so in certain cases you may need to use existing crates like [`core-foundation`], [`core-graphics`], [`security-framework`], [`system-configuration`] and so on to interact with a given framework. -To interact with these, you will have to use existing crates like [`core-foundation`], [`core-graphics`], [`security-framework`], [`system-configuration`] and so on. - -This can, however, pose a bit of an issue, since `objc2` and [`block2`] impose certain requirements on the types involved. +This can pose a bit of an issue, since `objc2` and [`block2`] impose certain requirements on the types involved. [`core-foundation`]: https://crates.io/crates/core-foundation [`core-graphics`]: https://crates.io/crates/core-graphics diff --git a/crates/objc2/src/topics/mod.rs b/crates/objc2/src/topics/mod.rs index d7cb5db25..18e54e6b0 100644 --- a/crates/objc2/src/topics/mod.rs +++ b/crates/objc2/src/topics/mod.rs @@ -6,8 +6,8 @@ pub mod about_generated; #[doc = include_str!("alternatives.md")] pub mod alternatives {} #[cfg(not(feature = "gnustep-1-7"))] -#[doc = include_str!("core_foundation_interop.md")] -pub mod core_foundation_interop {} +#[doc = include_str!("crate_interop.md")] +pub mod crate_interop {} #[doc = include_str!("kvo.md")] pub mod kvo {} #[doc = include_str!("layered_safety.md")] diff --git a/framework-crates/objc2-accessibility/Cargo.toml b/framework-crates/objc2-accessibility/Cargo.toml index 18f567295..c4d3c980f 100644 --- a/framework-crates/objc2-accessibility/Cargo.toml +++ b/framework-crates/objc2-accessibility/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -37,21 +38,22 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] AXAudiograph = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSValue", ] AXBrailleMap = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] AXColorUtilities = [] @@ -91,4 +93,5 @@ all = [ "AXTechnology", "bitflags", "block2", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-app-kit/Cargo.toml b/framework-crates/objc2-app-kit/Cargo.toml index 3d3202d83..6c59e0bb3 100644 --- a/framework-crates/objc2-app-kit/Cargo.toml +++ b/framework-crates/objc2-app-kit/Cargo.toml @@ -20,6 +20,7 @@ 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-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_vendor = "apple")'.dependencies] @@ -44,19 +45,20 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "libc?/std", "objc2/std", "objc2-cloud-kit?/std", "objc2-core-data?/std", "objc2-core-image?/std", "objc2-foundation/std", "objc2-quartz-core?/std", "objc2-uniform-type-identifiers?/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-cloud-kit?/alloc", "objc2-core-data?/alloc", "objc2-core-image?/alloc", "objc2-foundation/alloc", "objc2-quartz-core?/alloc", "objc2-uniform-type-identifiers?/alloc"] +std = ["alloc", "bitflags?/std", "block2?/std", "libc?/std", "objc2/std", "objc2-cloud-kit?/std", "objc2-core-data?/std", "objc2-core-foundation?/std", "objc2-core-image?/std", "objc2-foundation/std", "objc2-quartz-core?/std", "objc2-uniform-type-identifiers?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-cloud-kit?/alloc", "objc2-core-data?/alloc", "objc2-core-foundation?/alloc", "objc2-core-image?/alloc", "objc2-foundation/alloc", "objc2-quartz-core?/alloc", "objc2-uniform-type-identifiers?/alloc"] apple = [] gnustep-1-7 = ["objc2/gnustep-1-7", "block2?/gnustep-1-7", "objc2-foundation/gnustep-1-7", "objc2-core-data?/gnustep-1-7", "objc2-quartz-core?/gnustep-1-7"] gnustep-1-8 = ["gnustep-1-7", "objc2/gnustep-1-8", "block2?/gnustep-1-8", "objc2-foundation/gnustep-1-8", "objc2-core-data?/gnustep-1-8", "objc2-quartz-core?/gnustep-1-8"] gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9", "block2?/gnustep-1-9", "objc2-foundation/gnustep-1-9", "objc2-core-data?/gnustep-1-9", "objc2-quartz-core?/gnustep-1-9"] gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0", "block2?/gnustep-2-0", "objc2-foundation/gnustep-2-0", "objc2-core-data?/gnustep-2-0", "objc2-quartz-core?/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1", "block2?/gnustep-2-1", "objc2-foundation/gnustep-2-1", "objc2-core-data?/gnustep-2-1", "objc2-quartz-core?/gnustep-2-1"] -bitflags = ["dep:bitflags", "objc2-cloud-kit?/bitflags", "objc2-core-data?/bitflags", "objc2-foundation/bitflags", "objc2-quartz-core?/bitflags"] -block2 = ["dep:block2", "objc2-cloud-kit?/block2", "objc2-core-data?/block2", "objc2-core-image?/block2", "objc2-foundation/block2", "objc2-quartz-core?/block2", "objc2-uniform-type-identifiers?/block2"] -libc = ["dep:libc", "objc2-foundation/libc"] +bitflags = ["dep:bitflags", "objc2-cloud-kit?/bitflags", "objc2-core-data?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags", "objc2-quartz-core?/bitflags"] +block2 = ["dep:block2", "objc2-cloud-kit?/block2", "objc2-core-data?/block2", "objc2-core-foundation?/block2", "objc2-core-image?/block2", "objc2-foundation/block2", "objc2-quartz-core?/block2", "objc2-uniform-type-identifiers?/block2"] +libc = ["dep:libc", "objc2-core-foundation?/libc", "objc2-foundation/libc"] objc2-cloud-kit = ["dep:objc2-cloud-kit"] objc2-core-data = ["dep:objc2-core-data"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-core-image?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation", "objc2-quartz-core?/objc2-core-foundation"] objc2-core-image = ["dep:objc2-core-image"] objc2-quartz-core = ["dep:objc2-quartz-core"] objc2-uniform-type-identifiers = ["dep:objc2-uniform-type-identifiers"] @@ -64,11 +66,13 @@ objc2-uniform-type-identifiers = ["dep:objc2-uniform-type-identifiers"] AppKitDefines = [] AppKitErrors = [] NSATSTypesetter = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSGeometry", "objc2-foundation/NSRange", ] NSAccessibility = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", @@ -88,10 +92,12 @@ NSAccessibilityCustomRotor = [ "objc2-foundation/NSString", ] NSAccessibilityElement = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSAccessibilityProtocols = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSData", @@ -123,6 +129,7 @@ NSAlert = [ "objc2-foundation/NSString", ] NSAlignmentFeedbackFilter = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSGeometry", ] @@ -192,12 +199,14 @@ NSAttributedString = [ "objc2-foundation/NSURL", ] NSBezierPath = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAffineTransform", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSBitmapImageRep = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIImage", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", @@ -208,12 +217,14 @@ NSBitmapImageRep = [ "objc2-foundation/NSString", ] NSBox = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSBrowser = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -230,6 +241,7 @@ NSBrowserCell = [ "objc2-foundation/NSString", ] NSButton = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -238,6 +250,7 @@ NSButton = [ "objc2-foundation/NSString", ] NSButtonCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -250,12 +263,14 @@ NSButtonTouchBarItem = [ "objc2-foundation/NSString", ] NSCIImageRep = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIImage", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSCachedImageRep = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -270,6 +285,7 @@ NSCandidateListTouchBarItem = [ ] NSCell = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -285,6 +301,7 @@ NSClickGestureRecognizer = [ "objc2-foundation/NSObject", ] NSClipView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", @@ -292,6 +309,7 @@ NSClipView = [ ] NSCollectionView = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", @@ -306,6 +324,7 @@ NSCollectionView = [ ] NSCollectionViewCompositionalLayout = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", @@ -313,17 +332,20 @@ NSCollectionViewCompositionalLayout = [ "objc2-foundation/NSString", ] NSCollectionViewFlowLayout = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSCollectionViewGridLayout = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSCollectionViewLayout = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", @@ -333,11 +355,12 @@ NSCollectionViewLayout = [ "objc2-foundation/NSString", ] NSCollectionViewTransitionLayout = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSColor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIColor", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", @@ -358,6 +381,7 @@ NSColorList = [ ] NSColorPanel = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", @@ -365,6 +389,7 @@ NSColorPanel = [ "objc2-foundation/NSString", ] NSColorPicker = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] @@ -375,6 +400,7 @@ NSColorPickerTouchBarItem = [ "objc2-foundation/NSString", ] NSColorPicking = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] @@ -386,11 +412,13 @@ NSColorSpace = [ "objc2-foundation/NSString", ] NSColorWell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSComboBox = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -399,6 +427,7 @@ NSComboBox = [ "objc2-foundation/NSString", ] NSComboBoxCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -406,12 +435,14 @@ NSComboBoxCell = [ "objc2-foundation/NSString", ] NSComboButton = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSControl = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -428,11 +459,13 @@ NSController = [ ] NSCursor = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSCustomImageRep = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -449,6 +482,7 @@ NSDataAsset = [ "objc2-foundation/NSString", ] NSDatePicker = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCalendar", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", @@ -482,6 +516,7 @@ NSDiffableDataSource = [ ] NSDirection = ["bitflags"] NSDockTile = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] @@ -516,6 +551,7 @@ NSDocumentScripting = [ ] NSDragging = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", @@ -524,17 +560,20 @@ NSDragging = [ "objc2-foundation/NSURL", ] NSDraggingItem = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSDraggingSession = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSDrawer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -543,6 +582,7 @@ NSDrawer = [ "objc2-foundation/NSString", ] NSEPSImageRep = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSData", "objc2-foundation/NSGeometry", @@ -554,6 +594,7 @@ NSErrors = [ ] NSEvent = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDate", "objc2-foundation/NSGeometry", @@ -577,6 +618,7 @@ NSFilePromiseReceiver = [ ] NSFileWrapperExtensions = ["objc2-foundation/NSFileWrapper"] NSFont = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAffineTransform", "objc2-foundation/NSCharacterSet", "objc2-foundation/NSDictionary", @@ -604,34 +646,37 @@ NSFontCollection = [ ] NSFontDescriptor = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAffineTransform", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSSet", "objc2-foundation/NSString", ] NSFontManager = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSFontPanel = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSForm = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSFormCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -639,6 +684,7 @@ NSFormCell = [ "objc2-foundation/NSString", ] NSGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -650,22 +696,26 @@ NSGlyphInfo = [ ] NSGradient = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSGraphics = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSGraphicsContext = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIContext", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSGridView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -673,14 +723,15 @@ NSGridView = [ "objc2-foundation/NSRange", ] NSGroupTouchBarItem = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSHapticFeedback = [] NSHelpManager = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSBundle", "objc2-foundation/NSGeometry", @@ -688,6 +739,7 @@ NSHelpManager = [ "objc2-foundation/NSString", ] NSImage = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", @@ -706,6 +758,7 @@ NSImageCell = [ "objc2-foundation/NSString", ] NSImageRep = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSData", @@ -717,11 +770,13 @@ NSImageRep = [ "objc2-foundation/NSURL", ] NSImageView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSInputManager = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSGeometry", @@ -729,12 +784,14 @@ NSInputManager = [ "objc2-foundation/NSString", ] NSInputServer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSRange", "objc2-foundation/NSString", ] NSInterfaceStyle = ["objc2-foundation/NSString"] NSItemProvider = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSString", @@ -749,19 +806,21 @@ NSKeyValueBinding = [ "objc2-foundation/NSString", ] NSLayoutAnchor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSLayoutConstraint = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSLayoutGuide = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -769,6 +828,7 @@ NSLayoutGuide = [ ] NSLayoutManager = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -779,22 +839,25 @@ NSLayoutManager = [ "objc2-foundation/NSString", ] NSLevelIndicator = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSLevelIndicatorCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSMagnificationGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSMatrix = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -804,10 +867,12 @@ NSMatrix = [ ] NSMediaLibraryBrowserController = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", ] NSMenu = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -827,6 +892,7 @@ NSMenuItemBadge = [ "objc2-foundation/NSString", ] NSMenuItemCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -866,6 +932,7 @@ NSOpenGL = [] NSOpenGLLayer = [] NSOpenGLView = [] NSOpenPanel = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -874,6 +941,7 @@ NSOpenPanel = [ "objc2-foundation/NSURL", ] NSOutlineView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -885,12 +953,14 @@ NSOutlineView = [ "objc2-foundation/NSURL", ] NSPDFImageRep = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSData", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSPDFInfo = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", @@ -903,12 +973,14 @@ NSPDFPanel = [ "objc2-foundation/NSString", ] NSPICTImageRep = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSData", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSPageController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", @@ -918,21 +990,23 @@ NSPageController = [ ] NSPageLayout = ["objc2-foundation/NSArray"] NSPanGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSPanel = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSParagraphStyle = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCharacterSet", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSLocale", "objc2-foundation/NSObject", "objc2-foundation/NSString", @@ -952,6 +1026,7 @@ NSPasteboardItem = [ "objc2-foundation/NSString", ] NSPathCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -967,6 +1042,7 @@ NSPathComponentCell = [ "objc2-foundation/NSURL", ] NSPathControl = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -996,6 +1072,7 @@ NSPickerTouchBarItem = [ "objc2-foundation/NSString", ] NSPopUpButton = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1004,6 +1081,7 @@ NSPopUpButton = [ "objc2-foundation/NSString", ] NSPopUpButtonCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1012,6 +1090,7 @@ NSPopUpButtonCell = [ "objc2-foundation/NSString", ] NSPopover = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", @@ -1024,6 +1103,7 @@ NSPopoverTouchBarItem = [ "objc2-foundation/NSString", ] NSPredicateEditor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1041,9 +1121,9 @@ NSPredicateEditorRowTemplate = [ "objc2-foundation/NSValue", ] NSPressGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSPressureConfiguration = [] @@ -1052,6 +1132,7 @@ NSPreviewRepresentingActivityItem = [ "objc2-foundation/NSString", ] NSPrintInfo = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", @@ -1059,6 +1140,7 @@ NSPrintInfo = [ "objc2-foundation/NSString", ] NSPrintOperation = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSData", "objc2-foundation/NSGeometry", "objc2-foundation/NSObjCRuntime", @@ -1073,6 +1155,7 @@ NSPrintPanel = [ "objc2-foundation/NSString", ] NSPrinter = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", @@ -1080,6 +1163,7 @@ NSPrinter = [ "objc2-foundation/NSString", ] NSProgressIndicator = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", "objc2-foundation/NSGeometry", @@ -1095,11 +1179,12 @@ NSResponder = [ "objc2-foundation/NSUndoManager", ] NSRotationGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSRuleEditor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", @@ -1111,11 +1196,13 @@ NSRuleEditor = [ "objc2-foundation/NSString", ] NSRulerMarker = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSRulerView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1131,6 +1218,7 @@ NSRunningApplication = [ "objc2-foundation/NSURL", ] NSSavePanel = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSError", @@ -1141,6 +1229,7 @@ NSSavePanel = [ "objc2-uniform-type-identifiers?/UTType", ] NSScreen = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDate", "objc2-foundation/NSDictionary", @@ -1150,6 +1239,7 @@ NSScreen = [ "objc2-quartz-core?/CADisplayLink", ] NSScrollView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", @@ -1157,6 +1247,7 @@ NSScrollView = [ "objc2-foundation/NSString", ] NSScroller = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", @@ -1164,6 +1255,7 @@ NSScroller = [ "objc2-foundation/NSString", ] NSScrubber = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexSet", @@ -1172,12 +1264,14 @@ NSScrubber = [ "objc2-foundation/NSString", ] NSScrubberItemView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSScrubberLayout = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexSet", @@ -1185,6 +1279,7 @@ NSScrubberLayout = [ "objc2-foundation/NSSet", ] NSSearchField = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1192,6 +1287,7 @@ NSSearchField = [ "objc2-foundation/NSString", ] NSSearchFieldCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1199,23 +1295,26 @@ NSSearchFieldCell = [ "objc2-foundation/NSString", ] NSSearchToolbarItem = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSSecureTextField = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSSegmentedCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSSegmentedControl = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1223,6 +1322,7 @@ NSSegmentedControl = [ "objc2-foundation/NSString", ] NSShadow = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] @@ -1236,6 +1336,7 @@ NSSharingService = [ "objc2-cloud-kit?/CKContainer", "objc2-cloud-kit?/CKRecord", "objc2-cloud-kit?/CKShare", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSError", "objc2-foundation/NSGeometry", @@ -1255,6 +1356,7 @@ NSSharingServicePickerTouchBarItem = [ "objc2-foundation/NSString", ] NSSlider = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -1262,14 +1364,15 @@ NSSlider = [ ] NSSliderAccessory = ["objc2-foundation/NSObject"] NSSliderCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSSliderTouchBarItem = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -1295,6 +1398,7 @@ NSSpeechSynthesizer = [ "objc2-foundation/NSURL", ] NSSpellChecker = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", @@ -1306,6 +1410,7 @@ NSSpellChecker = [ ] NSSpellProtocol = [] NSSplitView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1314,6 +1419,7 @@ NSSplitView = [ "objc2-foundation/NSString", ] NSSplitViewController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", @@ -1322,17 +1428,19 @@ NSSplitViewController = [ "objc2-foundation/NSString", ] NSSplitViewItem = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] NSStackView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] -NSStatusBar = ["objc2-foundation/NSGeometry"] +NSStatusBar = ["objc2-core-foundation?/CFCGTypes"] NSStatusBarButton = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -1340,11 +1448,13 @@ NSStatusBarButton = [ ] NSStatusItem = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSStepper = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -1355,6 +1465,7 @@ NSStepperCell = [ "objc2-foundation/NSString", ] NSStepperTouchBarItem = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSFormatter", "objc2-foundation/NSGeometry", @@ -1369,17 +1480,20 @@ NSStoryboard = [ NSStoryboardSegue = ["objc2-foundation/NSString"] NSStringDrawing = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSSwitch = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSTabView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1393,11 +1507,13 @@ NSTabViewController = [ "objc2-foundation/NSString", ] NSTabViewItem = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSTableCellView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1405,30 +1521,34 @@ NSTableCellView = [ ] NSTableColumn = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSSortDescriptor", "objc2-foundation/NSString", ] NSTableHeaderCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSTableHeaderView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSTableRowView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSTableView = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", @@ -1448,6 +1568,7 @@ NSTableViewRowAction = [ "objc2-foundation/NSString", ] NSText = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSData", "objc2-foundation/NSGeometry", @@ -1463,15 +1584,16 @@ NSTextAlternatives = [ "objc2-foundation/NSString", ] NSTextAttachment = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", "objc2-foundation/NSFileWrapper", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSTextAttachmentCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -1479,6 +1601,7 @@ NSTextAttachmentCell = [ ] NSTextCheckingClient = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", @@ -1494,6 +1617,7 @@ NSTextCheckingController = [ "objc2-foundation/NSTextCheckingResult", ] NSTextContainer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1516,6 +1640,7 @@ NSTextElement = [ "objc2-foundation/NSAttributedString", ] NSTextField = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -1534,6 +1659,7 @@ NSTextFieldCell = [ "objc2-foundation/NSString", ] NSTextFinder = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1543,6 +1669,7 @@ NSTextFinder = [ "objc2-foundation/NSValue", ] NSTextInputClient = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSGeometry", @@ -1556,34 +1683,35 @@ NSTextInputContext = [ ] NSTextInsertionIndicator = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSTextLayoutFragment = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSOperation", ] NSTextLayoutManager = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSOperation", "objc2-foundation/NSString", ] NSTextLineFragment = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSRange", "objc2-foundation/NSString", @@ -1602,18 +1730,18 @@ NSTextListElement = [ ] NSTextRange = ["objc2-foundation/NSObjCRuntime"] NSTextSelection = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSTextSelectionNavigation = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSTextStorage = [ @@ -1630,11 +1758,13 @@ NSTextStorageScripting = [ "objc2-foundation/NSAttributedString", ] NSTextTable = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSRange", ] NSTextView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -1650,16 +1780,17 @@ NSTextView = [ "objc2-foundation/NSUndoManager", "objc2-foundation/NSValue", ] -NSTextViewportLayoutController = ["objc2-foundation/NSGeometry"] +NSTextViewportLayoutController = ["objc2-core-foundation?/CFCGTypes"] NSTintConfiguration = ["objc2-foundation/NSObject"] NSTitlebarAccessoryViewController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSTokenField = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCharacterSet", "objc2-foundation/NSCoder", @@ -1677,9 +1808,9 @@ NSTokenFieldCell = [ "objc2-foundation/NSString", ] NSToolbar = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSSet", "objc2-foundation/NSString", @@ -1687,6 +1818,7 @@ NSToolbar = [ NSToolbarItem = [ "objc2-cloud-kit?/CKRecord", "objc2-cloud-kit?/CKShare", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSSet", @@ -1699,6 +1831,7 @@ NSToolbarItemGroup = [ ] NSTouch = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] @@ -1716,6 +1849,7 @@ NSTouchBarItem = [ ] NSTrackingArea = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -1739,6 +1873,7 @@ NSTreeNode = [ ] NSTypesetter = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDictionary", @@ -1758,6 +1893,7 @@ NSUserDefaultsController = [ "objc2-foundation/NSUserDefaults", ] NSUserInterfaceCompression = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", @@ -1775,6 +1911,7 @@ NSUserInterfaceLayout = [] NSUserInterfaceValidation = [] NSView = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIFilter", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", @@ -1792,6 +1929,7 @@ NSView = [ ] NSViewController = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", @@ -1802,12 +1940,14 @@ NSViewController = [ "objc2-foundation/NSString", ] NSVisualEffectView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSWindow = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSData", @@ -1852,6 +1992,7 @@ NSWindowTabGroup = [ ] NSWorkspace = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAppleEventDescriptor", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", @@ -2152,6 +2293,7 @@ all = [ "libc", "objc2-cloud-kit", "objc2-core-data", + "objc2-core-foundation", "objc2-core-image", "objc2-quartz-core", "objc2-uniform-type-identifiers", diff --git a/framework-crates/objc2-authentication-services/Cargo.toml b/framework-crates/objc2-authentication-services/Cargo.toml index 0096c08d8..579c5c5ba 100644 --- a/framework-crates/objc2-authentication-services/Cargo.toml +++ b/framework-crates/objc2-authentication-services/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -40,10 +41,11 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit/block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] ASAccountAuthenticationModificationController = [ "objc2-app-kit/NSResponder", @@ -93,6 +95,7 @@ ASAuthorizationAppleIDButton = [ "objc2-app-kit/NSResponder", "objc2-app-kit/NSUserInterfaceItemIdentification", "objc2-app-kit/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -508,4 +511,5 @@ all = [ "ASWebAuthenticationSessionWebBrowserSessionManager", "bitflags", "block2", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-automator/Cargo.toml b/framework-crates/objc2-automator/Cargo.toml index be3158009..2f3ef14ca 100644 --- a/framework-crates/objc2-automator/Cargo.toml +++ b/framework-crates/objc2-automator/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } objc2-app-kit = { path = "../objc2-app-kit", version = "0.2.2", default-features = false, optional = true } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } objc2-osa-kit = { path = "../objc2-osa-kit", version = "0.2.2", default-features = false, optional = true } @@ -34,15 +35,16 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std", "objc2-osa-kit?/std"] -alloc = ["objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc", "objc2-osa-kit?/alloc"] +std = ["alloc", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std", "objc2-osa-kit?/std"] +alloc = ["objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc", "objc2-osa-kit?/alloc"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation", "objc2-osa-kit?/objc2-core-foundation"] objc2-osa-kit = ["dep:objc2-osa-kit"] AMAction = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-foundation/NSURL", ] @@ -97,6 +99,7 @@ AMWorkflowView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -115,5 +118,6 @@ all = [ "AMWorkspace", "AutomatorErrors", "objc2-app-kit", + "objc2-core-foundation", "objc2-osa-kit", ] diff --git a/framework-crates/objc2-av-kit/Cargo.toml b/framework-crates/objc2-av-kit/Cargo.toml index fbf38a02e..81d4826a2 100644 --- a/framework-crates/objc2-av-kit/Cargo.toml +++ b/framework-crates/objc2-av-kit/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -40,11 +41,12 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] AVCaptureView = [ "objc2-app-kit?/NSAccessibilityProtocols", @@ -54,6 +56,7 @@ AVCaptureView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -79,6 +82,7 @@ AVPlayerView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSError", @@ -95,6 +99,7 @@ AVRoutePickerView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -112,4 +117,5 @@ all = [ "bitflags", "block2", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-business-chat/Cargo.toml b/framework-crates/objc2-business-chat/Cargo.toml index 266044ed3..ef5329a98 100644 --- a/framework-crates/objc2-business-chat/Cargo.toml +++ b/framework-crates/objc2-business-chat/Cargo.toml @@ -17,6 +17,7 @@ workspace = true [dependencies] objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -36,8 +37,9 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "objc2/std", "objc2-app-kit/std", "objc2-foundation/std"] -alloc = ["objc2/alloc", "objc2-app-kit/alloc", "objc2-foundation/alloc"] +std = ["alloc", "objc2/std", "objc2-app-kit/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["objc2/alloc", "objc2-app-kit/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] BCChatAction = [ "objc2-foundation/NSDictionary", @@ -52,6 +54,7 @@ BCChatButton = [ "objc2-app-kit/NSResponder", "objc2-app-kit/NSUserInterfaceItemIdentification", "objc2-app-kit/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -59,4 +62,5 @@ BCChatButton = [ all = [ "BCChatAction", "BCChatButton", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-contacts-ui/Cargo.toml b/framework-crates/objc2-contacts-ui/Cargo.toml index 67e5cbe2c..18295aa0b 100644 --- a/framework-crates/objc2-contacts-ui/Cargo.toml +++ b/framework-crates/objc2-contacts-ui/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } objc2-contacts = { path = "../objc2-contacts", version = "0.2.2", default-features = false, optional = true } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -37,14 +38,16 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "objc2/std", "objc2-app-kit?/std", "objc2-contacts?/std", "objc2-foundation/std"] -alloc = ["objc2/alloc", "objc2-app-kit?/alloc", "objc2-contacts?/alloc", "objc2-foundation/alloc"] +std = ["alloc", "objc2/std", "objc2-app-kit?/std", "objc2-contacts?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["objc2/alloc", "objc2-app-kit?/alloc", "objc2-contacts?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] objc2-app-kit = ["dep:objc2-app-kit"] objc2-contacts = ["dep:objc2-contacts"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] CNContactPicker = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", @@ -72,4 +75,5 @@ all = [ "CNContactViewController", "objc2-app-kit", "objc2-contacts", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-core-foundation/Cargo.toml b/framework-crates/objc2-core-foundation/Cargo.toml new file mode 100644 index 000000000..9990cbf51 --- /dev/null +++ b/framework-crates/objc2-core-foundation/Cargo.toml @@ -0,0 +1,142 @@ +# This file has been automatically generated by `objc2`'s `header-translator`. +# DO NOT EDIT + +[package] +name = "objc2-core-foundation" +version.workspace = true +description = "Bindings to the CoreFoundation framework" +edition.workspace = true +rust-version.workspace = true +keywords = ["cocoa", "apple", "framework", "macos", "ios"] +categories.workspace = true +repository.workspace = true +license.workspace = true + +[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 } + +[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", + "x86_64-unknown-linux-gnu", + "i686-unknown-linux-gnu", +] + +[features] +default = ["std"] + +# Currently not possible to turn off, put here for forwards compatibility. +std = ["alloc", "bitflags?/std", "block2?/std", "libc?/std", "objc2/std"] +alloc = ["block2?/alloc", "objc2/alloc"] +bitflags = ["dep:bitflags"] +block2 = ["dep:block2"] +libc = ["dep:libc"] + +CFArray = [] +CFAttributedString = [] +CFAvailability = [] +CFBag = [] +CFBase = [] +CFBinaryHeap = [] +CFBitVector = [] +CFBundle = [] +CFByteOrder = [] +CFCGTypes = [] +CFCalendar = ["bitflags"] +CFCharacterSet = [] +CFData = ["bitflags"] +CFDate = ["bitflags"] +CFDateFormatter = ["bitflags"] +CFDictionary = [] +CFError = [] +CFFileDescriptor = [] +CFFileSecurity = ["bitflags"] +CFLocale = [] +CFMachPort = [] +CFMessagePort = [] +CFNotificationCenter = [] +CFNumber = [] +CFNumberFormatter = ["bitflags"] +CFPlugIn = [] +CFPreferences = [] +CFPropertyList = ["bitflags"] +CFRunLoop = ["bitflags"] +CFSet = [] +CFSocket = ["bitflags"] +CFStream = ["bitflags"] +CFString = ["bitflags"] +CFStringEncodingExt = [] +CFStringTokenizer = ["bitflags"] +CFTimeZone = [] +CFTree = [] +CFURL = ["bitflags"] +CFURLAccess = [] +CFURLEnumerator = ["bitflags"] +CFUUID = [] +CFUserNotification = [] +CFUtilities = [] +CFXMLNode = [] +CFXMLParser = ["bitflags"] +all = [ + "CFArray", + "CFAttributedString", + "CFAvailability", + "CFBag", + "CFBase", + "CFBinaryHeap", + "CFBitVector", + "CFBundle", + "CFByteOrder", + "CFCGTypes", + "CFCalendar", + "CFCharacterSet", + "CFData", + "CFDate", + "CFDateFormatter", + "CFDictionary", + "CFError", + "CFFileDescriptor", + "CFFileSecurity", + "CFLocale", + "CFMachPort", + "CFMessagePort", + "CFNotificationCenter", + "CFNumber", + "CFNumberFormatter", + "CFPlugIn", + "CFPreferences", + "CFPropertyList", + "CFRunLoop", + "CFSet", + "CFSocket", + "CFStream", + "CFString", + "CFStringEncodingExt", + "CFStringTokenizer", + "CFTimeZone", + "CFTree", + "CFURL", + "CFURLAccess", + "CFURLEnumerator", + "CFUUID", + "CFUserNotification", + "CFUtilities", + "CFXMLNode", + "CFXMLParser", + "bitflags", + "block2", + "libc", +] diff --git a/framework-crates/objc2-core-foundation/README.md b/framework-crates/objc2-core-foundation/README.md new file mode 100644 index 000000000..bc53b45fa --- /dev/null +++ b/framework-crates/objc2-core-foundation/README.md @@ -0,0 +1,14 @@ +# `objc2-core-foundation` + +[![Latest version](https://badgen.net/crates/v/objc2-core-foundation)](https://crates.io/crates/objc2-core-foundation) +[![License](https://badgen.net/badge/license/MIT/blue)](../LICENSE.txt) +[![Documentation](https://docs.rs/objc2-core-foundation/badge.svg)](https://docs.rs/objc2-core-foundation/) +[![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 CoreFoundation. + +This README is kept intentionally small to consolidate the documentation, see +[the Rust docs](https://docs.rs/objc2-core-foundation/) 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-foundation/src/generated b/framework-crates/objc2-core-foundation/src/generated new file mode 120000 index 000000000..dbe67d8a3 --- /dev/null +++ b/framework-crates/objc2-core-foundation/src/generated @@ -0,0 +1 @@ +../../../generated/CoreFoundation \ No newline at end of file diff --git a/framework-crates/objc2-core-foundation/src/geometry.rs b/framework-crates/objc2-core-foundation/src/geometry.rs new file mode 100644 index 000000000..aeb38f88b --- /dev/null +++ b/framework-crates/objc2-core-foundation/src/geometry.rs @@ -0,0 +1,379 @@ +use objc2::encode::{Encode, Encoding, RefEncode}; + +use crate::{CGAffineTransform, CGVector}; + +#[cfg(target_pointer_width = "64")] +type InnerFloat = f64; +#[cfg(not(target_pointer_width = "64"))] +type InnerFloat = f32; + +/// The basic type for all floating-point values. +/// +/// This is [`f32`] on 32-bit platforms and [`f64`] on 64-bit platforms. +/// +/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgfloat?language=objc). +// Defined in CoreGraphics/CGBase.h and CoreFoundation/CFCGTypes.h +// TODO: Use a newtype here? +pub type CGFloat = InnerFloat; + +// NSGeometry types are aliases to CGGeometry types on iOS, tvOS, watchOS and +// macOS 64bit (and hence their Objective-C encodings are different). +// +// TODO: Adjust `objc2-encode` so that this is handled there, and so that we +// can effectively forget about it and use `NS` and `CG` types equally. +#[cfg(not(any( + not(target_vendor = "apple"), + all(target_os = "macos", target_pointer_width = "32") +)))] +mod names { + pub(super) const POINT: &str = "CGPoint"; + pub(super) const SIZE: &str = "CGSize"; + pub(super) const RECT: &str = "CGRect"; +} + +#[cfg(any( + not(target_vendor = "apple"), + all(target_os = "macos", target_pointer_width = "32") +))] +mod names { + pub(super) const POINT: &str = "_NSPoint"; + pub(super) const SIZE: &str = "_NSSize"; + pub(super) const RECT: &str = "_NSRect"; +} + +/// A point in a two-dimensional coordinate system. +/// +/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgpoint?language=objc). +#[repr(C)] +#[derive(Clone, Copy, Debug, PartialEq, Default)] +pub struct CGPoint { + /// The x-coordinate of the point. + pub x: CGFloat, + /// The y-coordinate of the point. + pub y: CGFloat, +} + +unsafe impl Encode for CGPoint { + const ENCODING: Encoding = + Encoding::Struct(names::POINT, &[CGFloat::ENCODING, CGFloat::ENCODING]); +} + +unsafe impl RefEncode for CGPoint { + const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); +} + +impl CGPoint { + /// Create a new point with the given coordinates. + /// + /// + /// # Examples + /// + /// ``` + /// use objc2_core_foundation::CGPoint; + /// assert_eq!(CGPoint::new(10.0, -2.3), CGPoint { x: 10.0, y: -2.3 }); + /// ``` + #[inline] + #[doc(alias = "NSMakePoint")] + #[doc(alias = "CGPointMake")] + pub const fn new(x: CGFloat, y: CGFloat) -> Self { + Self { x, y } + } + + /// A point with both coordinates set to `0.0`. + /// + /// + /// # Examples + /// + /// ``` + /// use objc2_core_foundation::CGPoint; + /// assert_eq!(CGPoint::ZERO, CGPoint { x: 0.0, y: 0.0 }); + /// ``` + #[doc(alias = "NSZeroPoint")] + #[doc(alias = "CGPointZero")] + #[doc(alias = "ORIGIN")] + pub const ZERO: Self = Self::new(0.0, 0.0); +} + +/// A two-dimensional size. +/// +/// As this is sometimes used to represent a distance vector, rather than a +/// physical size, the width and height are _not_ guaranteed to be +/// non-negative! Methods that expect that must use one of [`CGSize::abs`] or +/// [`CGRect::standardize`]. +/// +/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgsize?language=objc). +#[repr(C)] +#[derive(Clone, Copy, Debug, PartialEq, Default)] +pub struct CGSize { + /// The dimensions along the x-axis. + pub width: CGFloat, + /// The dimensions along the y-axis. + pub height: CGFloat, +} + +unsafe impl Encode for CGSize { + const ENCODING: Encoding = + Encoding::Struct(names::SIZE, &[CGFloat::ENCODING, CGFloat::ENCODING]); +} + +unsafe impl RefEncode for CGSize { + const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); +} + +impl CGSize { + /// Create a new size with the given dimensions. + /// + /// + /// # Examples + /// + /// ``` + /// use objc2_core_foundation::CGSize; + /// let size = CGSize::new(10.0, 2.3); + /// assert_eq!(size.width, 10.0); + /// assert_eq!(size.height, 2.3); + /// ``` + /// + /// Negative values are allowed (though often undesired). + /// + /// ``` + /// use objc2_core_foundation::CGSize; + /// let size = CGSize::new(-1.0, 0.0); + /// assert_eq!(size.width, -1.0); + /// ``` + #[inline] + #[doc(alias = "NSMakeSize")] + #[doc(alias = "CGSizeMake")] + pub const fn new(width: CGFloat, height: CGFloat) -> Self { + // The documentation for NSSize explicitly says: + // > If the value of width or height is negative, however, the + // > behavior of some methods may be undefined. + // + // But since this type can come from FFI, we'll leave it up to the + // user to ensure that it is used safely. + Self { width, height } + } + + /// Convert the size to a non-negative size. + /// + /// This can be used to convert the size to a safe value. + /// + /// + /// # Examples + /// + /// ``` + /// use objc2_core_foundation::CGSize; + /// assert_eq!(CGSize::new(-1.0, 1.0).abs(), CGSize::new(1.0, 1.0)); + /// ``` + #[inline] + pub fn abs(self) -> Self { + Self::new(self.width.abs(), self.height.abs()) + } + + /// A size that is 0.0 in both dimensions. + /// + /// + /// # Examples + /// + /// ``` + /// use objc2_core_foundation::CGSize; + /// assert_eq!(CGSize::ZERO, CGSize { width: 0.0, height: 0.0 }); + /// ``` + #[doc(alias = "NSZeroSize")] + #[doc(alias = "CGSizeZero")] + pub const ZERO: Self = Self::new(0.0, 0.0); +} + +/// The location and dimensions of a rectangle. +/// +/// In the default Core Graphics coordinate space (macOS), the origin is +/// located in the lower-left corner of the rectangle and the rectangle +/// extends towards the upper-right corner. +/// +/// If the context has a flipped coordinate space (iOS, tvOS, watchOS) the +/// origin is in the upper-left corner and the rectangle extends towards the +/// lower-right corner. +/// +/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgrect?language=objc). +#[repr(C)] +#[derive(Clone, Copy, Debug, PartialEq, Default)] +pub struct CGRect { + /// The coordinates of the rectangle’s origin. + pub origin: CGPoint, + /// The dimensions of the rectangle. + pub size: CGSize, +} + +unsafe impl Encode for CGRect { + const ENCODING: Encoding = + Encoding::Struct(names::RECT, &[CGPoint::ENCODING, CGSize::ENCODING]); +} + +unsafe impl RefEncode for CGRect { + const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); +} + +impl CGRect { + /// Create a new rectangle with the given origin and dimensions. + /// + /// + /// # Examples + /// + /// ``` + /// use objc2_core_foundation::{CGPoint, CGRect, CGSize}; + /// let origin = CGPoint::new(10.0, -2.3); + /// let size = CGSize::new(5.0, 0.0); + /// let rect = CGRect::new(origin, size); + /// ``` + #[inline] + #[doc(alias = "NSMakeRect")] + #[doc(alias = "CGRectMake")] + pub const fn new(origin: CGPoint, size: CGSize) -> Self { + Self { origin, size } + } + + /// A rectangle with origin (0.0, 0.0) and zero width and height. + #[doc(alias = "NSZeroRect")] + #[doc(alias = "CGRectZero")] + pub const ZERO: Self = Self::new(CGPoint::ZERO, CGSize::ZERO); + + /// Returns a rectangle with a positive width and height. + /// + /// This is often useful + /// + /// + /// # Examples + /// + /// ``` + /// use objc2_core_foundation::{CGPoint, CGRect, CGSize}; + /// let origin = CGPoint::new(1.0, 1.0); + /// let size = CGSize::new(-5.0, -2.0); + /// let rect = CGRect::new(origin, size); + /// assert_eq!(rect.standardize().size, CGSize::new(5.0, 2.0)); + /// ``` + #[inline] + #[doc(alias = "CGRectStandardize")] + pub fn standardize(self) -> Self { + Self::new(self.origin, self.size.abs()) + } + + /// The smallest coordinate of the rectangle. + #[inline] + #[doc(alias = "CGRectGetMinX")] + #[doc(alias = "CGRectGetMinY")] + #[doc(alias = "NSMinX")] + #[doc(alias = "NSMinY")] + pub fn min(self) -> CGPoint { + self.origin + } + + /// The center point of the rectangle. + #[inline] + #[doc(alias = "CGRectGetMidX")] + #[doc(alias = "CGRectGetMidY")] + #[doc(alias = "NSMidX")] + #[doc(alias = "NSMidY")] + pub fn mid(self) -> CGPoint { + CGPoint::new( + self.origin.x + (self.size.width * 0.5), + self.origin.y + (self.size.height * 0.5), + ) + } + + /// The largest coordinate of the rectangle. + #[inline] + #[doc(alias = "CGRectGetMaxX")] + #[doc(alias = "CGRectGetMaxY")] + #[doc(alias = "NSMaxX")] + #[doc(alias = "NSMaxY")] + pub fn max(self) -> CGPoint { + CGPoint::new( + self.origin.x + self.size.width, + self.origin.y + self.size.height, + ) + } + + /// Returns whether a rectangle has zero width or height. + /// + /// + /// # Examples + /// + /// ``` + /// use objc2_core_foundation::{CGPoint, CGRect, CGSize}; + /// assert!(CGRect::ZERO.is_empty()); + /// let point = CGPoint::new(1.0, 2.0); + /// assert!(CGRect::new(point, CGSize::ZERO).is_empty()); + /// assert!(!CGRect::new(point, CGSize::new(1.0, 1.0)).is_empty()); + /// ``` + #[inline] + #[doc(alias = "CGRectIsEmpty")] + pub fn is_empty(self) -> bool { + !(self.size.width > 0.0 && self.size.height > 0.0) + // TODO: NaN handling? + // self.size.width <= 0.0 || self.size.height <= 0.0 + } + + // TODO: NSContainsRect / CGRectContainsRect + // TODO: NSDivideRect / CGRectDivide + // TODO: NSInsetRect / CGRectInset + // TODO: NSIntegralRect / CGRectIntegral + // TODO: NSIntersectionRect / CGRectIntersection + // TODO: NSUnionRect / CGRectUnion + // TODO: NSIntersectsRect / CGRectIntersectsRect + // TODO: NSMouseInRect + // TODO: NSMouseInRect + // TODO: NSPointInRect / CGRectContainsPoint + // TODO: NSOffsetRect / CGRectOffset + + // TODO: CGRectIsNull + // TODO: CGRectIsInfinite + // TODO: CGRectInfinite + // TODO: CGRectNull + + // TODO: NSHeight / CGRectGetHeight (standardized) + // TODO: NSWidth / CGRectGetWidth (standardized) +} + +// TODO: Derive this +impl Default for CGVector { + fn default() -> Self { + Self { dx: 0.0, dy: 0.0 } + } +} + +impl CGVector { + #[inline] + #[doc(alias = "CGVectorMake")] + pub const fn new(dx: CGFloat, dy: CGFloat) -> Self { + Self { dx, dy } + } +} + +// TODO: Derive this +impl Default for CGAffineTransform { + fn default() -> Self { + Self { + a: 0.0, + b: 0.0, + c: 0.0, + d: 0.0, + tx: 0.0, + ty: 0.0, + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_cgsize_new() { + CGSize::new(1.0, 1.0); + CGSize::new(0.0, -0.0); + CGSize::new(-0.0, 0.0); + CGSize::new(-0.0, -0.0); + CGSize::new(-1.0, -1.0); + CGSize::new(-1.0, 1.0); + CGSize::new(1.0, -1.0); + } +} diff --git a/framework-crates/objc2-core-foundation/src/lib.rs b/framework-crates/objc2-core-foundation/src/lib.rs new file mode 100644 index 000000000..f9e457adc --- /dev/null +++ b/framework-crates/objc2-core-foundation/src/lib.rs @@ -0,0 +1,44 @@ +//! # Bindings to the `CoreFoundation` 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/corefoundation/ +//! [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-foundation/0.2.2")] + +#[cfg(feature = "alloc")] +extern crate alloc; + +#[cfg(feature = "std")] +extern crate std; + +mod generated; +#[cfg(feature = "CFCGTypes")] +mod geometry; + +#[allow(unused_imports, unreachable_pub)] +pub use self::generated::*; +#[cfg(feature = "CFCGTypes")] +pub use self::geometry::*; + +// MacTypes.h +#[allow(dead_code)] +mod mac_types { + pub(crate) type Boolean = u8; // unsigned char + pub(crate) type ConstStr255Param = *const core::ffi::c_char; + pub(crate) type ConstStringPtr = *const core::ffi::c_char; + pub(crate) type FourCharCode = u32; + pub(crate) type LangCode = i16; + pub(crate) type OSType = FourCharCode; + pub(crate) type RegionCode = i16; + pub(crate) type ResType = FourCharCode; + pub(crate) type StringPtr = *mut core::ffi::c_char; + pub(crate) type UniChar = u16; + pub(crate) type UTF32Char = u32; // Or maybe Rust's char? +} + +#[allow(unused_imports)] +pub(crate) use self::mac_types::*; diff --git a/framework-crates/objc2-core-foundation/translation-config.toml b/framework-crates/objc2-core-foundation/translation-config.toml new file mode 100644 index 000000000..01171776c --- /dev/null +++ b/framework-crates/objc2-core-foundation/translation-config.toml @@ -0,0 +1,49 @@ +framework = "CoreFoundation" +crate = "objc2-core-foundation" +required-dependencies = [] +custom-lib-rs = true +macos = "10.0" +maccatalyst = "13.0" +ios = "2.0" +tvos = "9.0" +watchos = "2.0" +visionos = "1.0" +gnustep = true + +# Uses variadics +fn.CFStringCreateWithFormatAndArguments.skipped = true +fn.CFStringCreateStringWithValidatedFormatAndArguments.skipped = true +fn.CFStringAppendFormatAndArguments.skipped = true + +# Name clash with containing module +enum.__CFByteOrder.skipped = true + +# Needs dispatch_queue_t +fn.CFMessagePortSetDispatchQueue.skipped = true +fn.CFReadStreamSetDispatchQueue.skipped = true +fn.CFWriteStreamSetDispatchQueue.skipped = true +fn.CFReadStreamCopyDispatchQueue.skipped = true +fn.CFWriteStreamCopyDispatchQueue.skipped = true + +# Needs FSRef from CoreServices +fn.CFURLCreateFromFSRef.skipped = true +fn.CFURLGetFSRef.skipped = true + +# Needs acl_t, which is not exposed by libc +fn.CFFileSecurityCopyAccessControlList.skipped = true +fn.CFFileSecuritySetAccessControlList.skipped = true + +# Different definition depending on pointer width +typedef.CGFloat.skipped = true + +# Custom definitions for slightly better docs now +struct.CGPoint.skipped = true +struct.CGSize.skipped = true +struct.CGRect.skipped = true + +# CF_RELEASES_ARGUMENT (`cf_consumed`), requires manual handling +fn.CFAutorelease.skipped = true + +# Implementation details +fn.__CFRangeMake.skipped = true +fn.__CFStringMakeConstantString.skipped = true diff --git a/framework-crates/objc2-core-image/Cargo.toml b/framework-crates/objc2-core-image/Cargo.toml index b276a8c0a..47a0c1cf3 100644 --- a/framework-crates/objc2-core-image/Cargo.toml +++ b/framework-crates/objc2-core-image/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } objc2-metal = { path = "../objc2-metal", version = "0.2.2", default-features = false, optional = true } @@ -36,15 +37,16 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "block2?/std", "objc2/std", "objc2-foundation/std", "objc2-metal?/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-foundation/alloc", "objc2-metal?/alloc"] +std = ["alloc", "block2?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-foundation/std", "objc2-metal?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc", "objc2-metal?/alloc"] apple = [] gnustep-1-7 = ["objc2/gnustep-1-7", "block2?/gnustep-1-7", "objc2-foundation/gnustep-1-7"] gnustep-1-8 = ["gnustep-1-7", "objc2/gnustep-1-8", "block2?/gnustep-1-8", "objc2-foundation/gnustep-1-8"] gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9", "block2?/gnustep-1-9", "objc2-foundation/gnustep-1-9"] gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0", "block2?/gnustep-2-0", "objc2-foundation/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1", "block2?/gnustep-2-1", "objc2-foundation/gnustep-2-1"] -block2 = ["dep:block2", "objc2-foundation/block2", "objc2-metal?/block2"] +block2 = ["dep:block2", "objc2-core-foundation?/block2", "objc2-foundation/block2", "objc2-metal?/block2"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-foundation/objc2-core-foundation", "objc2-metal?/objc2-core-foundation"] objc2-metal = ["dep:objc2-metal"] CIBarcodeDescriptor = [ @@ -53,15 +55,15 @@ CIBarcodeDescriptor = [ "objc2-foundation/NSUserActivity", ] CIColor = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CIContext = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-foundation/NSURL", "objc2-metal?/MTLCommandQueue", @@ -73,16 +75,16 @@ CIDetector = [ "objc2-foundation/NSString", ] CIFeature = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CIFilter = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSURL", @@ -95,14 +97,14 @@ CIFilterGenerator = [ "objc2-foundation/NSURL", ] CIFilterShape = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] CIImage = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSURL", @@ -110,12 +112,12 @@ CIImage = [ "objc2-metal?/MTLResource", "objc2-metal?/MTLTexture", ] -CIImageAccumulator = ["objc2-foundation/NSGeometry"] +CIImageAccumulator = ["objc2-core-foundation?/CFCGTypes"] CIImageProcessor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-metal?/MTLAllocation", "objc2-metal?/MTLCommandBuffer", @@ -124,20 +126,20 @@ CIImageProcessor = [ ] CIImageProvider = ["objc2-foundation/NSString"] CIKernel = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSData", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] CIKernelMetalLib = [] CIPlugIn = ["objc2-foundation/NSURL"] CIPlugInInterface = [] CIRAWFilter = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSURL", @@ -150,9 +152,9 @@ CIRAWFilter_Deprecated = [ "objc2-foundation/NSURL", ] CIRenderDestination = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDate", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-metal?/MTLAllocation", "objc2-metal?/MTLCommandBuffer", "objc2-metal?/MTLPixelFormat", @@ -160,13 +162,13 @@ CIRenderDestination = [ "objc2-metal?/MTLTexture", ] CISampler = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CIVector = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -196,5 +198,6 @@ all = [ "CIVector", "CoreImageDefines", "block2", + "objc2-core-foundation", "objc2-metal", ] diff --git a/framework-crates/objc2-file-provider/Cargo.toml b/framework-crates/objc2-file-provider/Cargo.toml index 9766dbdd0..f13104122 100644 --- a/framework-crates/objc2-file-provider/Cargo.toml +++ b/framework-crates/objc2-file-provider/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } objc2-uniform-type-identifiers = { path = "../objc2-uniform-type-identifiers", version = "0.2.2", default-features = false, optional = true } @@ -35,10 +36,11 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-foundation/std", "objc2-uniform-type-identifiers?/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-foundation/alloc", "objc2-uniform-type-identifiers?/alloc"] -bitflags = ["dep:bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-foundation/block2", "objc2-uniform-type-identifiers?/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-foundation/std", "objc2-uniform-type-identifiers?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc", "objc2-uniform-type-identifiers?/alloc"] +bitflags = ["dep:bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-core-foundation?/block2", "objc2-foundation/block2", "objc2-uniform-type-identifiers?/block2"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] objc2-uniform-type-identifiers = ["dep:objc2-uniform-type-identifiers"] NSFileProviderActions = [ @@ -111,11 +113,11 @@ NSFileProviderManager = [ NSFileProviderModifyItemOptions = ["bitflags"] NSFileProviderReplicatedExtension = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSProgress", "objc2-foundation/NSRange", "objc2-foundation/NSString", @@ -136,10 +138,10 @@ NSFileProviderTesting = [ "objc2-foundation/NSString", ] NSFileProviderThumbnailing = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSData", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSProgress", "objc2-foundation/NSString", ] @@ -162,5 +164,6 @@ all = [ "NSFileProviderThumbnailing", "bitflags", "block2", + "objc2-core-foundation", "objc2-uniform-type-identifiers", ] diff --git a/framework-crates/objc2-foundation/Cargo.toml b/framework-crates/objc2-foundation/Cargo.toml index 8a5697b25..aec7f7554 100644 --- a/framework-crates/objc2-foundation/Cargo.toml +++ b/framework-crates/objc2-foundation/Cargo.toml @@ -20,6 +20,7 @@ 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-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } dispatch = { version = "0.2.0", optional = true } [package.metadata.docs.rs] @@ -40,8 +41,8 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "libc?/std", "objc2/std"] -alloc = ["block2?/alloc", "objc2/alloc"] +std = ["alloc", "bitflags?/std", "block2?/std", "libc?/std", "objc2/std", "objc2-core-foundation?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-foundation?/alloc"] apple = [] gnustep-1-7 = ["objc2/gnustep-1-7", "block2?/gnustep-1-7"] gnustep-1-8 = ["gnustep-1-7", "objc2/gnustep-1-8", "block2?/gnustep-1-8"] @@ -51,13 +52,14 @@ gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1", "block2?/gnustep-2-1"] unstable-static-nsstring = [] dispatch = ["dep:dispatch"] unstable-mutation-return-null = ["NSNull"] -bitflags = ["dep:bitflags"] -block2 = ["dep:block2"] -libc = ["dep:libc"] +bitflags = ["dep:bitflags", "objc2-core-foundation?/bitflags"] +block2 = ["dep:block2", "objc2-core-foundation?/block2"] +libc = ["dep:libc", "objc2-core-foundation?/libc"] +objc2-core-foundation = ["dep:objc2-core-foundation"] FoundationErrors = [] FoundationLegacySwiftCompatibility = [] -NSAffineTransform = [] +NSAffineTransform = ["objc2-core-foundation?/CFCGTypes"] NSAppleEventDescriptor = ["bitflags"] NSAppleEventManager = [] NSAppleScript = [] @@ -106,7 +108,10 @@ NSFileVersion = ["bitflags"] NSFileWrapper = ["bitflags"] NSFormatter = [] NSGarbageCollector = [] -NSGeometry = ["bitflags"] +NSGeometry = [ + "bitflags", + "objc2-core-foundation?/CFCGTypes", +] NSHFSFileTypes = [] NSHTTPCookie = [] NSHTTPCookieStorage = [] @@ -397,6 +402,7 @@ all = [ "bitflags", "block2", "libc", + "objc2-core-foundation", ] [dev-dependencies] diff --git a/framework-crates/objc2-foundation/src/geometry.rs b/framework-crates/objc2-foundation/src/geometry.rs index 86ece2724..ed9406029 100644 --- a/framework-crates/objc2-foundation/src/geometry.rs +++ b/framework-crates/objc2-foundation/src/geometry.rs @@ -1,348 +1,8 @@ use objc2::encode::{Encode, Encoding, RefEncode}; use objc2::ffi::NSUInteger; -#[cfg(target_pointer_width = "64")] -type InnerFloat = f64; -#[cfg(not(target_pointer_width = "64"))] -type InnerFloat = f32; - -/// The basic type for all floating-point values. -/// -/// This is [`f32`] on 32-bit platforms and [`f64`] on 64-bit platforms. -/// -/// This technically belongs to the `CoreGraphics` framework, but we define it -/// here for convenience. -/// -/// See [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgfloat?language=objc). -// Defined in CoreGraphics/CGBase.h and CoreFoundation/CFCGTypes.h -// TODO: Use a newtype here? -pub type CGFloat = InnerFloat; - -// NSGeometry types are aliases to CGGeometry types on iOS, tvOS, watchOS and -// macOS 64bit (and hence their Objective-C encodings are different). -// -// TODO: Adjust `objc2-encode` so that this is handled there, and so that we -// can effectively forget about it and use `NS` and `CG` types equally. -#[cfg(not(any( - feature = "gnustep-1-7", - all(target_os = "macos", target_pointer_width = "32") -)))] -mod names { - pub(super) const POINT: &str = "CGPoint"; - pub(super) const SIZE: &str = "CGSize"; - pub(super) const RECT: &str = "CGRect"; -} - -#[cfg(any( - feature = "gnustep-1-7", - all(target_os = "macos", target_pointer_width = "32") -))] -mod names { - pub(super) const POINT: &str = "_NSPoint"; - pub(super) const SIZE: &str = "_NSSize"; - pub(super) const RECT: &str = "_NSRect"; -} - -/// A point in a two-dimensional coordinate system. -/// -/// This technically belongs to the `CoreGraphics` framework, but we define it -/// here for convenience. -/// -/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgpoint?language=objc). -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Default)] -pub struct CGPoint { - /// The x-coordinate of the point. - pub x: CGFloat, - /// The y-coordinate of the point. - pub y: CGFloat, -} - -unsafe impl Encode for CGPoint { - const ENCODING: Encoding = - Encoding::Struct(names::POINT, &[CGFloat::ENCODING, CGFloat::ENCODING]); -} - -unsafe impl RefEncode for CGPoint { - const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); -} - -impl CGPoint { - /// Create a new point with the given coordinates. - /// - /// - /// # Examples - /// - /// ``` - /// use objc2_foundation::CGPoint; - /// assert_eq!(CGPoint::new(10.0, -2.3), CGPoint { x: 10.0, y: -2.3 }); - /// ``` - #[inline] - #[doc(alias = "NSMakePoint")] - #[doc(alias = "CGPointMake")] - pub const fn new(x: CGFloat, y: CGFloat) -> Self { - Self { x, y } - } - - /// A point with both coordinates set to `0.0`. - /// - /// - /// # Examples - /// - /// ``` - /// use objc2_foundation::CGPoint; - /// assert_eq!(CGPoint::ZERO, CGPoint { x: 0.0, y: 0.0 }); - /// ``` - #[doc(alias = "NSZeroPoint")] - #[doc(alias = "CGPointZero")] - #[doc(alias = "ORIGIN")] - pub const ZERO: Self = Self::new(0.0, 0.0); -} - -/// A two-dimensional size. -/// -/// As this is sometimes used to represent a distance vector, rather than a -/// physical size, the width and height are _not_ guaranteed to be -/// non-negative! Methods that expect that must use one of [`CGSize::abs`] or -/// [`CGRect::standardize`]. -/// -/// This technically belongs to the `CoreGraphics` framework, but we define it -/// here for convenience. -/// -/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgsize?language=objc). -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Default)] -pub struct CGSize { - /// The dimensions along the x-axis. - pub width: CGFloat, - /// The dimensions along the y-axis. - pub height: CGFloat, -} - -unsafe impl Encode for CGSize { - const ENCODING: Encoding = - Encoding::Struct(names::SIZE, &[CGFloat::ENCODING, CGFloat::ENCODING]); -} - -unsafe impl RefEncode for CGSize { - const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); -} - -impl CGSize { - /// Create a new size with the given dimensions. - /// - /// - /// # Examples - /// - /// ``` - /// use objc2_foundation::CGSize; - /// let size = CGSize::new(10.0, 2.3); - /// assert_eq!(size.width, 10.0); - /// assert_eq!(size.height, 2.3); - /// ``` - /// - /// Negative values are allowed (though often undesired). - /// - /// ``` - /// use objc2_foundation::CGSize; - /// let size = CGSize::new(-1.0, 0.0); - /// assert_eq!(size.width, -1.0); - /// ``` - #[inline] - #[doc(alias = "NSMakeSize")] - #[doc(alias = "CGSizeMake")] - pub const fn new(width: CGFloat, height: CGFloat) -> Self { - // The documentation for NSSize explicitly says: - // > If the value of width or height is negative, however, the - // > behavior of some methods may be undefined. - // - // But since this type can come from FFI, we'll leave it up to the - // user to ensure that it is used safely. - Self { width, height } - } - - /// Convert the size to a non-negative size. - /// - /// This can be used to convert the size to a safe value. - /// - /// - /// # Examples - /// - /// ``` - /// use objc2_foundation::CGSize; - /// assert_eq!(CGSize::new(-1.0, 1.0).abs(), CGSize::new(1.0, 1.0)); - /// ``` - #[inline] - pub fn abs(self) -> Self { - Self::new(self.width.abs(), self.height.abs()) - } - - /// A size that is 0.0 in both dimensions. - /// - /// - /// # Examples - /// - /// ``` - /// use objc2_foundation::CGSize; - /// assert_eq!(CGSize::ZERO, CGSize { width: 0.0, height: 0.0 }); - /// ``` - #[doc(alias = "NSZeroSize")] - #[doc(alias = "CGSizeZero")] - pub const ZERO: Self = Self::new(0.0, 0.0); -} - -/// The location and dimensions of a rectangle. -/// -/// In the default Core Graphics coordinate space (macOS), the origin is -/// located in the lower-left corner of the rectangle and the rectangle -/// extends towards the upper-right corner. -/// -/// If the context has a flipped coordinate space (iOS, tvOS, watchOS) the -/// origin is in the upper-left corner and the rectangle extends towards the -/// lower-right corner. -/// -/// This technically belongs to the `CoreGraphics` framework, but we define it -/// here for convenience. -/// -/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgrect?language=objc). -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Default)] -pub struct CGRect { - /// The coordinates of the rectangle’s origin. - pub origin: CGPoint, - /// The dimensions of the rectangle. - pub size: CGSize, -} - -unsafe impl Encode for CGRect { - const ENCODING: Encoding = - Encoding::Struct(names::RECT, &[CGPoint::ENCODING, CGSize::ENCODING]); -} - -unsafe impl RefEncode for CGRect { - const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); -} - -impl CGRect { - /// Create a new rectangle with the given origin and dimensions. - /// - /// - /// # Examples - /// - /// ``` - /// use objc2_foundation::{CGPoint, CGRect, CGSize}; - /// let origin = CGPoint::new(10.0, -2.3); - /// let size = CGSize::new(5.0, 0.0); - /// let rect = CGRect::new(origin, size); - /// ``` - #[inline] - #[doc(alias = "NSMakeRect")] - #[doc(alias = "CGRectMake")] - pub const fn new(origin: CGPoint, size: CGSize) -> Self { - Self { origin, size } - } - - /// A rectangle with origin (0.0, 0.0) and zero width and height. - #[doc(alias = "NSZeroRect")] - #[doc(alias = "CGRectZero")] - pub const ZERO: Self = Self::new(CGPoint::ZERO, CGSize::ZERO); - - /// Returns a rectangle with a positive width and height. - /// - /// This is often useful - /// - /// - /// # Examples - /// - /// ``` - /// use objc2_foundation::{CGPoint, CGRect, CGSize}; - /// let origin = CGPoint::new(1.0, 1.0); - /// let size = CGSize::new(-5.0, -2.0); - /// let rect = CGRect::new(origin, size); - /// assert_eq!(rect.standardize().size, CGSize::new(5.0, 2.0)); - /// ``` - #[inline] - #[doc(alias = "CGRectStandardize")] - pub fn standardize(self) -> Self { - Self::new(self.origin, self.size.abs()) - } - - /// The smallest coordinate of the rectangle. - #[inline] - #[doc(alias = "CGRectGetMinX")] - #[doc(alias = "CGRectGetMinY")] - #[doc(alias = "NSMinX")] - #[doc(alias = "NSMinY")] - pub fn min(self) -> CGPoint { - self.origin - } - - /// The center point of the rectangle. - #[inline] - #[doc(alias = "CGRectGetMidX")] - #[doc(alias = "CGRectGetMidY")] - #[doc(alias = "NSMidX")] - #[doc(alias = "NSMidY")] - pub fn mid(self) -> CGPoint { - CGPoint::new( - self.origin.x + (self.size.width * 0.5), - self.origin.y + (self.size.height * 0.5), - ) - } - - /// The largest coordinate of the rectangle. - #[inline] - #[doc(alias = "CGRectGetMaxX")] - #[doc(alias = "CGRectGetMaxY")] - #[doc(alias = "NSMaxX")] - #[doc(alias = "NSMaxY")] - pub fn max(self) -> CGPoint { - CGPoint::new( - self.origin.x + self.size.width, - self.origin.y + self.size.height, - ) - } - - /// Returns whether a rectangle has zero width or height. - /// - /// - /// # Examples - /// - /// ``` - /// use objc2_foundation::{CGPoint, CGRect, CGSize}; - /// assert!(CGRect::ZERO.is_empty()); - /// let point = CGPoint::new(1.0, 2.0); - /// assert!(CGRect::new(point, CGSize::ZERO).is_empty()); - /// assert!(!CGRect::new(point, CGSize::new(1.0, 1.0)).is_empty()); - /// ``` - #[inline] - #[doc(alias = "CGRectIsEmpty")] - pub fn is_empty(self) -> bool { - !(self.size.width > 0.0 && self.size.height > 0.0) - // TODO: NaN handling? - // self.size.width <= 0.0 || self.size.height <= 0.0 - } - - // TODO: NSContainsRect / CGRectContainsRect - // TODO: NSDivideRect / CGRectDivide - // TODO: NSInsetRect / CGRectInset - // TODO: NSIntegralRect / CGRectIntegral - // TODO: NSIntersectionRect / CGRectIntersection - // TODO: NSUnionRect / CGRectUnion - // TODO: NSIntersectsRect / CGRectIntersectsRect - // TODO: NSMouseInRect - // TODO: NSMouseInRect - // TODO: NSPointInRect / CGRectContainsPoint - // TODO: NSOffsetRect / CGRectOffset - - // TODO: CGRectIsNull - // TODO: CGRectIsInfinite - // TODO: CGRectInfinite - // TODO: CGRectNull - - // TODO: NSHeight / CGRectGetHeight (standardized) - // TODO: NSWidth / CGRectGetWidth (standardized) -} +#[cfg(feature = "objc2-core-foundation")] +use objc2_core_foundation::{CGPoint, CGRect, CGSize}; /// A point in a Cartesian coordinate system. /// @@ -350,6 +10,7 @@ impl CGRect { /// available on all platforms, though in practice it is only useful on macOS. /// /// See [Apple's documentation](https://developer.apple.com/documentation/foundation/nspoint?language=objc). +#[cfg(feature = "objc2-core-foundation")] pub type NSPoint = CGPoint; /// A two-dimensional size. @@ -358,6 +19,7 @@ pub type NSPoint = CGPoint; /// available on all platforms, though in practice it is only useful on macOS. /// /// See [Apple's documentation](https://developer.apple.com/documentation/foundation/nssize?language=objc). +#[cfg(feature = "objc2-core-foundation")] pub type NSSize = CGSize; /// A rectangle. @@ -366,6 +28,7 @@ pub type NSSize = CGSize; /// available on all platforms, though in practice it is only useful on macOS. /// /// See [Apple's documentation](https://developer.apple.com/documentation/foundation/nsrect?language=objc). +#[cfg(feature = "objc2-core-foundation")] pub type NSRect = CGRect; // NS_ENUM @@ -399,19 +62,6 @@ impl NSRectEdge { #[cfg(test)] mod tests { - use super::*; - - #[test] - fn test_cgsize_new() { - CGSize::new(1.0, 1.0); - CGSize::new(0.0, -0.0); - CGSize::new(-0.0, 0.0); - CGSize::new(-0.0, -0.0); - CGSize::new(-1.0, -1.0); - CGSize::new(-1.0, 1.0); - CGSize::new(1.0, -1.0); - } - // We know the Rust implementation handles NaN, infinite, negative zero // and so on properly, so let's ensure that NSEqualXXX handles these as // well (so that we're confident that the implementations are equivalent). @@ -420,9 +70,11 @@ mod tests { all(target_vendor = "apple", target_os = "macos"), // or macabi feature = "gnustep-1-7" ))] - #[cfg(feature = "NSGeometry")] + #[cfg(feature = "objc2-core-foundation")] fn test_partial_eq() { + use super::*; use crate::{NSEqualPoints, NSEqualRects, NSEqualSizes}; + use objc2_core_foundation::CGFloat; // We assume that comparisons handle e.g. `x` and `y` in the same way, // therefore we set the coordinates / dimensions to the same. diff --git a/framework-crates/objc2-foundation/src/lib.rs b/framework-crates/objc2-foundation/src/lib.rs index b159a6411..c4431b99e 100644 --- a/framework-crates/objc2-foundation/src/lib.rs +++ b/framework-crates/objc2-foundation/src/lib.rs @@ -147,7 +147,9 @@ pub use self::fast_enumeration_state::NSFastEnumerationState; #[allow(unused_imports, unreachable_pub)] pub use self::generated::*; #[cfg(feature = "NSGeometry")] -pub use self::geometry::{CGFloat, CGPoint, CGRect, CGSize, NSPoint, NSRect, NSRectEdge, NSSize}; +pub use self::geometry::NSRectEdge; +#[cfg(all(feature = "NSGeometry", feature = "objc2-core-foundation"))] +pub use self::geometry::{NSPoint, NSRect, NSSize}; #[cfg(feature = "dispatch")] pub use self::main_thread_bound::*; #[cfg(feature = "NSMapTable")] diff --git a/framework-crates/objc2-foundation/src/number.rs b/framework-crates/objc2-foundation/src/number.rs index b0812fa19..f40f18632 100644 --- a/framework-crates/objc2-foundation/src/number.rs +++ b/framework-crates/objc2-foundation/src/number.rs @@ -63,8 +63,8 @@ impl NSNumber { } #[inline] - #[cfg(feature = "NSGeometry")] - pub fn new_cgfloat(val: crate::CGFloat) -> Retained { + #[cfg(feature = "objc2-core-foundation")] + pub fn new_cgfloat(val: objc2_core_foundation::CGFloat) -> Retained { #[cfg(target_pointer_width = "64")] { Self::new_f64(val) @@ -107,8 +107,8 @@ impl NSNumber { } #[inline] - #[cfg(feature = "NSGeometry")] - pub fn as_cgfloat(&self) -> crate::CGFloat { + #[cfg(feature = "objc2-core-foundation")] + pub fn as_cgfloat(&self) -> objc2_core_foundation::CGFloat { #[cfg(target_pointer_width = "64")] { self.as_f64() diff --git a/framework-crates/objc2-foundation/src/tests/auto_traits.rs b/framework-crates/objc2-foundation/src/tests/auto_traits.rs index d470826af..254e65494 100644 --- a/framework-crates/objc2-foundation/src/tests/auto_traits.rs +++ b/framework-crates/objc2-foundation/src/tests/auto_traits.rs @@ -74,7 +74,6 @@ fn send_sync_unwindsafe() { // assert_auto_traits::>>(); assert_auto_traits::(); assert_auto_traits::(); - assert_auto_traits::(); assert_auto_traits::(); assert_auto_traits::(); assert_auto_traits::(); diff --git a/framework-crates/objc2-foundation/src/tests/value.rs b/framework-crates/objc2-foundation/src/tests/value.rs index 2b3e31272..35dd098f0 100644 --- a/framework-crates/objc2-foundation/src/tests/value.rs +++ b/framework-crates/objc2-foundation/src/tests/value.rs @@ -52,7 +52,7 @@ fn nsrange() { let range = NSRange::from(1..2); let val = NSValue::new(range); assert_eq!(val.get_range(), Some(range)); - #[cfg(feature = "NSGeometry")] + #[cfg(feature = "objc2-core-foundation")] { assert_eq!(val.get_point(), None); assert_eq!(val.get_size(), None); @@ -64,7 +64,7 @@ fn nsrange() { } #[test] -#[cfg(feature = "NSGeometry")] +#[cfg(all(feature = "NSGeometry", feature = "objc2-core-foundation"))] fn nspoint() { use crate::NSPoint; let point = NSPoint::new(1.0, 2.0); @@ -75,7 +75,7 @@ fn nspoint() { } #[test] -#[cfg(feature = "NSGeometry")] +#[cfg(all(feature = "NSGeometry", feature = "objc2-core-foundation"))] fn nssize() { use crate::NSSize; let point = NSSize::new(1.0, 2.0); @@ -86,7 +86,7 @@ fn nssize() { } #[test] -#[cfg(feature = "NSGeometry")] +#[cfg(all(feature = "NSGeometry", feature = "objc2-core-foundation"))] fn nsrect() { use crate::{NSPoint, NSRect, NSSize}; let rect = NSRect::new(NSPoint::new(1.0, 2.0), NSSize::new(3.0, 4.0)); diff --git a/framework-crates/objc2-foundation/src/value.rs b/framework-crates/objc2-foundation/src/value.rs index aa21b4238..aabb5fdc6 100644 --- a/framework-crates/objc2-foundation/src/value.rs +++ b/framework-crates/objc2-foundation/src/value.rs @@ -114,7 +114,7 @@ impl NSValue { } } - #[cfg(feature = "NSGeometry")] + #[cfg(all(feature = "NSGeometry", feature = "objc2-core-foundation"))] pub fn get_point(&self) -> Option { if self.contains_encoding::() { // SAFETY: We just checked that this contains an NSPoint @@ -128,7 +128,7 @@ impl NSValue { } } - #[cfg(feature = "NSGeometry")] + #[cfg(all(feature = "NSGeometry", feature = "objc2-core-foundation"))] pub fn get_size(&self) -> Option { if self.contains_encoding::() { // SAFETY: We just checked that this contains an NSSize @@ -138,7 +138,7 @@ impl NSValue { } } - #[cfg(feature = "NSGeometry")] + #[cfg(all(feature = "NSGeometry", feature = "objc2-core-foundation"))] pub fn get_rect(&self) -> Option { if self.contains_encoding::() { // SAFETY: We just checked that this contains an NSRect diff --git a/framework-crates/objc2-game-controller/Cargo.toml b/framework-crates/objc2-game-controller/Cargo.toml index a04226bb4..f9231d6b3 100644 --- a/framework-crates/objc2-game-controller/Cargo.toml +++ b/framework-crates/objc2-game-controller/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -39,11 +40,12 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] GCAxis2DInput = [ "objc2-foundation/NSDate", @@ -107,10 +109,10 @@ GCGamepad = [] GCGamepadSnapshot = ["objc2-foundation/NSData"] GCGearShifterElement = [] GCInputNames = ["objc2-foundation/NSString"] -GCKeyCodes = [] +GCKeyCodes = ["objc2-core-foundation?/CFBase"] GCKeyNames = ["objc2-foundation/NSString"] GCKeyboard = ["objc2-foundation/NSString"] -GCKeyboardInput = [] +GCKeyboardInput = ["objc2-core-foundation?/CFBase"] GCLinearInput = [ "objc2-foundation/NSDate", "objc2-foundation/NSSet", @@ -233,4 +235,5 @@ all = [ "bitflags", "block2", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-game-kit/Cargo.toml b/framework-crates/objc2-game-kit/Cargo.toml index 07657b178..029ef5139 100644 --- a/framework-crates/objc2-game-kit/Cargo.toml +++ b/framework-crates/objc2-game-kit/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -39,14 +40,16 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2"] +std = ["alloc", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] GKAccessPoint = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSWindow", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] @@ -340,4 +343,5 @@ all = [ "GKVoiceChatService", "block2", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-input-method-kit/Cargo.toml b/framework-crates/objc2-input-method-kit/Cargo.toml index 00fb1ee6f..b4eb33687 100644 --- a/framework-crates/objc2-input-method-kit/Cargo.toml +++ b/framework-crates/objc2-input-method-kit/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } objc2-app-kit = { path = "../objc2-app-kit", version = "0.2.2", default-features = false, optional = true } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -32,12 +33,14 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] +std = ["alloc", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] IMKCandidates = [ "objc2-app-kit?/NSResponder", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", @@ -48,6 +51,7 @@ IMKCandidates = [ IMKInputController = [ "objc2-app-kit?/NSEvent", "objc2-app-kit?/NSMenu", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDictionary", @@ -64,4 +68,5 @@ all = [ "IMKInputController", "IMKServer", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-link-presentation/Cargo.toml b/framework-crates/objc2-link-presentation/Cargo.toml index d8e538c05..e43e4a2bd 100644 --- a/framework-crates/objc2-link-presentation/Cargo.toml +++ b/framework-crates/objc2-link-presentation/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -38,10 +39,11 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2"] +std = ["alloc", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] LPError = [ "objc2-foundation/NSError", @@ -62,6 +64,7 @@ LPLinkView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -81,4 +84,5 @@ all = [ "LPMetadataProvider", "block2", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-local-authentication-embedded-ui/Cargo.toml b/framework-crates/objc2-local-authentication-embedded-ui/Cargo.toml index 3d8c6848a..2ef90e894 100644 --- a/framework-crates/objc2-local-authentication-embedded-ui/Cargo.toml +++ b/framework-crates/objc2-local-authentication-embedded-ui/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } objc2-local-authentication = { path = "../objc2-local-authentication", version = "0.2.2", default-features = false } @@ -38,10 +39,11 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std", "objc2-local-authentication/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc", "objc2-local-authentication/alloc"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2", "objc2-local-authentication/block2"] +std = ["alloc", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std", "objc2-local-authentication/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc", "objc2-local-authentication/alloc"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2", "objc2-local-authentication/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] LAAuthenticationView = [ "objc2-app-kit?/NSAccessibilityProtocols", @@ -52,6 +54,7 @@ LAAuthenticationView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -74,4 +77,5 @@ all = [ "LARight_UI", "block2", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-map-kit/Cargo.toml b/framework-crates/objc2-map-kit/Cargo.toml index aa1cb1ee7..3497a6593 100644 --- a/framework-crates/objc2-map-kit/Cargo.toml +++ b/framework-crates/objc2-map-kit/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-core-location = { path = "../objc2-core-location", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } @@ -44,12 +45,13 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-contacts?/std", "objc2-core-location?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-contacts?/alloc", "objc2-core-location?/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-contacts?/block2", "objc2-core-location?/block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-contacts?/std", "objc2-core-foundation?/std", "objc2-core-location?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-contacts?/alloc", "objc2-core-foundation?/alloc", "objc2-core-location?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-contacts?/block2", "objc2-core-foundation?/block2", "objc2-core-location?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] objc2-contacts = ["dep:objc2-contacts", "objc2-core-location?/objc2-contacts"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] objc2-core-location = ["dep:objc2-core-location"] MKAddressFilter = [ @@ -69,13 +71,14 @@ MKAnnotationView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] MKCircle = ["objc2-core-location?/CLLocation"] -MKCircleRenderer = ["objc2-foundation/NSGeometry"] +MKCircleRenderer = ["objc2-core-foundation?/CFCGTypes"] MKClusterAnnotation = [ "objc2-foundation/NSArray", "objc2-foundation/NSString", @@ -88,6 +91,7 @@ MKCompassButton = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -120,8 +124,8 @@ MKGeoJSONSerialization = [ ] MKGeodesicPolyline = ["objc2-core-location?/CLLocation"] MKGeometry = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-location?/CLLocation", - "objc2-foundation/NSGeometry", "objc2-foundation/NSValue", ] MKGradientPolylineRenderer = [ @@ -160,7 +164,7 @@ MKLookAroundSceneRequest = [ "objc2-foundation/NSError", ] MKLookAroundSnapshot = ["objc2-app-kit?/NSImage"] -MKLookAroundSnapshotOptions = ["objc2-foundation/NSGeometry"] +MKLookAroundSnapshotOptions = ["objc2-core-foundation?/CFCGTypes"] MKLookAroundSnapshotter = ["objc2-foundation/NSError"] MKLookAroundViewController = [ "objc2-app-kit?/NSKeyValueBinding", @@ -174,8 +178,8 @@ MKLookAroundViewController = [ "objc2-foundation/NSString", ] MKMapCamera = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-location?/CLLocation", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] MKMapCameraBoundary = [ @@ -219,11 +223,13 @@ MKMapItemRequest = ["objc2-foundation/NSError"] MKMapSnapshot = [ "objc2-app-kit?/NSAppearance", "objc2-app-kit?/NSImage", + "objc2-core-foundation?/CFCGTypes", "objc2-core-location?/CLLocation", "objc2-foundation/NSGeometry", ] MKMapSnapshotOptions = [ "objc2-app-kit?/NSAppearance", + "objc2-core-foundation?/CFCGTypes", "objc2-core-location?/CLLocation", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -237,6 +243,7 @@ MKMapView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-core-location?/CLLocation", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", @@ -256,15 +263,16 @@ MKMarkerAnnotationView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] MKMultiPoint = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-location?/CLLocation", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexSet", "objc2-foundation/NSRange", "objc2-foundation/NSValue", @@ -276,11 +284,11 @@ MKMultiPolylineRenderer = [] MKOverlay = ["objc2-core-location?/CLLocation"] MKOverlayPathRenderer = [ "objc2-app-kit?/NSColor", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSValue", ] -MKOverlayRenderer = ["objc2-foundation/NSGeometry"] +MKOverlayRenderer = ["objc2-core-foundation?/CFCGTypes"] MKPinAnnotationView = [ "objc2-app-kit?/NSAccessibilityProtocols", "objc2-app-kit?/NSAnimation", @@ -290,6 +298,7 @@ MKPinAnnotationView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -303,6 +312,7 @@ MKPitchControl = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -329,9 +339,9 @@ MKPolygon = [ "objc2-core-location?/CLLocation", "objc2-foundation/NSArray", ] -MKPolygonRenderer = ["objc2-foundation/NSGeometry"] +MKPolygonRenderer = ["objc2-core-foundation?/CFCGTypes"] MKPolyline = ["objc2-core-location?/CLLocation"] -MKPolylineRenderer = ["objc2-foundation/NSGeometry"] +MKPolylineRenderer = ["objc2-core-foundation?/CFCGTypes"] MKSelectionAccessory = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSViewController", @@ -339,9 +349,9 @@ MKSelectionAccessory = [ MKShape = ["objc2-foundation/NSString"] MKStandardMapConfiguration = ["objc2-foundation/NSObject"] MKTileOverlay = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSData", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-foundation/NSURL", ] @@ -360,6 +370,7 @@ MKUserLocationView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -373,6 +384,7 @@ MKZoomControl = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -455,5 +467,6 @@ all = [ "block2", "objc2-app-kit", "objc2-contacts", + "objc2-core-foundation", "objc2-core-location", ] diff --git a/framework-crates/objc2-media-player/Cargo.toml b/framework-crates/objc2-media-player/Cargo.toml index fe2741319..987a6966e 100644 --- a/framework-crates/objc2-media-player/Cargo.toml +++ b/framework-crates/objc2-media-player/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -40,11 +41,12 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] AVFoundation_MPNowPlayingInfoLanguageOptionAdditions = [] AVPlayerItem_MediaPlayerAdditions = [] @@ -58,8 +60,8 @@ MPMediaEntity = [ MPMediaItem = [ "bitflags", "objc2-app-kit?/NSImage", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSURL", @@ -194,4 +196,5 @@ all = [ "bitflags", "block2", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-metal-kit/Cargo.toml b/framework-crates/objc2-metal-kit/Cargo.toml index bfa45fd1b..bbc7dd5c3 100644 --- a/framework-crates/objc2-metal-kit/Cargo.toml +++ b/framework-crates/objc2-metal-kit/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } objc2-metal = { path = "../objc2-metal", version = "0.2.2", default-features = false } objc2-quartz-core = { path = "../objc2-quartz-core", version = "0.2.2", default-features = false, optional = true, features = ["objc2-metal"] } @@ -40,10 +41,11 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std", "objc2-metal/std", "objc2-quartz-core?/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc", "objc2-metal/alloc", "objc2-quartz-core?/alloc"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2", "objc2-metal/block2", "objc2-quartz-core?/block2"] +std = ["alloc", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std", "objc2-metal/std", "objc2-quartz-core?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc", "objc2-metal/alloc", "objc2-quartz-core?/alloc"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2", "objc2-metal/block2", "objc2-quartz-core?/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation", "objc2-metal/objc2-core-foundation", "objc2-quartz-core?/objc2-core-foundation"] objc2-quartz-core = ["dep:objc2-quartz-core", "objc2-app-kit?/objc2-quartz-core"] MTKDefines = [] @@ -60,12 +62,12 @@ MTKModel = [ ] MTKTextureLoader = [ "objc2-app-kit?/NSGraphics", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-foundation/NSURL", "objc2-metal/MTLAllocation", @@ -81,6 +83,7 @@ MTKView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -101,5 +104,6 @@ all = [ "MTKView", "block2", "objc2-app-kit", + "objc2-core-foundation", "objc2-quartz-core", ] diff --git a/framework-crates/objc2-metal/Cargo.modified.toml b/framework-crates/objc2-metal/Cargo.modified.toml index 8454798b0..ac7b07b5c 100644 --- a/framework-crates/objc2-metal/Cargo.modified.toml +++ b/framework-crates/objc2-metal/Cargo.modified.toml @@ -10,6 +10,7 @@ required-features = [ "objc2-app-kit/NSApplication", "objc2-app-kit/NSRunningApplication", "objc2-app-kit/NSView", + "objc2-core-foundation", "objc2-foundation/NSError", "objc2-foundation/NSString", "objc2-foundation/NSDate", diff --git a/framework-crates/objc2-metal/Cargo.toml b/framework-crates/objc2-metal/Cargo.toml index ac6bfe8ab..18f00cb03 100644 --- a/framework-crates/objc2-metal/Cargo.toml +++ b/framework-crates/objc2-metal/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -36,14 +37,15 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-foundation/alloc"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] unstable-private = [ "objc2-foundation/NSString", "objc2-foundation/NSError", ] -bitflags = ["dep:bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-foundation/block2"] +bitflags = ["dep:bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] MTLAccelerationStructure = [ "bitflags", @@ -89,6 +91,7 @@ MTLCaptureManager = [ MTLCaptureScope = ["objc2-foundation/NSString"] MTLCommandBuffer = [ "bitflags", + "objc2-core-foundation?/CFDate", "objc2-foundation/NSArray", "objc2-foundation/NSEnumerator", "objc2-foundation/NSError", @@ -138,7 +141,7 @@ MTLDeviceCertification = [ "objc2-foundation/NSProcessInfo", "objc2-foundation/NSString", ] -MTLDrawable = [] +MTLDrawable = ["objc2-core-foundation?/CFDate"] MTLDynamicLibrary = [ "objc2-foundation/NSError", "objc2-foundation/NSString", @@ -328,6 +331,7 @@ all = [ "MTLVisibleFunctionTable", "bitflags", "block2", + "objc2-core-foundation", ] [[example]] @@ -339,6 +343,7 @@ required-features = [ "objc2-app-kit/NSApplication", "objc2-app-kit/NSRunningApplication", "objc2-app-kit/NSView", + "objc2-core-foundation", "objc2-foundation/NSError", "objc2-foundation/NSString", "objc2-foundation/NSDate", diff --git a/framework-crates/objc2-metal/src/lib.rs b/framework-crates/objc2-metal/src/lib.rs index 60ddbcfb1..6dc92daba 100644 --- a/framework-crates/objc2-metal/src/lib.rs +++ b/framework-crates/objc2-metal/src/lib.rs @@ -78,7 +78,3 @@ pub use self::resource::*; pub use self::slice::MTLRenderCommandEncoderSliceExt; #[cfg(feature = "MTLTexture")] pub use self::texture::*; - -// CoreFoundation -#[allow(dead_code)] -pub(crate) type CFTimeInterval = core::ffi::c_double; diff --git a/framework-crates/objc2-osa-kit/Cargo.toml b/framework-crates/objc2-osa-kit/Cargo.toml index 3eef64e2d..9c64bea19 100644 --- a/framework-crates/objc2-osa-kit/Cargo.toml +++ b/framework-crates/objc2-osa-kit/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } objc2-app-kit = { path = "../objc2-app-kit", version = "0.2.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -33,9 +34,10 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "objc2/std", "objc2-app-kit/std", "objc2-foundation/std"] -alloc = ["objc2/alloc", "objc2-app-kit/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit/bitflags", "objc2-foundation/bitflags"] +std = ["alloc", "bitflags?/std", "objc2/std", "objc2-app-kit/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["objc2/alloc", "objc2-app-kit/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] OSALanguage = [ "bitflags", @@ -88,6 +90,7 @@ OSAScriptView = [ "objc2-app-kit/NSUserInterfaceItemIdentification", "objc2-app-kit/NSUserInterfaceValidation", "objc2-app-kit/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -100,4 +103,5 @@ all = [ "OSAScriptController", "OSAScriptView", "bitflags", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-photos-ui/Cargo.toml b/framework-crates/objc2-photos-ui/Cargo.toml index 45fb1c20b..e13078e80 100644 --- a/framework-crates/objc2-photos-ui/Cargo.toml +++ b/framework-crates/objc2-photos-ui/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-core-location = { path = "../objc2-core-location", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } objc2-map-kit = { path = "../objc2-map-kit", version = "0.2.2", default-features = false, optional = true } @@ -45,11 +46,12 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-location?/std", "objc2-foundation/std", "objc2-map-kit?/std", "objc2-photos?/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-location?/alloc", "objc2-foundation/alloc", "objc2-map-kit?/alloc", "objc2-photos?/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags", "objc2-map-kit?/bitflags", "objc2-photos?/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-location?/block2", "objc2-foundation/block2", "objc2-map-kit?/block2", "objc2-photos?/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-core-location?/std", "objc2-foundation/std", "objc2-map-kit?/std", "objc2-photos?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-core-location?/alloc", "objc2-foundation/alloc", "objc2-map-kit?/alloc", "objc2-photos?/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags", "objc2-map-kit?/bitflags", "objc2-photos?/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-core-location?/block2", "objc2-foundation/block2", "objc2-map-kit?/block2", "objc2-photos?/block2"] objc2-app-kit = ["dep:objc2-app-kit", "objc2-map-kit?/objc2-app-kit", "objc2-photos?/objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation", "objc2-map-kit?/objc2-core-foundation", "objc2-photos?/objc2-core-foundation"] objc2-core-location = ["dep:objc2-core-location", "objc2-map-kit?/objc2-core-location", "objc2-photos?/objc2-core-location"] objc2-map-kit = ["dep:objc2-map-kit"] objc2-photos = ["dep:objc2-photos"] @@ -68,6 +70,7 @@ PHLivePhotoView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -108,11 +111,11 @@ PHProjectExtensionController = [ ] PHProjectInfo = [ "objc2-app-kit?/NSColor", + "objc2-core-foundation?/CFCGTypes", "objc2-core-location?/CLLocation", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-map-kit?/MKAnnotation", @@ -145,6 +148,7 @@ all = [ "bitflags", "block2", "objc2-app-kit", + "objc2-core-foundation", "objc2-core-location", "objc2-map-kit", "objc2-photos", diff --git a/framework-crates/objc2-photos/Cargo.toml b/framework-crates/objc2-photos/Cargo.toml index 14779eae8..313e8db7b 100644 --- a/framework-crates/objc2-photos/Cargo.toml +++ b/framework-crates/objc2-photos/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-core-image = { path = "../objc2-core-image", version = "0.2.2", default-features = false, optional = true } objc2-core-location = { path = "../objc2-core-location", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } @@ -42,11 +43,12 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-image?/std", "objc2-core-location?/std", "objc2-foundation/std", "objc2-uniform-type-identifiers?/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-image?/alloc", "objc2-core-location?/alloc", "objc2-foundation/alloc", "objc2-uniform-type-identifiers?/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-image?/block2", "objc2-core-location?/block2", "objc2-foundation/block2", "objc2-uniform-type-identifiers?/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-core-image?/std", "objc2-core-location?/std", "objc2-foundation/std", "objc2-uniform-type-identifiers?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-core-image?/alloc", "objc2-core-location?/alloc", "objc2-foundation/alloc", "objc2-uniform-type-identifiers?/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-core-image?/block2", "objc2-core-location?/block2", "objc2-foundation/block2", "objc2-uniform-type-identifiers?/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-core-image?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] objc2-core-image = ["dep:objc2-core-image", "objc2-app-kit?/objc2-core-image"] objc2-core-location = ["dep:objc2-core-location"] objc2-uniform-type-identifiers = ["dep:objc2-uniform-type-identifiers", "objc2-app-kit?/objc2-uniform-type-identifiers"] @@ -154,28 +156,28 @@ PHFetchResult = [ ] PHImageManager = [ "objc2-app-kit?/NSImage", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] PHLivePhoto = [ "objc2-app-kit?/NSImage", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSURL", ] PHLivePhotoEditingContext = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIImage", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] PHObject = [ @@ -234,6 +236,7 @@ all = [ "bitflags", "block2", "objc2-app-kit", + "objc2-core-foundation", "objc2-core-image", "objc2-core-location", "objc2-uniform-type-identifiers", diff --git a/framework-crates/objc2-quartz-core/Cargo.toml b/framework-crates/objc2-quartz-core/Cargo.toml index f1ad78f0d..86049037f 100644 --- a/framework-crates/objc2-quartz-core/Cargo.toml +++ b/framework-crates/objc2-quartz-core/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } objc2-metal = { path = "../objc2-metal", version = "0.2.2", default-features = false, optional = true } @@ -37,33 +38,36 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-foundation/std", "objc2-metal?/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-foundation/alloc", "objc2-metal?/alloc"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-foundation/std", "objc2-metal?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc", "objc2-metal?/alloc"] apple = [] gnustep-1-7 = [] gnustep-1-8 = [] gnustep-1-9 = [] gnustep-2-0 = [] gnustep-2-1 = [] -bitflags = ["dep:bitflags", "objc2-foundation/bitflags", "objc2-metal?/bitflags"] -block2 = ["dep:block2", "objc2-foundation/block2", "objc2-metal?/block2"] +bitflags = ["dep:bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags", "objc2-metal?/bitflags"] +block2 = ["dep:block2", "objc2-core-foundation?/block2", "objc2-foundation/block2", "objc2-metal?/block2"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-foundation/objc2-core-foundation", "objc2-metal?/objc2-core-foundation"] objc2-metal = ["dep:objc2-metal"] CAAnimation = [ + "objc2-core-foundation?/CFCGTypes", + "objc2-core-foundation?/CFDate", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSValue", ] -CABase = [] +CABase = ["objc2-core-foundation?/CFDate"] CAConstraintLayoutManager = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CADisplayLink = [ + "objc2-core-foundation?/CFDate", "objc2-foundation/NSObjCRuntime", "objc2-foundation/NSRunLoop", "objc2-foundation/NSString", @@ -73,49 +77,54 @@ CAEDRMetadata = [ "objc2-foundation/NSObject", ] CAEmitterCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CAEmitterLayer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CAFrameRateRange = [] CAGradientLayer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSValue", ] CALayer = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", + "objc2-core-foundation?/CFDate", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNull", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] -CAMediaTiming = ["objc2-foundation/NSString"] +CAMediaTiming = [ + "objc2-core-foundation?/CFDate", + "objc2-foundation/NSString", +] CAMediaTimingFunction = [ "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CAMetalDisplayLink = [ + "objc2-core-foundation?/CFDate", "objc2-foundation/NSObjCRuntime", "objc2-foundation/NSRunLoop", "objc2-foundation/NSString", "objc2-metal?/MTLDrawable", ] CAMetalLayer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-metal?/MTLAllocation", "objc2-metal?/MTLDevice", @@ -128,38 +137,44 @@ CAOpenGLLayer = [] CARemoteLayerClient = [] CARemoteLayerServer = [] CARenderer = [ + "objc2-core-foundation?/CFCGTypes", + "objc2-core-foundation?/CFDate", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] CAReplicatorLayer = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", + "objc2-core-foundation?/CFDate", "objc2-foundation/NSObject", ] CAScrollLayer = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CAShapeLayer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSValue", ] CATextLayer = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] CATiledLayer = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", + "objc2-core-foundation?/CFDate", "objc2-foundation/NSObject", ] -CATransaction = ["objc2-foundation/NSString"] +CATransaction = [ + "objc2-core-foundation?/CFDate", + "objc2-foundation/NSString", +] CATransform3D = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSValue", ] CATransformLayer = ["objc2-foundation/NSObject"] @@ -203,5 +218,6 @@ all = [ "CoreVideo", "bitflags", "block2", + "objc2-core-foundation", "objc2-metal", ] diff --git a/framework-crates/objc2-quartz-core/src/lib.rs b/framework-crates/objc2-quartz-core/src/lib.rs index 38213de86..4b56450c3 100644 --- a/framework-crates/objc2-quartz-core/src/lib.rs +++ b/framework-crates/objc2-quartz-core/src/lib.rs @@ -22,7 +22,3 @@ extern crate std; mod generated; #[allow(unused_imports, unreachable_pub)] pub use self::generated::*; - -// CoreFoundation -#[allow(dead_code)] -pub(crate) type CFTimeInterval = core::ffi::c_double; diff --git a/framework-crates/objc2-screen-capture-kit/Cargo.toml b/framework-crates/objc2-screen-capture-kit/Cargo.toml index 586f721f8..7dc5bdf65 100644 --- a/framework-crates/objc2-screen-capture-kit/Cargo.toml +++ b/framework-crates/objc2-screen-capture-kit/Cargo.toml @@ -20,6 +20,7 @@ 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-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -34,11 +35,12 @@ targets = [ 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"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-foundation/block2"] -libc = ["dep:libc", "objc2-foundation/libc"] +std = ["alloc", "bitflags?/std", "block2?/std", "libc?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] +libc = ["dep:libc", "objc2-core-foundation?/libc", "objc2-foundation/libc"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] SCContentSharingPicker = [ "bitflags", @@ -54,15 +56,15 @@ SCRecordingOutput = [ ] SCScreenshotManager = [] SCShareableContent = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] SCStream = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] all = [ @@ -75,4 +77,5 @@ all = [ "bitflags", "block2", "libc", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-screen-saver/Cargo.toml b/framework-crates/objc2-screen-saver/Cargo.toml index 72007db5f..551d7cd99 100644 --- a/framework-crates/objc2-screen-saver/Cargo.toml +++ b/framework-crates/objc2-screen-saver/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } objc2-app-kit = { path = "../objc2-app-kit", version = "0.2.2", default-features = false, optional = true } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -32,9 +33,10 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] +std = ["alloc", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] ScreenSaverDefaults = [ "objc2-foundation/NSString", @@ -50,6 +52,7 @@ ScreenSaverView = [ "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", "objc2-app-kit?/NSWindow", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", "objc2-foundation/NSGeometry", @@ -59,4 +62,5 @@ all = [ "ScreenSaverDefaults", "ScreenSaverView", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-store-kit/Cargo.toml b/framework-crates/objc2-store-kit/Cargo.toml index aead36e1c..c643a6fb7 100644 --- a/framework-crates/objc2-store-kit/Cargo.toml +++ b/framework-crates/objc2-store-kit/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -40,11 +41,12 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] SKANError = ["objc2-foundation/NSString"] SKAdImpression = [ @@ -89,7 +91,7 @@ SKDownload = [ SKError = ["objc2-foundation/NSString"] SKOverlay = ["objc2-foundation/NSError"] SKOverlayConfiguration = ["objc2-foundation/NSString"] -SKOverlayTransitionContext = ["objc2-foundation/NSGeometry"] +SKOverlayTransitionContext = ["objc2-core-foundation?/CFCGTypes"] SKPayment = [ "objc2-foundation/NSData", "objc2-foundation/NSObject", @@ -185,4 +187,5 @@ all = [ "bitflags", "block2", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-ui-kit/Cargo.toml b/framework-crates/objc2-ui-kit/Cargo.toml index 039f60b04..f472ac8f9 100644 --- a/framework-crates/objc2-ui-kit/Cargo.toml +++ b/framework-crates/objc2-ui-kit/Cargo.toml @@ -21,6 +21,7 @@ block2 = { path = "../../crates/block2", version = "0.5.1", default-features = f objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } objc2-cloud-kit = { path = "../objc2-cloud-kit", version = "0.2.2", default-features = false, optional = true } objc2-core-data = { path = "../objc2-core-data", version = "0.2.2", default-features = false, optional = true } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-core-location = { path = "../objc2-core-location", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } objc2-symbols = { path = "../objc2-symbols", version = "0.2.2", default-features = false, optional = true } @@ -46,12 +47,13 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-cloud-kit?/std", "objc2-core-data?/std", "objc2-core-image?/std", "objc2-core-location?/std", "objc2-foundation/std", "objc2-quartz-core?/std", "objc2-symbols?/std", "objc2-uniform-type-identifiers?/std", "objc2-user-notifications?/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-cloud-kit?/alloc", "objc2-core-data?/alloc", "objc2-core-image?/alloc", "objc2-core-location?/alloc", "objc2-foundation/alloc", "objc2-quartz-core?/alloc", "objc2-symbols?/alloc", "objc2-uniform-type-identifiers?/alloc", "objc2-user-notifications?/alloc"] -bitflags = ["dep:bitflags", "objc2-cloud-kit?/bitflags", "objc2-core-data?/bitflags", "objc2-foundation/bitflags", "objc2-quartz-core?/bitflags", "objc2-user-notifications?/bitflags"] -block2 = ["dep:block2", "objc2-cloud-kit?/block2", "objc2-core-data?/block2", "objc2-core-image?/block2", "objc2-core-location?/block2", "objc2-foundation/block2", "objc2-quartz-core?/block2", "objc2-uniform-type-identifiers?/block2", "objc2-user-notifications?/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-cloud-kit?/std", "objc2-core-data?/std", "objc2-core-foundation?/std", "objc2-core-image?/std", "objc2-core-location?/std", "objc2-foundation/std", "objc2-quartz-core?/std", "objc2-symbols?/std", "objc2-uniform-type-identifiers?/std", "objc2-user-notifications?/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-cloud-kit?/alloc", "objc2-core-data?/alloc", "objc2-core-foundation?/alloc", "objc2-core-image?/alloc", "objc2-core-location?/alloc", "objc2-foundation/alloc", "objc2-quartz-core?/alloc", "objc2-symbols?/alloc", "objc2-uniform-type-identifiers?/alloc", "objc2-user-notifications?/alloc"] +bitflags = ["dep:bitflags", "objc2-cloud-kit?/bitflags", "objc2-core-data?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags", "objc2-quartz-core?/bitflags", "objc2-user-notifications?/bitflags"] +block2 = ["dep:block2", "objc2-cloud-kit?/block2", "objc2-core-data?/block2", "objc2-core-foundation?/block2", "objc2-core-image?/block2", "objc2-core-location?/block2", "objc2-foundation/block2", "objc2-quartz-core?/block2", "objc2-uniform-type-identifiers?/block2", "objc2-user-notifications?/block2"] objc2-cloud-kit = ["dep:objc2-cloud-kit"] objc2-core-data = ["dep:objc2-core-data"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-core-image?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation", "objc2-quartz-core?/objc2-core-foundation"] objc2-core-image = ["dep:objc2-core-image"] objc2-core-location = ["dep:objc2-core-location", "objc2-cloud-kit?/objc2-core-location", "objc2-user-notifications?/objc2-core-location"] objc2-quartz-core = ["dep:objc2-quartz-core"] @@ -94,71 +96,71 @@ NSDiffableDataSourceSectionSnapshot = [ NSFileProviderExtension = [] NSIndexPath_UIKitAdditions = ["objc2-foundation/NSIndexPath"] NSItemProvider_UIKitAdditions = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSData", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSString", ] NSLayoutAnchor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSLayoutConstraint = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSLayoutManager = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSRange", ] NSParagraphStyle = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCharacterSet", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSLocale", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSShadow = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSStringDrawing = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSText = [] NSTextAttachment = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", "objc2-foundation/NSFileWrapper", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSTextContainer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] NSTextContentManager = [ @@ -178,28 +180,28 @@ NSTextElement = [ ] NSTextLayoutFragment = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSOperation", ] NSTextLayoutManager = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSOperation", "objc2-foundation/NSString", ] NSTextLineFragment = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSRange", "objc2-foundation/NSString", @@ -218,18 +220,18 @@ NSTextListElement = [ ] NSTextRange = ["objc2-foundation/NSObjCRuntime"] NSTextSelection = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] NSTextSelectionNavigation = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] NSTextStorage = [ @@ -241,7 +243,7 @@ NSTextStorage = [ "objc2-foundation/NSRange", "objc2-foundation/NSString", ] -NSTextViewportLayoutController = ["objc2-foundation/NSGeometry"] +NSTextViewportLayoutController = ["objc2-core-foundation?/CFCGTypes"] NSToolbar_UIKitAdditions = [] NSTouchBar_UIKitAdditions = [] NSUserActivity_NSItemProvider = [] @@ -250,9 +252,9 @@ ShareSheet = [] UIAccelerometer = ["objc2-foundation/NSDate"] UIAccessibility = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSSet", "objc2-foundation/NSString", @@ -283,24 +285,24 @@ UIAccessibilityCustomRotor = [ "objc2-foundation/NSString", ] UIAccessibilityElement = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSString", ] UIAccessibilityIdentification = ["objc2-foundation/NSString"] UIAccessibilityLocationDescriptor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] -UIAccessibilityZoom = ["objc2-foundation/NSGeometry"] +UIAccessibilityZoom = ["objc2-core-foundation?/CFCGTypes"] UIAction = [ "objc2-foundation/NSCoder", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] UIActionSheet = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", @@ -315,25 +317,25 @@ UIActivityCollaborationModeRestriction = [ "objc2-foundation/NSURL", ] UIActivityIndicatorView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] UIActivityItemProvider = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSOperation", "objc2-foundation/NSString", ] UIActivityItemsConfiguration = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSString", ] UIActivityItemsConfigurationReading = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSString", ] @@ -356,8 +358,8 @@ UIAlertController = [ "objc2-foundation/NSString", ] UIAlertView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", @@ -366,13 +368,13 @@ UIAppearance = ["objc2-foundation/NSArray"] UIApplication = [ "bitflags", "objc2-cloud-kit?/CKShareMetadata", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSData", "objc2-foundation/NSDate", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSObjCRuntime", "objc2-foundation/NSSet", @@ -386,31 +388,31 @@ UIApplicationShortcutItem = [ "objc2-foundation/NSString", ] UIAttachmentBehavior = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UIBackgroundConfiguration = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] -UIBandSelectionInteraction = ["objc2-foundation/NSGeometry"] +UIBandSelectionInteraction = ["objc2-core-foundation?/CFCGTypes"] UIBarAppearance = [ "objc2-foundation/NSCoder", "objc2-foundation/NSObject", ] UIBarButtonItem = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSSet", "objc2-foundation/NSString", "objc2-symbols?/NSSymbolEffect", ] UIBarButtonItemAppearance = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -422,32 +424,32 @@ UIBarButtonItemGroup = [ ] UIBarCommon = [] UIBarItem = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] UIBehavioralStyle = [] UIBezierPath = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIBlurEffect = ["objc2-foundation/NSObject"] UIButton = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] UIButtonConfiguration = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -459,11 +461,11 @@ UICalendarSelectionMultiDate = [ UICalendarSelectionSingleDate = ["objc2-foundation/NSCalendar"] UICalendarSelectionWeekOfYear = ["objc2-foundation/NSCalendar"] UICalendarView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCalendar", "objc2-foundation/NSCoder", "objc2-foundation/NSDateInterval", - "objc2-foundation/NSGeometry", "objc2-foundation/NSLocale", "objc2-foundation/NSObject", "objc2-foundation/NSString", @@ -471,11 +473,11 @@ UICalendarView = [ "objc2-quartz-core?/CALayer", ] UICalendarViewDecoration = [] -UICanvasFeedbackGenerator = ["objc2-foundation/NSGeometry"] +UICanvasFeedbackGenerator = ["objc2-core-foundation?/CFCGTypes"] UICellAccessory = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -497,15 +499,15 @@ UICloudSharingController = [ ] UICollectionLayoutList = [ "bitflags", - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSIndexPath", "objc2-foundation/NSObject", ] UICollectionView = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSIndexSet", "objc2-foundation/NSObject", @@ -514,16 +516,16 @@ UICollectionView = [ "objc2-quartz-core?/CALayer", ] UICollectionViewCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] UICollectionViewCompositionalLayout = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSObject", "objc2-foundation/NSString", @@ -536,8 +538,8 @@ UICollectionViewController = [ "objc2-foundation/NSString", ] UICollectionViewFlowLayout = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSObject", ] @@ -546,39 +548,39 @@ UICollectionViewItemRegistration = [ "objc2-foundation/NSString", ] UICollectionViewLayout = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CATransform3D", ] UICollectionViewListCell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] UICollectionViewTransitionLayout = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] UICollectionViewUpdateItem = ["objc2-foundation/NSIndexPath"] UICollisionBehavior = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIColor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIColor", "objc2-foundation/NSBundle", - "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSObject", "objc2-foundation/NSString", @@ -590,8 +592,8 @@ UIColorPickerViewController = [ "objc2-foundation/NSString", ] UIColorWell = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", @@ -617,8 +619,8 @@ UIContentSizeCategory = [ UIContentSizeCategoryAdjusting = [] UIContentUnavailableButtonProperties = ["objc2-foundation/NSObject"] UIContentUnavailableConfiguration = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -628,16 +630,16 @@ UIContentUnavailableConfigurationState = [ "objc2-foundation/NSString", ] UIContentUnavailableImageProperties = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIContentUnavailableTextProperties = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIContentUnavailableView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] @@ -647,15 +649,15 @@ UIContextMenuConfiguration = [ "objc2-foundation/NSSet", ] UIContextMenuInteraction = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIContextualAction = ["objc2-foundation/NSString"] UIControl = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSSet", "objc2-foundation/NSString", @@ -664,10 +666,10 @@ UIControl = [ UIDataDetectors = ["bitflags"] UIDataSourceTranslating = ["objc2-foundation/NSIndexPath"] UIDatePicker = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCalendar", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSLocale", "objc2-foundation/NSObject", "objc2-foundation/NSTimeZone", @@ -710,11 +712,11 @@ UIDocumentBrowserAction = [ "objc2-foundation/NSURL", ] UIDocumentBrowserViewController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSProgress", "objc2-foundation/NSString", @@ -722,8 +724,8 @@ UIDocumentBrowserViewController = [ "objc2-uniform-type-identifiers?/UTType", ] UIDocumentInteractionController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-foundation/NSURL", ] @@ -764,8 +766,8 @@ UIDocumentViewController = [ ] UIDocumentViewControllerLaunchOptions = ["objc2-foundation/NSString"] UIDragInteraction = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UIDragItem = ["objc2-foundation/NSItemProvider"] UIDragPreview = ["objc2-foundation/NSObject"] @@ -775,8 +777,8 @@ UIDragPreviewParameters = [ "objc2-foundation/NSValue", ] UIDragSession = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSProgress", "objc2-foundation/NSString", @@ -786,23 +788,23 @@ UIDropInteraction = [ "objc2-foundation/NSProgress", ] UIDynamicAnimator = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSString", ] UIDynamicBehavior = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UIDynamicItemBehavior = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UIEditMenuInteraction = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIEvent = [ @@ -817,16 +819,16 @@ UIEventAttribution = [ "objc2-foundation/NSURL", ] UIEventAttributionView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] UIFeedbackGenerator = [] UIFieldBehavior = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", ] UIFindInteraction = [ "objc2-foundation/NSArray", @@ -835,15 +837,15 @@ UIFindInteraction = [ UIFindSession = ["objc2-foundation/NSString"] UIFocus = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSString", ] UIFocusAnimationCoordinator = ["objc2-foundation/NSDate"] UIFocusDebugger = [] UIFocusEffect = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", @@ -853,7 +855,7 @@ UIFocusGuide = [ "objc2-foundation/NSObject", ] UIFocusMovementHint = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-quartz-core?/CATransform3D", ] @@ -862,23 +864,23 @@ UIFocusSystem = [ "objc2-foundation/NSURL", ] UIFont = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] UIFontDescriptor = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSSet", "objc2-foundation/NSString", ] UIFontMetrics = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSString", ] UIFontPickerViewController = [ @@ -896,48 +898,48 @@ UIFontPickerViewControllerConfiguration = [ UIFoundation = [] UIGeometry = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-foundation/NSValue", ] UIGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-foundation/NSValue", ] UIGestureRecognizerSubclass = ["objc2-foundation/NSSet"] UIGraphics = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", "objc2-foundation/NSURL", ] UIGraphicsImageRenderer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSData", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIGraphicsPDFRenderer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSData", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSURL", ] UIGraphicsRenderer = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIGraphicsRendererSubclass = ["objc2-foundation/NSError"] UIGravityBehavior = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UIGuidedAccess = [ "bitflags", @@ -953,18 +955,18 @@ UIHoverEffectLayer = [ "objc2-quartz-core?/CAMediaTiming", ] UIHoverGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", ] UIHoverStyle = ["objc2-foundation/NSObject"] UIImage = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIImage", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSData", "objc2-foundation/NSDate", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSObject", "objc2-foundation/NSString", @@ -978,47 +980,47 @@ UIImageConfiguration = [ "objc2-foundation/NSObject", ] UIImagePickerController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSValue", ] UIImageReader = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSData", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSURL", ] UIImageSymbolConfiguration = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSLocale", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] UIImageView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", "objc2-symbols?/NSSymbolEffect", ] -UIImpactFeedbackGenerator = ["objc2-foundation/NSGeometry"] +UIImpactFeedbackGenerator = ["objc2-core-foundation?/CFCGTypes"] UIIndirectScribbleInteraction = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIInputView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] @@ -1031,8 +1033,9 @@ UIInputViewController = [ "objc2-foundation/NSUUID", ] UIInteraction = ["objc2-foundation/NSArray"] -UIInterface = ["objc2-foundation/NSGeometry"] +UIInterface = ["objc2-core-foundation?/CFCGTypes"] UIKey = [ + "objc2-core-foundation?/CFBase", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -1042,28 +1045,28 @@ UIKeyCommand = [ "objc2-foundation/NSObject", "objc2-foundation/NSString", ] -UIKeyConstants = [] +UIKeyConstants = ["objc2-core-foundation?/CFBase"] UIKeyboardLayoutGuide = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIKitCore = [] UIKitDefines = [] UILabel = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] UILargeContentViewer = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSNotification", "objc2-foundation/NSString", ] UILayoutGuide = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -1074,23 +1077,23 @@ UILexicon = [ "objc2-foundation/NSString", ] UIListContentConfiguration = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] UIListContentImageProperties = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIListContentTextProperties = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIListSeparatorConfiguration = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UILocalNotification = [ @@ -1108,9 +1111,9 @@ UILocalizedIndexedCollation = [ "objc2-foundation/NSString", ] UILongPressGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", ] UIManagedDocument = [ "objc2-core-data?/NSManagedObjectContext", @@ -1134,8 +1137,8 @@ UIMenuBuilder = [ "objc2-foundation/NSString", ] UIMenuController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSString", ] @@ -1149,36 +1152,36 @@ UIMenuElement = [ UIMenuLeaf = ["objc2-foundation/NSString"] UIMenuSystem = [] UIMotionEffect = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] UINavigationBar = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] UINavigationBarAppearance = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] UINavigationController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -1198,12 +1201,12 @@ UINib = [ ] UINibDeclarations = [] UINibLoading = ["objc2-foundation/NSString"] -UINotificationFeedbackGenerator = ["objc2-foundation/NSGeometry"] +UINotificationFeedbackGenerator = ["objc2-core-foundation?/CFCGTypes"] UIOpenURLContext = ["objc2-foundation/NSURL"] UIOrientation = ["bitflags"] UIPageControl = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] @@ -1218,8 +1221,8 @@ UIPageViewController = [ ] UIPanGestureRecognizer = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", ] UIPasteConfiguration = [ "objc2-foundation/NSArray", @@ -1232,8 +1235,8 @@ UIPasteConfigurationSupporting = [ "objc2-foundation/NSItemProvider", ] UIPasteControl = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] @@ -1251,66 +1254,66 @@ UIPasteboard = [ "objc2-foundation/NSURL", ] UIPencilInteraction = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", ] UIPickerView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] UIPinchGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", ] UIPointerAccessory = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] -UIPointerInteraction = ["objc2-foundation/NSGeometry"] +UIPointerInteraction = ["objc2-core-foundation?/CFCGTypes"] UIPointerLockState = [ "objc2-foundation/NSNotification", "objc2-foundation/NSString", ] UIPointerRegion = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIPointerStyle = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIPopoverBackgroundView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] UIPopoverController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UIPopoverPresentationController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] -UIPopoverPresentationControllerSourceItem = ["objc2-foundation/NSGeometry"] +UIPopoverPresentationControllerSourceItem = ["objc2-core-foundation?/CFCGTypes"] UIPopoverSupport = [ "bitflags", - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", ] -UIPresentationController = ["objc2-foundation/NSGeometry"] +UIPresentationController = ["objc2-core-foundation?/CFCGTypes"] UIPress = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", ] UIPressesEvent = ["objc2-foundation/NSSet"] -UIPreviewInteraction = ["objc2-foundation/NSGeometry"] +UIPreviewInteraction = ["objc2-core-foundation?/CFCGTypes"] UIPreviewParameters = [ "objc2-foundation/NSArray", "objc2-foundation/NSObject", @@ -1321,8 +1324,8 @@ UIPrintError = [ "objc2-foundation/NSString", ] UIPrintFormatter = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -1333,22 +1336,22 @@ UIPrintInfo = [ "objc2-foundation/NSString", ] UIPrintInteractionController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSData", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSSet", "objc2-foundation/NSString", "objc2-foundation/NSURL", ] UIPrintPageRenderer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSRange", ] UIPrintPaper = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UIPrintServiceExtension = [ "objc2-foundation/NSArray", @@ -1363,19 +1366,19 @@ UIPrinter = [ "objc2-foundation/NSURL", ] UIPrinterPickerController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", ] UIProgressView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSProgress", "objc2-quartz-core?/CALayer", ] UIPushBehavior = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UIReferenceLibraryViewController = [ "objc2-foundation/NSBundle", @@ -1384,14 +1387,14 @@ UIReferenceLibraryViewController = [ "objc2-foundation/NSString", ] UIRefreshControl = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] UIRegion = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIResponder = [ @@ -1405,8 +1408,8 @@ UIResponder = [ ] UIResponder_UIActivityItemsConfiguration = [] UIRotationGestureRecognizer = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", ] UIScene = [ "objc2-foundation/NSError", @@ -1453,32 +1456,32 @@ UISceneSystemProtectionManager = [ UISceneWindowingBehaviors = [] UIScene_AVAudioSession = [] UIScreen = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSString", "objc2-quartz-core?/CADisplayLink", ] UIScreenEdgePanGestureRecognizer = ["objc2-foundation/NSCoder"] -UIScreenMode = ["objc2-foundation/NSGeometry"] +UIScreenMode = ["objc2-core-foundation?/CFCGTypes"] UIScreenshotService = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSData", - "objc2-foundation/NSGeometry", ] -UIScribbleInteraction = ["objc2-foundation/NSGeometry"] +UIScribbleInteraction = ["objc2-core-foundation?/CFCGTypes"] UIScrollView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSSet", "objc2-quartz-core?/CALayer", ] UISearchBar = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSRange", "objc2-foundation/NSString", @@ -1504,65 +1507,65 @@ UISearchSuggestion = [ ] UISearchTab = ["objc2-foundation/NSString"] UISearchTextField = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSItemProvider", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] UISegmentedControl = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] -UISelectionFeedbackGenerator = ["objc2-foundation/NSGeometry"] +UISelectionFeedbackGenerator = ["objc2-core-foundation?/CFCGTypes"] UIShadowProperties = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIShape = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UISheetPresentationController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] UISlider = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] -UISnapBehavior = ["objc2-foundation/NSGeometry"] +UISnapBehavior = ["objc2-core-foundation?/CFCGTypes"] UISplitViewController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] -UISpringLoadedInteraction = ["objc2-foundation/NSGeometry"] +UISpringLoadedInteraction = ["objc2-core-foundation?/CFCGTypes"] UISpringLoadedInteractionSupporting = [] UIStackView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] UIStandardTextCursorView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] @@ -1572,10 +1575,10 @@ UIStateRestoration = [ "objc2-foundation/NSIndexPath", "objc2-foundation/NSString", ] -UIStatusBarManager = ["objc2-foundation/NSGeometry"] +UIStatusBarManager = ["objc2-core-foundation?/CFCGTypes"] UIStepper = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] @@ -1593,8 +1596,8 @@ UISwipeGestureRecognizer = [ "objc2-foundation/NSCoder", ] UISwitch = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", @@ -1602,17 +1605,17 @@ UISwitch = [ UISymbolEffectCompletion = ["objc2-symbols?/NSSymbolEffect"] UITab = ["objc2-foundation/NSString"] UITabBar = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] UITabBarAppearance = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -1626,10 +1629,10 @@ UITabBarController = [ ] UITabBarControllerSidebar = ["objc2-foundation/NSObject"] UITabBarItem = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -1643,9 +1646,9 @@ UITabSidebarItem = [ ] UITableView = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSIndexSet", "objc2-foundation/NSNotification", @@ -1656,8 +1659,8 @@ UITableView = [ ] UITableViewCell = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", @@ -1669,19 +1672,19 @@ UITableViewController = [ "objc2-foundation/NSString", ] UITableViewHeaderFooterView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", ] UITapGestureRecognizer = ["objc2-foundation/NSCoder"] UITargetedDragPreview = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UITargetedPreview = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UITextChecker = [ @@ -1692,7 +1695,7 @@ UITextChecker = [ UITextCursorDropPositionAnimator = [] UITextCursorView = [] UITextDragPreviewRenderer = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSRange", ] UITextDragURLPreviews = [ @@ -1706,11 +1709,11 @@ UITextDragging = [ UITextDropProposal = ["objc2-foundation/NSObject"] UITextDropping = ["objc2-foundation/NSProgress"] UITextField = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSObject", "objc2-foundation/NSRange", @@ -1743,10 +1746,10 @@ UITextFormattingViewControllerConfiguration = [ "objc2-foundation/NSObject", ] UITextFormattingViewControllerFormattingDescriptor = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSRange", "objc2-foundation/NSSet", @@ -1759,10 +1762,10 @@ UITextFormattingViewControllerFormattingStyle = [ "objc2-foundation/NSString", ] UITextInput = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSObjCRuntime", "objc2-foundation/NSObject", @@ -1776,8 +1779,8 @@ UITextInputTraits = [ "objc2-foundation/NSString", ] UITextInteraction = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", ] UITextItem = [ "objc2-foundation/NSAttributedString", @@ -1786,7 +1789,7 @@ UITextItem = [ "objc2-foundation/NSURL", ] UITextItemInteraction = [] -UITextLoupeSession = ["objc2-foundation/NSGeometry"] +UITextLoupeSession = ["objc2-core-foundation?/CFCGTypes"] UITextPasteConfigurationSupporting = [] UITextPasteDelegate = [ "objc2-foundation/NSArray", @@ -1802,14 +1805,14 @@ UITextSearching = [ "objc2-foundation/NSString", ] UITextSelectionDisplayInteraction = ["objc2-foundation/NSArray"] -UITextSelectionHandleView = ["objc2-foundation/NSGeometry"] +UITextSelectionHandleView = ["objc2-core-foundation?/CFCGTypes"] UITextSelectionHighlightView = ["objc2-foundation/NSArray"] UITextView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSAttributedString", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSObject", "objc2-foundation/NSRange", @@ -1820,19 +1823,19 @@ UITextView = [ ] UITimingCurveProvider = ["objc2-foundation/NSObject"] UITimingParameters = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIToolTipInteraction = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSString", ] UIToolbar = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] @@ -1842,9 +1845,9 @@ UIToolbarAppearance = [ ] UITouch = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSValue", ] UITrackingLayoutGuide = [ @@ -1852,13 +1855,13 @@ UITrackingLayoutGuide = [ "objc2-foundation/NSObject", ] UITrait = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSString", ] UITraitCollection = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] @@ -1887,18 +1890,18 @@ UIVideoEditorController = [ ] UIView = [ "bitflags", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-quartz-core?/CALayer", "objc2-quartz-core?/CATransform3D", ] UIViewAnimating = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIViewConfigurationState = [ @@ -1906,13 +1909,13 @@ UIViewConfigurationState = [ "objc2-foundation/NSObject", ] UIViewController = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSBundle", "objc2-foundation/NSCoder", "objc2-foundation/NSDate", "objc2-foundation/NSExtensionContext", "objc2-foundation/NSExtensionRequestHandling", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSObjCRuntime", "objc2-foundation/NSObject", @@ -1920,33 +1923,33 @@ UIViewController = [ ] UIViewControllerTransition = [] UIViewControllerTransitionCoordinator = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] UIViewControllerTransitioning = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] UIViewPropertyAnimator = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSDate", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] UIVisualEffect = ["objc2-foundation/NSObject"] UIVisualEffectView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-quartz-core?/CALayer", ] UIWebView = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSData", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSString", "objc2-foundation/NSURL", @@ -1954,8 +1957,8 @@ UIWebView = [ "objc2-quartz-core?/CALayer", ] UIWindow = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", - "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", "objc2-foundation/NSObject", "objc2-foundation/NSString", @@ -1963,9 +1966,9 @@ UIWindow = [ ] UIWindowScene = [ "objc2-cloud-kit?/CKShareMetadata", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSString", ] UIWindowSceneActivationAction = [ @@ -1975,26 +1978,26 @@ UIWindowSceneActivationAction = [ ] UIWindowSceneActivationConfiguration = ["objc2-foundation/NSUserActivity"] UIWindowSceneActivationInteraction = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", ] UIWindowSceneActivationRequestOptions = [] UIWindowSceneDragInteraction = [] UIWindowSceneGeometry = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UIWindowSceneGeometryPreferences = [] UIWindowSceneGeometryPreferencesIOS = [] -UIWindowSceneGeometryPreferencesMac = ["objc2-foundation/NSGeometry"] -UIWindowSceneGeometryPreferencesVision = ["objc2-foundation/NSGeometry"] +UIWindowSceneGeometryPreferencesMac = ["objc2-core-foundation?/CFCGTypes"] +UIWindowSceneGeometryPreferencesVision = ["objc2-core-foundation?/CFCGTypes"] UIWindowScenePlacement = ["objc2-foundation/NSObject"] UIWindowSceneProminentPlacement = ["objc2-foundation/NSObject"] UIWindowScenePushPlacement = ["objc2-foundation/NSObject"] UIWindowSceneReplacePlacement = ["objc2-foundation/NSObject"] UIWindowSceneStandardPlacement = ["objc2-foundation/NSObject"] UIZoomTransitionOptions = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] UNNotificationResponse_UIKitAdditions = ["objc2-user-notifications?/UNNotificationResponse"] @@ -2412,6 +2415,7 @@ all = [ "block2", "objc2-cloud-kit", "objc2-core-data", + "objc2-core-foundation", "objc2-core-image", "objc2-core-location", "objc2-quartz-core", diff --git a/framework-crates/objc2-ui-kit/src/geometry.rs b/framework-crates/objc2-ui-kit/src/geometry.rs deleted file mode 100644 index 81a2aad82..000000000 --- a/framework-crates/objc2-ui-kit/src/geometry.rs +++ /dev/null @@ -1,73 +0,0 @@ -use objc2::encode::{Encode, Encoding, RefEncode}; - -// Define manually, `objc2_foundation::CGFloat` is feature-gated behind the -// `NSGeometry` feature. -#[cfg(target_pointer_width = "64")] -type CGFloat = f64; -#[cfg(not(target_pointer_width = "64"))] -type CGFloat = f32; - -/// Vector. -/// -/// This technically belongs to the `CoreGraphics` framework, but we define it -/// here for convenience. -/// -/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgvector?language=objc). -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Default)] -pub struct CGVector { - pub dx: CGFloat, - pub dy: CGFloat, -} - -unsafe impl Encode for CGVector { - const ENCODING: Encoding = - Encoding::Struct("CGVector", &[CGFloat::ENCODING, CGFloat::ENCODING]); -} - -unsafe impl RefEncode for CGVector { - const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); -} - -impl CGVector { - #[inline] - #[doc(alias = "CGVectorMake")] - pub const fn new(dx: CGFloat, dy: CGFloat) -> Self { - Self { dx, dy } - } -} - -/// Affine transform. -/// -/// This technically belongs to the `CoreGraphics` framework, but we define it -/// here for convenience. -/// -/// See [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cgaffinetransform?language=objc). -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Default)] -pub struct CGAffineTransform { - pub a: CGFloat, - pub b: CGFloat, - pub c: CGFloat, - pub d: CGFloat, - pub tx: CGFloat, - pub ty: CGFloat, -} - -unsafe impl Encode for CGAffineTransform { - const ENCODING: Encoding = Encoding::Struct( - "CGAffineTransform", - &[ - CGFloat::ENCODING, - CGFloat::ENCODING, - CGFloat::ENCODING, - CGFloat::ENCODING, - CGFloat::ENCODING, - CGFloat::ENCODING, - ], - ); -} - -unsafe impl RefEncode for CGAffineTransform { - const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); -} diff --git a/framework-crates/objc2-ui-kit/src/gesture b/framework-crates/objc2-ui-kit/src/gesture deleted file mode 100644 index e69de29bb..000000000 diff --git a/framework-crates/objc2-ui-kit/src/lib.rs b/framework-crates/objc2-ui-kit/src/lib.rs index 6a3c9fdff..ff8db587d 100644 --- a/framework-crates/objc2-ui-kit/src/lib.rs +++ b/framework-crates/objc2-ui-kit/src/lib.rs @@ -17,7 +17,6 @@ extern crate alloc; extern crate std; mod generated; -mod geometry; #[cfg(feature = "UIGestureRecognizer")] mod gesture_recognizer; #[cfg(feature = "UIPasteConfigurationSupporting")] @@ -31,13 +30,7 @@ mod text; #[allow(unused_imports, unreachable_pub)] pub use self::generated::*; -pub use self::geometry::*; #[cfg(feature = "UIResponder")] pub use self::responder::*; #[cfg(feature = "NSText")] pub use self::text::*; - -// Used by UIKeyConstants -// NOTE: CFIndex is c_long_long on __LLP64__ / Windows 64-bit (doesn't matter for us) -#[allow(unused)] -pub(crate) type CFIndex = core::ffi::c_long; diff --git a/framework-crates/objc2-virtualization/Cargo.toml b/framework-crates/objc2-virtualization/Cargo.toml index 574f0cfa5..23faae75c 100644 --- a/framework-crates/objc2-virtualization/Cargo.toml +++ b/framework-crates/objc2-virtualization/Cargo.toml @@ -20,6 +20,7 @@ bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } objc2-app-kit = { path = "../objc2-app-kit", version = "0.2.2", default-features = false, optional = true } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -34,11 +35,12 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] VZAudioDeviceConfiguration = ["objc2-foundation/NSObject"] VZAudioInputStreamSource = [] @@ -90,8 +92,8 @@ VZGenericPlatformConfiguration = ["objc2-foundation/NSObject"] VZGraphicsDevice = ["objc2-foundation/NSArray"] VZGraphicsDeviceConfiguration = ["objc2-foundation/NSObject"] VZGraphicsDisplay = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", ] VZGraphicsDisplayConfiguration = ["objc2-foundation/NSObject"] VZHostAudioInputStreamSource = [] @@ -129,6 +131,7 @@ VZMacGraphicsDeviceConfiguration = [ VZMacGraphicsDisplay = [] VZMacGraphicsDisplayConfiguration = [ "objc2-app-kit?/NSScreen", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", ] @@ -263,6 +266,7 @@ VZVirtualMachineView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -388,4 +392,5 @@ all = [ "bitflags", "block2", "objc2-app-kit", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-vision/Cargo.toml b/framework-crates/objc2-vision/Cargo.toml index 1609c4e76..55384fa94 100644 --- a/framework-crates/objc2-vision/Cargo.toml +++ b/framework-crates/objc2-vision/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-core-image = { path = "../objc2-core-image", version = "0.2.2", default-features = false, optional = true } objc2-core-ml = { path = "../objc2-core-ml", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } @@ -37,9 +38,10 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "block2?/std", "objc2/std", "objc2-core-image?/std", "objc2-core-ml?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-image?/alloc", "objc2-core-ml?/alloc", "objc2-foundation/alloc"] -block2 = ["dep:block2", "objc2-core-image?/block2", "objc2-core-ml?/block2", "objc2-foundation/block2"] +std = ["alloc", "block2?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-core-image?/std", "objc2-core-ml?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-core-foundation?/alloc", "objc2-core-image?/alloc", "objc2-core-ml?/alloc", "objc2-foundation/alloc"] +block2 = ["dep:block2", "objc2-core-foundation?/block2", "objc2-core-image?/block2", "objc2-core-ml?/block2", "objc2-foundation/block2"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-core-image?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] objc2-core-image = ["dep:objc2-core-image"] objc2-core-ml = ["dep:objc2-core-ml"] @@ -146,14 +148,14 @@ VNDetectTrajectoriesRequest = [ "objc2-foundation/NSObject", ] VNDetectedPoint = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSString", ] VNError = ["objc2-foundation/NSString"] VNFaceLandmarks = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", - "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", "objc2-foundation/NSValue", ] @@ -200,9 +202,9 @@ VNGeneratePersonSegmentationRequest = [ "objc2-foundation/NSValue", ] VNGeometry = [ + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSObject", ] @@ -225,6 +227,7 @@ VNImageRegistrationRequest = [ "objc2-foundation/NSURL", ] VNObservation = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-image?/CIBarcodeDescriptor", "objc2-core-ml?/MLFeatureValue", "objc2-core-ml?/MLMultiArray", @@ -232,7 +235,6 @@ VNObservation = [ "objc2-foundation/NSData", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexPath", "objc2-foundation/NSIndexSet", "objc2-foundation/NSObject", @@ -258,11 +260,11 @@ VNRecognizedPoint3D = [ "objc2-foundation/NSString", ] VNRequest = [ + "objc2-core-foundation?/CFCGTypes", "objc2-core-ml?/MLComputeDeviceProtocol", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", - "objc2-foundation/NSGeometry", "objc2-foundation/NSIndexSet", "objc2-foundation/NSObject", "objc2-foundation/NSString", @@ -318,7 +320,7 @@ VNTrackingRequest = [ "objc2-foundation/NSObject", ] VNTypes = ["objc2-foundation/NSString"] -VNUtils = ["objc2-foundation/NSGeometry"] +VNUtils = ["objc2-core-foundation?/CFCGTypes"] VNVideoProcessor = [ "objc2-foundation/NSDictionary", "objc2-foundation/NSError", @@ -380,6 +382,7 @@ all = [ "VNUtils", "VNVideoProcessor", "block2", + "objc2-core-foundation", "objc2-core-image", "objc2-core-ml", ] diff --git a/framework-crates/objc2-web-kit/Cargo.modified.toml b/framework-crates/objc2-web-kit/Cargo.modified.toml index 44416f2b3..2d54eac20 100644 --- a/framework-crates/objc2-web-kit/Cargo.modified.toml +++ b/framework-crates/objc2-web-kit/Cargo.modified.toml @@ -20,6 +20,7 @@ required-features = [ "objc2-app-kit/NSGraphics", "objc2-app-kit/NSLayoutConstraint", "objc2-app-kit/NSUserInterfaceLayout", + "objc2-core-foundation", "objc2-foundation/NSString", "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", diff --git a/framework-crates/objc2-web-kit/Cargo.toml b/framework-crates/objc2-web-kit/Cargo.toml index 4dfbd581d..be61b2a69 100644 --- a/framework-crates/objc2-web-kit/Cargo.toml +++ b/framework-crates/objc2-web-kit/Cargo.toml @@ -19,6 +19,7 @@ workspace = true bitflags = { version = "2.5.0", default-features = false, optional = true } block2 = { path = "../../crates/block2", version = "0.5.1", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [target.'cfg(target_os = "macos")'.dependencies] @@ -38,11 +39,12 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-foundation/std"] -alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-foundation/bitflags"] -block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-foundation/block2"] +std = ["alloc", "bitflags?/std", "block2?/std", "objc2/std", "objc2-app-kit?/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["block2?/alloc", "objc2/alloc", "objc2-app-kit?/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-app-kit?/bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +block2 = ["dep:block2", "objc2-app-kit?/block2", "objc2-core-foundation?/block2", "objc2-foundation/block2"] objc2-app-kit = ["dep:objc2-app-kit"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-app-kit?/objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] DOM = [] DOMAbstractView = ["objc2-foundation/NSObject"] @@ -139,6 +141,7 @@ DOMEvents = [] DOMException = ["objc2-foundation/NSString"] DOMExtensions = [ "objc2-app-kit?/NSImage", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSGeometry", "objc2-foundation/NSString", @@ -514,11 +517,11 @@ WKNavigationDelegate = [ WKNavigationResponse = ["objc2-foundation/NSURLResponse"] WKOpenPanelParameters = [] WKPDFConfiguration = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] WKPreferences = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", ] WKPreviewActionItem = [] @@ -534,7 +537,7 @@ WKScriptMessageHandler = [] WKScriptMessageHandlerWithReply = ["objc2-foundation/NSString"] WKSecurityOrigin = ["objc2-foundation/NSString"] WKSnapshotConfiguration = [ - "objc2-foundation/NSGeometry", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSObject", "objc2-foundation/NSValue", ] @@ -578,6 +581,7 @@ WKWebView = [ "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSUserInterfaceValidation", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSData", @@ -681,6 +685,7 @@ WebFrameView = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceItemIdentification", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSCoder", "objc2-foundation/NSGeometry", "objc2-foundation/NSObject", @@ -756,6 +761,7 @@ WebUIDelegate = [ "objc2-app-kit?/NSResponder", "objc2-app-kit?/NSUserInterfaceValidation", "objc2-app-kit?/NSView", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSGeometry", @@ -775,6 +781,7 @@ WebView = [ "objc2-app-kit?/NSUserInterfaceValidation", "objc2-app-kit?/NSView", "objc2-app-kit?/NSWindow", + "objc2-core-foundation?/CFCGTypes", "objc2-foundation/NSArray", "objc2-foundation/NSCoder", "objc2-foundation/NSDictionary", @@ -987,6 +994,7 @@ all = [ "bitflags", "block2", "objc2-app-kit", + "objc2-core-foundation", ] [[example]] @@ -1011,6 +1019,7 @@ required-features = [ "objc2-app-kit/NSGraphics", "objc2-app-kit/NSLayoutConstraint", "objc2-app-kit/NSUserInterfaceLayout", + "objc2-core-foundation", "objc2-foundation/NSString", "objc2-foundation/NSGeometry", "objc2-foundation/NSNotification", diff --git a/generated b/generated index 79fe5e180..f93c52800 160000 --- a/generated +++ b/generated @@ -1 +1 @@ -Subproject commit 79fe5e180412b860484562ae7fbf79c3dbf4bedd +Subproject commit f93c528001a714a8e68a3be7712fda5a5b5c068b From 032057675f00ad0f83d49e2300550c100251e0a4 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Mon, 9 Dec 2024 22:03:05 +0100 Subject: [PATCH 8/8] Use CoreFoundation types where previously not possible --- Cargo.lock | 2 ++ .../objc2-core-bluetooth/Cargo.toml | 11 +++++++--- .../translation-config.toml | 6 ------ framework-crates/objc2-core-wlan/Cargo.toml | 18 +++++++++++++---- framework-crates/objc2-core-wlan/src/lib.rs | 3 +++ .../objc2-core-wlan/translation-config.toml | 20 ++++--------------- framework-crates/objc2-foundation/Cargo.toml | 2 +- .../objc2-foundation/translation-config.toml | 5 +---- .../objc2-game-controller/src/lib.rs | 5 ----- .../translation-config.toml | 3 --- .../objc2-quartz-core/translation-config.toml | 4 +--- framework-crates/objc2-ui-kit/Cargo.toml | 1 + .../objc2-ui-kit/translation-config.toml | 3 --- framework-crates/objc2-vision/Cargo.toml | 1 + .../objc2-vision/translation-config.toml | 4 ---- generated | 2 +- 16 files changed, 37 insertions(+), 53 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 84ba7cf6c..e392c2c3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -564,6 +564,7 @@ version = "0.2.2" dependencies = [ "bitflags", "objc2", + "objc2-core-foundation", "objc2-foundation", ] @@ -636,6 +637,7 @@ version = "0.2.2" dependencies = [ "bitflags", "objc2", + "objc2-core-foundation", "objc2-foundation", ] diff --git a/framework-crates/objc2-core-bluetooth/Cargo.toml b/framework-crates/objc2-core-bluetooth/Cargo.toml index 769b1c8fc..8b467a9ac 100644 --- a/framework-crates/objc2-core-bluetooth/Cargo.toml +++ b/framework-crates/objc2-core-bluetooth/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] bitflags = { version = "2.5.0", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -36,9 +37,10 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "objc2/std", "objc2-foundation/std"] -alloc = ["objc2/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-foundation/bitflags"] +std = ["alloc", "bitflags?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["objc2/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] CBATTRequest = ["objc2-foundation/NSData"] CBAdvertisementData = ["objc2-foundation/NSString"] @@ -46,6 +48,7 @@ CBAttribute = [] CBCentral = ["objc2-foundation/NSObject"] CBCentralManager = [ "bitflags", + "objc2-core-foundation?/CFDate", "objc2-foundation/NSArray", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", @@ -86,6 +89,7 @@ CBPeripheralManager = [ CBPeripheralManagerConstants = ["objc2-foundation/NSString"] CBService = ["objc2-foundation/NSArray"] CBUUID = [ + "objc2-core-foundation?/CFUUID", "objc2-foundation/NSData", "objc2-foundation/NSObject", "objc2-foundation/NSString", @@ -111,4 +115,5 @@ all = [ "CBService", "CBUUID", "bitflags", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-core-bluetooth/translation-config.toml b/framework-crates/objc2-core-bluetooth/translation-config.toml index d7facd8a9..eae940369 100644 --- a/framework-crates/objc2-core-bluetooth/translation-config.toml +++ b/framework-crates/objc2-core-bluetooth/translation-config.toml @@ -13,9 +13,3 @@ class.CBCentralManager.methods."initWithDelegate:queue:".skipped = true class.CBCentralManager.methods."initWithDelegate:queue:options:".skipped = true class.CBPeripheralManager.methods."initWithDelegate:queue:".skipped = true class.CBPeripheralManager.methods."initWithDelegate:queue:options:".skipped = true - -# Needs `CFAbsoluteTime` -protocol.CBCentralManagerDelegate.methods."centralManager:didDisconnectPeripheral:timestamp:isReconnecting:error:".skipped = true - -# Needs `CFUUIDRef` -class.CBUUID.methods."UUIDWithCFUUID:".skipped = true diff --git a/framework-crates/objc2-core-wlan/Cargo.toml b/framework-crates/objc2-core-wlan/Cargo.toml index 3a1f102eb..cd6fbaeb4 100644 --- a/framework-crates/objc2-core-wlan/Cargo.toml +++ b/framework-crates/objc2-core-wlan/Cargo.toml @@ -18,6 +18,7 @@ workspace = true [dependencies] bitflags = { version = "2.5.0", default-features = false, optional = true } objc2 = { path = "../../crates/objc2", version = "0.5.2", default-features = false } +objc2-core-foundation = { path = "../objc2-core-foundation", version = "0.2.2", default-features = false, optional = true } objc2-foundation = { path = "../objc2-foundation", version = "0.2.2", default-features = false } [package.metadata.docs.rs] @@ -33,9 +34,10 @@ targets = [ default = ["std"] # Currently not possible to turn off, put here for forwards compatibility. -std = ["alloc", "bitflags?/std", "objc2/std", "objc2-foundation/std"] -alloc = ["objc2/alloc", "objc2-foundation/alloc"] -bitflags = ["dep:bitflags", "objc2-foundation/bitflags"] +std = ["alloc", "bitflags?/std", "objc2/std", "objc2-core-foundation?/std", "objc2-foundation/std"] +alloc = ["objc2/alloc", "objc2-core-foundation?/alloc", "objc2-foundation/alloc"] +bitflags = ["dep:bitflags", "objc2-core-foundation?/bitflags", "objc2-foundation/bitflags"] +objc2-core-foundation = ["dep:objc2-core-foundation", "objc2-foundation/objc2-core-foundation"] CWChannel = ["objc2-foundation/NSObject"] CWConfiguration = [ @@ -65,7 +67,14 @@ CWWiFiClient = [ ] CoreWLANConstants = ["objc2-foundation/NSString"] CoreWLANTypes = ["bitflags"] -CoreWLANUtil = ["objc2-foundation/NSSet"] +CoreWLANUtil = [ + "objc2-core-foundation?/CFArray", + "objc2-core-foundation?/CFBase", + "objc2-core-foundation?/CFData", + "objc2-foundation/NSData", + "objc2-foundation/NSSet", + "objc2-foundation/NSString", +] all = [ "CWChannel", "CWConfiguration", @@ -77,4 +86,5 @@ all = [ "CoreWLANTypes", "CoreWLANUtil", "bitflags", + "objc2-core-foundation", ] diff --git a/framework-crates/objc2-core-wlan/src/lib.rs b/framework-crates/objc2-core-wlan/src/lib.rs index 07c1cd2ac..5e1157ae1 100644 --- a/framework-crates/objc2-core-wlan/src/lib.rs +++ b/framework-crates/objc2-core-wlan/src/lib.rs @@ -18,3 +18,6 @@ extern crate std; mod generated; #[allow(unused_imports, unreachable_pub)] pub use self::generated::*; + +#[allow(dead_code)] +pub(crate) type OSStatus = i32; diff --git a/framework-crates/objc2-core-wlan/translation-config.toml b/framework-crates/objc2-core-wlan/translation-config.toml index 4b3c73ace..9f14e2dc5 100644 --- a/framework-crates/objc2-core-wlan/translation-config.toml +++ b/framework-crates/objc2-core-wlan/translation-config.toml @@ -1,6 +1,7 @@ framework = "CoreWLAN" crate = "objc2-core-wlan" required-dependencies = ["objc2-foundation"] +custom-lib-rs = true macos = "10.6" maccatalyst = "13.0" @@ -10,24 +11,11 @@ class.CWMutableConfiguration.counterpart = "ImmutableSuperclass(CoreWLAN::CWConf class.CWNetworkProfile.counterpart = "MutableSubclass(CoreWLAN::CWNetworkProfile::CWMutableNetworkProfile)" class.CWMutableNetworkProfile.counterpart = "ImmutableSuperclass(CoreWLAN::CWNetworkProfile::CWNetworkProfile)" -# Uses types from CoreFoundation -fn.CWKeychainCopyEAPUsernameAndPassword.skipped = true -fn.CWKeychainCopyEAPIdentityList.skipped = true -fn.CWKeychainSetEAPUsernameAndPassword.skipped = true -fn.CWKeychainDeleteEAPUsernameAndPassword.skipped = true -fn.CWKeychainSetPassword.skipped = true -fn.CWKeychainDeletePassword.skipped = true -fn.CWKeychainCopyEAPIdentity.skipped = true -fn.CWKeychainSetEAPIdentity.skipped = true -fn.CWKeychainCopyPassword.skipped = true -fn.CWKeychainFindWiFiPassword.skipped = true -fn.CWKeychainSetWiFiPassword.skipped = true -fn.CWKeychainDeleteWiFiPassword.skipped = true -fn.CWKeychainFindWiFiEAPUsernameAndPassword.skipped = true -fn.CWKeychainSetWiFiEAPUsernameAndPassword.skipped = true -fn.CWKeychainDeleteWiFiEAPUsernameAndPassword.skipped = true +# Needs SecIdentityRef from Security fn.CWKeychainCopyWiFiEAPIdentity.skipped = true fn.CWKeychainSetWiFiEAPIdentity.skipped = true +fn.CWKeychainCopyEAPIdentity.skipped = true +fn.CWKeychainSetEAPIdentity.skipped = true class.CWInterface.methods."associateToEnterpriseNetwork:identity:username:password:error:".skipped = true # Needs `SFAuthorization` from the `SecurityFoundation` framework diff --git a/framework-crates/objc2-foundation/Cargo.toml b/framework-crates/objc2-foundation/Cargo.toml index aec7f7554..390308355 100644 --- a/framework-crates/objc2-foundation/Cargo.toml +++ b/framework-crates/objc2-foundation/Cargo.toml @@ -173,7 +173,7 @@ NSProxy = [] NSRange = [] NSRegularExpression = ["bitflags"] NSRelativeDateTimeFormatter = [] -NSRunLoop = [] +NSRunLoop = ["objc2-core-foundation?/CFRunLoop"] NSScanner = [] NSScriptClassDescription = [] NSScriptCoercionHandler = [] diff --git a/framework-crates/objc2-foundation/translation-config.toml b/framework-crates/objc2-foundation/translation-config.toml index de4ebc5d4..8dd83da51 100644 --- a/framework-crates/objc2-foundation/translation-config.toml +++ b/framework-crates/objc2-foundation/translation-config.toml @@ -12,6 +12,7 @@ gnustep = true # ns_consumed / NS_RELEASES_ARGUMENT / cf_consumed / CF_CONSUMED fn.CFBridgingRelease.skipped = true +fn.CFBridgingRetain.skipped = true fn.NSMakeCollectable.skipped = true fn.NSFreeMapTable.skipped = true protocol.NSKeyedUnarchiverDelegate.methods."unarchiver:didDecodeObject:".skipped = true @@ -174,10 +175,6 @@ class.NSDictionary.methods."dictionaryWithContentsOfURL:error:".skipped = true # enough to make it safe anyhow, we need to do manual work here anyhow. class.NSDictionary.categories.NSGenericFastEnumeration.skipped = true -# Needs CoreFoundation -fn.CFBridgingRetain.skipped = true -class.NSRunLoop.methods.getCFRunLoop.skipped = true - # Uses constants from CoreFoundation or similar frameworks enum.NSAppleEventSendOptions.use-value = true enum.NSCalendarUnit.use-value = true diff --git a/framework-crates/objc2-game-controller/src/lib.rs b/framework-crates/objc2-game-controller/src/lib.rs index ea959d17d..07ee1caeb 100644 --- a/framework-crates/objc2-game-controller/src/lib.rs +++ b/framework-crates/objc2-game-controller/src/lib.rs @@ -28,8 +28,3 @@ pub use self::extended_gamepad_snapshot::GCExtendedGamepadSnapshotData; pub use self::generated::*; #[cfg(feature = "GCInputNames")] pub use self::input_names::*; - -// TODO: GCKeyCode = CFIndex -// NOTE: CFIndex is c_long_long on __LLP64__ / Windows 64-bit (doesn't matter for us) -#[cfg(feature = "GCKeyCodes")] -pub type GCKeyCode = core::ffi::c_long; diff --git a/framework-crates/objc2-game-controller/translation-config.toml b/framework-crates/objc2-game-controller/translation-config.toml index 152f9024f..7494357d2 100644 --- a/framework-crates/objc2-game-controller/translation-config.toml +++ b/framework-crates/objc2-game-controller/translation-config.toml @@ -62,8 +62,5 @@ protocol.GCDevice.methods."setHandlerQueue:".skipped = true protocol.GCDevicePhysicalInput.methods.queue.skipped = true protocol.GCDevicePhysicalInput.methods."setQueue:".skipped = true -# Needs `CFIndex` (fixed locally for now) -typedef.GCKeyCode.skipped = true - # Needs `IOHIDDeviceRef` from IOKit class.GCController.methods."supportsHIDDevice:".skipped = true diff --git a/framework-crates/objc2-quartz-core/translation-config.toml b/framework-crates/objc2-quartz-core/translation-config.toml index 0cd7b5a77..fa4e35260 100644 --- a/framework-crates/objc2-quartz-core/translation-config.toml +++ b/framework-crates/objc2-quartz-core/translation-config.toml @@ -9,7 +9,7 @@ ios = "2.0" tvos = "9.0" visionos = "1.0" -# Uses stuff from CoreFoundation and CoreGraphics +# Uses stuff from CoreGraphics class.CAKeyframeAnimation.methods.path.skipped = true class.CAKeyframeAnimation.methods."setPath:".skipped = true class.CAShapeLayer.methods.path.skipped = true @@ -20,8 +20,6 @@ class.CAShapeLayer.methods.strokeColor.skipped = true class.CAShapeLayer.methods."setStrokeColor:".skipped = true class.CAEmitterCell.methods.color.skipped = true class.CAEmitterCell.methods."setColor:".skipped = true -class.CALayer.methods.affineTransform.skipped = true -class.CALayer.methods."setAffineTransform:".skipped = true class.CALayer.methods."drawInContext:".skipped = true class.CALayer.methods."renderInContext:".skipped = true class.CALayer.methods.backgroundColor.skipped = true diff --git a/framework-crates/objc2-ui-kit/Cargo.toml b/framework-crates/objc2-ui-kit/Cargo.toml index f472ac8f9..37690ce77 100644 --- a/framework-crates/objc2-ui-kit/Cargo.toml +++ b/framework-crates/objc2-ui-kit/Cargo.toml @@ -1457,6 +1457,7 @@ UISceneWindowingBehaviors = [] UIScene_AVAudioSession = [] UIScreen = [ "objc2-core-foundation?/CFCGTypes", + "objc2-core-foundation?/CFDate", "objc2-foundation/NSArray", "objc2-foundation/NSNotification", "objc2-foundation/NSString", diff --git a/framework-crates/objc2-ui-kit/translation-config.toml b/framework-crates/objc2-ui-kit/translation-config.toml index 11c16dd08..ccb66cc82 100644 --- a/framework-crates/objc2-ui-kit/translation-config.toml +++ b/framework-crates/objc2-ui-kit/translation-config.toml @@ -132,9 +132,6 @@ class.UIImage.methods."drawInRect:blendMode:alpha:".skipped = true fn.UIRectFillUsingBlendMode.skipped = true fn.UIRectFrameUsingBlendMode.skipped = true -# Needs `CFTimeInterval` -class.UIScreen.methods.calibratedLatency.skipped = true - # Needs `CGGlyph` class.NSLayoutManager.methods."CGGlyphAtIndex:isValidIndex:".skipped = true class.NSLayoutManager.methods."CGGlyphAtIndex:".skipped = true diff --git a/framework-crates/objc2-vision/Cargo.toml b/framework-crates/objc2-vision/Cargo.toml index 55384fa94..25c130e34 100644 --- a/framework-crates/objc2-vision/Cargo.toml +++ b/framework-crates/objc2-vision/Cargo.toml @@ -322,6 +322,7 @@ VNTrackingRequest = [ VNTypes = ["objc2-foundation/NSString"] VNUtils = ["objc2-core-foundation?/CFCGTypes"] VNVideoProcessor = [ + "objc2-core-foundation?/CFDate", "objc2-foundation/NSDictionary", "objc2-foundation/NSError", "objc2-foundation/NSObject", diff --git a/framework-crates/objc2-vision/translation-config.toml b/framework-crates/objc2-vision/translation-config.toml index 1a55260a4..b35ebc773 100644 --- a/framework-crates/objc2-vision/translation-config.toml +++ b/framework-crates/objc2-vision/translation-config.toml @@ -40,10 +40,6 @@ class.VNTargetedImageRequest.methods."initWithTargetedCMSampleBuffer:options:com class.VNVideoProcessor.methods."analyzeTimeRange:error:".skipped = true class.VNVideoProcessor.methods."analyzeWithTimeRange:error:".skipped = true -# Needs `CFTimeInterval` from CoreFoundation -class.VNVideoProcessorTimeIntervalCadence.methods."initWithTimeInterval:".skipped = true -class.VNVideoProcessorTimeIntervalCadence.methods.timeInterval.skipped = true - # Needs CoreVideo class.VNTargetedImageRequest.methods."initWithTargetedCVPixelBuffer:options:".skipped = true class.VNTargetedImageRequest.methods."initWithTargetedCVPixelBuffer:options:completionHandler:".skipped = true diff --git a/generated b/generated index f93c52800..28f85cd32 160000 --- a/generated +++ b/generated @@ -1 +1 @@ -Subproject commit f93c528001a714a8e68a3be7712fda5a5b5c068b +Subproject commit 28f85cd32a3b761867768f311cb9dfd3db6764e2