From 5e5b15ddf01da89a72374497491b3d61606310fb Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sat, 11 Feb 2017 11:09:03 +0000 Subject: [PATCH] printucddata: support printing is* ctype data --- tests/printucddata.c | 40 ++++++++++++++++++++++++++++++++++++++ tests/printucddata_cpp.cpp | 40 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/tests/printucddata.c b/tests/printucddata.c index 81697b48..557b756c 100644 --- a/tests/printucddata.c +++ b/tests/printucddata.c @@ -101,6 +101,43 @@ void uprintf_codepoint(FILE *out, codepoint_t c, char mode) } } +void uprintf_is(FILE *out, codepoint_t c, char mode) +{ + switch (mode) + { + case 'A': // alpha-numeric + fputc(ucd_isalnum(c) ? '1' : '0', out); + break; + case 'a': // alpha + fputc(ucd_isalpha(c) ? '1' : '0', out); + break; + case 'c': // control + fputc(ucd_iscntrl(c) ? '1' : '0', out); + break; + case 'd': // numeric + fputc(ucd_isdigit(c) ? '1' : '0', out); + break; + case 'g': // glyph + fputc(ucd_isgraph(c) ? '1' : '0', out); + break; + case 'l': // lower case + fputc(ucd_islower(c) ? '1' : '0', out); + break; + case 'P': // printable + fputc(ucd_isprint(c) ? '1' : '0', out); + break; + case 'p': // punctuation + fputc(ucd_ispunct(c) ? '1' : '0', out); + break; + case 's': // whitespace + fputc(ucd_isspace(c) ? '1' : '0', out); + break; + case 'u': // upper case + fputc(ucd_isupper(c) ? '1' : '0', out); + break; + } +} + void uprintf(FILE *out, codepoint_t c, const char *format) { while (*format) switch (*format) @@ -117,6 +154,9 @@ void uprintf(FILE *out, codepoint_t c, const char *format) case 'p': // codepoint uprintf_codepoint(out, c, *++format); break; + case 'i': // is* + uprintf_is(out, c, *++format); + break; case 'L': // lowercase uprintf_codepoint(out, ucd_tolower(c), *++format); break; diff --git a/tests/printucddata_cpp.cpp b/tests/printucddata_cpp.cpp index 0411450f..77dffa52 100644 --- a/tests/printucddata_cpp.cpp +++ b/tests/printucddata_cpp.cpp @@ -101,6 +101,43 @@ void uprintf_codepoint(FILE *out, ucd::codepoint_t c, char mode) } } +void uprintf_is(FILE *out, ucd::codepoint_t c, char mode) +{ + switch (mode) + { + case 'A': // alpha-numeric + fputc(ucd::isalnum(c) ? '1' : '0', out); + break; + case 'a': // alpha + fputc(ucd::isalpha(c) ? '1' : '0', out); + break; + case 'c': // control + fputc(ucd::iscntrl(c) ? '1' : '0', out); + break; + case 'd': // numeric + fputc(ucd::isdigit(c) ? '1' : '0', out); + break; + case 'g': // glyph + fputc(ucd::isgraph(c) ? '1' : '0', out); + break; + case 'l': // lower case + fputc(ucd::islower(c) ? '1' : '0', out); + break; + case 'P': // printable + fputc(ucd::isprint(c) ? '1' : '0', out); + break; + case 'p': // punctuation + fputc(ucd::ispunct(c) ? '1' : '0', out); + break; + case 's': // whitespace + fputc(ucd::isspace(c) ? '1' : '0', out); + break; + case 'u': // upper case + fputc(ucd::isupper(c) ? '1' : '0', out); + break; + } +} + void uprintf(FILE *out, ucd::codepoint_t c, const char *format) { while (*format) switch (*format) @@ -117,6 +154,9 @@ void uprintf(FILE *out, ucd::codepoint_t c, const char *format) case 'p': // codepoint uprintf_codepoint(out, c, *++format); break; + case 'i': // is* + uprintf_is(out, c, *++format); + break; case 'L': // lowercase uprintf_codepoint(out, ucd::tolower(c), *++format); break;