root / lab4 / .minix-src / include / prop / prop_dictionary.h @ 14
History | View | Annotate | Download (6.74 KB)
1 | 13 | up20180614 | /* $NetBSD: prop_dictionary.h,v 1.14 2011/09/30 22:08:18 jym Exp $ */
|
---|---|---|---|
2 | |||
3 | /*-
|
||
4 | * Copyright (c) 2006, 2009 The NetBSD Foundation, Inc.
|
||
5 | * All rights reserved.
|
||
6 | *
|
||
7 | * This code is derived from software contributed to The NetBSD Foundation
|
||
8 | * by Jason R. Thorpe.
|
||
9 | *
|
||
10 | * Redistribution and use in source and binary forms, with or without
|
||
11 | * modification, are permitted provided that the following conditions
|
||
12 | * are met:
|
||
13 | * 1. Redistributions of source code must retain the above copyright
|
||
14 | * notice, this list of conditions and the following disclaimer.
|
||
15 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
16 | * notice, this list of conditions and the following disclaimer in the
|
||
17 | * documentation and/or other materials provided with the distribution.
|
||
18 | *
|
||
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
29 | * POSSIBILITY OF SUCH DAMAGE.
|
||
30 | */
|
||
31 | |||
32 | #ifndef _PROPLIB_PROP_DICTIONARY_H_
|
||
33 | #define _PROPLIB_PROP_DICTIONARY_H_
|
||
34 | |||
35 | #include <prop/prop_object.h> |
||
36 | |||
37 | typedef struct _prop_dictionary *prop_dictionary_t; |
||
38 | typedef struct _prop_dictionary_keysym *prop_dictionary_keysym_t; |
||
39 | |||
40 | __BEGIN_DECLS |
||
41 | prop_dictionary_t prop_dictionary_create(void);
|
||
42 | prop_dictionary_t prop_dictionary_create_with_capacity(unsigned int); |
||
43 | |||
44 | prop_dictionary_t prop_dictionary_copy(prop_dictionary_t); |
||
45 | prop_dictionary_t prop_dictionary_copy_mutable(prop_dictionary_t); |
||
46 | |||
47 | unsigned int prop_dictionary_count(prop_dictionary_t); |
||
48 | bool prop_dictionary_ensure_capacity(prop_dictionary_t,
|
||
49 | unsigned int); |
||
50 | |||
51 | void prop_dictionary_make_immutable(prop_dictionary_t);
|
||
52 | bool prop_dictionary_mutable(prop_dictionary_t);
|
||
53 | |||
54 | prop_object_iterator_t prop_dictionary_iterator(prop_dictionary_t); |
||
55 | prop_array_t prop_dictionary_all_keys(prop_dictionary_t); |
||
56 | |||
57 | prop_object_t prop_dictionary_get(prop_dictionary_t, const char *); |
||
58 | bool prop_dictionary_set(prop_dictionary_t, const char *, |
||
59 | prop_object_t); |
||
60 | void prop_dictionary_remove(prop_dictionary_t, const char *); |
||
61 | |||
62 | prop_object_t prop_dictionary_get_keysym(prop_dictionary_t, |
||
63 | prop_dictionary_keysym_t); |
||
64 | bool prop_dictionary_set_keysym(prop_dictionary_t,
|
||
65 | prop_dictionary_keysym_t, |
||
66 | prop_object_t); |
||
67 | void prop_dictionary_remove_keysym(prop_dictionary_t,
|
||
68 | prop_dictionary_keysym_t); |
||
69 | |||
70 | bool prop_dictionary_equals(prop_dictionary_t, prop_dictionary_t);
|
||
71 | |||
72 | char * prop_dictionary_externalize(prop_dictionary_t);
|
||
73 | prop_dictionary_t prop_dictionary_internalize(const char *); |
||
74 | |||
75 | bool prop_dictionary_externalize_to_file(prop_dictionary_t,
|
||
76 | const char *); |
||
77 | prop_dictionary_t prop_dictionary_internalize_from_file(const char *); |
||
78 | |||
79 | const char * prop_dictionary_keysym_cstring_nocopy(prop_dictionary_keysym_t); |
||
80 | |||
81 | bool prop_dictionary_keysym_equals(prop_dictionary_keysym_t,
|
||
82 | prop_dictionary_keysym_t); |
||
83 | |||
84 | #if defined(__NetBSD__)
|
||
85 | struct plistref;
|
||
86 | |||
87 | #if !defined(_KERNEL) && !defined(_STANDALONE)
|
||
88 | bool prop_dictionary_externalize_to_pref(prop_dictionary_t, struct plistref *); |
||
89 | bool prop_dictionary_internalize_from_pref(const struct plistref *, |
||
90 | prop_dictionary_t *); |
||
91 | int prop_dictionary_send_ioctl(prop_dictionary_t, int, |
||
92 | unsigned long); |
||
93 | int prop_dictionary_recv_ioctl(int, unsigned long, |
||
94 | prop_dictionary_t *); |
||
95 | int prop_dictionary_sendrecv_ioctl(prop_dictionary_t,
|
||
96 | int, unsigned long, |
||
97 | prop_dictionary_t *); |
||
98 | int prop_dictionary_send_syscall(prop_dictionary_t,
|
||
99 | struct plistref *);
|
||
100 | int prop_dictionary_recv_syscall(const struct plistref *, |
||
101 | prop_dictionary_t *); |
||
102 | #elif defined(_KERNEL)
|
||
103 | int prop_dictionary_copyin(const struct plistref *, |
||
104 | prop_dictionary_t *); |
||
105 | int prop_dictionary_copyout(struct plistref *, |
||
106 | prop_dictionary_t); |
||
107 | int prop_dictionary_copyin_ioctl(const struct plistref *, |
||
108 | const u_long,
|
||
109 | prop_dictionary_t *); |
||
110 | int prop_dictionary_copyout_ioctl(struct plistref *, |
||
111 | const u_long,
|
||
112 | prop_dictionary_t); |
||
113 | #endif
|
||
114 | #endif /* __NetBSD__ */ |
||
115 | |||
116 | /*
|
||
117 | * Utility routines to make it more convenient to work with values
|
||
118 | * stored in dictionaries.
|
||
119 | */
|
||
120 | bool prop_dictionary_get_dict(prop_dictionary_t, const char *, |
||
121 | prop_dictionary_t *); |
||
122 | bool prop_dictionary_get_bool(prop_dictionary_t, const char *, |
||
123 | bool *);
|
||
124 | bool prop_dictionary_set_bool(prop_dictionary_t, const char *, |
||
125 | bool);
|
||
126 | |||
127 | bool prop_dictionary_get_int8(prop_dictionary_t, const char *, |
||
128 | int8_t *); |
||
129 | bool prop_dictionary_get_uint8(prop_dictionary_t, const char *, |
||
130 | uint8_t *); |
||
131 | bool prop_dictionary_set_int8(prop_dictionary_t, const char *, |
||
132 | int8_t); |
||
133 | bool prop_dictionary_set_uint8(prop_dictionary_t, const char *, |
||
134 | uint8_t); |
||
135 | |||
136 | bool prop_dictionary_get_int16(prop_dictionary_t, const char *, |
||
137 | int16_t *); |
||
138 | bool prop_dictionary_get_uint16(prop_dictionary_t, const char *, |
||
139 | uint16_t *); |
||
140 | bool prop_dictionary_set_int16(prop_dictionary_t, const char *, |
||
141 | int16_t); |
||
142 | bool prop_dictionary_set_uint16(prop_dictionary_t, const char *, |
||
143 | uint16_t); |
||
144 | |||
145 | bool prop_dictionary_get_int32(prop_dictionary_t, const char *, |
||
146 | int32_t *); |
||
147 | bool prop_dictionary_get_uint32(prop_dictionary_t, const char *, |
||
148 | uint32_t *); |
||
149 | bool prop_dictionary_set_int32(prop_dictionary_t, const char *, |
||
150 | int32_t); |
||
151 | bool prop_dictionary_set_uint32(prop_dictionary_t, const char *, |
||
152 | uint32_t); |
||
153 | |||
154 | bool prop_dictionary_get_int64(prop_dictionary_t, const char *, |
||
155 | int64_t *); |
||
156 | bool prop_dictionary_get_uint64(prop_dictionary_t, const char *, |
||
157 | uint64_t *); |
||
158 | bool prop_dictionary_set_int64(prop_dictionary_t, const char *, |
||
159 | int64_t); |
||
160 | bool prop_dictionary_set_uint64(prop_dictionary_t, const char *, |
||
161 | uint64_t); |
||
162 | |||
163 | bool prop_dictionary_get_cstring(prop_dictionary_t, const char *, |
||
164 | char **);
|
||
165 | bool prop_dictionary_set_cstring(prop_dictionary_t, const char *, |
||
166 | const char *); |
||
167 | |||
168 | bool prop_dictionary_get_cstring_nocopy(prop_dictionary_t,
|
||
169 | const char *, |
||
170 | const char **); |
||
171 | bool prop_dictionary_set_cstring_nocopy(prop_dictionary_t,
|
||
172 | const char *, |
||
173 | const char *); |
||
174 | |||
175 | bool prop_dictionary_set_and_rel(prop_dictionary_t,
|
||
176 | const char *, |
||
177 | prop_object_t); |
||
178 | |||
179 | __END_DECLS |
||
180 | |||
181 | #endif /* _PROPLIB_PROP_DICTIONARY_H_ */ |