1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uideferredmenuelementidentifier?language=objc)
// NS_TYPED_EXTENSIBLE_ENUM
pub type UIDeferredMenuElementIdentifier = NSString;
extern_class!(
/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uideferredmenuelement?language=objc)
#[unsafe(super(UIMenuElement, NSObject))]
#[thread_kind = MainThreadOnly]
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "UIMenuElement")]
pub struct UIDeferredMenuElement;
);
#[cfg(feature = "UIMenuElement")]
extern_conformance!(
unsafe impl NSCoding for UIDeferredMenuElement {}
);
#[cfg(feature = "UIMenuElement")]
extern_conformance!(
unsafe impl NSCopying for UIDeferredMenuElement {}
);
#[cfg(feature = "UIMenuElement")]
unsafe impl CopyingHelper for UIDeferredMenuElement {
type Result = Self;
}
#[cfg(feature = "UIMenuElement")]
extern_conformance!(
unsafe impl NSObjectProtocol for UIDeferredMenuElement {}
);
#[cfg(feature = "UIMenuElement")]
extern_conformance!(
unsafe impl NSSecureCoding for UIDeferredMenuElement {}
);
#[cfg(feature = "UIMenuElement")]
impl UIDeferredMenuElement {
extern_methods!(
/// The identifier of this deferred menu element.
#[unsafe(method(identifier))]
#[unsafe(method_family = none)]
pub fn identifier(&self) -> Retained<UIDeferredMenuElementIdentifier>;
#[cfg(feature = "block2")]
/// Returns a placeholder menu element that is replaced with the result of the block's
/// completion handler. A loading UI takes the place of the element in the menu
/// until it is fulfilled. While the element may be stored and re-used across menus, its block is
/// called only once, when the element is first encountered in a menu.
///
///
/// Parameter `elementProvider`: Called by the system to request the deferred menu items when the containing menu is presented.
/// Call this block's completion handler when the menu items are available.
///
/// # Safety
///
/// `element_provider` block's argument block's argument must be a valid pointer.
#[unsafe(method(elementWithProvider:))]
#[unsafe(method_family = none)]
pub unsafe fn elementWithProvider(
element_provider: &block2::DynBlock<
dyn Fn(NonNull<block2::DynBlock<dyn Fn(NonNull<NSArray<UIMenuElement>>)>>),
>,
mtm: MainThreadMarker,
) -> Retained<Self>;
#[cfg(feature = "block2")]
/// Returns a placeholder menu element that is replaced with the result of the block's
/// completion handler. A loading UI takes the place of the element in the menu
/// until it is fulfilled. Elements created using this initializer are "uncached",
/// so their
/// `elementProvider`block is called every time the element is displayed.
///
///
/// Parameter `elementProvider`: Called by the system to request the deferred menu items when the containing menu is presented.
/// Call this block's completion handler when the menu items are available.
///
/// # Safety
///
/// `element_provider` block's argument block's argument must be a valid pointer.
#[unsafe(method(elementWithUncachedProvider:))]
#[unsafe(method_family = none)]
pub unsafe fn elementWithUncachedProvider(
element_provider: &block2::DynBlock<
dyn Fn(NonNull<block2::DynBlock<dyn Fn(NonNull<NSArray<UIMenuElement>>)>>),
>,
mtm: MainThreadMarker,
) -> Retained<Self>;
/// Returns a placeholder menu element that is replaced with elements provided from the responder chain.
/// A loading UI takes the place of the element in the menu until it is fulfilled. The element may be stored
/// and re-used across menus.
///
///
/// Parameter `identifier`: An identifier for this deferred element that responders can check to determine which elements
/// to provide.
///
/// Parameter `shouldCacheItems`: Whether or not the deferred element caches items. Passing in
/// `YES`causes this deferred element to
/// ask the responder chain for elements only once, when the element is first encountered in a menu.
/// Passing in
/// `NO`asks the responder chain for elements every time the element is displayed.
#[unsafe(method(elementUsingFocusWithIdentifier:shouldCacheItems:))]
#[unsafe(method_family = none)]
pub fn elementUsingFocusWithIdentifier_shouldCacheItems(
identifier: &UIDeferredMenuElementIdentifier,
should_cache_items: bool,
mtm: MainThreadMarker,
) -> Retained<Self>;
);
}
/// Methods declared on superclass `UIMenuElement`.
#[cfg(feature = "UIMenuElement")]
impl UIDeferredMenuElement {
extern_methods!(
/// # Safety
///
/// `coder` possibly has further requirements.
#[unsafe(method(initWithCoder:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithCoder(
this: Allocated<Self>,
coder: &NSCoder,
) -> Option<Retained<Self>>;
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
);
}
extern_class!(
/// Represents an element provider for a deferred menu element.
/// When the containing menu for a responder-based deferred element is presented, the system asks the
/// responder chain for one of these element providers for the deferred element.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/uikit/uideferredmenuelementprovider?language=objc)
#[unsafe(super(NSObject))]
#[thread_kind = MainThreadOnly]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct UIDeferredMenuElementProvider;
);
extern_conformance!(
unsafe impl NSObjectProtocol for UIDeferredMenuElementProvider {}
);
impl UIDeferredMenuElementProvider {
extern_methods!(
#[cfg(all(feature = "UIMenuElement", feature = "block2"))]
/// Creates a deferred menu element provider with an asynchronous block.
///
///
/// Parameter `elementProvider`: An asynchronous element provider block. Call this block's completion handler when the responder's
/// menu items are available.
///
/// # Safety
///
/// `element_provider` block's argument block's argument must be a valid pointer.
#[unsafe(method(providerWithElementProvider:))]
#[unsafe(method_family = none)]
pub unsafe fn providerWithElementProvider(
element_provider: &block2::DynBlock<
dyn Fn(NonNull<block2::DynBlock<dyn Fn(NonNull<NSArray<UIMenuElement>>)>>),
>,
mtm: MainThreadMarker,
) -> Retained<Self>;
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
);
}