* @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
* @version 1.0
*/
+#include <stddef.h>
#include <dpl/string.h>
#include <dpl/char_traits.h>
#include <dpl/errno_string.h>
#include <unicode/ustring.h>
// TODO: Completely move to ICU
-namespace DPL
-{
+namespace DPL {
namespace //anonymous
{
class ASCIIValidator
{
const std::string& m_TestedString;
-public:
+ public:
ASCIIValidator(const std::string& aTestedString);
void operator()(char aCharacter) const;
};
-ASCIIValidator::ASCIIValidator(const std::string& aTestedString)
- : m_TestedString(aTestedString)
-{
-}
+ASCIIValidator::ASCIIValidator(const std::string& aTestedString) :
+ m_TestedString(aTestedString)
+{}
void ASCIIValidator::operator()(char aCharacter) const
{
// Check for ASCII data range
- if (aCharacter <= 0)
- {
- ThrowMsg(StringException::InvalidASCIICharacter,
- "invalid character code " << static_cast<int>(aCharacter)
- << " from string [" << m_TestedString
- << "] passed as ASCII");
+ if (aCharacter <= 0) {
+ ThrowMsg(
+ StringException::InvalidASCIICharacter,
+ "invalid character code " << static_cast<int>(aCharacter)
+ << " from string [" <<
+ m_TestedString
+ << "] passed as ASCII");
}
}
String FromUTF8String(const std::string& aIn)
{
- if (aIn.empty())
-
+ if (aIn.empty()) {
return String();
+ }
size_t inbytes = aIn.size();
// oldsize - letters in UTF-8 string
// end - end character for UTF-32 (\0)
// bom - Unicode header in front of string (0xfeff)
- size_t outbytes = sizeof(wchar_t)*(inbytes + 2);
+ size_t outbytes = sizeof(wchar_t) * (inbytes + 2);
std::vector<wchar_t> output(inbytes + 2, 0);
size_t outbytesleft = outbytes;
// but during conversion from UTF32 uses internaly wchar_t
char* outbuf = reinterpret_cast<char*>(&output[0]);
- iconv_t iconvHandle = iconv_open("UTF-32","UTF-8");
+ iconv_t iconvHandle = iconv_open("UTF-32", "UTF-8");
- if (gc_IconvOperError == iconvHandle)
- {
+ if (gc_IconvOperError == iconvHandle) {
int error = errno;
ThrowMsg(StringException::IconvInitErrorUTF8ToUTF32,
"error: " << GetErrnoString(error));
}
- size_t iconvRet = iconv(iconvHandle, &inbuf, &inbytes, &outbuf, &outbytesleft);
+ size_t iconvRet = iconv(iconvHandle,
+ &inbuf,
+ &inbytes,
+ &outbuf,
+ &outbytesleft);
iconv_close(iconvHandle);
- if (gc_IconvConvertError == iconvRet)
- {
+ if (gc_IconvConvertError == iconvRet) {
ThrowMsg(StringException::IconvConvertErrorUTF8ToUTF32,
"iconv failed for " << "UTF-32 <- UTF-8" << "error: "
- << GetErrnoString());
- return String();
+ << GetErrnoString());
}
// Ignore BOM in front of UTF-32
std::string ToUTF8String(const DPL::String& aIn)
{
- if (aIn.empty())
-
+ if (aIn.empty()) {
return std::string();
+ }
size_t inbytes = aIn.size() * sizeof(wchar_t);
size_t outbytes = inbytes + sizeof(char);
// wstring returns wchar_t but iconv expects char*
// iconv internally is processing input as wchar_t
- char* inbuf = reinterpret_cast<char*>(const_cast<wchar_t*>(aIn.c_str()));
+ char* inbuf = reinterpret_cast<char*>(const_cast<wchar_t*>(aIn.c_str()));
std::vector<char> output(inbytes, 0);
char* outbuf = &output[0];
size_t outbytesleft = outbytes;
- iconv_t iconvHandle = iconv_open("UTF-8","UTF-32");
+ iconv_t iconvHandle = iconv_open("UTF-8", "UTF-32");
- if (gc_IconvOperError == iconvHandle)
- {
+ if (gc_IconvOperError == iconvHandle) {
ThrowMsg(StringException::IconvInitErrorUTF32ToUTF8,
"iconv_open failed for " << "UTF-8 <- UTF-32"
- << "error: " << GetErrnoString());
- return std::string();
+ << "error: " << GetErrnoString());
}
- size_t iconvRet = iconv(iconvHandle, &inbuf, &inbytes, &outbuf, &outbytesleft);
+ size_t iconvRet = iconv(iconvHandle,
+ &inbuf,
+ &inbytes,
+ &outbuf,
+ &outbytesleft);
iconv_close(iconvHandle);
- if (gc_IconvConvertError == iconvRet)
- {
+ if (gc_IconvConvertError == iconvRet) {
ThrowMsg(StringException::IconvConvertErrorUTF32ToUTF8,
"iconv failed for " << "UTF-8 <- UTF-32"
- << "error: " << GetErrnoString());
- return std::string();
+ << "error: " << GetErrnoString());
}
return &output[0];
{
// What buffer size is ok ?
LogPedantic("ICU: Output buffer size: " << size);
- }
- else
- {
+ } else {
ThrowMsg(StringException::ICUInvalidCharacterFound,
"ICU: Failed to retrieve output string size. Error: "
<< error);
-1,
&error);
- if (!U_SUCCESS(error))
- {
+ if (!U_SUCCESS(error)) {
ThrowMsg(StringException::ICUInvalidCharacterFound,
"ICU: Failed to convert string. Error: " << error);
}
ScopedArray<UChar> leftICU(ConvertToICU(left));
ScopedArray<UChar> rightICU(ConvertToICU(right));
- if (caseInsensitive)
- {
+ if (caseInsensitive) {
return static_cast<int>(u_strcasecmp(leftICU.Get(), rightICU.Get(), 0));
- }
- else
- {
+ } else {
return static_cast<int>(u_strcmp(leftICU.Get(), rightICU.Get()));
}
}