dirent: Fix compilation error in C++ mode on OS/2 kLIBC.
[gnulib.git] / lib / wctype-impl.h
blob43eb0d31f40896cbe575a27b03c7eb073043a364
1 /* Get descriptor for a wide character property.
2 Copyright (C) 2011-2021 Free Software Foundation, Inc.
3 Written by Bruno Haible <bruno@clisp.org>, 2011.
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <https://www.gnu.org/licenses/>. */
18 wctype_t
19 wctype (const char* name)
21 switch (name[0])
23 case 'a':
24 switch (name[1])
26 case 'l':
27 switch (name[2])
29 case 'n':
30 if (strcmp (name + 3, "um") == 0)
31 return (wctype_t) iswalnum;
32 break;
33 case 'p':
34 if (strcmp (name + 3, "ha") == 0)
35 return (wctype_t) iswalpha;
36 break;
37 default:
38 break;
40 break;
41 default:
42 break;
44 break;
45 case 'b':
46 if (strcmp (name + 1, "lank") == 0)
47 return (wctype_t) iswblank;
48 break;
49 case 'c':
50 if (strcmp (name + 1, "ntrl") == 0)
51 return (wctype_t) iswcntrl;
52 break;
53 case 'd':
54 if (strcmp (name + 1, "igit") == 0)
55 return (wctype_t) iswdigit;
56 break;
57 case 'g':
58 if (strcmp (name + 1, "raph") == 0)
59 return (wctype_t) iswgraph;
60 break;
61 case 'l':
62 if (strcmp (name + 1, "ower") == 0)
63 return (wctype_t) iswlower;
64 break;
65 case 'p':
66 switch (name[1])
68 case 'r':
69 if (strcmp (name + 2, "int") == 0)
70 return (wctype_t) iswprint;
71 break;
72 case 'u':
73 if (strcmp (name + 2, "nct") == 0)
74 return (wctype_t) iswpunct;
75 break;
76 default:
77 break;
79 break;
80 case 's':
81 if (strcmp (name + 1, "pace") == 0)
82 return (wctype_t) iswspace;
83 break;
84 case 'u':
85 if (strcmp (name + 1, "pper") == 0)
86 return (wctype_t) iswupper;
87 break;
88 case 'x':
89 if (strcmp (name + 1, "digit") == 0)
90 return (wctype_t) iswxdigit;
91 break;
92 default:
93 break;
95 return NULL;