Annotation of elwix/tools/oldlzma/SRC/Common/StringConvert.cpp, revision 1.1.1.1
1.1 misho 1: // Common/StringConvert.cpp
2:
3: #include "StdAfx.h"
4:
5: #include "StringConvert.h"
6:
7: #ifndef _WIN32
8: #include <stdlib.h>
9: #endif
10:
11: #ifdef _WIN32
12: UString MultiByteToUnicodeString(const AString &srcString, UINT codePage)
13: {
14: UString resultString;
15: if(!srcString.IsEmpty())
16: {
17: int numChars = MultiByteToWideChar(codePage, 0, srcString,
18: srcString.Length(), resultString.GetBuffer(srcString.Length()),
19: srcString.Length() + 1);
20: #ifndef _WIN32_WCE
21: if(numChars == 0)
22: throw 282228;
23: #endif
24: resultString.ReleaseBuffer(numChars);
25: }
26: return resultString;
27: }
28:
29: AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage)
30: {
31: AString resultString;
32: if(!srcString.IsEmpty())
33: {
34: int numRequiredBytes = srcString.Length() * 2;
35: int numChars = WideCharToMultiByte(codePage, 0, srcString,
36: srcString.Length(), resultString.GetBuffer(numRequiredBytes),
37: numRequiredBytes + 1, NULL, NULL);
38: #ifndef _WIN32_WCE
39: if(numChars == 0)
40: throw 282229;
41: #endif
42: resultString.ReleaseBuffer(numChars);
43: }
44: return resultString;
45: }
46:
47: #ifndef _WIN32_WCE
48: AString SystemStringToOemString(const CSysString &srcString)
49: {
50: AString result;
51: CharToOem(srcString, result.GetBuffer(srcString.Length() * 2));
52: result.ReleaseBuffer();
53: return result;
54: }
55: #endif
56:
57: #else
58:
59: UString MultiByteToUnicodeString(const AString &srcString, UINT codePage)
60: {
61: UString resultString;
62: for (int i = 0; i < srcString.Length(); i++)
63: resultString += wchar_t(srcString[i]);
64: /*
65: if(!srcString.IsEmpty())
66: {
67: int numChars = mbstowcs(resultString.GetBuffer(srcString.Length()), srcString, srcString.Length() + 1);
68: if (numChars < 0) throw "Your environment does not support UNICODE";
69: resultString.ReleaseBuffer(numChars);
70: }
71: */
72: return resultString;
73: }
74:
75: AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage)
76: {
77: AString resultString;
78: for (int i = 0; i < srcString.Length(); i++)
79: resultString += char(srcString[i]);
80: /*
81: if(!srcString.IsEmpty())
82: {
83: int numRequiredBytes = srcString.Length() * 6 + 1;
84: int numChars = wcstombs(resultString.GetBuffer(numRequiredBytes), srcString, numRequiredBytes);
85: if (numChars < 0) throw "Your environment does not support UNICODE";
86: resultString.ReleaseBuffer(numChars);
87: }
88: */
89: return resultString;
90: }
91:
92: #endif
93:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>