/* By: agilliar <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/05 19:07:14 by agilliar #+# #+# */
-/* Updated: 2025/12/08 17:57:01 by agilliar ### ########.fr */
+/* Updated: 2025/12/11 01:12:14 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
if (clist_get_at(stacks->a.list, 0) < pivot)
{
a++;
- (cb.func)(cb.data, OP_RA);
+ closure_call(cb, OP_RA);
}
else
{
b++;
- (cb.func)(cb.data, OP_PB);
+ closure_call(cb, OP_PB);
}
}
}
if (range.len == 2
&& clist_get_at(stacks->a.list, 0) > clist_get_at(stacks->a.list, -1))
- (cb.func)(cb.data, OP_SA);
+ closure_call(cb, OP_SA);
if (range.len <= 2)
return ;
pivot = range.len / 2;
quicksort_sift(stacks, cb, range);
i = 0;
while (i++ < range.len - pivot)
- (cb.func)(cb.data, OP_PA);
+ closure_call(cb, OP_PA);
quicksort_rec(stacks, cb, list_sub(range, pivot, range.len));
i = 0;
while (i++ < pivot)
- (cb.func)(cb.data, OP_RRA);
+ closure_call(cb, OP_RRA);
quicksort_rec(stacks, cb, list_sub(range, 0, pivot));
}
/* By: clefrere <clefrere@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/09 15:43:09 by clefrere #+# #+# */
-/* Updated: 2025/12/09 15:59:47 by clefrere ### ########.fr */
+/* Updated: 2025/12/11 01:12:26 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
{
if (stacks->a.list->val == sorted.ptr[0])
{
- (cb.func)(cb.data, OP_PB);
+ closure_call(cb, OP_PB);
sorted = list_sub(sorted, 1, sorted.len);
}
else
- (cb.func)(cb.data, OP_RA);
+ closure_call(cb, OP_RA);
}
while (stacks->b.len)
- (cb.func)(cb.data, OP_PA);
+ closure_call(cb, OP_PA);
}
/* By: agilliar <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/03 10:57:30 by agilliar #+# #+# */
-/* Updated: 2025/12/08 17:49:07 by agilliar ### ########.fr */
+/* Updated: 2025/12/11 01:13:40 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
static void op_compose_fn(t_op_compose *data, t_stacks *stacks)
{
- (data->first.func)(data->first.data, stacks);
- (data->second.func)(data->second.data, stacks);
+ closure_call(data->first, stacks);
+ closure_call(data->second, stacks);
}
t_closure op_compose(t_closure first, t_closure second)
/* By: agilliar <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/08 17:54:20 by agilliar #+# #+# */
-/* Updated: 2025/12/09 14:49:55 by agilliar ### ########.fr */
+/* Updated: 2025/12/11 01:13:45 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
{
ops_optimizer_commit(data->opt, stacks);
cb = data->opt->commit.ops[data->op];
- (cb.func)(cb.data, stacks);
+ closure_call(cb, stacks);
}
}
*counter *= -1;
while (*counter != 0)
{
- (cb.func)(cb.data, stacks);
+ closure_call(cb, stacks);
(*counter)++;
}
}
{
data->a--;
data->b--;
- (cb.func)(cb.data, stacks);
+ closure_call(cb, stacks);
}
cb = data->commit.ops[OP_RRR];
while (data->a < 0 && data->b < 0)
{
data->a++;
data->b++;
- (cb.func)(cb.data, stacks);
+ closure_call(cb, stacks);
}
ops_optimizer_commit_end(data, stacks);
}
/* By: clefrere <clefrere@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/02 11:02:44 by agilliar #+# #+# */
-/* Updated: 2025/12/11 01:03:57 by agilliar ### ########.fr */
+/* Updated: 2025/12/11 01:11:55 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
/* By: agilliar <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/02 15:57:41 by agilliar #+# #+# */
-/* Updated: 2025/12/03 12:53:20 by agilliar ### ########.fr */
+/* Updated: 2025/12/11 01:13:52 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
stacks = data->stacks;
ops = data->ops;
op_fn = ops->ops[op];
- (op_fn.func)(op_fn.data, stacks);
+ closure_call(op_fn, stacks);
}
void stacks_apply(t_stacks *stacks, const t_ops *ops, t_algorithm algo)