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
//! 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::*;
extern_class!(
/// Used to describe a collection of HMRoom objects
///
///
/// This class is used to group a collection of rooms.
/// This allows for association of a set of rooms into a group.
/// Eg. "Living Room" and "Kitchen" rooms can be grouped together
/// in the "Downstairs" zone.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/homekit/hmzone?language=objc)
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct HMZone;
);
unsafe impl Send for HMZone {}
unsafe impl Sync for HMZone {}
extern_conformance!(
unsafe impl NSObjectProtocol for HMZone {}
);
impl HMZone {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
/// Name of the zone.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(name))]
#[unsafe(method_family = none)]
pub unsafe fn name(&self) -> Retained<NSString>;
#[cfg(feature = "HMRoom")]
/// Array of HMRoom objects that correspond to the rooms contained in this zone.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(rooms))]
#[unsafe(method_family = none)]
pub unsafe fn rooms(&self) -> Retained<NSArray<HMRoom>>;
/// A unique identifier for the zone.
///
/// This property is not atomic.
///
/// # Safety
///
/// This might not be thread-safe.
#[unsafe(method(uniqueIdentifier))]
#[unsafe(method_family = none)]
pub unsafe fn uniqueIdentifier(&self) -> Retained<NSUUID>;
#[cfg(feature = "block2")]
/// This method is used to change the name of the zone.
///
///
/// Parameter `name`: New name for the zone.
///
///
/// Parameter `completion`: Block that is invoked once the request is processed.
/// The NSError provides more information on the status of the request, error
/// will be nil on success.
#[unsafe(method(updateName:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn updateName_completionHandler(
&self,
name: &NSString,
completion: &block2::DynBlock<dyn Fn(*mut NSError)>,
);
#[cfg(all(feature = "HMRoom", feature = "block2"))]
/// Adds a room to a zone.
///
///
/// Both the room and the zone should be part of the home. A room can be added to multiple
/// zones, e.g., a room "Kitchen" can be added to "Downstairs" as well as "Outdoor" zones.
///
///
/// Parameter `room`: Room to add to this zone.
///
///
/// Parameter `completion`: Block that is invoked once the request is processed.
/// The NSError provides more information on the status of the request, error
/// will be nil on success.
#[unsafe(method(addRoom:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn addRoom_completionHandler(
&self,
room: &HMRoom,
completion: &block2::DynBlock<dyn Fn(*mut NSError)>,
);
#[cfg(all(feature = "HMRoom", feature = "block2"))]
/// Removes a room from the zone.
///
///
/// Parameter `room`: Room to remove from this zone.
///
///
/// Parameter `completion`: Block that is invoked once the request is processed.
/// The NSError provides more information on the status of the request, error
/// will be nil on success.
#[unsafe(method(removeRoom:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn removeRoom_completionHandler(
&self,
room: &HMRoom,
completion: &block2::DynBlock<dyn Fn(*mut NSError)>,
);
);
}
/// Methods declared on superclass `NSObject`.
impl HMZone {
extern_methods!(
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}