github.com/afumu/libc@v0.0.6/musl/src/ctype/iswctype.c (about) 1 #include <wctype.h> 2 #include <string.h> 3 4 #define WCTYPE_ALNUM 1 5 #define WCTYPE_ALPHA 2 6 #define WCTYPE_BLANK 3 7 #define WCTYPE_CNTRL 4 8 #define WCTYPE_DIGIT 5 9 #define WCTYPE_GRAPH 6 10 #define WCTYPE_LOWER 7 11 #define WCTYPE_PRINT 8 12 #define WCTYPE_PUNCT 9 13 #define WCTYPE_SPACE 10 14 #define WCTYPE_UPPER 11 15 #define WCTYPE_XDIGIT 12 16 17 int iswctype(wint_t wc, wctype_t type) 18 { 19 switch (type) { 20 case WCTYPE_ALNUM: 21 return iswalnum(wc); 22 case WCTYPE_ALPHA: 23 return iswalpha(wc); 24 case WCTYPE_BLANK: 25 return iswblank(wc); 26 case WCTYPE_CNTRL: 27 return iswcntrl(wc); 28 case WCTYPE_DIGIT: 29 return iswdigit(wc); 30 case WCTYPE_GRAPH: 31 return iswgraph(wc); 32 case WCTYPE_LOWER: 33 return iswlower(wc); 34 case WCTYPE_PRINT: 35 return iswprint(wc); 36 case WCTYPE_PUNCT: 37 return iswpunct(wc); 38 case WCTYPE_SPACE: 39 return iswspace(wc); 40 case WCTYPE_UPPER: 41 return iswupper(wc); 42 case WCTYPE_XDIGIT: 43 return iswxdigit(wc); 44 } 45 return 0; 46 } 47 48 wctype_t wctype(const char *s) 49 { 50 int i; 51 const char *p; 52 /* order must match! */ 53 static const char names[] = 54 "alnum\0" "alpha\0" "blank\0" 55 "cntrl\0" "digit\0" "graph\0" 56 "lower\0" "print\0" "punct\0" 57 "space\0" "upper\0" "xdigit"; 58 for (i=1, p=names; *p; i++, p+=6) 59 if (*s == *p && !strcmp(s, p)) 60 return i; 61 return 0; 62 } 63 64 int __iswctype_l(wint_t c, wctype_t t, locale_t l) 65 { 66 return iswctype(c, t); 67 } 68 69 wctype_t __wctype_l(const char *s, locale_t l) 70 { 71 return wctype(s); 72 } 73 74 weak_alias(__iswctype_l, iswctype_l); 75 weak_alias(__wctype_l, wctype_l);