Revert "Change the way to conver Mbs to Wcs and vice versa"
authorDahyeong Kim <dahyeong.kim@tizendev.org>
Thu, 18 Apr 2013 10:45:57 +0000 (19:45 +0900)
committerGerrit Code Review <gerrit2@kim11>
Thu, 18 Apr 2013 10:45:57 +0000 (19:45 +0900)
This reverts commit d1e0b0650b91c00bed2cb03b840fb58d12486ab0

src/base/FBaseString.cpp
src/base/FBase_StringConverter.cpp
src/base/inc/FBaseUtil_IcuConverter.h
src/base/utility/FBaseUtil_IcuConverter.cpp

index 900b491..24dda81 100644 (file)
@@ -38,7 +38,7 @@
 #include <FBaseResult.h>
 #include <FBaseSysLog.h>
 #include <unique_ptr.h>
-#include "FBaseUtil_IcuConverter.h"
+
 
 namespace Tizen { namespace Base
 {
@@ -127,23 +127,25 @@ String::String(const char* pValue)
        , __pValue(null)
        , __pStringImpl(null)
 {
-       if (pValue == null || strlen(pValue) == 0)
+       int len = (pValue != null) ? mbstowcs(null, pValue, 0) : 0;
+
+       if (pValue == null)
        {
                result r = InitializeToDefault(DEFAULT_CAPACITY);
                SysTryReturnVoidResult(NID_BASE, r == E_SUCCESS, E_OUT_OF_MEMORY, "Memory allocation failed.");
        }
        else
        {
-               std::unique_ptr< wchar_t[] > pStr(Tizen::Base::Utility::ConvertMbsToWcsN(pValue));
-               SysTryReturnVoidResult(NID_BASE, pStr != null, GetLastResult(), "Propagating.");
+               result r = InitializeToDefault(len + DEFAULT_CAPACITY);
+               SysTryReturnVoidResult(NID_BASE, r == E_SUCCESS, E_OUT_OF_MEMORY, "Memory allocation failed.");
 
-               int strLen = wcslen(pStr.get());
-               std::unique_ptr<int> pRefCntTemp(new (std::nothrow) int(1));
-               SysTryReturnVoidResult(NID_BASE, pRefCntTemp != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
-               __pRefCount = pRefCntTemp.release();
-               __pValue = pStr.release();
-               __length = strLen;
-               __capacity = strLen + 1;
+               len = mbstowcs(__pValue, pValue, len);
+               if (len == -1)
+               {
+                       SysLog(NID_BASE, "Invalid encoding range[%s].", pValue);
+               }
+               __pValue[len] = '\0';
+               __length = len;
        }
 }
 
index be93bb2..05d8133 100644 (file)
 * @brief               This is the implementation for _StringConverter class.
 */
 
+#include <stdlib.h>
 #include <new>
 #include <FBaseResult.h>
-#include <FBaseSysLog.h>
 #include "FBase_StringConverter.h"
-#include "FBaseUtil_IcuConverter.h"
+#include <FBaseSysLog.h>
+
+
 
 namespace Tizen { namespace Base
 {
@@ -38,7 +40,20 @@ _StringConverter::CopyToCharArrayN(const String& str)
 char*
 _StringConverter::CopyToCharArrayN(const wchar_t* pValue)
 {
-       return Tizen::Base::Utility::ConvertWcsToMbsN(pValue);
+       char* pRet = null;
+
+       int len = wcstombs(0, pValue, 0);
+       SysTryReturn(NID_BASE, len != -1, null, E_INVALID_ARG, "[%s] Invalid argument is used. Invalid string.",
+               GetErrorMessage(E_INVALID_ARG));
+
+       pRet = new (std::nothrow) char[len + 1];
+       SysTryReturn(NID_BASE, pRet != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.",
+               GetErrorMessage(E_OUT_OF_MEMORY));
+
+       len = wcstombs(pRet, pValue, len);
+       pRet[len] = 0;
+
+       return pRet;
 }
 
 }} //Tizen::Base
index c0a1e25..192622b 100644 (file)
@@ -37,7 +37,10 @@ class _ICUConverter
        public:
                _ICUConverter();
                ~_ICUConverter();
-               static result GetResultFromIcuErrorCode(UErrorCode& err);
+
+       private:
+               result GetResultFromIcuErrorCode(UErrorCode& err);
+       public:
                bool OpenConverter(const Tizen::Base::String& encodingScheme);
                wchar_t* ConvertToUcharN(const char* src, int srcLength);
                char* ConvertFromUcharN(const wchar_t* pSrc, int srcLength, int& retLength);
@@ -47,9 +50,6 @@ class _ICUConverter
                UConverter* __pConverter;
 }; // _ICUConverter
 
-char* ConvertWcsToMbsN(const wchar_t* pValue);
-wchar_t* ConvertMbsToWcsN(const char* pValue);
-
 }}} // Tizen::Base::Utility
 
 #endif // _FBASE_UTIL_ICU_CONVERTER_H_
