32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
-
-
+
+
|
@implementation OFString (URLEncoding)
- (OFString *)stringByURLEncodingWithAllowedCharacters:
(OFCharacterSet *)allowedCharacters
{
OFMutableString *ret = [OFMutableString string];
void *pool = objc_autoreleasePoolPush();
const of_unichar_t *characters = [self characters];
size_t length = [self length];
const of_unichar_t *characters = self.characters;
size_t length = self.length;
bool (*characterIsMember)(id, SEL, of_unichar_t) =
(bool (*)(id, SEL, of_unichar_t))[allowedCharacters
methodForSelector: @selector(characterIsMember:)];
for (size_t i = 0; i < length; i++) {
of_unichar_t c = characters[i];
|
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
-
-
+
+
|
return ret;
}
- (OFString *)stringByURLDecoding
{
void *pool = objc_autoreleasePoolPush();
const char *string = [self UTF8String];
size_t length = [self UTF8StringLength];
const char *string = self.UTF8String;
size_t length = self.UTF8StringLength;
char *retCString, *retCString2;
char byte = 0;
int state = 0;
size_t i = 0;
if ((retCString = malloc(length + 1)) == NULL)
@throw [OFOutOfMemoryException
|