|
11 | 11 | NSArray, NSSharedArray, NSEnumerator, |
12 | 12 | }; |
13 | 13 |
|
| 14 | +unsafe fn from_refs<D, T>(keys: &[&T], vals: &[&D::Value]) -> Id<D> |
| 15 | + where D: INSDictionary, T: INSCopying<Output=D::Key> { |
| 16 | + let cls = D::class(); |
| 17 | + let count = min(keys.len(), vals.len()); |
| 18 | + let obj: *mut D = msg_send![cls, alloc]; |
| 19 | + let obj: *mut D = msg_send![obj, initWithObjects:vals.as_ptr() |
| 20 | + forKeys:keys.as_ptr() |
| 21 | + count:count]; |
| 22 | + Id::from_retained_ptr(obj) |
| 23 | +} |
| 24 | + |
14 | 25 | pub trait INSDictionary : INSObject { |
15 | 26 | type Key: INSObject; |
16 | 27 | type Value: INSObject; |
@@ -85,23 +96,12 @@ pub trait INSDictionary : INSObject { |
85 | 96 | } |
86 | 97 | } |
87 | 98 |
|
88 | | - unsafe fn from_refs<T>(keys: &[&T], vals: &[&Self::Value]) -> Id<Self> |
89 | | - where T: INSCopying<Output=Self::Key> { |
90 | | - let cls = Self::class(); |
91 | | - let count = min(keys.len(), vals.len()); |
92 | | - let obj: *mut Self = msg_send![cls, alloc]; |
93 | | - let obj: *mut Self = msg_send![obj, initWithObjects:vals.as_ptr() |
94 | | - forKeys:keys.as_ptr() |
95 | | - count:count]; |
96 | | - Id::from_retained_ptr(obj) |
97 | | - } |
98 | | - |
99 | 99 | fn from_keys_and_objects<T>(keys: &[&T], |
100 | 100 | vals: Vec<Id<Self::Value, Self::Own>>) -> Id<Self> |
101 | 101 | where T: INSCopying<Output=Self::Key> { |
102 | 102 | let vals_refs: Vec<&Self::Value> = vals.iter().map(|obj| &**obj).collect(); |
103 | 103 | unsafe { |
104 | | - INSDictionary::from_refs(keys, &vals_refs) |
| 104 | + from_refs(keys, &vals_refs) |
105 | 105 | } |
106 | 106 | } |
107 | 107 |
|
|
0 commit comments