piChar mbrtowc
This commit is contained in:
@@ -35,12 +35,6 @@ char * __utf8name__ = 0;
|
|||||||
# include <ctype.h>
|
# include <ctype.h>
|
||||||
#endif
|
#endif
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#ifdef ANDROID
|
|
||||||
# if __ANDROID_API__ < 21
|
|
||||||
# define wctomb(s, wc) wcrtomb(s, wc, NULL)
|
|
||||||
# define mbtowc(pwc, s, n) mbrtowc(pwc, s, n, NULL)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//! \addtogroup Core
|
//! \addtogroup Core
|
||||||
//! \{
|
//! \{
|
||||||
@@ -86,9 +80,10 @@ ushort charFromCodepage(const char * c, int size, const char * codepage, int * t
|
|||||||
if (taken) *taken = ret;
|
if (taken) *taken = ret;
|
||||||
return buffer;
|
return buffer;
|
||||||
# else
|
# else
|
||||||
wchar_t wc(0);
|
mbstate_t state;
|
||||||
mbtowc(0, 0, 0); // reset mbtowc
|
memset(&state, 0, sizeof(state));
|
||||||
ret = mbtowc(&wc, c, size);
|
wchar_t wc;
|
||||||
|
ret = mbrtowc(&wc, c, size, &state);
|
||||||
//printf("mbtowc = %d\n", ret);
|
//printf("mbtowc = %d\n", ret);
|
||||||
if (ret < 1) return 0;
|
if (ret < 1) return 0;
|
||||||
return ushort(wc);
|
return ushort(wc);
|
||||||
@@ -389,13 +384,7 @@ PICout operator <<(PICout s, const PIChar & v) {
|
|||||||
#ifdef WINDOWS
|
#ifdef WINDOWS
|
||||||
s << v.toSystem();
|
s << v.toSystem();
|
||||||
#else
|
#else
|
||||||
{
|
s << PIString(v);
|
||||||
char tc[8];
|
|
||||||
wctomb(0, 0);
|
|
||||||
int sz = wctomb(tc, v.ch);
|
|
||||||
for (int b = 0; b < sz; ++b)
|
|
||||||
s << tc[b];
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
s.restoreControl();
|
s.restoreControl();
|
||||||
|
|||||||
@@ -236,17 +236,6 @@ void PIString::appendFromChars(const char * c, int s, const char * codepage) {
|
|||||||
mbsrtowcs(&wstr[0], &c, len+1, &state);
|
mbsrtowcs(&wstr[0], &c, len+1, &state);
|
||||||
resize(len);
|
resize(len);
|
||||||
for (int i=0; i<len; ++i) (*this)[i] = wstr[i];
|
for (int i=0; i<len; ++i) (*this)[i] = wstr[i];
|
||||||
// wchar_t wc;
|
|
||||||
// //qDebug() << "FromChars ...";
|
|
||||||
// while (sz = mbrtowc(&wc, c, s, &state) > 0) {
|
|
||||||
// //qDebug() << "0" << s;
|
|
||||||
//// sz = mbrtowc(&wc, c, s, &state);
|
|
||||||
// //qDebug() << "1" << sz;
|
|
||||||
//// if (sz < 1) break;
|
|
||||||
// push_back(PIChar(wc));
|
|
||||||
// c += sz; s -= sz;
|
|
||||||
// //qDebug() << "2" << c;
|
|
||||||
// }
|
|
||||||
// //qDebug() << "FromChars done" << size();
|
// //qDebug() << "FromChars done" << size();
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user