-#define MF_ONLYALPHA 4
- /* how to modify characters in the string */
-#define CONTROL_CHAR ':'
- /* all non-alphabetic characters are treated as CONTROL_CHAR */
-
-#define UNICODE_TRANSLATE(new_c, c, flags) do { \
- if (!c) \
- new_c = 0; \
- else { \
- if (flags & MF_TOLOWER) \
- c = Utolower(c); \
- if (flags & MF_UNACCENT) \
- c = Uunaccent(c); \
- if (flags & MF_ONLYALPHA && !Ualpha(c)) \
- c = CONTROL_CHAR; \
- new_c = c; \
- } \
-} while (0)
-#define ASCII_TRANSLATE(new_c, c, flags) do { \
- if (!c) \
- new_c = 0; \
- else { \
+#define MF_ONLYALPHA 4 /* Convert non-alphas to KMP_CONTROL_CHAR */
+
+#define KMP_CONTROL_CHAR ':'
+
+/* Pre-defined input functions */
+
+#define KMP_GET_UTF8(pos, c, flags) do { uns cc; pos = utf8_get(pos, &cc); c = cc; } while(0)
+
+#define KMP_GET_ASCII(pos, c, flags) do { \
+ c = *pos++; \
+ if (c) { \