Something went wrong. Try again.
My teams solution for the push-swap assignment.
Something went wrong. Try again.
ft-push-swap parse_flag.c
2.0 kB · 62 lines
C
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263/* ************************************************************************** *//* *//* ::: :::::::: *//* parse_flag.c :+: :+: :+: *//* +:+ +:+ +:+ *//* By: gvoelkne <marvin@42.fr> +#+ +:+ +#+ *//* +#+#+#+#+#+ +#+ *//* Created: 2026/06/01 00:00:00 by gvoelkne #+# #+# *//* Updated: 2026/06/01 00:00:00 by gvoelkne ### ########.fr *//* *//* ************************************************************************** */
#include "push_swap.h"
int is_flag(char *str){ if (!str_contains(str, '-') && str_len(str) >= 2) return (0); if (str[0] == '-' && str[1] == '-') return (1); return (0);}
static int set_algo_flag(t_args *args, char *flag, int *count){ if (str_equals(flag, "simple")) args->algo_config = SIMPLE; else if (str_equals(flag, "medium")) args->algo_config = MEDIUM; else if (str_equals(flag, "complex")) args->algo_config = COMPLEX; else if (str_equals(flag, "adaptive")) args->algo_config = ADAPTIVE; else return (0); (*count)++; return (1);}
int parse_flag(t_args *args, char *flag_str){ char *flag; static int algo_flags_parsed; static int bench_flags_parsed;
if (!is_flag(flag_str)) return (0); flag = str_trim(flag_str, "-"); if (!flag) return (0); if (str_equals(flag, "bench")) { args->benchmark_enabled = 1; bench_flags_parsed++; } else if (!set_algo_flag(args, flag, &algo_flags_parsed)) return (free_ptrptr((void **)&flag), 0); free_ptrptr((void **)&flag); if (algo_flags_parsed > 1 || bench_flags_parsed > 1) return (0); return (1);}