summaryrefslogtreecommitdiff
path: root/py/misc.h
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-15 23:13:41 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-27 00:04:20 +0300
commitce81312d8a81c7579ecc35ccdc53a49543c0b0d5 (patch)
tree26c37ec849e00af51f739e126041142d907c14cd /py/misc.h
parent63143c94cef353d7bae13f7b13650801bb901c94 (diff)
misc: Add count_lead_ones() function, useful for UTF-8 handling.
Diffstat (limited to 'py/misc.h')
-rw-r--r--py/misc.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/py/misc.h b/py/misc.h
index 97e9b30ed..7a736560a 100644
--- a/py/misc.h
+++ b/py/misc.h
@@ -166,4 +166,17 @@ int DEBUG_printf(const char *fmt, ...);
extern uint mp_verbose_flag;
+// This is useful for unicode handling. Some CPU archs has
+// special instructions for efficient implentation of this
+// function (e.g. CLZ on ARM).
+#ifndef count_lead_ones
+static inline uint count_lead_ones(byte val) {
+ uint c = 0;
+ for (byte mask = 0x80; val & mask; mask >>= 1) {
+ c++;
+ }
+ return c;
+}
+#endif
+
#endif // _INCLUDED_MINILIB_H