tuc: replace comparison with bit checks in uc_len() - neatvi - [fork] simple vi-type editor with UTF-8 support
 (HTM) git clone git://src.adamsgaard.dk/neatvi
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit 6ec8f20a4a15db6ec888b4815d9b7eb426515dfa
 (DIR) parent 978c4c03d19f920e0d42ca972d27f94d1dfc5327
 (HTM) Author: Ali Gholami Rudi <ali@rudi.ir>
       Date:   Mon, 15 Jun 2015 18:51:47 +0430
       
       uc: replace comparison with bit checks in uc_len()
       
       Diffstat:
         M uc.c                                |      26 +++++++++++++-------------
       
       1 file changed, 13 insertions(+), 13 deletions(-)
       ---
 (DIR) diff --git a/uc.c b/uc.c
       t@@ -10,19 +10,19 @@
        int uc_len(char *s)
        {
                int c = (unsigned char) s[0];
       -        if (c > 0 && c <= 0x7f)
       -                return 1;
       -        if (c >= 0xfc)
       -                return 6;
       -        if (c >= 0xf8)
       -                return 5;
       -        if (c >= 0xf0)
       -                return 4;
       -        if (c >= 0xe0)
       -                return 3;
       -        if (c >= 0xc0)
       +        if (~c & 0x80)
       +                return c > 0;
       +        if (~c & 0x20)
                        return 2;
       -        return c != 0;
       +        if (~c & 0x10)
       +                return 3;
       +        if (~c & 0x80)
       +                return 4;
       +        if (~c & 0x40)
       +                return 5;
       +        if (~c & 0x20)
       +                return 6;
       +        return 1;
        }
        
        /* the number of utf-8 characters in s */
       t@@ -121,7 +121,7 @@ char *uc_chr(char *s, int off)
                return s && (off < 0 || i == off) ? s : "";
        }
        
       -/* the number of characters between s and s + off*/
       +/* the number of characters between s and s + off */
        int uc_off(char *s, int off)
        {
                char *e = s + off;