objc2_core_data/generated/
NSFetchRequest.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10/// [Apple's documentation](https://developer.apple.com/documentation/coredata/nsfetchrequestresulttype?language=objc)
11// NS_OPTIONS
12#[repr(transparent)]
13#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
14pub struct NSFetchRequestResultType(pub NSUInteger);
15bitflags::bitflags! {
16    impl NSFetchRequestResultType: NSUInteger {
17        #[doc(alias = "NSManagedObjectResultType")]
18        const ManagedObjectResultType = 0x00;
19        #[doc(alias = "NSManagedObjectIDResultType")]
20        const ManagedObjectIDResultType = 0x01;
21        #[doc(alias = "NSDictionaryResultType")]
22        const DictionaryResultType = 0x02;
23        #[doc(alias = "NSCountResultType")]
24        const CountResultType = 0x04;
25    }
26}
27
28unsafe impl Encode for NSFetchRequestResultType {
29    const ENCODING: Encoding = NSUInteger::ENCODING;
30}
31
32unsafe impl RefEncode for NSFetchRequestResultType {
33    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
34}
35
36extern_protocol!(
37    /// [Apple's documentation](https://developer.apple.com/documentation/coredata/nsfetchrequestresult?language=objc)
38    pub unsafe trait NSFetchRequestResult: NSObjectProtocol {}
39);
40
41extern_conformance!(
42    unsafe impl NSFetchRequestResult for NSNumber {}
43);
44
45extern_conformance!(
46    unsafe impl NSFetchRequestResult for NSDictionary {}
47);
48
49/// NSFetchedResultSupport.
50#[cfg(feature = "NSManagedObject")]
51impl NSManagedObject {
52    extern_methods!();
53}
54
55#[cfg(feature = "NSManagedObject")]
56extern_conformance!(
57    unsafe impl NSFetchRequestResult for NSManagedObject {}
58);
59
60/// NSFetchedResultSupport.
61#[cfg(feature = "NSManagedObjectID")]
62impl NSManagedObjectID {
63    extern_methods!();
64}
65
66#[cfg(feature = "NSManagedObjectID")]
67extern_conformance!(
68    unsafe impl NSFetchRequestResult for NSManagedObjectID {}
69);
70
71extern_class!(
72    /// [Apple's documentation](https://developer.apple.com/documentation/coredata/nsfetchrequest?language=objc)
73    #[unsafe(super(NSPersistentStoreRequest, NSObject))]
74    #[derive(Debug, PartialEq, Eq, Hash)]
75    #[cfg(feature = "NSPersistentStoreRequest")]
76    pub struct NSFetchRequest<ResultType: ?Sized = AnyObject>;
77);
78
79#[cfg(feature = "NSPersistentStoreRequest")]
80impl<ResultType: ?Sized + Message + NSFetchRequestResult> NSFetchRequest<ResultType> {
81    /// Unchecked conversion of the generic parameter.
82    ///
83    /// # Safety
84    ///
85    /// The generic must be valid to reinterpret as the given type.
86    #[inline]
87    pub unsafe fn cast_unchecked<NewResultType: ?Sized + Message + NSFetchRequestResult>(
88        &self,
89    ) -> &NSFetchRequest<NewResultType> {
90        unsafe { &*((self as *const Self).cast()) }
91    }
92}
93
94#[cfg(feature = "NSPersistentStoreRequest")]
95extern_conformance!(
96    unsafe impl<ResultType: ?Sized + NSCoding + NSFetchRequestResult> NSCoding
97        for NSFetchRequest<ResultType>
98    {
99    }
100);
101
102#[cfg(feature = "NSPersistentStoreRequest")]
103extern_conformance!(
104    unsafe impl<ResultType: ?Sized + NSFetchRequestResult> NSCopying for NSFetchRequest<ResultType> {}
105);
106
107#[cfg(feature = "NSPersistentStoreRequest")]
108unsafe impl<ResultType: ?Sized + Message + NSFetchRequestResult> CopyingHelper
109    for NSFetchRequest<ResultType>
110{
111    type Result = Self;
112}
113
114#[cfg(feature = "NSPersistentStoreRequest")]
115extern_conformance!(
116    unsafe impl<ResultType: ?Sized + NSFetchRequestResult> NSObjectProtocol
117        for NSFetchRequest<ResultType>
118    {
119    }
120);
121
122#[cfg(feature = "NSPersistentStoreRequest")]
123impl<ResultType: Message + NSFetchRequestResult> NSFetchRequest<ResultType> {
124    extern_methods!(
125        #[unsafe(method(fetchRequestWithEntityName:))]
126        #[unsafe(method_family = none)]
127        pub unsafe fn fetchRequestWithEntityName(entity_name: &NSString) -> Retained<Self>;
128
129        #[unsafe(method(init))]
130        #[unsafe(method_family = init)]
131        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
132
133        #[unsafe(method(initWithEntityName:))]
134        #[unsafe(method_family = init)]
135        pub unsafe fn initWithEntityName(
136            this: Allocated<Self>,
137            entity_name: &NSString,
138        ) -> Retained<Self>;
139
140        #[unsafe(method(execute:_))]
141        #[unsafe(method_family = none)]
142        pub unsafe fn execute(&self) -> Result<Retained<NSArray<ResultType>>, Retained<NSError>>;
143
144        #[cfg(feature = "NSEntityDescription")]
145        #[unsafe(method(entity))]
146        #[unsafe(method_family = none)]
147        pub unsafe fn entity(&self) -> Option<Retained<NSEntityDescription>>;
148
149        #[cfg(feature = "NSEntityDescription")]
150        /// Setter for [`entity`][Self::entity].
151        #[unsafe(method(setEntity:))]
152        #[unsafe(method_family = none)]
153        pub unsafe fn setEntity(&self, entity: Option<&NSEntityDescription>);
154
155        #[unsafe(method(entityName))]
156        #[unsafe(method_family = none)]
157        pub unsafe fn entityName(&self) -> Option<Retained<NSString>>;
158
159        #[unsafe(method(predicate))]
160        #[unsafe(method_family = none)]
161        pub unsafe fn predicate(&self) -> Option<Retained<NSPredicate>>;
162
163        /// Setter for [`predicate`][Self::predicate].
164        #[unsafe(method(setPredicate:))]
165        #[unsafe(method_family = none)]
166        pub unsafe fn setPredicate(&self, predicate: Option<&NSPredicate>);
167
168        #[unsafe(method(sortDescriptors))]
169        #[unsafe(method_family = none)]
170        pub unsafe fn sortDescriptors(&self) -> Option<Retained<NSArray<NSSortDescriptor>>>;
171
172        /// Setter for [`sortDescriptors`][Self::sortDescriptors].
173        #[unsafe(method(setSortDescriptors:))]
174        #[unsafe(method_family = none)]
175        pub unsafe fn setSortDescriptors(
176            &self,
177            sort_descriptors: Option<&NSArray<NSSortDescriptor>>,
178        );
179
180        #[unsafe(method(fetchLimit))]
181        #[unsafe(method_family = none)]
182        pub unsafe fn fetchLimit(&self) -> NSUInteger;
183
184        /// Setter for [`fetchLimit`][Self::fetchLimit].
185        #[unsafe(method(setFetchLimit:))]
186        #[unsafe(method_family = none)]
187        pub unsafe fn setFetchLimit(&self, fetch_limit: NSUInteger);
188
189        #[cfg(feature = "NSPersistentStore")]
190        #[unsafe(method(affectedStores))]
191        #[unsafe(method_family = none)]
192        pub unsafe fn affectedStores(&self) -> Option<Retained<NSArray<NSPersistentStore>>>;
193
194        #[cfg(feature = "NSPersistentStore")]
195        /// Setter for [`affectedStores`][Self::affectedStores].
196        #[unsafe(method(setAffectedStores:))]
197        #[unsafe(method_family = none)]
198        pub unsafe fn setAffectedStores(
199            &self,
200            affected_stores: Option<&NSArray<NSPersistentStore>>,
201        );
202
203        #[unsafe(method(resultType))]
204        #[unsafe(method_family = none)]
205        pub unsafe fn resultType(&self) -> NSFetchRequestResultType;
206
207        /// Setter for [`resultType`][Self::resultType].
208        #[unsafe(method(setResultType:))]
209        #[unsafe(method_family = none)]
210        pub unsafe fn setResultType(&self, result_type: NSFetchRequestResultType);
211
212        #[unsafe(method(includesSubentities))]
213        #[unsafe(method_family = none)]
214        pub unsafe fn includesSubentities(&self) -> bool;
215
216        /// Setter for [`includesSubentities`][Self::includesSubentities].
217        #[unsafe(method(setIncludesSubentities:))]
218        #[unsafe(method_family = none)]
219        pub unsafe fn setIncludesSubentities(&self, includes_subentities: bool);
220
221        #[unsafe(method(includesPropertyValues))]
222        #[unsafe(method_family = none)]
223        pub unsafe fn includesPropertyValues(&self) -> bool;
224
225        /// Setter for [`includesPropertyValues`][Self::includesPropertyValues].
226        #[unsafe(method(setIncludesPropertyValues:))]
227        #[unsafe(method_family = none)]
228        pub unsafe fn setIncludesPropertyValues(&self, includes_property_values: bool);
229
230        #[unsafe(method(returnsObjectsAsFaults))]
231        #[unsafe(method_family = none)]
232        pub unsafe fn returnsObjectsAsFaults(&self) -> bool;
233
234        /// Setter for [`returnsObjectsAsFaults`][Self::returnsObjectsAsFaults].
235        #[unsafe(method(setReturnsObjectsAsFaults:))]
236        #[unsafe(method_family = none)]
237        pub unsafe fn setReturnsObjectsAsFaults(&self, returns_objects_as_faults: bool);
238
239        #[unsafe(method(relationshipKeyPathsForPrefetching))]
240        #[unsafe(method_family = none)]
241        pub unsafe fn relationshipKeyPathsForPrefetching(
242            &self,
243        ) -> Option<Retained<NSArray<NSString>>>;
244
245        /// Setter for [`relationshipKeyPathsForPrefetching`][Self::relationshipKeyPathsForPrefetching].
246        ///
247        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
248        #[unsafe(method(setRelationshipKeyPathsForPrefetching:))]
249        #[unsafe(method_family = none)]
250        pub unsafe fn setRelationshipKeyPathsForPrefetching(
251            &self,
252            relationship_key_paths_for_prefetching: Option<&NSArray<NSString>>,
253        );
254
255        #[unsafe(method(includesPendingChanges))]
256        #[unsafe(method_family = none)]
257        pub unsafe fn includesPendingChanges(&self) -> bool;
258
259        /// Setter for [`includesPendingChanges`][Self::includesPendingChanges].
260        #[unsafe(method(setIncludesPendingChanges:))]
261        #[unsafe(method_family = none)]
262        pub unsafe fn setIncludesPendingChanges(&self, includes_pending_changes: bool);
263
264        #[unsafe(method(returnsDistinctResults))]
265        #[unsafe(method_family = none)]
266        pub unsafe fn returnsDistinctResults(&self) -> bool;
267
268        /// Setter for [`returnsDistinctResults`][Self::returnsDistinctResults].
269        #[unsafe(method(setReturnsDistinctResults:))]
270        #[unsafe(method_family = none)]
271        pub unsafe fn setReturnsDistinctResults(&self, returns_distinct_results: bool);
272
273        #[unsafe(method(propertiesToFetch))]
274        #[unsafe(method_family = none)]
275        pub unsafe fn propertiesToFetch(&self) -> Option<Retained<NSArray>>;
276
277        /// Setter for [`propertiesToFetch`][Self::propertiesToFetch].
278        ///
279        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
280        ///
281        /// # Safety
282        ///
283        /// `properties_to_fetch` generic should be of the correct type.
284        #[unsafe(method(setPropertiesToFetch:))]
285        #[unsafe(method_family = none)]
286        pub unsafe fn setPropertiesToFetch(&self, properties_to_fetch: Option<&NSArray>);
287
288        #[unsafe(method(fetchOffset))]
289        #[unsafe(method_family = none)]
290        pub unsafe fn fetchOffset(&self) -> NSUInteger;
291
292        /// Setter for [`fetchOffset`][Self::fetchOffset].
293        #[unsafe(method(setFetchOffset:))]
294        #[unsafe(method_family = none)]
295        pub unsafe fn setFetchOffset(&self, fetch_offset: NSUInteger);
296
297        #[unsafe(method(fetchBatchSize))]
298        #[unsafe(method_family = none)]
299        pub unsafe fn fetchBatchSize(&self) -> NSUInteger;
300
301        /// Setter for [`fetchBatchSize`][Self::fetchBatchSize].
302        #[unsafe(method(setFetchBatchSize:))]
303        #[unsafe(method_family = none)]
304        pub unsafe fn setFetchBatchSize(&self, fetch_batch_size: NSUInteger);
305
306        #[unsafe(method(shouldRefreshRefetchedObjects))]
307        #[unsafe(method_family = none)]
308        pub unsafe fn shouldRefreshRefetchedObjects(&self) -> bool;
309
310        /// Setter for [`shouldRefreshRefetchedObjects`][Self::shouldRefreshRefetchedObjects].
311        #[unsafe(method(setShouldRefreshRefetchedObjects:))]
312        #[unsafe(method_family = none)]
313        pub unsafe fn setShouldRefreshRefetchedObjects(
314            &self,
315            should_refresh_refetched_objects: bool,
316        );
317
318        #[unsafe(method(propertiesToGroupBy))]
319        #[unsafe(method_family = none)]
320        pub unsafe fn propertiesToGroupBy(&self) -> Option<Retained<NSArray>>;
321
322        /// Setter for [`propertiesToGroupBy`][Self::propertiesToGroupBy].
323        ///
324        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
325        ///
326        /// # Safety
327        ///
328        /// `properties_to_group_by` generic should be of the correct type.
329        #[unsafe(method(setPropertiesToGroupBy:))]
330        #[unsafe(method_family = none)]
331        pub unsafe fn setPropertiesToGroupBy(&self, properties_to_group_by: Option<&NSArray>);
332
333        #[unsafe(method(havingPredicate))]
334        #[unsafe(method_family = none)]
335        pub unsafe fn havingPredicate(&self) -> Option<Retained<NSPredicate>>;
336
337        /// Setter for [`havingPredicate`][Self::havingPredicate].
338        #[unsafe(method(setHavingPredicate:))]
339        #[unsafe(method_family = none)]
340        pub unsafe fn setHavingPredicate(&self, having_predicate: Option<&NSPredicate>);
341    );
342}
343
344/// Methods declared on superclass `NSObject`.
345#[cfg(feature = "NSPersistentStoreRequest")]
346impl<ResultType: Message + NSFetchRequestResult> NSFetchRequest<ResultType> {
347    extern_methods!(
348        #[unsafe(method(new))]
349        #[unsafe(method_family = new)]
350        pub unsafe fn new() -> Retained<Self>;
351    );
352}
353
354/// [Apple's documentation](https://developer.apple.com/documentation/coredata/nspersistentstoreasynchronousfetchresultcompletionblock?language=objc)
355#[cfg(all(feature = "NSPersistentStoreResult", feature = "block2"))]
356pub type NSPersistentStoreAsynchronousFetchResultCompletionBlock =
357    *mut block2::DynBlock<dyn Fn(NonNull<NSAsynchronousFetchResult>)>;
358
359extern_class!(
360    /// [Apple's documentation](https://developer.apple.com/documentation/coredata/nsasynchronousfetchrequest?language=objc)
361    #[unsafe(super(NSPersistentStoreRequest, NSObject))]
362    #[derive(Debug, PartialEq, Eq, Hash)]
363    #[cfg(feature = "NSPersistentStoreRequest")]
364    pub struct NSAsynchronousFetchRequest<ResultType: ?Sized = AnyObject>;
365);
366
367#[cfg(feature = "NSPersistentStoreRequest")]
368impl<ResultType: ?Sized + Message + NSFetchRequestResult> NSAsynchronousFetchRequest<ResultType> {
369    /// Unchecked conversion of the generic parameter.
370    ///
371    /// # Safety
372    ///
373    /// The generic must be valid to reinterpret as the given type.
374    #[inline]
375    pub unsafe fn cast_unchecked<NewResultType: ?Sized + Message + NSFetchRequestResult>(
376        &self,
377    ) -> &NSAsynchronousFetchRequest<NewResultType> {
378        unsafe { &*((self as *const Self).cast()) }
379    }
380}
381
382#[cfg(feature = "NSPersistentStoreRequest")]
383extern_conformance!(
384    unsafe impl<ResultType: ?Sized + NSFetchRequestResult> NSCopying
385        for NSAsynchronousFetchRequest<ResultType>
386    {
387    }
388);
389
390#[cfg(feature = "NSPersistentStoreRequest")]
391unsafe impl<ResultType: ?Sized + Message + NSFetchRequestResult> CopyingHelper
392    for NSAsynchronousFetchRequest<ResultType>
393{
394    type Result = Self;
395}
396
397#[cfg(feature = "NSPersistentStoreRequest")]
398extern_conformance!(
399    unsafe impl<ResultType: ?Sized + NSFetchRequestResult> NSObjectProtocol
400        for NSAsynchronousFetchRequest<ResultType>
401    {
402    }
403);
404
405#[cfg(feature = "NSPersistentStoreRequest")]
406impl<ResultType: Message + NSFetchRequestResult> NSAsynchronousFetchRequest<ResultType> {
407    extern_methods!(
408        #[unsafe(method(fetchRequest))]
409        #[unsafe(method_family = none)]
410        pub unsafe fn fetchRequest(&self) -> Retained<NSFetchRequest<ResultType>>;
411
412        #[cfg(all(feature = "NSPersistentStoreResult", feature = "block2"))]
413        /// # Safety
414        ///
415        /// The returned block's argument must be a valid pointer.
416        #[unsafe(method(completionBlock))]
417        #[unsafe(method_family = none)]
418        pub unsafe fn completionBlock(
419            &self,
420        ) -> NSPersistentStoreAsynchronousFetchResultCompletionBlock;
421
422        #[unsafe(method(estimatedResultCount))]
423        #[unsafe(method_family = none)]
424        pub unsafe fn estimatedResultCount(&self) -> NSInteger;
425
426        /// Setter for [`estimatedResultCount`][Self::estimatedResultCount].
427        #[unsafe(method(setEstimatedResultCount:))]
428        #[unsafe(method_family = none)]
429        pub unsafe fn setEstimatedResultCount(&self, estimated_result_count: NSInteger);
430
431        #[cfg(all(feature = "NSPersistentStoreResult", feature = "block2"))]
432        #[unsafe(method(initWithFetchRequest:completionBlock:))]
433        #[unsafe(method_family = init)]
434        pub unsafe fn initWithFetchRequest_completionBlock(
435            this: Allocated<Self>,
436            request: &NSFetchRequest<ResultType>,
437            blk: Option<&block2::DynBlock<dyn Fn(NonNull<NSAsynchronousFetchResult<ResultType>>)>>,
438        ) -> Retained<Self>;
439    );
440}
441
442/// Methods declared on superclass `NSObject`.
443#[cfg(feature = "NSPersistentStoreRequest")]
444impl<ResultType: Message + NSFetchRequestResult> NSAsynchronousFetchRequest<ResultType> {
445    extern_methods!(
446        #[unsafe(method(init))]
447        #[unsafe(method_family = init)]
448        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
449
450        #[unsafe(method(new))]
451        #[unsafe(method_family = new)]
452        pub unsafe fn new() -> Retained<Self>;
453    );
454}