| tuc: make uc_len() more compact by combining the first two conditions - neatvi … | |
| git clone git://src.adamsgaard.dk/neatvi | |
| Log | |
| Files | |
| Refs | |
| README | |
| --- | |
| commit cf0d56f4f7ecd22878eda626d835db86d1fd8cf7 | |
| parent 98fc156cbe154ff745f271b07f5e97d54807c858 | |
| Author: Ali Gholami Rudi <[email protected]> | |
| Date: Fri, 13 Mar 2020 00:01:38 +0330 | |
| uc: make uc_len() more compact by combining the first two conditions | |
| Diffstat: | |
| M regex.c | 12 +++++------- | |
| M uc.c | 12 +++++------- | |
| 2 files changed, 10 insertions(+), 14 deletions(-) | |
| --- | |
| diff --git a/regex.c b/regex.c | |
| t@@ -98,10 +98,8 @@ static void rnode_free(struct rnode *rnode) | |
| static int uc_len(char *s) | |
| { | |
| int c = (unsigned char) s[0]; | |
| - if (~c & 0x80) /* ASCII */ | |
| + if (~c & 0xc0) /* ASCII or invalid */ | |
| return c > 0; | |
| - if (~c & 0x40) /* invalid UTF-8 */ | |
| - return 1; | |
| if (~c & 0x20) | |
| return 2; | |
| if (~c & 0x10) | |
| t@@ -114,13 +112,13 @@ static int uc_len(char *s) | |
| static int uc_dec(char *s) | |
| { | |
| int c = (unsigned char) s[0]; | |
| - if (!(c & 0x80)) | |
| + if (~c & 0xc0) /* ASCII or invalid */ | |
| return c; | |
| - if (!(c & 0x20)) | |
| + if (~c & 0x20) | |
| return ((c & 0x1f) << 6) | (s[1] & 0x3f); | |
| - if (!(c & 0x10)) | |
| + if (~c & 0x10) | |
| return ((c & 0x0f) << 12) | ((s[1] & 0x3f) << 6) | (s[2] & 0x3… | |
| - if (!(c & 0x08)) | |
| + if (~c & 0x08) | |
| return ((c & 0x07) << 18) | ((s[1] & 0x3f) << 12) | ((s[2] & 0… | |
| return c; | |
| } | |
| diff --git a/uc.c b/uc.c | |
| t@@ -10,10 +10,8 @@ | |
| int uc_len(char *s) | |
| { | |
| int c = (unsigned char) s[0]; | |
| - if (~c & 0x80) /* ASCII */ | |
| + if (~c & 0xc0) /* ASCII or invalid */ | |
| return c > 0; | |
| - if (~c & 0x40) /* invalid UTF-8 */ | |
| - return 1; | |
| if (~c & 0x20) | |
| return 2; | |
| if (~c & 0x10) | |
| t@@ -36,13 +34,13 @@ int uc_slen(char *s) | |
| int uc_code(char *s) | |
| { | |
| int c = (unsigned char) s[0]; | |
| - if (!(c & 0x80)) | |
| + if (~c & 0xc0) /* ASCII or invalid */ | |
| return c; | |
| - if (!(c & 0x20)) | |
| + if (~c & 0x20) | |
| return ((c & 0x1f) << 6) | (s[1] & 0x3f); | |
| - if (!(c & 0x10)) | |
| + if (~c & 0x10) | |
| return ((c & 0x0f) << 12) | ((s[1] & 0x3f) << 6) | (s[2] & 0x3… | |
| - if (!(c & 0x08)) | |
| + if (~c & 0x08) | |
| return ((c & 0x07) << 18) | ((s[1] & 0x3f) << 12) | ((s[2] & 0… | |
| return c; | |
| } |