X-Git-Url: https://pd.if.org/git/?p=pdclib;a=blobdiff_plain;f=functions%2Fwctype%2Fwctype.c;h=3e8aa1f1234849af217fa4c8dc75a374a1f3ee18;hp=c07fc0f2682b200b3ba512c7dbdca7992f8a2ff8;hb=abc15df6b9fae3374d24c7cf5c3ab94c605b2a6d;hpb=8894c921674bb116d0a7b8f23a55311e7a768019 diff --git a/functions/wctype/wctype.c b/functions/wctype/wctype.c index c07fc0f..3e8aa1f 100644 --- a/functions/wctype/wctype.c +++ b/functions/wctype/wctype.c @@ -1,110 +1,110 @@ -/* wctype( const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include -#ifndef REGTEST -#include -#include "_PDCLIB_locale.h" - -wctype_t wctype( const char * property ) -{ - if(property) switch(property[0]) - { - case 'a': - if(strcmp(property, "alpha") == 0) { - return _PDCLIB_CTYPE_ALPHA; - } else if(strcmp(property, "alnum") == 0) { - return _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_DIGIT; - } else return 0; - - case 'b': - if(strcmp(property, "blank") == 0) { - return _PDCLIB_CTYPE_BLANK; - } else return 0; - - case 'c': - if(strcmp(property, "cntrl") == 0) { - return _PDCLIB_CTYPE_CNTRL; - } else return 0; - - case 'd': - if(strcmp(property, "digit") == 0) { - return _PDCLIB_CTYPE_DIGIT; - } else return 0; - - case 'g': - if(strcmp(property, "graph") == 0) { - return _PDCLIB_CTYPE_GRAPH; - } else return 0; - - case 'l': - if(strcmp(property, "lower") == 0) { - return _PDCLIB_CTYPE_LOWER; - } else return 0; - - case 'p': - if(strcmp(property, "print") == 0) { - return _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_SPACE; - } else if(strcmp(property, "punct") == 0) { - return _PDCLIB_CTYPE_PUNCT; - } else return 0; - - case 's': - if(strcmp(property, "space") == 0) { - return _PDCLIB_CTYPE_SPACE; - } else return 0; - - case 'u': - if(strcmp(property, "upper") == 0) { - return _PDCLIB_CTYPE_UPPER; - } else return 0; - - case 'x': - if(strcmp(property, "xdigit") == 0) { - return _PDCLIB_CTYPE_XDIGT; - } else return 0; - } - return 0; -} - -#endif - -#ifdef TEST -#include "_PDCLIB_test.h" - -int main( void ) -{ - TESTCASE(wctype("") == 0); - TESTCASE_NOREG(wctype(NULL) == 0); // mingw libc crashes on this - - TESTCASE(wctype("alpha") != 0); - TESTCASE(wctype("alnum") != 0); - TESTCASE(wctype("blank") != 0); - TESTCASE(wctype("cntrl") != 0); - TESTCASE(wctype("digit") != 0); - TESTCASE(wctype("graph") != 0); - TESTCASE(wctype("lower") != 0); - TESTCASE(wctype("print") != 0); - TESTCASE(wctype("punct") != 0); - TESTCASE(wctype("space") != 0); - TESTCASE(wctype("upper") != 0); - TESTCASE(wctype("xdigit") != 0); - - TESTCASE_NOREG(wctype("alpha") == _PDCLIB_CTYPE_ALPHA); - TESTCASE_NOREG(wctype("alnum") == (_PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_DIGIT)); - TESTCASE_NOREG(wctype("blank") == _PDCLIB_CTYPE_BLANK); - TESTCASE_NOREG(wctype("cntrl") == _PDCLIB_CTYPE_CNTRL); - TESTCASE_NOREG(wctype("digit") == _PDCLIB_CTYPE_DIGIT); - TESTCASE_NOREG(wctype("graph") == _PDCLIB_CTYPE_GRAPH); - TESTCASE_NOREG(wctype("lower") == _PDCLIB_CTYPE_LOWER); - TESTCASE_NOREG(wctype("print") == (_PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_SPACE)); - TESTCASE_NOREG(wctype("punct") == _PDCLIB_CTYPE_PUNCT); - TESTCASE_NOREG(wctype("space") == _PDCLIB_CTYPE_SPACE); - TESTCASE_NOREG(wctype("upper") == _PDCLIB_CTYPE_UPPER); - TESTCASE_NOREG(wctype("xdigit") == _PDCLIB_CTYPE_XDIGT); - return TEST_RESULTS; -} -#endif +/* wctype( const char * ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#include +#ifndef REGTEST +#include +#include "_PDCLIB_locale.h" + +wctype_t wctype( const char * property ) +{ + if(property) switch(property[0]) + { + case 'a': + if(strcmp(property, "alpha") == 0) { + return _PDCLIB_CTYPE_ALPHA; + } else if(strcmp(property, "alnum") == 0) { + return _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_DIGIT; + } else return 0; + + case 'b': + if(strcmp(property, "blank") == 0) { + return _PDCLIB_CTYPE_BLANK; + } else return 0; + + case 'c': + if(strcmp(property, "cntrl") == 0) { + return _PDCLIB_CTYPE_CNTRL; + } else return 0; + + case 'd': + if(strcmp(property, "digit") == 0) { + return _PDCLIB_CTYPE_DIGIT; + } else return 0; + + case 'g': + if(strcmp(property, "graph") == 0) { + return _PDCLIB_CTYPE_GRAPH; + } else return 0; + + case 'l': + if(strcmp(property, "lower") == 0) { + return _PDCLIB_CTYPE_LOWER; + } else return 0; + + case 'p': + if(strcmp(property, "print") == 0) { + return _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_SPACE; + } else if(strcmp(property, "punct") == 0) { + return _PDCLIB_CTYPE_PUNCT; + } else return 0; + + case 's': + if(strcmp(property, "space") == 0) { + return _PDCLIB_CTYPE_SPACE; + } else return 0; + + case 'u': + if(strcmp(property, "upper") == 0) { + return _PDCLIB_CTYPE_UPPER; + } else return 0; + + case 'x': + if(strcmp(property, "xdigit") == 0) { + return _PDCLIB_CTYPE_XDIGT; + } else return 0; + } + return 0; +} + +#endif + +#ifdef TEST +#include "_PDCLIB_test.h" + +int main( void ) +{ + TESTCASE(wctype("") == 0); + TESTCASE_NOREG(wctype(NULL) == 0); // mingw libc crashes on this + + TESTCASE(wctype("alpha") != 0); + TESTCASE(wctype("alnum") != 0); + TESTCASE(wctype("blank") != 0); + TESTCASE(wctype("cntrl") != 0); + TESTCASE(wctype("digit") != 0); + TESTCASE(wctype("graph") != 0); + TESTCASE(wctype("lower") != 0); + TESTCASE(wctype("print") != 0); + TESTCASE(wctype("punct") != 0); + TESTCASE(wctype("space") != 0); + TESTCASE(wctype("upper") != 0); + TESTCASE(wctype("xdigit") != 0); + + TESTCASE_NOREG(wctype("alpha") == _PDCLIB_CTYPE_ALPHA); + TESTCASE_NOREG(wctype("alnum") == (_PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_DIGIT)); + TESTCASE_NOREG(wctype("blank") == _PDCLIB_CTYPE_BLANK); + TESTCASE_NOREG(wctype("cntrl") == _PDCLIB_CTYPE_CNTRL); + TESTCASE_NOREG(wctype("digit") == _PDCLIB_CTYPE_DIGIT); + TESTCASE_NOREG(wctype("graph") == _PDCLIB_CTYPE_GRAPH); + TESTCASE_NOREG(wctype("lower") == _PDCLIB_CTYPE_LOWER); + TESTCASE_NOREG(wctype("print") == (_PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_SPACE)); + TESTCASE_NOREG(wctype("punct") == _PDCLIB_CTYPE_PUNCT); + TESTCASE_NOREG(wctype("space") == _PDCLIB_CTYPE_SPACE); + TESTCASE_NOREG(wctype("upper") == _PDCLIB_CTYPE_UPPER); + TESTCASE_NOREG(wctype("xdigit") == _PDCLIB_CTYPE_XDIGT); + return TEST_RESULTS; +} +#endif