size_t my_strnxfrm_simple(const CHARSET_INFO *cs, uchar *dst, size_t dstlen, uint nweights, const uchar *src, size_t srclen, uint flags) { const uchar *map= cs->sort_order; uchar *d0= dst; const uchar *end; const uchar *remainder; size_t frmlen; if ((frmlen= MY_MIN(dstlen, nweights)) > srclen) frmlen= srclen; end= src + frmlen; // Do the first few bytes. remainder= src + (frmlen % 8); for (; src < remainder;) *dst++= map[*src++]; // Unroll loop for rest of string. for (; src < end;) { *dst++= map[*src++]; *dst++= map[*src++]; *dst++= map[*src++]; *dst++= map[*src++]; *dst++= map[*src++]; *dst++= map[*src++]; *dst++= map[*src++]; *dst++= map[*src++]; } return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, d0 + dstlen, (uint)(nweights - frmlen), flags, 0); }
size_t my_strnxfrm_simple(const CHARSET_INFO *cs, uchar *dst, size_t dstlen, uint nweights, const uchar *src, size_t srclen, uint flags) { uchar *map= cs->sort_order; uchar *d0= dst; uint frmlen; if ((frmlen= MY_MIN(dstlen, nweights)) > srclen) frmlen= srclen; if (dst != src) { const uchar *end; for (end= src + frmlen; src < end;) *dst++= map[*src++]; } else { const uchar *end; for (end= dst + frmlen; dst < end; dst++) *dst= map[(uchar) *dst]; } return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, d0 + dstlen, nweights - frmlen, flags, 0); }