This code is adding the UTF-8 for a Greek character to a string. It
previously used Copy, but this character is representable as two bytes
in both ASCII and EBCDIC UTF-8, the only character sets that Perl will
ever supports, so we can use the specialized code that is used most
everywhere else for two byte UTF-8 characters, avoiding the function
overhead, and having to treat this character as particularly special.
#include "reentr.h"
#include "regcharclass.h"
-static const STRLEN small_mu_len = sizeof(GREEK_SMALL_LETTER_MU_UTF8) - 1;
static const STRLEN capital_iota_len = sizeof(GREEK_CAPITAL_LETTER_IOTA_UTF8) - 1;
-
/* variations on pp_null */
PP(pp_stub)
(send -s) * 2 + 1);
d = (U8*)SvPVX(dest) + len;
- Copy(GREEK_SMALL_LETTER_MU_UTF8, d, small_mu_len, U8);
- d += small_mu_len;
+ *d++ = UTF8_TWO_BYTE_HI(GREEK_SMALL_LETTER_MU);
+ *d++ = UTF8_TWO_BYTE_LO(GREEK_SMALL_LETTER_MU);
s++;
for (; s < send; s++) {
U+0300 string
U+0399 string
-U+03BC string
U+1E9E string_skip_if_undef
# define COMBINING_GRAVE_ACCENT_UTF8 "\xCC\x80" /* U+0300 */
# define GREEK_CAPITAL_LETTER_IOTA_UTF8 "\xCE\x99" /* U+0399 */
-# define GREEK_SMALL_LETTER_MU_UTF8 "\xCE\xBC" /* U+03BC */
# define LATIN_CAPITAL_LETTER_SHARP_S_UTF8 "\xE1\xBA\x9E" /* U+1E9E */
# define COMBINING_GRAVE_ACCENT_UTF8 "\xAF\x41" /* U+0300 */
# define GREEK_CAPITAL_LETTER_IOTA_UTF8 "\xB3\x68" /* U+0399 */
-# define GREEK_SMALL_LETTER_MU_UTF8 "\xB4\x70" /* U+03BC */
# define LATIN_CAPITAL_LETTER_SHARP_S_UTF8 "\xBF\x63\x72" /* U+1E9E */
# define COMBINING_GRAVE_ACCENT_UTF8 "\xAD\x41" /* U+0300 */
# define GREEK_CAPITAL_LETTER_IOTA_UTF8 "\xB2\x67" /* U+0399 */
-# define GREEK_SMALL_LETTER_MU_UTF8 "\xB3\x6A" /* U+03BC */
# define LATIN_CAPITAL_LETTER_SHARP_S_UTF8 "\xBF\x62\x71" /* U+1E9E */