123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /* ctype-style APIs.
- *
- * Copyright (C) 2012-2013 Reece H. Dunn
- *
- * This file is part of ucd-tools.
- *
- * ucd-tools is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * ucd-tools is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ucd-tools. If not, see <http://www.gnu.org/licenses/>.
- */
-
- #include "ucd/ucd.h"
-
- int ucd::isalnum(codepoint_t c)
- {
- switch (lookup_category(c))
- {
- case Ll: case Lm: case Lo: case Lt: case Lu:
- case Nd: case Nl: case No:
- return 1;
- default:
- return 0;
- }
- }
-
- int ucd::isalpha(codepoint_t c)
- {
- switch (lookup_category(c))
- {
- case Ll: case Lm: case Lo: case Lt: case Lu:
- return 1;
- default:
- return 0;
- }
- }
-
- int ucd::iscntrl(codepoint_t c)
- {
- return lookup_category(c) == Cc;
- }
-
- int ucd::isdigit(codepoint_t c)
- {
- switch (lookup_category(c))
- {
- case Nd: case Nl: case No:
- return 1;
- default:
- return 0;
- }
- }
-
- int ucd::isgraph(codepoint_t c)
- {
- switch (lookup_category(c))
- {
- case Cc: case Cf: case Cn: case Co: case Cs:
- case Zl: case Zp: case Zs:
- case Ii:
- return 0;
- default:
- return 1;
- }
- }
-
- int ucd::islower(codepoint_t c)
- {
- return lookup_category(c) == Ll;
- }
-
- int ucd::isprint(codepoint_t c)
- {
- switch (lookup_category(c))
- {
- case Cc: case Cf: case Cn: case Co: case Cs:
- case Ii:
- return 0;
- default:
- return 1;
- }
- }
-
- int ucd::ispunct(codepoint_t c)
- {
- switch (lookup_category(c))
- {
- case Pc: case Pd: case Pe: case Pf: case Pi: case Po: case Ps:
- return 1;
- default:
- return 0;
- }
- }
-
- int ucd::isspace(codepoint_t c)
- {
- switch (lookup_category(c))
- {
- case Zl: case Zp: case Zs:
- return 1;
- case Cc:
- switch (c) // Some control characters are also whitespace characters:
- {
- case 0x09: // U+0009 : CHARACTER TABULATION
- case 0x0A: // U+000A : LINE FEED
- case 0x0B: // U+000B : LINE TABULATION
- case 0x0C: // U+000C : FORM FEED
- case 0x0D: // U+000D : CARRIAGE RETURN
- case 0x85: // U+0085 : NEXT LINE
- return 1;
- }
- default:
- return 0;
- }
- }
-
- int ucd::isupper(codepoint_t c)
- {
- return lookup_category(c) == Lu;
- }
|