︙ | | | ︙ | |
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include "config.h"
#include <stdlib.h>
#include <string.h>
#import "OFConstantString.h"
#import "OFString_UTF8.h"
#import "OFInitializationFailedException.h"
#import "OFInvalidEncodingException.h"
#import "OFOutOfMemoryException.h"
#if defined(OF_APPLE_RUNTIME) && !defined(__OBJC2__)
# import <objc/runtime.h>
|
|
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include "config.h"
#include <stdlib.h>
#include <string.h>
#import "OFConstantString.h"
#import "OFUTF8String.h"
#import "OFInitializationFailedException.h"
#import "OFInvalidEncodingException.h"
#import "OFOutOfMemoryException.h"
#if defined(OF_APPLE_RUNTIME) && !defined(__OBJC2__)
# import <objc/runtime.h>
|
︙ | | | ︙ | |
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
struct cache *cache;
struct protocol_list *protocols;
const char *iVarLayout;
struct class_ext *ext;
} _OFConstantStringClassReference;
#endif
@interface OFString_const: OFString_UTF8
@end
@implementation OFString_const
+ (instancetype)alloc
{
OF_UNRECOGNIZED_SELECTOR
}
- (void *)allocMemoryWithSize: (size_t)size
{
|
|
|
|
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
struct cache *cache;
struct protocol_list *protocols;
const char *iVarLayout;
struct class_ext *ext;
} _OFConstantStringClassReference;
#endif
@interface OFConstantUTF8String: OFUTF8String
@end
@implementation OFConstantUTF8String
+ (instancetype)alloc
{
OF_UNRECOGNIZED_SELECTOR
}
- (void *)allocMemoryWithSize: (size_t)size
{
|
︙ | | | ︙ | |
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
}
- (void)finishInitialization
{
@synchronized (self) {
struct of_string_utf8_ivars *ivars;
if ([self isMemberOfClass: [OFString_const class]])
return;
if ((ivars = calloc(1, sizeof(*ivars))) == NULL)
@throw [OFOutOfMemoryException
exceptionWithRequestedSize: sizeof(*ivars)];
ivars->cString = _cString;
|
|
|
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
}
- (void)finishInitialization
{
@synchronized (self) {
struct of_string_utf8_ivars *ivars;
if ([self isMemberOfClass: [OFConstantUTF8String class]])
return;
if ((ivars = calloc(1, sizeof(*ivars))) == NULL)
@throw [OFOutOfMemoryException
exceptionWithRequestedSize: sizeof(*ivars)];
ivars->cString = _cString;
|
︙ | | | ︙ | |
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
break;
case -1:
free(ivars);
@throw [OFInvalidEncodingException exception];
}
_cString = (char *)ivars;
object_setClass(self, [OFString_const class]);
}
}
+ (instancetype)alloc
{
OF_UNRECOGNIZED_SELECTOR
}
|
|
|
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
break;
case -1:
free(ivars);
@throw [OFInvalidEncodingException exception];
}
_cString = (char *)ivars;
object_setClass(self, [OFConstantUTF8String class]);
}
}
+ (instancetype)alloc
{
OF_UNRECOGNIZED_SELECTOR
}
|
︙ | | | ︙ | |
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
- (void)dealloc
{
OF_DEALLOC_UNSUPPORTED
}
/*
* In all following methods, the constant string is converted to an
* OFString_UTF8 and the message sent again.
*/
/* From protocol OFCopying */
- (id)copy
{
[self finishInitialization];
|
|
|
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
- (void)dealloc
{
OF_DEALLOC_UNSUPPORTED
}
/*
* In all following methods, the constant string is converted to an
* OFUTF8String and the message sent again.
*/
/* From protocol OFCopying */
- (id)copy
{
[self finishInitialization];
|
︙ | | | ︙ | |