49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
{
if ((self = [super init])) {
if (str == NULL) {
length = 0;
string = NULL;
} else {
if ((length = mbstowcs(NULL, str, 0)) == (size_t)-1) {
/* FIXME: Throw exception */
[super free];
return nil;
}
string = [self getMemForNItems: length + 1
ofSize: sizeof(wchar_t)];
if (mbstowcs(string, str, length + 1) != length) {
[super free];
|
<
>
|
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
{
if ((self = [super init])) {
if (str == NULL) {
length = 0;
string = NULL;
} else {
if ((length = mbstowcs(NULL, str, 0)) == (size_t)-1) {
[super free];
@throw [OFCharsetConversionFailedException
newWithObject: nil];
}
string = [self getMemForNItems: length + 1
ofSize: sizeof(wchar_t)];
if (mbstowcs(string, str, length + 1) != length) {
[super free];
|
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
}
- (char*)getCString
{
char *str;
size_t len;
if ((len = wcstombs(NULL, string, 0)) == (size_t)-1) {
/* FIXME: Throw exception */
return NULL;
}
str = [self getMemWithSize: len + 1];
if (wcstombs(str, string, len + 1) != len) {
/* FIXME: Throw exception */
[self freeMem: str];
return NULL;
}
return str;
}
- (wchar_t*)wideCString
{
|
|
|
<
<
<
<
>
|
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
}
- (char*)getCString
{
char *str;
size_t len;
if ((len = wcstombs(NULL, string, 0)) == (size_t)-1)
@throw [OFCharsetConversionFailedException newWithObject: self];
str = [self getMemWithSize: len + 1];
if (wcstombs(str, string, len + 1) != len) {
[self freeMem: str];
@throw [OFCharsetConversionFailedException newWithObject: self];
}
return str;
}
- (wchar_t*)wideCString
{
|
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
{
wchar_t *newstr, *tmpstr;
size_t newlen, strlength;
if (string == NULL)
return [self setTo: [OFString newFromCString: str]];
if ((strlength = mbstowcs(NULL, str, 0)) == (size_t)-1) {
/* FIXME: Throw exception */
return nil;
}
tmpstr = [self getMemForNItems: strlength + 1
ofSize: sizeof(wchar_t)];
if (mbstowcs(tmpstr, str, strlength) != strlength) {
/* FIXME: Throw exception */
[self freeMem: tmpstr];
return nil;
}
newlen = length + strlength;
newstr = [self resizeMem: string
toNItems: newlen + 1
ofSize: sizeof(wchar_t)];
|
|
|
<
<
<
<
>
|
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
{
wchar_t *newstr, *tmpstr;
size_t newlen, strlength;
if (string == NULL)
return [self setTo: [OFString newFromCString: str]];
if ((strlength = mbstowcs(NULL, str, 0)) == (size_t)-1)
@throw [OFCharsetConversionFailedException newWithObject: self];
tmpstr = [self getMemForNItems: strlength + 1
ofSize: sizeof(wchar_t)];
if (mbstowcs(tmpstr, str, strlength) != strlength) {
[self freeMem: tmpstr];
@throw [OFCharsetConversionFailedException newWithObject: self];
}
newlen = length + strlength;
newstr = [self resizeMem: string
toNItems: newlen + 1
ofSize: sizeof(wchar_t)];
|