summaryrefslogtreecommitdiff
path: root/src/wctype/wctype.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wctype/wctype.c')
-rw-r--r--src/wctype/wctype.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/wctype/wctype.c b/src/wctype/wctype.c
new file mode 100644
index 00000000..1b27af1d
--- /dev/null
+++ b/src/wctype/wctype.c
@@ -0,0 +1,57 @@
+#include <wctype.h>
+#include "string.h"
+#include "nonstd/assert.h"
+#include "nonstd/ctype.h"
+
+/** lookup character class **/
+wctype_t wctype(const char * property)
+{
+ ASSERT_NONNULL(property);
+
+ if (!strcmp(property, "alnum")) {
+ return ALPHA | DIGIT;
+ } else if (!strcmp(property, "alpha")) {
+ return ALPHA;
+ } else if (!strcmp(property, "cntrl")) {
+ return CNTRL;
+ } else if (!strcmp(property, "digit")) {
+ return DIGIT;
+ } else if (!strcmp(property, "graph")) {
+ return GRAPH;
+ } else if (!strcmp(property, "lower")) {
+ return LOWER;
+ } else if (!strcmp(property, "print")) {
+ return PRINT;
+ } else if (!strcmp(property, "punct")) {
+ return PUNCT;
+ } else if (!strcmp(property, "space")) {
+ return SPACE;
+ } else if (!strcmp(property, "upper")) {
+ return UPPER;
+ } else if (!strcmp(property, "xdigit")) {
+ return XDIGIT;
+ }
+
+ return 0;
+}
+
+/***
+The fn(wctype) function looks up the character class specified by the string
+arg(property). If arg(property) is a recognized character class, a value is
+returned that can be used as the arg(desc) parameter to fn(iswctype).
+
+At least the following character classes are recognized: cclass(alnum),
+cclass(alpha), cclass(cntrl), cclass(digit), cclass(graph), cclass(lower),
+cclass(print), cclass(punct), cclass(space), cclass(upper), and cclass(xdigit).
+***/
+
+/* RETURN(0): the requested character class is not recognized */
+/* RETURN(NZ): a value usable as the arg(desc) parameter to fn(iswctype) */
+
+/* UNSPECIFIED: - */
+/* IMPLEMENTATION: - */
+/* LOCALE: LC_CTYPE */
+
+/*
+STDC(199409)
+*/