1 /* ccapi/server/ccs_array.c */
2 /*
3 * Copyright 2006, 2007 Massachusetts Institute of Technology.
4 * All Rights Reserved.
5 *
6 * Export of this software from the United States of America may
7 * require a specific license from the United States Government.
8 * It is the responsibility of any person or organization contemplating
9 * export to obtain such a license before exporting.
10 *
11 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
12 * distribute this software and its documentation for any purpose and
13 * without fee is hereby granted, provided that the above copyright
14 * notice appear in all copies and that both that copyright notice and
15 * this permission notice appear in supporting documentation, and that
16 * the name of M.I.T. not be used in advertising or publicity pertaining
17 * to distribution of the software without specific, written prior
18 * permission. Furthermore if you modify this software you must label
19 * your software as modified software and not distribute it in such a
20 * fashion that it might be confused with the original M.I.T. software.
21 * M.I.T. makes no representations about the suitability of
22 * this software for any purpose. It is provided "as is" without express
23 * or implied warranty.
24 */
25
26 #include "ccs_common.h"
27 #include "cci_array_internal.h"
28
29 /* ------------------------------------------------------------------------ */
30
ccs_client_object_release(cci_array_object_t io_client)31 static cc_int32 ccs_client_object_release (cci_array_object_t io_client)
32 {
33 return cci_check_error (ccs_client_release ((ccs_client_t) io_client));
34 }
35
36 /* ------------------------------------------------------------------------ */
37
ccs_client_array_new(ccs_client_array_t * out_array)38 cc_int32 ccs_client_array_new (ccs_client_array_t *out_array)
39 {
40 return cci_array_new (out_array, ccs_client_object_release);
41 }
42
43 /* ------------------------------------------------------------------------ */
44
ccs_client_array_release(ccs_client_array_t io_array)45 cc_int32 ccs_client_array_release (ccs_client_array_t io_array)
46 {
47 return cci_array_release (io_array);
48 }
49
50 /* ------------------------------------------------------------------------ */
51
ccs_client_array_count(ccs_client_array_t in_array)52 cc_uint64 ccs_client_array_count (ccs_client_array_t in_array)
53 {
54 return cci_array_count (in_array);
55 }
56
57 /* ------------------------------------------------------------------------ */
58
ccs_client_array_object_at_index(ccs_client_array_t io_array,cc_uint64 in_position)59 ccs_client_t ccs_client_array_object_at_index (ccs_client_array_t io_array,
60 cc_uint64 in_position)
61 {
62 return (ccs_client_t) cci_array_object_at_index (io_array, in_position);
63 }
64
65 /* ------------------------------------------------------------------------ */
66
ccs_client_array_insert(ccs_client_array_t io_array,ccs_client_t in_client,cc_uint64 in_position)67 cc_int32 ccs_client_array_insert (ccs_client_array_t io_array,
68 ccs_client_t in_client,
69 cc_uint64 in_position)
70 {
71 return cci_array_insert (io_array, (cci_array_object_t) in_client, in_position);
72 }
73
74 /* ------------------------------------------------------------------------ */
75
ccs_client_array_remove(ccs_client_array_t io_array,cc_uint64 in_position)76 cc_int32 ccs_client_array_remove (ccs_client_array_t io_array,
77 cc_uint64 in_position)
78 {
79 return cci_array_remove (io_array, in_position);
80 }
81
82 #ifdef TARGET_OS_MAC
83 #pragma mark -
84 #endif
85
86 /* ------------------------------------------------------------------------ */
87
ccs_lock_object_release(cci_array_object_t io_lock)88 static cc_int32 ccs_lock_object_release (cci_array_object_t io_lock)
89 {
90 return cci_check_error (ccs_lock_release ((ccs_lock_t) io_lock));
91 }
92
93 /* ------------------------------------------------------------------------ */
94
ccs_lock_array_new(ccs_lock_array_t * out_array)95 cc_int32 ccs_lock_array_new (ccs_lock_array_t *out_array)
96 {
97 return cci_array_new (out_array, ccs_lock_object_release);
98 }
99
100 /* ------------------------------------------------------------------------ */
101
ccs_lock_array_release(ccs_lock_array_t io_array)102 cc_int32 ccs_lock_array_release (ccs_lock_array_t io_array)
103 {
104 return cci_array_release (io_array);
105 }
106
107 /* ------------------------------------------------------------------------ */
108
ccs_lock_array_count(ccs_lock_array_t in_array)109 cc_uint64 ccs_lock_array_count (ccs_lock_array_t in_array)
110 {
111 return cci_array_count (in_array);
112 }
113
114 /* ------------------------------------------------------------------------ */
115
ccs_lock_array_object_at_index(ccs_lock_array_t io_array,cc_uint64 in_position)116 ccs_lock_t ccs_lock_array_object_at_index (ccs_lock_array_t io_array,
117 cc_uint64 in_position)
118 {
119 return (ccs_lock_t) cci_array_object_at_index (io_array, in_position);
120 }
121
122 /* ------------------------------------------------------------------------ */
123
ccs_lock_array_insert(ccs_lock_array_t io_array,ccs_lock_t in_lock,cc_uint64 in_position)124 cc_int32 ccs_lock_array_insert (ccs_lock_array_t io_array,
125 ccs_lock_t in_lock,
126 cc_uint64 in_position)
127 {
128 return cci_array_insert (io_array, (cci_array_object_t) in_lock, in_position);
129 }
130
131 /* ------------------------------------------------------------------------ */
132
ccs_lock_array_remove(ccs_lock_array_t io_array,cc_uint64 in_position)133 cc_int32 ccs_lock_array_remove (ccs_lock_array_t io_array,
134 cc_uint64 in_position)
135 {
136 return cci_array_remove (io_array, in_position);
137 }
138
139 /* ------------------------------------------------------------------------ */
ccs_lock_array_move(ccs_lock_array_t io_array,cc_uint64 in_position,cc_uint64 in_new_position,cc_uint64 * out_real_new_position)140 cc_int32 ccs_lock_array_move (ccs_lock_array_t io_array,
141 cc_uint64 in_position,
142 cc_uint64 in_new_position,
143 cc_uint64 *out_real_new_position)
144 {
145 return cci_array_move (io_array, in_position, in_new_position, out_real_new_position);
146 }
147
148 #ifdef TARGET_OS_MAC
149 #pragma mark -
150 #endif
151
152 /* ------------------------------------------------------------------------ */
153
ccs_callback_object_release(cci_array_object_t io_callback)154 static cc_int32 ccs_callback_object_release (cci_array_object_t io_callback)
155 {
156 return cci_check_error (ccs_callback_release ((ccs_callback_t) io_callback));
157 }
158
159 /* ------------------------------------------------------------------------ */
160
ccs_callback_array_new(ccs_callback_array_t * out_array)161 cc_int32 ccs_callback_array_new (ccs_callback_array_t *out_array)
162 {
163 return cci_array_new (out_array, ccs_callback_object_release);
164 }
165
166 /* ------------------------------------------------------------------------ */
167
ccs_callback_array_release(ccs_callback_array_t io_array)168 cc_int32 ccs_callback_array_release (ccs_callback_array_t io_array)
169 {
170 return cci_array_release (io_array);
171 }
172
173 /* ------------------------------------------------------------------------ */
174
ccs_callback_array_count(ccs_callback_array_t in_array)175 cc_uint64 ccs_callback_array_count (ccs_callback_array_t in_array)
176 {
177 return cci_array_count (in_array);
178 }
179
180 /* ------------------------------------------------------------------------ */
181
ccs_callback_array_object_at_index(ccs_callback_array_t io_array,cc_uint64 in_position)182 ccs_callback_t ccs_callback_array_object_at_index (ccs_callback_array_t io_array,
183 cc_uint64 in_position)
184 {
185 return (ccs_callback_t) cci_array_object_at_index (io_array, in_position);
186 }
187
188 /* ------------------------------------------------------------------------ */
189
ccs_callback_array_insert(ccs_callback_array_t io_array,ccs_callback_t in_callback,cc_uint64 in_position)190 cc_int32 ccs_callback_array_insert (ccs_callback_array_t io_array,
191 ccs_callback_t in_callback,
192 cc_uint64 in_position)
193 {
194 return cci_array_insert (io_array, (cci_array_object_t) in_callback, in_position);
195 }
196
197 /* ------------------------------------------------------------------------ */
198
ccs_callback_array_remove(ccs_callback_array_t io_array,cc_uint64 in_position)199 cc_int32 ccs_callback_array_remove (ccs_callback_array_t io_array,
200 cc_uint64 in_position)
201 {
202 return cci_array_remove (io_array, in_position);
203 }
204
205 #ifdef TARGET_OS_MAC
206 #pragma mark -
207 #endif
208
209
210 /* ------------------------------------------------------------------------ */
211
ccs_callbackref_array_new(ccs_callbackref_array_t * out_array)212 cc_int32 ccs_callbackref_array_new (ccs_callbackref_array_t *out_array)
213 {
214 /* Ref arrays do not own their contents; pass NULL for release function */
215 return cci_array_new (out_array, NULL);
216 }
217
218 /* ------------------------------------------------------------------------ */
219
ccs_callbackref_array_release(ccs_callbackref_array_t io_array)220 cc_int32 ccs_callbackref_array_release (ccs_callbackref_array_t io_array)
221 {
222 return cci_array_release (io_array);
223 }
224
225 /* ------------------------------------------------------------------------ */
226
ccs_callbackref_array_count(ccs_callbackref_array_t in_array)227 cc_uint64 ccs_callbackref_array_count (ccs_callbackref_array_t in_array)
228 {
229 return cci_array_count (in_array);
230 }
231
232 /* ------------------------------------------------------------------------ */
233
ccs_callbackref_array_object_at_index(ccs_callbackref_array_t io_array,cc_uint64 in_position)234 ccs_callback_t ccs_callbackref_array_object_at_index (ccs_callbackref_array_t io_array,
235 cc_uint64 in_position)
236 {
237 return (ccs_callback_t) cci_array_object_at_index (io_array, in_position);
238 }
239
240 /* ------------------------------------------------------------------------ */
241
ccs_callbackref_array_insert(ccs_callbackref_array_t io_array,ccs_callback_t in_callback,cc_uint64 in_position)242 cc_int32 ccs_callbackref_array_insert (ccs_callbackref_array_t io_array,
243 ccs_callback_t in_callback,
244 cc_uint64 in_position)
245 {
246 return cci_array_insert (io_array, (cci_array_object_t) in_callback, in_position);
247 }
248
249 /* ------------------------------------------------------------------------ */
250
ccs_callbackref_array_remove(ccs_callbackref_array_t io_array,cc_uint64 in_position)251 cc_int32 ccs_callbackref_array_remove (ccs_callbackref_array_t io_array,
252 cc_uint64 in_position)
253 {
254 return cci_array_remove (io_array, in_position);
255 }
256
257 #ifdef TARGET_OS_MAC
258 #pragma mark -
259 #endif
260
261 /* ------------------------------------------------------------------------ */
262
ccs_iteratorref_array_new(ccs_iteratorref_array_t * out_array)263 cc_int32 ccs_iteratorref_array_new (ccs_iteratorref_array_t *out_array)
264 {
265 /* Ref arrays do not own their contents; pass NULL for release function */
266 return cci_array_new (out_array, NULL);
267 }
268
269 /* ------------------------------------------------------------------------ */
270
ccs_iteratorref_array_release(ccs_iteratorref_array_t io_array)271 cc_int32 ccs_iteratorref_array_release (ccs_iteratorref_array_t io_array)
272 {
273 return cci_array_release (io_array);
274 }
275
276 /* ------------------------------------------------------------------------ */
277
ccs_iteratorref_array_count(ccs_iteratorref_array_t in_array)278 cc_uint64 ccs_iteratorref_array_count (ccs_iteratorref_array_t in_array)
279 {
280 return cci_array_count (in_array);
281 }
282
283 /* ------------------------------------------------------------------------ */
284
ccs_iteratorref_array_object_at_index(ccs_iteratorref_array_t io_array,cc_uint64 in_position)285 ccs_generic_list_iterator_t ccs_iteratorref_array_object_at_index (ccs_iteratorref_array_t io_array,
286 cc_uint64 in_position)
287 {
288 return (ccs_generic_list_iterator_t) cci_array_object_at_index (io_array,
289 in_position);
290 }
291
292 /* ------------------------------------------------------------------------ */
293
ccs_iteratorref_array_insert(ccs_iteratorref_array_t io_array,ccs_generic_list_iterator_t in_iterator,cc_uint64 in_position)294 cc_int32 ccs_iteratorref_array_insert (ccs_iteratorref_array_t io_array,
295 ccs_generic_list_iterator_t in_iterator,
296 cc_uint64 in_position)
297 {
298 return cci_array_insert (io_array,
299 (cci_array_object_t) in_iterator,
300 in_position);
301 }
302
303 /* ------------------------------------------------------------------------ */
304
ccs_iteratorref_array_remove(ccs_iteratorref_array_t io_array,cc_uint64 in_position)305 cc_int32 ccs_iteratorref_array_remove (ccs_iteratorref_array_t io_array,
306 cc_uint64 in_position)
307 {
308 return cci_array_remove (io_array, in_position);
309 }
310