LString LString::fromUtf8(const std::string &s) { if (s.size() == 0) return LString(); const uint8_t *begin = reinterpret_cast<const uint8_t*>(s.c_str()); const uint8_t *end = begin + s.size(); LString ret; ret.reserve(s.size()); LChar *destBegin = ret.begin(); LChar *destEnd = ret.end(); bool conversionSucceeded = utf8ToUtf32(&begin, end, &destBegin, destEnd); assert(conversionSucceeded && "Failed conversion utf8 -> utf32"); ret.resize(destBegin - ret.begin()); return ret; }