63 INSTR_DEF(instr,
"xt_idxstripes_convert_to_stripes")
66 struct Xt_stripe *restrict temp_stripes = NULL;
67 size_t temp_stripes_array_size = 0;
68 size_t num_temp_stripes = 0;
70 if (num_indices > 0) {
73 while(i < (
size_t)num_indices) {
81 if (i + j < (
size_t)num_indices) {
82 stride = (
Xt_int)(indices[i + 1] - indices[i]);
85 }
while ((i + j) < (size_t)num_indices
86 && indices[i] + (
Xt_int)j * stride == indices[i + j]);
88 j-= ((i + j + 1 < (size_t)num_indices)
89 && ((indices[i + j - 1] == indices[i + j] - 1)
90 & (indices[i + j] == indices[i + j + 1] - 1)));
92 temp_stripes[num_temp_stripes-1].start = indices[i];
93 temp_stripes[num_temp_stripes-1].stride =
stride;
94 temp_stripes[num_temp_stripes-1].nstrides = (int)j;
100 *stripes =
xrealloc(temp_stripes, num_temp_stripes *
sizeof(*temp_stripes));
101 *num_stripes = (int)num_temp_stripes;
base definitions header file
add versions of standard API functions not returning on error
#define xrealloc(ptr, size)
void xt_convert_indices_to_stripes(const Xt_int *restrict indices, int num_indices, struct Xt_stripe **stripes, int *num_stripes)
#define ENSURE_ARRAY_SIZE(arrayp, curr_array_size, req_size)