tregex: use bit masks in uc_len() - neatvi - [fork] simple vi-type editor with UTF-8 support
git clone git://src.adamsgaard.dk/neatvi
Log
Files
Refs
README
---
commit 09ae245a5a3197522cab51d55914d331f8512de5
parent a2fe7e9ef29a43cf747296180156b2970b309a53
Author: Ali Gholami Rudi 
Date:   Sun, 22 May 2016 12:37:13 +0430

regex: use bit masks in uc_len()

Diffstat:
  M regex.c                             |      24 ++++++++++++------------

1 file changed, 12 insertions(+), 12 deletions(-)
---
diff --git a/regex.c b/regex.c
t@@ -96,19 +96,19 @@ static void rnode_free(struct rnode *rnode)
 static 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 & 0x08)
+                return 4;
+        if (~c & 0x04)
+                return 5;
+        if (~c & 0x02)
+                return 6;
+        return 1;
 }
 
 static int uc_dec(char *s)