diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2017-07-06 16:40:03 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2017-07-06 16:40:03 +0300 |
commit | ea69d766b0a882b66836d7000ac676c9c6d31dec (patch) | |
tree | 5e686eb6769bf8507241b584ca7faa109c3d0f69 | |
parent | ce4b84abd553d2a9150a91445266c34f239d2b7e (diff) | |
download | mailutils-ea69d766b0a882b66836d7000ac676c9c6d31dec.tar.gz mailutils-ea69d766b0a882b66836d7000ac676c9c6d31dec.tar.bz2 |
Start rewriting parse822
* include/mailutils/cctype.h (MU_CTYPE_IMSPC)
(MU_CTYPE_NWCTL,MU_CTYPE_IMATM): New classes.
(mu_isimspc,mu_isnwctl,mu_isimatm): New macros
* libmailutils/string/muctype.c: Mark characters from the
above classes.
* include/mailutils/parse822.h (mu_parse822_is_char)
(mu_parse822_is_digit,mu_parse822_is_ctl)
(mu_parse822_is_space,mu_parse822_is_htab)
(mu_parse822_is_lwsp_char,mu_parse822_is_special)
(mu_parse822_is_atom_char,mu_parse822_is_q_text)
(mu_parse822_is_d_text,mu_parse822_is_smtp_q): Rewrite as
inline static functions, using macros from cctype.h
* libmailutils/address/parse822.c: See above.
(parse822_is_atom_char_ex): Remove.
-rw-r--r-- | include/mailutils/cctype.h | 38 | ||||
-rw-r--r-- | include/mailutils/parse822.h | 99 | ||||
-rw-r--r-- | libmailutils/address/parse822.c | 104 | ||||
-rw-r--r-- | libmailutils/string/muctype.c | 256 |
4 files changed, 240 insertions, 257 deletions
diff --git a/include/mailutils/cctype.h b/include/mailutils/cctype.h index fba82a104..da9f14afa 100644 --- a/include/mailutils/cctype.h +++ b/include/mailutils/cctype.h @@ -24,22 +24,27 @@ extern "C" { #endif -#define MU_CTYPE_ALPHA 0x0001 -#define MU_CTYPE_DIGIT 0x0002 -#define MU_CTYPE_BLANK 0x0004 -#define MU_CTYPE_CNTRL 0x0008 -#define MU_CTYPE_GRAPH 0x0010 -#define MU_CTYPE_LOWER 0x0020 -#define MU_CTYPE_UPPER 0x0040 -#define MU_CTYPE_PRINT 0x0080 -#define MU_CTYPE_PUNCT 0x0100 -#define MU_CTYPE_SPACE 0x0200 -#define MU_CTYPE_XLETR 0x0400 -#define MU_CTYPE_ENDLN 0x0800 -#define MU_CTYPE_TSPEC 0x1000 /* tspecials: RFC 2045, section 5.1. */ -#define MU_CTYPE_IDENT 0x2000 /* Valid identifier consituent: alnum or _ */ -#define MU_CTYPE_HEADR 0x4000 /* Valid header name consituent: alnum, _, +#define MU_CTYPE_ALPHA 0x00001 +#define MU_CTYPE_DIGIT 0x00002 +#define MU_CTYPE_BLANK 0x00004 +#define MU_CTYPE_CNTRL 0x00008 +#define MU_CTYPE_GRAPH 0x00010 +#define MU_CTYPE_LOWER 0x00020 +#define MU_CTYPE_UPPER 0x00040 +#define MU_CTYPE_PRINT 0x00080 +#define MU_CTYPE_PUNCT 0x00100 +#define MU_CTYPE_SPACE 0x00200 +#define MU_CTYPE_XLETR 0x00400 +#define MU_CTYPE_ENDLN 0x00800 +#define MU_CTYPE_TSPEC 0x01000 /* tspecials: RFC 2045, section 5.1. */ +#define MU_CTYPE_IDENT 0x02000 /* Valid identifier consituent: alnum or _ */ +#define MU_CTYPE_HEADR 0x04000 /* Valid header name consituent: alnum, _, or - */ +#define MU_CTYPE_IMSPC 0x08000 /* Internet Message Format Specials: + RFC2822, 3.2.1 */ +#define MU_CTYPE_NWCTL 0x10000 /* Internet Message NO-WS-CTL: + RFC2822, 3.2.1 */ +#define MU_CTYPE_IMATM 0x20000 /* Internet Message atom constituent */ #define MU_C_TAB_MAX 128 @@ -65,6 +70,9 @@ extern int mu_c_tab[MU_C_TAB_MAX]; #define mu_istspec(c) mu_c_is_class (c, MU_CTYPE_TSPEC) #define mu_isident(c) mu_c_is_class (c, MU_CTYPE_IDENT) #define mu_isheadr(c) mu_c_is_class (c, MU_CTYPE_HEADR) +#define mu_isimspc(c) mu_c_is_class (c, MU_CTYPE_IMSPC) +#define mu_isnwctl(c) mu_c_is_class (c, MU_CTYPE_NWCTL) +#define mu_isimatm(c) mu_c_is_class (c, MU_CTYPE_IMATM) #define mu_tolower(c) \ ({ int __c = (c); \ diff --git a/include/mailutils/parse822.h b/include/mailutils/parse822.h index 77da5dec0..f4712b9c5 100644 --- a/include/mailutils/parse822.h +++ b/include/mailutils/parse822.h @@ -25,6 +25,7 @@ #include <mailutils/types.h> #include <mailutils/datetime.h> +#include <mailutils/cctype.h> #ifdef __cplusplus extern "C" { @@ -36,19 +37,95 @@ extern "C" { */ /* From RFC 822, 3.3 Lexical Tokens */ +/* + * Character Classification + * + * Note that all return values are: + * 1 -> TRUE + * 0 -> FALSE + * This may be appear different than the 0 == success return + * values of the other functions, but I was getting lost in + * boolean arithmetic. + */ +static inline int +mu_parse822_is_char (char c) +{ + return mu_isascii (c); +} + +static inline int +mu_parse822_is_digit (char c) +{ + /* digit = <any ASCII decimal digit> */ + + return mu_isdigit (c); +} + +static inline int +mu_parse822_is_ctl (char c) +{ + return mu_isnwctl (c); +} + +static inline int +mu_parse822_is_space (char c) +{ + return c == ' '; +} + +static inline int +mu_parse822_is_htab (char c) +{ + return c == '\t'; +} -extern int mu_parse822_is_char (char c); -extern int mu_parse822_is_digit (char c); -extern int mu_parse822_is_ctl (char c); -extern int mu_parse822_is_space (char c); -extern int mu_parse822_is_htab (char c); -extern int mu_parse822_is_lwsp_char (char c); -extern int mu_parse822_is_special (char c); -extern int mu_parse822_is_atom_char (char c); -extern int mu_parse822_is_q_text (char c); -extern int mu_parse822_is_d_text (char c); -extern int mu_parse822_is_smtp_q (char c); +static inline int +mu_parse822_is_lwsp_char (char c) +{ + return mu_isspace (c); +} + +static inline int +mu_parse822_is_special (char c) +{ + return mu_isimspc (c); +} + +static inline int +mu_parse822_is_atom_char (char c) +{ + return mu_isimatm (c); +} + +static inline int +mu_parse822_is_q_text (char c) +{ +return mu_parse822_is_char (c) + && c != '"' + && c != '\\' + && c != '\r'; +} + +static inline int +mu_parse822_is_d_text (char c) +{ + return mu_parse822_is_char (c) + && c != '[' + && c != ']' + && c != '\\' + && c != '\r'; +} +/* + * SMTP's version of qtext, called <q> in the RFC 821 syntax, + * also excludes <LF>. + */ +static inline int +mu_parse822_is_smtp_q (char c) +{ + return mu_parse822_is_q_text (c) && c != '\n'; +} + extern int mu_parse822_skip_crlf (const char **p, const char *e); extern int mu_parse822_skip_lwsp_char (const char **p, const char *e); extern int mu_parse822_skip_lwsp (const char **p, const char *e); diff --git a/libmailutils/address/parse822.c b/libmailutils/address/parse822.c index 9a4ef48de..bb433da4c 100644 --- a/libmailutils/address/parse822.c +++ b/libmailutils/address/parse822.c @@ -174,108 +174,6 @@ str_free (char **s) } } -/* - * Character Classification - could be rewritten in a C library - * independent way, my system's C library matches the RFC - * definitions. I don't know if that's guaranteed. - * - * Note that all return values are: - * 1 -> TRUE - * 0 -> FALSE - * This may be appear different than the 0 == success return - * values of the other functions, but I was getting lost in - * boolean arithmetic. - */ -int -mu_parse822_is_char (char c) -{ - return mu_isascii (c); -} - -int -mu_parse822_is_digit (char c) -{ - /* digit = <any ASCII decimal digit> */ - - return mu_isdigit ((unsigned) c); -} - -int -mu_parse822_is_ctl (char c) -{ - return mu_iscntrl ((unsigned) c) || c == 127 /* DEL */ ; -} - -int -mu_parse822_is_space (char c) -{ - return c == ' '; -} - -int -mu_parse822_is_htab (char c) -{ - return c == '\t'; -} - -int -mu_parse822_is_lwsp_char (char c) -{ - return mu_parse822_is_space (c) || mu_parse822_is_htab (c); -} - -int -mu_parse822_is_special (char c) -{ - return strchr ("()<>@,;:\\\".[]", c) ? 1 : 0; -} - -int -parse822_is_atom_char_ex (char c) -{ - return !mu_parse822_is_special (c) - && !mu_parse822_is_space (c) - && !mu_parse822_is_ctl (c); -} - -int -mu_parse822_is_atom_char (char c) -{ - return mu_parse822_is_char (c) && parse822_is_atom_char_ex (c); -} - -int -mu_parse822_is_q_text (char c) -{ - return - mu_parse822_is_char (c) && - c != '"' && - c != '\\' && - c != '\r'; -} - -int -mu_parse822_is_d_text (char c) -{ - return - mu_parse822_is_char (c) && - c != '[' && - c != ']' && - c != '\\' && - c != '\r'; -} -/* - * SMTP's version of qtext, called <q> in the RFC 821 syntax, - * also excludes <LF>. - */ -int -mu_parse822_is_smtp_q (char c) -{ - return - mu_parse822_is_q_text (c) && - c != '\n'; -} - /***** From RFC 822, 3.3 Lexical Tokens *****/ int @@ -500,7 +398,7 @@ parse822_atom_ex (const char **p, const char *e, char **atom) mu_parse822_skip_comments (p, e); - for (ptr = *p; (ptr != e) && parse822_is_atom_char_ex (*ptr); ptr++) + for (ptr = *p; (ptr != e) && mu_parse822_is_atom_char (*ptr); ptr++) ; if (ptr - *p == 0) return EPARSE; diff --git a/libmailutils/string/muctype.c b/libmailutils/string/muctype.c index bd24a2aa8..12262073c 100644 --- a/libmailutils/string/muctype.c +++ b/libmailutils/string/muctype.c @@ -21,132 +21,132 @@ #include <mailutils/cctype.h> int mu_c_tab[MU_C_TAB_MAX] = { - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL|MU_CTYPE_SPACE|MU_CTYPE_BLANK, - MU_CTYPE_CNTRL|MU_CTYPE_SPACE|MU_CTYPE_ENDLN, - MU_CTYPE_CNTRL|MU_CTYPE_SPACE, - MU_CTYPE_CNTRL|MU_CTYPE_SPACE, - MU_CTYPE_CNTRL|MU_CTYPE_SPACE|MU_CTYPE_ENDLN, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_CNTRL, - MU_CTYPE_PRINT|MU_CTYPE_SPACE|MU_CTYPE_BLANK, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_HEADR, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IDENT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT, - MU_CTYPE_CNTRL + /* 000 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 001 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 002 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 003 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 004 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 005 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 006 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 007 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 010 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* \t */ MU_CTYPE_CNTRL|MU_CTYPE_SPACE|MU_CTYPE_BLANK, + /* \n */ MU_CTYPE_CNTRL|MU_CTYPE_SPACE|MU_CTYPE_ENDLN, + /* \v */ MU_CTYPE_CNTRL|MU_CTYPE_SPACE|MU_CTYPE_NWCTL, + /* \f */ MU_CTYPE_CNTRL|MU_CTYPE_SPACE|MU_CTYPE_NWCTL, + /* \r */ MU_CTYPE_CNTRL|MU_CTYPE_SPACE|MU_CTYPE_ENDLN, + /* 016 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 017 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 020 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 021 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 022 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 023 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 024 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 025 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 026 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 027 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 030 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 031 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 032 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 033 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 034 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 035 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 036 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* 037 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL, + /* ' ' */ MU_CTYPE_PRINT|MU_CTYPE_SPACE|MU_CTYPE_BLANK, + /* ! */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* " */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* # */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* $ */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* % */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* & */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* ' */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* ( */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* ) */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* * */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* + */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* , */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* - */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* . */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMSPC, + /* / */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMATM, + /* 0 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 1 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 2 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 3 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 4 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 5 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 6 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 7 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 8 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* 9 */ MU_CTYPE_DIGIT|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* : */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* ; */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* < */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* = */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMATM, + /* > */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* ? */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMATM, + /* @ */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* A */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* B */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* C */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* D */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* E */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* F */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* G */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* H */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* I */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* J */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* K */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* L */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* M */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* N */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* O */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* P */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* Q */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* R */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* S */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* T */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* U */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* V */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* W */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* X */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* Y */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* Z */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_UPPER|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* [ */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* \ */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* ] */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_TSPEC|MU_CTYPE_IMSPC, + /* ^ */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* _ */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IDENT|MU_CTYPE_IMATM, + /* ` */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* a */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* b */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* c */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* d */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* e */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* f */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_XLETR|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* g */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* h */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* i */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* j */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* k */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* l */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* m */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* n */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* o */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* p */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* q */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* r */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* s */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* t */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* u */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* v */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* w */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* x */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* y */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* z */ MU_CTYPE_ALPHA|MU_CTYPE_GRAPH|MU_CTYPE_LOWER|MU_CTYPE_PRINT|MU_CTYPE_IDENT|MU_CTYPE_HEADR|MU_CTYPE_IMATM, + /* { */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* | */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* } */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* ~ */ MU_CTYPE_GRAPH|MU_CTYPE_PRINT|MU_CTYPE_PUNCT|MU_CTYPE_IMATM, + /* 177 */ MU_CTYPE_CNTRL|MU_CTYPE_NWCTL }; |