Lines Matching defs:src

60 static inline unsigned int get_surrogate_value( const WCHAR *src, unsigned int srclen )
62 if (src[0] >= 0xd800 && src[0] <= 0xdfff) /* surrogate pair */
64 if (src[0] > 0xdbff || /* invalid high surrogate */
66 src[1] < 0xdc00 || src[1] > 0xdfff) /* invalid low surrogate */
68 return 0x10000 + ((src[0] & 0x3ff) << 10) + (src[1] & 0x3ff);
70 return src[0];
73 /* query necessary dst length for src string */
74 static inline int get_length_wcs_utf8( int flags, const WCHAR *src, unsigned int srclen )
79 for (len = 0; srclen; srclen--, src++)
81 if (*src < 0x80) /* 0x00-0x7f: 1 byte */
86 if (*src < 0x800) /* 0x80-0x7ff: 2 bytes */
91 if (!(val = get_surrogate_value( src, srclen )))
101 src++;
110 int wine_utf8_wcstombs( int flags, const WCHAR *src, int srclen, char *dst, int dstlen )
114 if (!dstlen) return get_length_wcs_utf8( flags, src, srclen );
116 for (len = dstlen; srclen; srclen--, src++)
118 WCHAR ch = *src;
138 if (!(val = get_surrogate_value( src, srclen )))
165 src++;
200 /* query necessary dst length for src string with composition */
201 static inline int get_length_mbs_utf8_compose( int flags, const char *src, int srclen )
206 const char *srcend = src + srclen;
209 while (src < srcend)
211 unsigned char ch = *src++;
218 if ((res = decode_utf8_char( ch, &src, srcend )) <= 0xffff)
241 static int utf8_mbstowcs_compose( int flags, const char *src, int srclen, WCHAR *dst, int dstlen )
244 const char *srcend = src + srclen;
248 if (!dstlen) return get_length_mbs_utf8_compose( flags, src, srclen );
251 while (src < srcend)
253 unsigned char ch = *src++;
260 if ((res = decode_utf8_char( ch, &src, srcend )) <= 0xffff)
288 /* query necessary dst length for src string */
289 static inline int get_length_mbs_utf8( int flags, const char *src, int srclen )
293 const char *srcend = src + srclen;
295 while (src < srcend)
297 unsigned char ch = *src++;
303 if ((res = decode_utf8_char( ch, &src, srcend )) <= 0x10ffff)
316 int wine_utf8_mbstowcs( int flags, const char *src, int srclen, WCHAR *dst, int dstlen )
319 const char *srcend = src + srclen;
322 if (flags & MB_COMPOSITE) return utf8_mbstowcs_compose( flags, src, srclen, dst, dstlen );
324 if (!dstlen) return get_length_mbs_utf8( flags, src, srclen );
326 while ((dst < dstend) && (src < srcend))
328 unsigned char ch = *src++;
334 if ((res = decode_utf8_char( ch, &src, srcend )) <= 0xffff)
348 if (src < srcend) return -1; /* overflow */