Hi all.
I am developing games mainly on Windows with chinese language. That means, the wchar_t is 16 bits in UTF-16LE, and the Windows API expects char* to be in GBK, not in UTF-8. Since CEGUI is designed platform-independent, I think there is some bugs in String.
I'm useing svn 2284, just a week after 0.7.0.
a. Line 161 in CEGUIDynamicModule.cpp the formatted message returned by FormatMessageA is in CP_OEMCP, but CEGUI::String expects char* in ASCII regardless the locale. Such an assignment will cut every chinese char into 2 meaningless code points.
b. CEGUI::String::c_str() returns const char* in UTF-8, but as input parameter const char * is treated as ASCII. Thus a=b or a=b.data() is ok, but a=b.c_str() will result in a meaningless String. I prefer c_str() returns const utf8* or returns const char * but throw an exception if the string contains code points not in ASCII.
c. The worse is, std::string is also treated as in ASCII, so the assignment and auto-typecasting of std::string is sometimes a snare!
d. There is no support of wchar_t. On some platforms wchar_t is UTF-32, and some compilers take wchar_t and unsigned int as the same type, but even this, String has no assignment of utf32*, I don't know why.
e. On Windows, CEGUI::String accepts neither UTF-16LE wchar_t* nor CP_OEMCP char*(if CP_OEMCP is neither ASCII nor UTF-8). There is just no way to cooperate with other modules of the game at all! Or, I don't use Chinese strings at all?
f. Additionally, I wish CEGUI::String::data_type is configable. If some users of CEGUI prefer strings store in short int or char and accept all the disadvantage, why hard-code all the member data and functions with utf32?
Something about CEGUI::String
Moderators: CEGUI MVP, CEGUI Team
Re: Something about CEGUI::String
I'm sorry. The problem (a) will not happen, we have forced the message formated in English.
Now I have changed the value_type from int to wchar_t, and make String compatible with std::wstring.
Now I have changed the value_type from int to wchar_t, and make String compatible with std::wstring.
Return to “CEGUI Library Development Discussion”
Who is online
Users browsing this forum: No registered users and 1 guest