Embedded Artistry libc
C Standard Library Support for Bare-metal Systems
iswprint.c
Go to the documentation of this file.
1 #include <wctype.h>
2 
3 /* Consider all legal codepoints as printable except for:
4  * - C0 and C1 control characters
5  * - U+2028 and U+2029 (line/para break)
6  * - U+FFF9 through U+FFFB (interlinear annotation controls)
7  * The following code is optimized heavily to make hot paths for the
8  * expected printable characters. */
9 
11 {
12  if(wc < 0xffU)
13  {
14  return (wc + 1 & 0x7f) >= 0x21;
15  }
16  if(wc < 0x2028U || wc - 0x202aU < 0xd800 - 0x202a || wc - 0xe000U < 0xfff9 - 0xe000)
17  {
18  return 1;
19  }
20  if(wc - 0xfffcU > 0x10ffff - 0xfffc || (wc & 0xfffe) == 0xfffe)
21  {
22  return 0;
23  }
24 
25  return 1;
26 }
unsigned wint_t
Definition: wctype.h:11
int iswprint(wint_t wc)
Definition: iswprint.c:10