index 38c4aa7..1569e34 100644 (file)
@@ -201,111 +201,4 @@ _ICUConverter::GetResultFromIcuErrorCode(UErrorCode& err)
        }
        return E_SUCCESS;
 }
-
-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);
-       SysTryReturn(NID_BASE_UTIL, len != 0, null, E_INVALID_ARG, "[%s] Invalid argument is used. The pValue is an empty string.", GetErrorMessage(E_INVALID_ARG));
-
-       UErrorCode err = U_ZERO_ERROR;
-       UConverter* pConverter = ucnv_open("UTF-8", &err);
-
-       result r = _ICUConverter::GetResultFromIcuErrorCode(err);
-       SysTryReturn(NID_BASE_UTIL, r == E_SUCCESS, null, r, "[%s] The err must be U_ZERO_ERROR.", GetErrorMessage(r));
-
-       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, r = E_OUT_OF_MEMORY, 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);
-               
-               r = _ICUConverter::GetResultFromIcuErrorCode(err);
-               if (IsFailed(r))
-               {
-                       delete[] pOutBuf;
-                       pOutBuf = null;
-               }
-       }
-
-CATCH:
-       if (pConverter)
-       {
-               ucnv_close(pConverter);
-               pConverter = null;
-       }
-       delete[] pIcuStr;
-       pIcuStr = null;
-       SetLastResult(r);
-       return pOutBuf;
-}
-
-wchar_t*
-ConvertMbsToWcsN(const char* pValue)
-{
-       int len = strlen(pValue);
-       SysTryReturn(NID_BASE_UTIL, len != 0, null, E_INVALID_ARG, "[%s] Invalid argument is used. The pValue is an empty string.", GetErrorMessage(E_INVALID_ARG));
-
-       UErrorCode err = U_ZERO_ERROR;
-       UConverter* pConverter = ucnv_open("UTF-8", &err);
-
-       result r = _ICUConverter::GetResultFromIcuErrorCode(err);
-       SysTryReturn(NID_BASE_UTIL, r == E_SUCCESS, null, r, "[%s] The err must be U_ZERO_ERROR.", GetErrorMessage(r));
-
-       ucnv_setFromUCallBack(pConverter, UCNV_FROM_U_CALLBACK_STOP, null, null, null, &err);
-
-       int icuStrLen = len + 1;
-       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));
-       memset(pIcuStr, 0, sizeof(UChar) * (icuStrLen));
-
-       const char* pTmpIn = pValue;
-       signed int retLength = ucnv_toUChars(pConverter, pIcuStr, icuStrLen, pTmpIn, len, &err);
-
-       wchar_t* pDst = null;
-       wchar_t* pResultStr = null;
-       if (U_SUCCESS(err))
-       {
-               pDst = new (std::nothrow) wchar_t[retLength + 1];
-               SysTryCatch(NID_BASE_UTIL, pDst != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-               memset(pDst, 0, sizeof(wchar_t) * (retLength + 1));
-               pResultStr = u_strToWCS(pDst, retLength, &retLength, pIcuStr, retLength, &err);
-               
-               r = _ICUConverter::GetResultFromIcuErrorCode(err);
-               if (IsFailed(r))
-               {
-                       delete[] pDst;
-                       pDst = null;
-               }
-       }
-
-CATCH:
-       if (pConverter)
-       {
-               ucnv_close(pConverter);
-               pConverter = null;
-       }
-       SetLastResult(r);
-       delete[] pIcuStr;
-       pIcuStr = null;
-       return pResultStr;
-}
-
 } } } // Tizen::Base::Utility