1 /* wctype( const char * )
3 This file is part of the Public Domain C Library (PDCLib).
4 Permission is granted to use, modify, and / or redistribute at will.
10 #include "_PDCLIB_locale.h"
12 wctype_t wctype( const char * property )
14 if(property) switch(property[0])
17 if(strcmp(property, "alpha") == 0) {
18 return _PDCLIB_CTYPE_ALPHA;
19 } else if(strcmp(property, "alnum") == 0) {
20 return _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_DIGIT;
24 if(strcmp(property, "blank") == 0) {
25 return _PDCLIB_CTYPE_BLANK;
29 if(strcmp(property, "cntrl") == 0) {
30 return _PDCLIB_CTYPE_CNTRL;
34 if(strcmp(property, "digit") == 0) {
35 return _PDCLIB_CTYPE_DIGIT;
39 if(strcmp(property, "graph") == 0) {
40 return _PDCLIB_CTYPE_GRAPH;
44 if(strcmp(property, "lower") == 0) {
45 return _PDCLIB_CTYPE_LOWER;
49 if(strcmp(property, "print") == 0) {
50 return _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_SPACE;
51 } else if(strcmp(property, "punct") == 0) {
52 return _PDCLIB_CTYPE_PUNCT;
56 if(strcmp(property, "space") == 0) {
57 return _PDCLIB_CTYPE_SPACE;
61 if(strcmp(property, "upper") == 0) {
62 return _PDCLIB_CTYPE_UPPER;
66 if(strcmp(property, "xdigit") == 0) {
67 return _PDCLIB_CTYPE_XDIGT;
76 #include "_PDCLIB_test.h"
80 TESTCASE(wctype("") == 0);
81 TESTCASE_NOREG(wctype(NULL) == 0); // mingw libc crashes on this
83 TESTCASE(wctype("alpha") != 0);
84 TESTCASE(wctype("alnum") != 0);
85 TESTCASE(wctype("blank") != 0);
86 TESTCASE(wctype("cntrl") != 0);
87 TESTCASE(wctype("digit") != 0);
88 TESTCASE(wctype("graph") != 0);
89 TESTCASE(wctype("lower") != 0);
90 TESTCASE(wctype("print") != 0);
91 TESTCASE(wctype("punct") != 0);
92 TESTCASE(wctype("space") != 0);
93 TESTCASE(wctype("upper") != 0);
94 TESTCASE(wctype("xdigit") != 0);
96 TESTCASE_NOREG(wctype("alpha") == _PDCLIB_CTYPE_ALPHA);
97 TESTCASE_NOREG(wctype("alnum") == (_PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_DIGIT));
98 TESTCASE_NOREG(wctype("blank") == _PDCLIB_CTYPE_BLANK);
99 TESTCASE_NOREG(wctype("cntrl") == _PDCLIB_CTYPE_CNTRL);
100 TESTCASE_NOREG(wctype("digit") == _PDCLIB_CTYPE_DIGIT);
101 TESTCASE_NOREG(wctype("graph") == _PDCLIB_CTYPE_GRAPH);
102 TESTCASE_NOREG(wctype("lower") == _PDCLIB_CTYPE_LOWER);
103 TESTCASE_NOREG(wctype("print") == (_PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_SPACE));
104 TESTCASE_NOREG(wctype("punct") == _PDCLIB_CTYPE_PUNCT);
105 TESTCASE_NOREG(wctype("space") == _PDCLIB_CTYPE_SPACE);
106 TESTCASE_NOREG(wctype("upper") == _PDCLIB_CTYPE_UPPER);
107 TESTCASE_NOREG(wctype("xdigit") == _PDCLIB_CTYPE_XDIGT);