]> pd.if.org Git - pdclib.old/blobdiff - functions/wctype/towctrans.c
PDCLIB-3 #resolve Implement towctrans/wctrans. Completes wctype.h
[pdclib.old] / functions / wctype / towctrans.c
diff --git a/functions/wctype/towctrans.c b/functions/wctype/towctrans.c
new file mode 100644 (file)
index 0000000..aea9b1a
--- /dev/null
@@ -0,0 +1,37 @@
+/* towctrans( wint_t, wctrans_t )\r
+\r
+   This file is part of the Public Domain C Library (PDCLib).\r
+   Permission is granted to use, modify, and / or redistribute at will.\r
+*/\r
+\r
+#include <wctype.h>\r
+#ifndef REGTEST\r
+#include <string.h>\r
+#include <_PDCLIB_locale.h>\r
+\r
+wint_t towctrans( wint_t wc, wctrans_t trans )\r
+{\r
+    switch( trans ) {\r
+        case 0:                         return wc;\r
+        case _PDCLIB_WCTRANS_TOLOWER:   return towlower( wc );\r
+        case _PDCLIB_WCTRANS_TOUPPER:   return towupper( wc );\r
+        default: abort();\r
+    }\r
+}\r
+\r
+#endif\r
+\r
+#ifdef TEST\r
+#include <_PDCLIB_test.h>\r
+\r
+int main( void )\r
+{\r
+    TESTCASE(towctrans(L'a', wctrans("toupper")) == L'A');\r
+    TESTCASE(towctrans(L'B', wctrans("toupper")) == L'B');\r
+    TESTCASE(towctrans(L'a', wctrans("tolower")) == L'a');\r
+    TESTCASE(towctrans(L'B', wctrans("tolower")) == L'b');\r
+    TESTCASE(towctrans(L'B', wctrans("invalid")) == L'B');\r
+    TESTCASE(towctrans(L'B', 0)                  == L'B');\r
+    return TEST_RESULTS;\r
+}\r
+#endif\r