// NeL - MMORPG Framework
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
#include "stdmisc.h"
#include "nel/misc/ucstring.h"
#include "nel/misc/utf_string_view.h"
void ucstring::toString(std::string &str) const
{
str.resize(size());
for (uint i = 0; i < str.size(); i++)
{
if (operator[](i) > 255)
str[i] = '?';
else
str[i] = (char)operator[](i);
}
}
std::string ucstring::toUtf8() const
{
return NLMISC::CUtfStringView(*this).toUtf8();
}
void ucstring::fromUtf8(const std::string &stringUtf8)
{
*this = NLMISC::CUtfStringView(stringUtf8).toUtf16();
}
void ucstring::rawCopy(const std::string &str)
{
// We need to convert the char into 8bits unsigned int before promotion to 16 bits
// otherwise, as char are signed on some compiler (MSCV for ex), the sign bit is extended to 16 bits.
resize(str.size());
std::string::const_iterator first(str.begin()), last(str.end());
iterator dest(begin());
for (; first != last; ++first, ++dest)
{
*dest = uint8(*first);
}
}
/* end of file */