}
return E_SUCCESS;
}
-} } } // Tizen::Base::Utility
+
+char*
+ConvertWcsToMbsN(const wchar_t* pValue)
+{
+ SysTryReturn(NID_BASE_UTIL, pValue != null, null, E_INVALID_ARG, "[%s] Invalid argument is used. The pValue is null.", GetErrorMessage(E_INVALID_ARG));
+
+ int len = wcslen(pValue);
+ if (len == 0)
+ {
+ char* pRet = new (std::nothrow) char[1];
+ SysTryReturn(NID_BASE_UTIL, pRet != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+ pRet[0] = '\0';
+ return pRet;
+ }
+
+ UErrorCode err = U_ZERO_ERROR;
+ UConverter* pConverter = ucnv_open("UTF-8", &err);
+
+ SysTryReturn(NID_BASE_UTIL, err == U_ZERO_ERROR, null, E_INVALID_ARG, "[%s] ucnv_open() failed. The err must be U_ZERO_ERROR.", GetErrorMessage(E_INVALID_ARG));
+
+ ucnv_setFromUCallBack(pConverter, UCNV_FROM_U_CALLBACK_STOP, null, null, null, &err);
+
+ int icuStrLen = len * 2;
+ UChar* pIcuStr = new (std::nothrow) UChar[icuStrLen];
+ SysTryReturn(NID_BASE_UTIL, pIcuStr != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+ int outLen = 0;
+ UChar* pResultStr = u_strFromWCS(pIcuStr, icuStrLen, &outLen, pValue, len, &err);
+
+ char* pOutBuf = null;
+ if (U_SUCCESS(err))
+ {
+ char* pTmpOut = null;
+ int outBytesLeftOut = len * 4;
+ pOutBuf = new (std::nothrow) char[outBytesLeftOut + 1];
+ SysTryCatch(NID_BASE_UTIL, pOutBuf != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+ pTmpOut = pOutBuf;
+ memset(pOutBuf, 0, outBytesLeftOut + 1);
+ int retLength = ucnv_fromUChars(pConverter, pTmpOut, outBytesLeftOut, pResultStr, outLen, &err);
+
+ if (U_FAILURE(err))
+ {
+ SysLogException(NID_BASE_UTIL, E_INVALID_ARG, "[%s] ucnv_fromUChars() failed. pTmpOut is %s.", GetErrorMessage(E_INVALID_ARG), pTmpOut);
+ delete[] pOutBuf;
+ pOutBuf = null;
+ }
+ }
+ else
+ {
+ SysLogException(NID_BASE_UTIL, E_INVALID_ARG, "[%s] u_strFromWCS() failed. pValue is %ls.", GetErrorMessage(E_INVALID_ARG), pValue);
+ }
+
+CATCH:
+ if (pConverter)
+ {
+ ucnv_close(pConverter);
+ pConverter = null;
+ }
+ delete[] pIcuStr;
+ pIcuStr = null;
+ return pOutBuf;
+}
+} } } // Tizen::Base::Utilityy