convert Unicode glyphs to multibyte sequences.
Added multibyte_strlen to calculate string lengths correctly when dealing with multibyte strings.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1560 c06c8d41-db1a-0410-9941-cceddc491573
CVC5FFFLGVRR3KPYDNB6RF4FNACV3LI3HPSR4MCUNZ4C3FSQYBDAC PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC X3RDT655FEYO6XEVPIUAPEPJZAFE55KZBH2AZOLK3NGHINMVIGFQC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC 6HQB2N6N75R2RGKJFWRUN7WAC2PNGWQFXTII5DTRLTHZ2BOTMTVAC ID2OZJTHFXL74RVUCS3JCMDQEUHAXCQFZU7235VU6IEVAAUWD2FAC GCIZIUXO5TYROKDUYB3HAY7H7MRDTJNM7HR7DGSH7KXDIZC2LCDAC YRY2TC3VHOYE47M23UJGUWDGF7H7WGU7WLWI4SUNM4EDNTGUPHGAC ODNAIEJW732NG7USKQKCIP4R4DAEYXXJQX6LY7TIN32NKE75454QC std::string stringize_glyph(unsigned glyph){if (crawl_state.glyph2strfn)return (*crawl_state.glyph2strfn)(glyph);return std::string(1, glyph);}int multibyte_strlen(const std::string &s){if (crawl_state.multibyte_strlen)return (*crawl_state.multibyte_strlen)(s);return (s.length());}
#ifdef UNICODE_GLYPHSstatic std::string unix_glyph2string(unsigned gly){char buf[50]; // Overkill, I know.wchar_t wcbuf[2];wcbuf[0] = gly;wcbuf[1] = 0;if (wcstombs(buf, wcbuf, sizeof buf) != (size_t) -1)return (buf);return std::string(1, gly);}static int unix_multibyte_strlen(const std::string &s){const char *cs = s.c_str();size_t len = mbsrtowcs(NULL, &cs, 0, NULL);return (len == (size_t) -1? s.length() : len);}#endif