1 /* 2 * Copyright (c) 2020 Apple Inc. All rights reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef __MDNS_SET_H__ 18 #define __MDNS_SET_H__ 19 20 #include "mdns_base.h" 21 #include "mdns_object.h" 22 23 #include <MacTypes.h> 24 25 MDNS_DECL(set); 26 27 MDNS_ASSUME_NONNULL_BEGIN 28 29 __BEGIN_DECLS 30 31 MDNS_RETURNS_RETAINED MDNS_WARN_RESULT _Nullable 32 mdns_set_t 33 mdns_set_create(void); 34 35 OSStatus 36 mdns_set_add(mdns_set_t set, uintptr_t subset_id, mdns_any_t any); 37 38 OSStatus 39 mdns_set_remove(mdns_set_t set, uintptr_t subset_id, mdns_any_t any); 40 41 size_t 42 mdns_set_get_count(mdns_set_t set, uintptr_t subset_id); 43 44 typedef bool (^mdns_set_applier_t)(mdns_object_t object); 45 46 void 47 mdns_set_iterate(mdns_set_t set, uintptr_t subset_id, mdns_set_applier_t applier); 48 49 __END_DECLS 50 51 MDNS_ASSUME_NONNULL_END 52 53 #endif // __MDNS_SET_H__ 54