1 | #ifndef OSCAM_ARRAY_H
|
---|
2 | #define OSCAM_ARRAY_H
|
---|
3 |
|
---|
4 | /* Functions for manipulating dynamic arrays */
|
---|
5 |
|
---|
6 | /* Frees array data and reset array num_entries */
|
---|
7 | void array_clear(void **arr_data, int32_t *arr_num_entries);
|
---|
8 |
|
---|
9 | /* Initializes dst array with src array data. dst array is cleared first */
|
---|
10 | bool array_clone(void **src_arr_data, int32_t *src_arr_num_entries, uint32_t entry_size, void **dst_arr_data, int32_t *dst_arr_num_entries);
|
---|
11 |
|
---|
12 | /* Add element at the end of array */
|
---|
13 | bool array_add(void **arr_data, int32_t *arr_num_entries, uint32_t entry_size, void *new_entry);
|
---|
14 |
|
---|
15 | /* Array functions for different types */
|
---|
16 | #define DECLARE_ARRAY_FUNCS(NAME, BASE_TYPE, DATA_TYPE, DATA_FIELD, NUM_FIELD) \
|
---|
17 | void NAME##_clear(BASE_TYPE *in); \
|
---|
18 | bool NAME##_clone(BASE_TYPE *src, BASE_TYPE *dst); \
|
---|
19 | bool NAME##_add(BASE_TYPE *in, DATA_TYPE *td); \
|
---|
20 |
|
---|
21 | DECLARE_ARRAY_FUNCS(ftab, FTAB, FILTER, filts, nfilts); // Declare ftab_clear(), ftab_clone(), ftab_add()
|
---|
22 | DECLARE_ARRAY_FUNCS(tuntab, TUNTAB, TUNTAB_DATA, ttdata, ttnum); // Declare tuntab_clear(), tuntab_clone(), tuntab_add()
|
---|
23 | DECLARE_ARRAY_FUNCS(ecm_whitelist, ECM_WHITELIST, ECM_WHITELIST_DATA, ewdata, ewnum); // Declare ecm_whitelist_clear(), ecm_whitelist_clone(), ecm_whitelist_add()
|
---|
24 | DECLARE_ARRAY_FUNCS(ecm_hdr_whitelist, ECM_HDR_WHITELIST, ECM_HDR_WHITELIST_DATA, ehdata, ehnum); // Declare ecm_hdr_whitelist_clear(), ecm_hdr_whitelist_clone(), ecm_hdr_whitelist_add()
|
---|
25 | DECLARE_ARRAY_FUNCS(caidvaluetab, CAIDVALUETAB, CAIDVALUETAB_DATA, cvdata, cvnum); // Declare caidvaluetab_clear(), caidvaluetab_clone(), caidvaluetab_add()
|
---|
26 | DECLARE_ARRAY_FUNCS(caidtab, CAIDTAB, CAIDTAB_DATA, ctdata, ctnum); // Declare caidtab_clear(), caidtab_clone(), caidtab_add()
|
---|
27 | DECLARE_ARRAY_FUNCS(cecspvaluetab, CECSPVALUETAB, CECSPVALUETAB_DATA, cevdata, cevnum); // Declare cecspvaluetab_clear(), cecspvaluetab_clone(), cecspvaluetab_add()
|
---|
28 | DECLARE_ARRAY_FUNCS(cwcheckvaluetab, CWCHECKTAB, CWCHECKTAB_DATA, cwcheckdata, cwchecknum); // Declare cwcheckvaluetab_clear(), cwcheckvaluetab_clone(), cwcheckvaluetab_add()
|
---|
29 |
|
---|
30 | #undef DECLARE_ARRAY_FUNCS
|
---|
31 |
|
---|
32 | #endif
|
---|