71 stripes, num_stripes);
79 INSTR_DEF(instr,
"xt_idxstripes_convert_to_stripes")
82 struct Xt_stripe *restrict temp_stripes = *stripes;
83 size_t temp_stripes_array_size = 0;
84 size_t num_temp_stripes = (size_t)*num_stripes *
sizeof (*temp_stripes);
86 if (num_indices > 0) {
89 while(i < (
size_t)num_indices) {
97 if (i + j < (
size_t)num_indices) {
101 }
while ((i + j) < (size_t)num_indices
104 j-= ((i + j + 1 < (size_t)num_indices)
105 && ((indices[i + j - 1] == indices[i + j] - 1)
106 & (indices[i + j] == indices[i + j + 1] - 1)));
108 temp_stripes[num_temp_stripes-1].start = indices[i];
109 temp_stripes[num_temp_stripes-1].stride =
stride;
110 temp_stripes[num_temp_stripes-1].nstrides = (int)j;
116 *stripes =
xrealloc(temp_stripes, num_temp_stripes *
sizeof(*temp_stripes));
117 *num_stripes = (int)num_temp_stripes;
131 prev_stride = stripes_dst[-1].
stride,
133 prev_start = stripes_dst[-1].
start;
142 stripes_dst[0] = stripes_src[0];
145 for (
size_t i = 1; i < num_stripes; ++i) {
147 prev_stride = stripes_dst[i-skip].
stride,
149 prev_start = stripes_dst[i-skip].
start;
156 stripes_dst[i-skip+1] = stripes_src[i];
159 return num_stripes - (skip - 1);
#define ENSURE_ARRAY_SIZE(arrayp, curr_array_size, req_size)
add versions of standard API functions not returning on error
#define xrealloc(ptr, size)
base definitions header file
size_t xt_stripes_merge_copy(size_t num_stripes, struct Xt_stripe *stripes_dst, const struct Xt_stripe *stripes_src, bool lookback)
void xt_convert_indices_to_stripes(const Xt_int *restrict indices, int num_indices, struct Xt_stripe **stripes, int *num_stripes)
void xt_convert_indices_to_stripes_keep_buf(const Xt_int *restrict indices, int num_indices, struct Xt_stripe **stripes, int *num_stripes)