]> pd.if.org Git - pdclib/blob - functions/wctype/wctype.c
PDCLib includes with quotes, not <>.
[pdclib] / functions / wctype / wctype.c
1 /* wctype( const char * )\r
2 \r
3    This file is part of the Public Domain C Library (PDCLib).\r
4    Permission is granted to use, modify, and / or redistribute at will.\r
5 */\r
6 \r
7 #include <wctype.h>\r
8 #ifndef REGTEST\r
9 #include <string.h>\r
10 #include "_PDCLIB_locale.h"\r
11 \r
12 wctype_t wctype( const char * property )\r
13 {\r
14     if(property) switch(property[0])\r
15     {\r
16         case 'a':\r
17             if(strcmp(property, "alpha") == 0) {\r
18                 return _PDCLIB_CTYPE_ALPHA;\r
19             } else if(strcmp(property, "alnum") == 0) {\r
20                 return _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_DIGIT;\r
21             } else return 0;\r
22 \r
23         case 'b':\r
24             if(strcmp(property, "blank") == 0) {\r
25                 return _PDCLIB_CTYPE_BLANK;\r
26             } else return 0;\r
27 \r
28         case 'c':\r
29             if(strcmp(property, "cntrl") == 0) {\r
30                 return _PDCLIB_CTYPE_CNTRL;\r
31             } else return 0;\r
32 \r
33         case 'd':\r
34             if(strcmp(property, "digit") == 0) {\r
35                 return _PDCLIB_CTYPE_DIGIT;\r
36             } else return 0;\r
37 \r
38         case 'g':\r
39             if(strcmp(property, "graph") == 0) {\r
40                 return _PDCLIB_CTYPE_GRAPH;\r
41             } else return 0;\r
42 \r
43         case 'l':\r
44             if(strcmp(property, "lower") == 0) {\r
45                 return _PDCLIB_CTYPE_LOWER;\r
46             } else return 0;\r
47 \r
48         case 'p':\r
49             if(strcmp(property, "print") == 0) {\r
50                 return _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_SPACE;\r
51             } else if(strcmp(property, "punct") == 0) {\r
52                 return _PDCLIB_CTYPE_PUNCT;\r
53             } else return 0;\r
54 \r
55         case 's':\r
56             if(strcmp(property, "space") == 0) {\r
57                 return _PDCLIB_CTYPE_SPACE;\r
58             } else return 0;\r
59 \r
60         case 'u':\r
61             if(strcmp(property, "upper") == 0) {\r
62                 return _PDCLIB_CTYPE_UPPER;\r
63             } else return 0;\r
64 \r
65         case 'x':\r
66             if(strcmp(property, "xdigit") == 0) {\r
67                 return _PDCLIB_CTYPE_XDIGT;\r
68             } else return 0;\r
69     }\r
70     return 0;\r
71 }\r
72 \r
73 #endif\r
74 \r
75 #ifdef TEST\r
76 #include "_PDCLIB_test.h"\r
77 \r
78 int main( void )\r
79 {\r
80     TESTCASE(wctype("")   == 0);\r
81     TESTCASE_NOREG(wctype(NULL) == 0); // mingw libc crashes on this\r
82 \r
83     TESTCASE(wctype("alpha")  != 0);\r
84     TESTCASE(wctype("alnum")  != 0);\r
85     TESTCASE(wctype("blank")  != 0);\r
86     TESTCASE(wctype("cntrl")  != 0);\r
87     TESTCASE(wctype("digit")  != 0);\r
88     TESTCASE(wctype("graph")  != 0);\r
89     TESTCASE(wctype("lower")  != 0);\r
90     TESTCASE(wctype("print")  != 0);\r
91     TESTCASE(wctype("punct")  != 0);\r
92     TESTCASE(wctype("space")  != 0);\r
93     TESTCASE(wctype("upper")  != 0);\r
94     TESTCASE(wctype("xdigit") != 0);\r
95 \r
96     TESTCASE_NOREG(wctype("alpha")  == _PDCLIB_CTYPE_ALPHA);\r
97     TESTCASE_NOREG(wctype("alnum")  == (_PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_DIGIT));\r
98     TESTCASE_NOREG(wctype("blank")  == _PDCLIB_CTYPE_BLANK);\r
99     TESTCASE_NOREG(wctype("cntrl")  == _PDCLIB_CTYPE_CNTRL);\r
100     TESTCASE_NOREG(wctype("digit")  == _PDCLIB_CTYPE_DIGIT);\r
101     TESTCASE_NOREG(wctype("graph")  == _PDCLIB_CTYPE_GRAPH);\r
102     TESTCASE_NOREG(wctype("lower")  == _PDCLIB_CTYPE_LOWER);\r
103     TESTCASE_NOREG(wctype("print")  == (_PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_SPACE));\r
104     TESTCASE_NOREG(wctype("punct")  == _PDCLIB_CTYPE_PUNCT);\r
105     TESTCASE_NOREG(wctype("space")  == _PDCLIB_CTYPE_SPACE);\r
106     TESTCASE_NOREG(wctype("upper")  == _PDCLIB_CTYPE_UPPER);\r
107     TESTCASE_NOREG(wctype("xdigit") == _PDCLIB_CTYPE_XDIGT);\r
108     return TEST_RESULTS;\r
109 }\r
110 #endif\r