--- /dev/null
+/* 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
--- /dev/null
+/* wctrans( const char * )\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
+wctrans_t wctrans( const char * property )\r
+{\r
+ if(!property) {\r
+ return 0;\r
+ } else if(strcmp(property, "tolower") == 0) {\r
+ return _PDCLIB_WCTRANS_TOLOWER;\r
+ } else if(strcmp(property, "toupper") == 0) {\r
+ return _PDCLIB_WCTRANS_TOUPPER;\r
+ } else {\r
+ return 0;\r
+ }\r
+}\r
+\r
+#endif\r
+\r
+#ifdef TEST\r
+#include <_PDCLIB_test.h>\r
+\r
+int main( void )\r
+{\r
+ TESTCASE(wctrans("") == 0);\r
+ TESTCASE(wctrans("invalid") == 0);\r
+ TESTCASE(wctrans("toupper") != 0);\r
+ TESTCASE(wctrans("tolower") != 0);\r
+ return TEST_RESULTS;\r
+}\r
+#endif\r
#define _PDCLIB_CTYPE_DIGIT 256
#define _PDCLIB_CTYPE_XDIGT 512
+#define _PDCLIB_WCTRANS_TOLOWER 1
+#define _PDCLIB_WCTRANS_TOUPPER 2
+
typedef struct _PDCLIB_ctype
{
_PDCLIB_uint16_t flags;