// // Created by MightyPork on 2017/11/26. // #include "str_utils.h" #include "platform.h" #include "avrlibc.h" bool str_parse_yn(const char *str, bool *suc) { // TODO implement strcasecmp without the locale crap from newlib and use it here if (streq(str, "Y")) return true; if (streq(str, "N")) return false; if (streq(str, "1")) return true; if (streq(str, "0")) return false; if (streq(str, "YES")) return true; if (streq(str, "NO")) return false; *suc = false; return false; } uint8_t str_parse_01(const char *str, const char *a, const char *b, bool *suc) { if (streq(str, a)) return 0; if (streq(str, b)) return 1; *suc = false; return 0; } uint8_t str_parse_012(const char *str, const char *a, const char *b, const char *c, bool *suc) { if (streq(str, a)) return 0; if (streq(str, b)) return 1; if (streq(str, c)) return 2; *suc = false; return 0; } /** Convert number to one of 2 options */ const char *str_2(uint32_t n, uint32_t na, const char *a, uint32_t nb, const char *b) { if (n == nb) return b; return a; } /** Convert number to one of 3 options */ const char *str_3(uint32_t n, uint32_t na, const char *a, uint32_t nb, const char *b, uint32_t nc, const char *c) { if (n == nb) return b; if (n == nc) return c; return a; } /** Convert number to one of 4 options */ const char *str_4(uint32_t n, uint32_t na, const char *a, uint32_t nb, const char *b, uint32_t nc, const char *c, uint32_t nd, const char *d) { if (n == nb) return b; if (n == nc) return c; if (n == nd) return d; return a; } uint32_t str_parse_2(const char *tpl, const char *a, uint32_t na, const char *b, uint32_t nb, bool *suc) { if (streq(tpl, a)) return na; if (streq(tpl, b)) return nb; *suc = false; return na; } uint32_t str_parse_3(const char *tpl, const char *a, uint32_t na, const char *b, uint32_t nb, const char *c, uint32_t nc, bool *suc) { if (streq(tpl, a)) return na; if (streq(tpl, b)) return nb; if (streq(tpl, c)) return nc; *suc = false; return na; } uint32_t str_parse_4(const char *tpl, const char *a, uint32_t na, const char *b, uint32_t nb, const char *c, uint32_t nc, const char *d, uint32_t nd, bool *suc) { if (streq(tpl, a)) return na; if (streq(tpl, b)) return nb; if (streq(tpl, c)) return nc; if (streq(tpl, d)) return nd; *suc = false; return na; }