Revert "Change the way to conver Mbs to Wcs and vice versa"
[platform/framework/native/appfw.git] / src / base / FBase_StringConverter.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19 * @file                 FBase_StringConverter.cpp
20 * @brief                This is the implementation for _StringConverter class.
21 */
22
23 #include <stdlib.h>
24 #include <new>
25 #include <FBaseResult.h>
26 #include "FBase_StringConverter.h"
27 #include <FBaseSysLog.h>
28
29
30
31 namespace Tizen { namespace Base
32 {
33
34 char*
35 _StringConverter::CopyToCharArrayN(const String& str)
36 {
37         return CopyToCharArrayN(str.GetPointer());
38 }
39
40 char*
41 _StringConverter::CopyToCharArrayN(const wchar_t* pValue)
42 {
43         char* pRet = null;
44
45         int len = wcstombs(0, pValue, 0);
46         SysTryReturn(NID_BASE, len != -1, null, E_INVALID_ARG, "[%s] Invalid argument is used. Invalid string.",
47                 GetErrorMessage(E_INVALID_ARG));
48
49         pRet = new (std::nothrow) char[len + 1];
50         SysTryReturn(NID_BASE, pRet != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.",
51                 GetErrorMessage(E_OUT_OF_MEMORY));
52
53         len = wcstombs(pRet, pValue, len);
54         pRet[len] = 0;
55
56         return pRet;
57 }
58
59 }} //Tizen::Base