(51 lines)
1 //2 // utils.h - Some utility and printing functions.3 //15 #endif21 ({ \23 if (_Generic(__expr, int: (ssize_t)__expr < 0, ssize_t: (ssize_t)__expr < 0, default: !__expr)) \25 __expr; \26 })29 ((x)->type == _tag \31 : (errx(1, __FILE__ ":%d This was supposed to be a " #_tag "\n", __LINE__), &(x)->__tagged._tag))35 #endif39 #define grow(arr, n) require(realloc(arr, sizeof(arr[0]) * (n)), "`grow(" #arr ", " #n ")` allocation failure")43 __attribute__((nonnull(1))) char unescapechar(const char *escaped, const char **after, const char *end);45 __attribute__((pure, nonnull, returns_nonnull)) const char *after_spaces(const char *str, bool skip_nl,47 __attribute__((nonnull)) bool matchchar(const char **str, char c, bool skip_nl, const char *end);48 __attribute__((nonnull)) bool matchstr(const char **str, const char *target, bool skip_nl, const char *end);51 // vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0