-#define isALPHA_uni(c) _generic_swash_uni(_CC_ALPHA, c)
-#define isALPHANUMERIC_uni(c) _generic_swash_uni(_CC_ALPHANUMERIC, c)
-#define isASCII_uni(c) isASCII(c)
-#define isBLANK_uni(c) _generic_uni(_CC_BLANK, is_HORIZWS_cp_high, c)
-#define isCNTRL_uni(c) isCNTRL_L1(c) /* All controls are in Latin1 */
-#define isDIGIT_uni(c) _generic_swash_uni(_CC_DIGIT, c)
-#define isGRAPH_uni(c) _generic_swash_uni(_CC_GRAPH, c)
-#define isIDCONT_uni(c) _generic_uni(_CC_WORDCHAR, _is_uni_perl_idcont, c)
-#define isIDFIRST_uni(c) _generic_uni(_CC_IDFIRST, _is_uni_perl_idstart, c)
-#define isLOWER_uni(c) _generic_swash_uni(_CC_LOWER, c)
-#define isPRINT_uni(c) _generic_swash_uni(_CC_PRINT, c)
-
-#define isPUNCT_uni(c) _generic_swash_uni(_CC_PUNCT, c)
-#define isSPACE_uni(c) _generic_uni(_CC_SPACE, is_XPERLSPACE_cp_high, c)
-#define isPSXSPC_uni(c) isSPACE_uni(c)
-
-#define isUPPER_uni(c) _generic_swash_uni(_CC_UPPER, c)
-#define isVERTWS_uni(c) _generic_uni(_CC_VERTSPACE, is_VERTWS_cp_high, c)
-#define isWORDCHAR_uni(c) _generic_swash_uni(_CC_WORDCHAR, c)
-#define isXDIGIT_uni(c) _generic_uni(_CC_XDIGIT, is_XDIGIT_cp_high, c)
-
-#define toFOLD_uni(c,s,l) to_uni_fold(c,s,l)
-#define toLOWER_uni(c,s,l) to_uni_lower(c,s,l)
-#define toTITLE_uni(c,s,l) to_uni_title(c,s,l)
-#define toUPPER_uni(c,s,l) to_uni_upper(c,s,l)
+#define isALPHA_uvchr(c) _generic_swash_uvchr(_CC_ALPHA, c)
+#define isALPHANUMERIC_uvchr(c) _generic_swash_uvchr(_CC_ALPHANUMERIC, c)
+#define isASCII_uvchr(c) isASCII(c)
+#define isBLANK_uvchr(c) _generic_uvchr(_CC_BLANK, is_HORIZWS_cp_high, c)
+#define isCNTRL_uvchr(c) isCNTRL_L1(c) /* All controls are in Latin1 */
+#define isDIGIT_uvchr(c) _generic_swash_uvchr(_CC_DIGIT, c)
+#define isGRAPH_uvchr(c) _generic_swash_uvchr(_CC_GRAPH, c)
+#define isIDCONT_uvchr(c) _generic_uvchr(_CC_WORDCHAR, _is_uni_perl_idcont, c)
+#define isIDFIRST_uvchr(c) _generic_uvchr(_CC_IDFIRST, _is_uni_perl_idstart, c)
+#define isLOWER_uvchr(c) _generic_swash_uvchr(_CC_LOWER, c)
+#define isPRINT_uvchr(c) _generic_swash_uvchr(_CC_PRINT, c)
+
+#define isPUNCT_uvchr(c) _generic_swash_uvchr(_CC_PUNCT, c)
+#define isSPACE_uvchr(c) _generic_uvchr(_CC_SPACE, is_XPERLSPACE_cp_high, c)
+#define isPSXSPC_uvchr(c) isSPACE_uvchr(c)
+
+#define isUPPER_uvchr(c) _generic_swash_uvchr(_CC_UPPER, c)
+#define isVERTWS_uvchr(c) _generic_uvchr(_CC_VERTSPACE, is_VERTWS_cp_high, c)
+#define isWORDCHAR_uvchr(c) _generic_swash_uvchr(_CC_WORDCHAR, c)
+#define isXDIGIT_uvchr(c) _generic_uvchr(_CC_XDIGIT, is_XDIGIT_cp_high, c)
+
+#define toFOLD_uvchr(c,s,l) to_uni_fold(c,s,l)
+#define toLOWER_uvchr(c,s,l) to_uni_lower(c,s,l)
+#define toTITLE_uvchr(c,s,l) to_uni_title(c,s,l)
+#define toUPPER_uvchr(c,s,l) to_uni_upper(c,s,l)
+
+/* For backwards compatibility, even though '_uni' should mean official Unicode
+ * code points, in Perl it means native for those below 256 */
+#define isALPHA_uni(c) isALPHA_uvchr(c)
+#define isALPHANUMERIC_uni(c) isALPHANUMERIC_uvchr(c)
+#define isASCII_uni(c) isASCII_uvchr(c)
+#define isBLANK_uni(c) isBLANK_uvchr(c)
+#define isCNTRL_uni(c) isCNTRL_uvchr(c)
+#define isDIGIT_uni(c) isDIGIT_uvchr(c)
+#define isGRAPH_uni(c) isGRAPH_uvchr(c)
+#define isIDCONT_uni(c) isIDCONT_uvchr(c)
+#define isIDFIRST_uni(c) isIDFIRST_uvchr(c)
+#define isLOWER_uni(c) isLOWER_uvchr(c)
+#define isPRINT_uni(c) isPRINT_uvchr(c)
+#define isPUNCT_uni(c) isPUNCT_uvchr(c)
+#define isSPACE_uni(c) isSPACE_uvchr(c)
+#define isPSXSPC_uni(c) isPSXSPC_uvchr(c)
+#define isUPPER_uni(c) isUPPER_uvchr(c)
+#define isVERTWS_uni(c) isVERTWS_uvchr(c)
+#define isWORDCHAR_uni(c) isWORDCHAR_uvchr(c)
+#define isXDIGIT_uni(c) isXDIGIT_uvchr(c)
+#define toFOLD_uni(c,s,l) toFOLD_uvchr(c,s,l)
+#define toLOWER_uni(c,s,l) toLOWER_uvchr(c,s,l)
+#define toTITLE_uni(c,s,l) toTITLE_uvchr(c,s,l)
+#define toUPPER_uni(c,s,l) toUPPER_uvchr(c,s,l)