caffeine-sal 0.1.17
Header-only polymorphic middleware services layer for the Caffeine Framework
Loading...
Searching...
No Matches
cfn_sal_utl_collection.h
Go to the documentation of this file.
1
6#ifndef CAFFEINE_SAL_UTL_COLLECTION_H
7#define CAFFEINE_SAL_UTL_COLLECTION_H
8
9#ifdef __cplusplus
10extern "C"
11{
12#endif
13
14/* Includes ---------------------------------------------------------*/
15#include "cfn_sal.h"
16
17/* Defines ----------------------------------------------------------*/
18
22#define CFN_SAL_UTL_TYPE_COLLECTION CFN_SAL_TYPE('C', 'O', 'L')
23
24/* Types Enums ------------------------------------------------------*/
25
26/* Types Structs ----------------------------------------------------*/
27
31typedef struct
32{
33 size_t item_size;
34 void *custom;
36
37typedef struct cfn_sal_utl_collection_s cfn_sal_utl_collection_t;
39
44 uint32_t event_mask,
45 uint32_t error_mask,
46 void *user_arg);
47
52{
53 cfn_hal_api_base_t base;
54
55 /* Write Operations */
56 cfn_hal_error_code_t (*push_back)(cfn_sal_utl_collection_t *driver, const void *item);
57 cfn_hal_error_code_t (*push_front)(cfn_sal_utl_collection_t *driver, const void *item);
58 cfn_hal_error_code_t (*insert_at)(cfn_sal_utl_collection_t *driver, size_t index, const void *item);
59
60 /* Read/Remove Operations */
61 cfn_hal_error_code_t (*pop_back)(cfn_sal_utl_collection_t *driver, void *item_out);
62 cfn_hal_error_code_t (*pop_front)(cfn_sal_utl_collection_t *driver, void *item_out);
63 cfn_hal_error_code_t (*remove_at)(cfn_sal_utl_collection_t *driver, size_t index, void *item_out);
64
65 /* Inspection Operations */
66 cfn_hal_error_code_t (*peek_back)(cfn_sal_utl_collection_t *driver, void *item_out);
67 cfn_hal_error_code_t (*peek_front)(cfn_sal_utl_collection_t *driver, void *item_out);
68 cfn_hal_error_code_t (*peek_at)(cfn_sal_utl_collection_t *driver, size_t index, void *item_out);
69 cfn_hal_error_code_t (*find)(cfn_sal_utl_collection_t *driver, const void *item, size_t *index_out);
70
71 /* State Operations */
72 cfn_hal_error_code_t (*get_size)(cfn_sal_utl_collection_t *driver, size_t *size_out);
73 cfn_hal_error_code_t (*get_capacity)(cfn_sal_utl_collection_t *driver, size_t *capacity_out);
74 cfn_hal_error_code_t (*is_empty)(cfn_sal_utl_collection_t *driver, bool *is_empty_out);
75 cfn_hal_error_code_t (*is_full)(cfn_sal_utl_collection_t *driver, bool *is_full_out);
76 cfn_hal_error_code_t (*clear)(cfn_sal_utl_collection_t *driver);
77 cfn_hal_error_code_t (*sort)(cfn_sal_utl_collection_t *driver, void *compare_func);
78};
79
81
82CFN_SAL_CREATE_DRIVER_TYPE(sal_utl_collection,
87
88/* Functions inline ------------------------------------------------- */
89
91 uint32_t peripheral_id,
92 void *dependency,
94 const cfn_sal_phy_t *phy,
97 void *user_arg)
98{
99 CFN_HAL_POPULATE_DRIVER(
100 driver, CFN_SAL_UTL_TYPE_COLLECTION, peripheral_id, NULL, dependency, api, phy, config, callback, user_arg);
101}
102
105 const cfn_sal_phy_t *phy,
106 void *dependency,
108 void *user_arg);
110
114CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_init(cfn_sal_utl_collection_t *driver)
115{
116 if (!driver)
117 {
118 return CFN_HAL_ERROR_BAD_PARAM;
119 }
120 driver->base.vmt = (const struct cfn_hal_api_base_s *) driver->api;
121 return cfn_hal_base_init(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION);
122}
123
127CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_deinit(cfn_sal_utl_collection_t *driver)
128{
129 if (!driver)
130 {
131 return CFN_HAL_ERROR_BAD_PARAM;
132 }
133 return cfn_hal_base_deinit(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION);
134}
135
139CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_config_set(cfn_sal_utl_collection_t *driver,
141{
142 if (!driver)
143 {
144 return CFN_HAL_ERROR_BAD_PARAM;
145 }
146 driver->config = config;
147 return cfn_hal_base_config_set(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION, (const void *) config);
148}
149
153CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_config_get(cfn_sal_utl_collection_t *driver,
155{
156 if (!driver || !config || !driver->config)
157 {
158 return CFN_HAL_ERROR_BAD_PARAM;
159 }
160 *config = *(driver->config);
161 return CFN_HAL_ERROR_OK;
162}
163
167CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_callback_register(cfn_sal_utl_collection_t *driver,
169 void *user_arg)
170{
171 if (!driver)
172 {
173 return CFN_HAL_ERROR_BAD_PARAM;
174 }
175 driver->cb = callback;
176 driver->cb_user_arg = user_arg;
177 return cfn_hal_base_callback_register(
178 &driver->base, CFN_SAL_UTL_TYPE_COLLECTION, (cfn_hal_callback_t) callback, user_arg);
179}
180
184CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_power_state_set(cfn_sal_utl_collection_t *driver,
185 cfn_hal_power_state_t state)
186{
187 if (!driver)
188 {
189 return CFN_HAL_ERROR_BAD_PARAM;
190 }
191 return cfn_hal_power_state_set(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION, state);
192}
193
197CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_enable(cfn_sal_utl_collection_t *driver,
198 uint32_t event_mask)
199{
200 if (!driver)
201 {
202 return CFN_HAL_ERROR_BAD_PARAM;
203 }
204 return cfn_hal_base_event_enable(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION, event_mask);
205}
206
210CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_disable(cfn_sal_utl_collection_t *driver,
211 uint32_t event_mask)
212{
213 if (!driver)
214 {
215 return CFN_HAL_ERROR_BAD_PARAM;
216 }
217 return cfn_hal_base_event_disable(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION, event_mask);
218}
219
223CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_get(cfn_sal_utl_collection_t *driver,
224 uint32_t *event_mask)
225{
226 if (!driver)
227 {
228 return CFN_HAL_ERROR_BAD_PARAM;
229 }
230 return cfn_hal_base_event_get(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION, event_mask);
231}
232
236CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_enable(cfn_sal_utl_collection_t *driver,
237 uint32_t error_mask)
238{
239 if (!driver)
240 {
241 return CFN_HAL_ERROR_BAD_PARAM;
242 }
243 return cfn_hal_base_error_enable(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION, error_mask);
244}
245
249CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_disable(cfn_sal_utl_collection_t *driver,
250 uint32_t error_mask)
251{
252 if (!driver)
253 {
254 return CFN_HAL_ERROR_BAD_PARAM;
255 }
256 return cfn_hal_base_error_disable(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION, error_mask);
257}
258
262CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_get(cfn_sal_utl_collection_t *driver,
263 uint32_t *error_mask)
264{
265 if (!driver)
266 {
267 return CFN_HAL_ERROR_BAD_PARAM;
268 }
269 return cfn_hal_base_error_get(&driver->base, CFN_SAL_UTL_TYPE_COLLECTION, error_mask);
270}
271
272/* Service Specific Functions --------------------------------------- */
273
277CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_push_back(cfn_sal_utl_collection_t *driver, const void *item)
278{
279 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
280 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, push_back, driver, error, item);
281 return error;
282}
283
287CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_push_front(cfn_sal_utl_collection_t *driver,
288 const void *item)
289{
290 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
291 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, push_front, driver, error, item);
292 return error;
293}
294
298CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_insert_at(cfn_sal_utl_collection_t *driver,
299 size_t index,
300 const void *item)
301{
302 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
303 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, insert_at, driver, error, index, item);
304 return error;
305}
306
310CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_pop_back(cfn_sal_utl_collection_t *driver, void *item_out)
311{
312 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
313 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, pop_back, driver, error, item_out);
314 return error;
315}
316
320CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_pop_front(cfn_sal_utl_collection_t *driver, void *item_out)
321{
322 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
323 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, pop_front, driver, error, item_out);
324 return error;
325}
326
330CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_remove_at(cfn_sal_utl_collection_t *driver,
331 size_t index,
332 void *item_out)
333{
334 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
335 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, remove_at, driver, error, index, item_out);
336 return error;
337}
338
342CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_back(cfn_sal_utl_collection_t *driver, void *item_out)
343{
344 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
345 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, peek_back, driver, error, item_out);
346 return error;
347}
348
352CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_front(cfn_sal_utl_collection_t *driver, void *item_out)
353{
354 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
355 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, peek_front, driver, error, item_out);
356 return error;
357}
358
362CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_at(cfn_sal_utl_collection_t *driver,
363 size_t index,
364 void *item_out)
365{
366 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
367 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, peek_at, driver, error, index, item_out);
368 return error;
369}
370
374CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_get_size(cfn_sal_utl_collection_t *driver, size_t *size_out)
375{
376 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
377 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, get_size, driver, error, size_out);
378 return error;
379}
380
384CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_get_capacity(cfn_sal_utl_collection_t *driver,
385 size_t *capacity_out)
386{
387 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
388 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, get_capacity, driver, error, capacity_out);
389 return error;
390}
391
395CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_is_empty(cfn_sal_utl_collection_t *driver,
396 bool *is_empty_out)
397{
398 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
399 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, is_empty, driver, error, is_empty_out);
400 return error;
401}
402
406CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_is_full(cfn_sal_utl_collection_t *driver, bool *is_full_out)
407{
408 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
409 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, is_full, driver, error, is_full_out);
410 return error;
411}
412
416CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_clear(cfn_sal_utl_collection_t *driver)
417{
418 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
419 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_UTL_TYPE_COLLECTION, clear, driver, error);
420 return error;
421}
422
426CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_find(cfn_sal_utl_collection_t *driver,
427 const void *item,
428 size_t *index_out)
429{
430 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
431 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, find, driver, error, item, index_out);
432 return error;
433}
434
438CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_sort(cfn_sal_utl_collection_t *driver, void *compare_func)
439{
440 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
441 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_UTL_TYPE_COLLECTION, sort, driver, error, compare_func);
442 return error;
443}
444
445#ifdef __cplusplus
446}
447#endif
448
449#endif /* CAFFEINE_SAL_UTL_COLLECTION_H */
Core definitions and macros for Caffeine SAL.
#define CFN_SAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_sal.h:38
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_enable(cfn_sal_utl_collection_t *driver, uint32_t error_mask)
Enables one or more collection exception errors.
Definition cfn_sal_utl_collection.h:236
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_get(cfn_sal_utl_collection_t *driver, uint32_t *event_mask)
Retrieves the current collection nominal event status.
Definition cfn_sal_utl_collection.h:223
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_pop_front(cfn_sal_utl_collection_t *driver, void *item_out)
Removes and retrieves an item from the front.
Definition cfn_sal_utl_collection.h:320
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_find(cfn_sal_utl_collection_t *driver, const void *item, size_t *index_out)
Finds an item in the collection and retrieves its index.
Definition cfn_sal_utl_collection.h:426
CFN_HAL_VMT_CHECK(struct cfn_sal_utl_collection_api_s)
cfn_hal_error_code_t cfn_sal_utl_collection_destruct(cfn_sal_utl_collection_t *driver)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_back(cfn_sal_utl_collection_t *driver, void *item_out)
Peeks at an item from the back.
Definition cfn_sal_utl_collection.h:342
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_init(cfn_sal_utl_collection_t *driver)
Initializes the collection.
Definition cfn_sal_utl_collection.h:114
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_clear(cfn_sal_utl_collection_t *driver)
Clears all items from the collection.
Definition cfn_sal_utl_collection.h:416
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_get(cfn_sal_utl_collection_t *driver, uint32_t *error_mask)
Retrieves the current collection exception error status.
Definition cfn_sal_utl_collection.h:262
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_is_full(cfn_sal_utl_collection_t *driver, bool *is_full_out)
Checks if the collection is full.
Definition cfn_sal_utl_collection.h:406
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_power_state_set(cfn_sal_utl_collection_t *driver, cfn_hal_power_state_t state)
Sets the collection power state.
Definition cfn_sal_utl_collection.h:184
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_push_front(cfn_sal_utl_collection_t *driver, const void *item)
Adds an item to the front of the collection.
Definition cfn_sal_utl_collection.h:287
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_remove_at(cfn_sal_utl_collection_t *driver, size_t index, void *item_out)
Removes and retrieves an item at a specific index.
Definition cfn_sal_utl_collection.h:330
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_get_size(cfn_sal_utl_collection_t *driver, size_t *size_out)
Retrieves the current number of items.
Definition cfn_sal_utl_collection.h:374
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_callback_register(cfn_sal_utl_collection_t *driver, cfn_sal_utl_collection_callback_t callback, void *user_arg)
Registers a callback for collection events and errors.
Definition cfn_sal_utl_collection.h:167
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_is_empty(cfn_sal_utl_collection_t *driver, bool *is_empty_out)
Checks if the collection is empty.
Definition cfn_sal_utl_collection.h:395
struct cfn_sal_utl_collection_s cfn_sal_utl_collection_t
Definition cfn_sal_utl_collection.h:37
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_at(cfn_sal_utl_collection_t *driver, size_t index, void *item_out)
Peeks at an item at a specific index.
Definition cfn_sal_utl_collection.h:362
CFN_HAL_INLINE void cfn_sal_utl_collection_populate(cfn_sal_utl_collection_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_utl_collection_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_utl_collection_config_t *config, cfn_sal_utl_collection_callback_t callback, void *user_arg)
Definition cfn_sal_utl_collection.h:90
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_sort(cfn_sal_utl_collection_t *driver, void *compare_func)
Sorts the collection using the provided comparison function.
Definition cfn_sal_utl_collection.h:438
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_pop_back(cfn_sal_utl_collection_t *driver, void *item_out)
Removes and retrieves an item from the back.
Definition cfn_sal_utl_collection.h:310
#define CFN_SAL_UTL_TYPE_COLLECTION
FourCC type for Collections.
Definition cfn_sal_utl_collection.h:22
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_insert_at(cfn_sal_utl_collection_t *driver, size_t index, const void *item)
Inserts an item at a specific index.
Definition cfn_sal_utl_collection.h:298
cfn_hal_error_code_t cfn_sal_utl_collection_construct(cfn_sal_utl_collection_t *driver, const cfn_sal_utl_collection_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_utl_collection_callback_t callback, void *user_arg)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_enable(cfn_sal_utl_collection_t *driver, uint32_t event_mask)
Enables one or more collection nominal events.
Definition cfn_sal_utl_collection.h:197
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_error_disable(cfn_sal_utl_collection_t *driver, uint32_t error_mask)
Disables one or more collection exception errors.
Definition cfn_sal_utl_collection.h:249
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_config_get(cfn_sal_utl_collection_t *driver, cfn_sal_utl_collection_config_t *config)
Gets the current collection configuration.
Definition cfn_sal_utl_collection.h:153
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_event_disable(cfn_sal_utl_collection_t *driver, uint32_t event_mask)
Disables one or more collection nominal events.
Definition cfn_sal_utl_collection.h:210
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_get_capacity(cfn_sal_utl_collection_t *driver, size_t *capacity_out)
Retrieves the capacity of the collection.
Definition cfn_sal_utl_collection.h:384
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_peek_front(cfn_sal_utl_collection_t *driver, void *item_out)
Peeks at an item from the front.
Definition cfn_sal_utl_collection.h:352
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_push_back(cfn_sal_utl_collection_t *driver, const void *item)
Adds an item to the end of the collection.
Definition cfn_sal_utl_collection.h:277
void(* cfn_sal_utl_collection_callback_t)(cfn_sal_utl_collection_t *driver, uint32_t event_mask, uint32_t error_mask, void *user_arg)
Collection callback signature.
Definition cfn_sal_utl_collection.h:43
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_deinit(cfn_sal_utl_collection_t *driver)
Deinitializes the collection.
Definition cfn_sal_utl_collection.h:127
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_utl_collection_config_set(cfn_sal_utl_collection_t *driver, const cfn_sal_utl_collection_config_t *config)
Sets the collection configuration.
Definition cfn_sal_utl_collection.h:139
Generic physical mapping for services.
Definition cfn_sal_types.h:26
Collection Virtual Method Table (VMT).
Definition cfn_sal_utl_collection.h:52
cfn_hal_error_code_t(* push_back)(cfn_sal_utl_collection_t *driver, const void *item)
Definition cfn_sal_utl_collection.h:56
cfn_hal_error_code_t(* push_front)(cfn_sal_utl_collection_t *driver, const void *item)
Definition cfn_sal_utl_collection.h:57
cfn_hal_error_code_t(* get_capacity)(cfn_sal_utl_collection_t *driver, size_t *capacity_out)
Definition cfn_sal_utl_collection.h:73
cfn_hal_error_code_t(* clear)(cfn_sal_utl_collection_t *driver)
Definition cfn_sal_utl_collection.h:76
cfn_hal_error_code_t(* peek_back)(cfn_sal_utl_collection_t *driver, void *item_out)
Definition cfn_sal_utl_collection.h:66
cfn_hal_error_code_t(* peek_at)(cfn_sal_utl_collection_t *driver, size_t index, void *item_out)
Definition cfn_sal_utl_collection.h:68
cfn_hal_error_code_t(* find)(cfn_sal_utl_collection_t *driver, const void *item, size_t *index_out)
Definition cfn_sal_utl_collection.h:69
cfn_hal_api_base_t base
Definition cfn_sal_utl_collection.h:53
cfn_hal_error_code_t(* remove_at)(cfn_sal_utl_collection_t *driver, size_t index, void *item_out)
Definition cfn_sal_utl_collection.h:63
cfn_hal_error_code_t(* is_empty)(cfn_sal_utl_collection_t *driver, bool *is_empty_out)
Definition cfn_sal_utl_collection.h:74
cfn_hal_error_code_t(* is_full)(cfn_sal_utl_collection_t *driver, bool *is_full_out)
Definition cfn_sal_utl_collection.h:75
cfn_hal_error_code_t(* insert_at)(cfn_sal_utl_collection_t *driver, size_t index, const void *item)
Definition cfn_sal_utl_collection.h:58
cfn_hal_error_code_t(* pop_back)(cfn_sal_utl_collection_t *driver, void *item_out)
Definition cfn_sal_utl_collection.h:61
cfn_hal_error_code_t(* peek_front)(cfn_sal_utl_collection_t *driver, void *item_out)
Definition cfn_sal_utl_collection.h:67
cfn_hal_error_code_t(* get_size)(cfn_sal_utl_collection_t *driver, size_t *size_out)
Definition cfn_sal_utl_collection.h:72
cfn_hal_error_code_t(* pop_front)(cfn_sal_utl_collection_t *driver, void *item_out)
Definition cfn_sal_utl_collection.h:62
cfn_hal_error_code_t(* sort)(cfn_sal_utl_collection_t *driver, void *compare_func)
Definition cfn_sal_utl_collection.h:77
Collection configuration (e.g. item size).
Definition cfn_sal_utl_collection.h:32
void * custom
Definition cfn_sal_utl_collection.h:34
size_t item_size
Definition cfn_sal_utl_collection.h:33