-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtable.h
78 lines (62 loc) · 2.53 KB
/
table.h
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
/*
* Copyright (c) 2003-2011 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
#ifndef _NOTIFY_TABLE_H_
#define _NOTIFY_TABLE_H_
#include <os/base.h>
#include <stdint.h>
#include <stdbool.h>
#include <os/collections.h>
struct _nc_table_ns {
os_set_str_ptr_t set;
size_t key_offset;
};
struct _nc_table_n_ns {
os_set_32_ptr_t set;
size_t key_offset;
};
struct _nc_table_64_ns {
os_set_64_ptr_t set;
size_t key_offset;
};
typedef struct _nc_table_ns table_t;
typedef struct _nc_table_n_ns table_n_t;
typedef struct _nc_table_64_ns table_64_t;
__BEGIN_DECLS
extern void _nc_table_init(table_t *t, size_t key_offset);
extern void _nc_table_init_n(table_n_t *t, size_t key_offset);
extern void _nc_table_init_64(table_64_t *t, size_t key_offset);
extern void _nc_table_insert(table_t *t, char **key);
extern void _nc_table_insert_n(table_n_t *t, uint32_t *key);
extern void _nc_table_insert_64(table_64_t *t, uint64_t *key);
extern void *_nc_table_find(table_t *t, const char *key);
extern void *_nc_table_find_n(table_n_t *t, uint32_t key);
extern void *_nc_table_find_64(table_64_t *t, uint64_t key);
extern void _nc_table_delete(table_t *t, const char *key, char **expected);
extern void _nc_table_delete_n(table_n_t *t, uint32_t key, uint32_t *expected);
extern void _nc_table_delete_64(table_64_t *t, uint64_t key, uint64_t *expected);
typedef bool (^payload_handler_t) (void *);
extern void _nc_table_foreach(table_t *t, OS_NOESCAPE payload_handler_t handler);
extern void _nc_table_foreach_n(table_n_t *t, OS_NOESCAPE payload_handler_t handler);
extern void _nc_table_foreach_64(table_64_t *t,OS_NOESCAPE payload_handler_t handler);
__END_DECLS
#endif /* _NOTIFY_TABLE_H_ */