︙ | | | ︙ | |
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
self = [super init];
@try {
char *tmp, *tmp2;
if ((UTF8String2 = strdup([string UTF8String])) == NULL)
@throw [OFOutOfMemoryException
exceptionWithClass: isa
requestedSize: [string UTF8StringLength]];
UTF8String = UTF8String2;
if (!strncmp(UTF8String, "file://", 7)) {
scheme = @"file";
path = [[OFString alloc]
initWithUTF8String: UTF8String + 7];
return self;
} else if (!strncmp(UTF8String, "http://", 7)) {
scheme = @"http";
UTF8String += 7;
} else if (!strncmp(UTF8String, "https://", 8)) {
scheme = @"https";
UTF8String += 8;
} else
@throw [OFInvalidFormatException
exceptionWithClass: isa];
if ((tmp = strchr(UTF8String, '/')) != NULL) {
*tmp = '\0';
tmp++;
}
if ((tmp2 = strchr(UTF8String, '@')) != NULL) {
|
|
|
|
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
self = [super init];
@try {
char *tmp, *tmp2;
if ((UTF8String2 = strdup([string UTF8String])) == NULL)
@throw [OFOutOfMemoryException
exceptionWithClass: [self class]
requestedSize: [string UTF8StringLength]];
UTF8String = UTF8String2;
if (!strncmp(UTF8String, "file://", 7)) {
scheme = @"file";
path = [[OFString alloc]
initWithUTF8String: UTF8String + 7];
return self;
} else if (!strncmp(UTF8String, "http://", 7)) {
scheme = @"http";
UTF8String += 7;
} else if (!strncmp(UTF8String, "https://", 8)) {
scheme = @"https";
UTF8String += 8;
} else
@throw [OFInvalidFormatException
exceptionWithClass: [self class]];
if ((tmp = strchr(UTF8String, '/')) != NULL) {
*tmp = '\0';
tmp++;
}
if ((tmp2 = strchr(UTF8String, '@')) != NULL) {
|
︙ | | | ︙ | |
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
initWithUTF8String: UTF8String];
pool = [[OFAutoreleasePool alloc] init];
portString = [OFString stringWithUTF8String: tmp2];
if ([portString decimalValue] > 65535)
@throw [OFInvalidFormatException
exceptionWithClass: isa];
port = [portString decimalValue];
[pool release];
} else {
host = [[OFString alloc]
initWithUTF8String: UTF8String];
|
|
|
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
initWithUTF8String: UTF8String];
pool = [[OFAutoreleasePool alloc] init];
portString = [OFString stringWithUTF8String: tmp2];
if ([portString decimalValue] > 65535)
@throw [OFInvalidFormatException
exceptionWithClass: [self class]];
port = [portString decimalValue];
[pool release];
} else {
host = [[OFString alloc]
initWithUTF8String: UTF8String];
|
︙ | | | ︙ | |
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
host = [URL->host copy];
port = URL->port;
user = [URL->user copy];
password = [URL->password copy];
if ((UTF8String2 = strdup([string UTF8String])) == NULL)
@throw [OFOutOfMemoryException
exceptionWithClass: isa
requestedSize: [string UTF8StringLength]];
UTF8String = UTF8String2;
if ((tmp = strchr(UTF8String, '#')) != NULL) {
*tmp = '\0';
fragment = [[OFString alloc]
|
|
|
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
host = [URL->host copy];
port = URL->port;
user = [URL->user copy];
password = [URL->password copy];
if ((UTF8String2 = strdup([string UTF8String])) == NULL)
@throw [OFOutOfMemoryException
exceptionWithClass: [self class]
requestedSize: [string UTF8StringLength]];
UTF8String = UTF8String2;
if ((tmp = strchr(UTF8String, '#')) != NULL) {
*tmp = '\0';
fragment = [[OFString alloc]
|
︙ | | | ︙ | |
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
|
{
@try {
OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
if (![[element name] isEqual: [self className]] ||
![[element namespace] isEqual: OF_SERIALIZATION_NS])
@throw [OFInvalidArgumentException
exceptionWithClass: isa
selector: _cmd];
self = [self initWithString: [element stringValue]];
[pool release];
} @catch (id e) {
[self release];
|
|
|
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
|
{
@try {
OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
if (![[element name] isEqual: [self className]] ||
![[element namespace] isEqual: OF_SERIALIZATION_NS])
@throw [OFInvalidArgumentException
exceptionWithClass: [self class]
selector: _cmd];
self = [self initWithString: [element stringValue]];
[pool release];
} @catch (id e) {
[self release];
|
︙ | | | ︙ | |
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
|
OF_HASH_FINALIZE(hash);
return hash;
}
- copy
{
OFURL *copy = [[isa alloc] init];
@try {
copy->scheme = [scheme copy];
copy->host = [host copy];
copy->port = port;
copy->user = [user copy];
copy->password = [password copy];
|
|
|
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
|
OF_HASH_FINALIZE(hash);
return hash;
}
- copy
{
OFURL *copy = [[[self class] alloc] init];
@try {
copy->scheme = [scheme copy];
copy->host = [host copy];
copy->port = port;
copy->user = [user copy];
copy->password = [password copy];
|
︙ | | | ︙ | |
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
|
{
OF_GETTER(scheme, YES)
}
- (void)setScheme: (OFString*)scheme_
{
if (![scheme_ isEqual: @"http"] && ![scheme_ isEqual: @"https"])
@throw [OFInvalidArgumentException exceptionWithClass: isa
selector: _cmd];
OF_SETTER(scheme, scheme_, YES, 1)
}
- (OFString*)host
{
OF_GETTER(host, YES)
|
|
>
|
|
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
|
{
OF_GETTER(scheme, YES)
}
- (void)setScheme: (OFString*)scheme_
{
if (![scheme_ isEqual: @"http"] && ![scheme_ isEqual: @"https"])
@throw [OFInvalidArgumentException
exceptionWithClass: [self class]
selector: _cmd];
OF_SETTER(scheme, scheme_, YES, 1)
}
- (OFString*)host
{
OF_GETTER(host, YES)
|
︙ | | | ︙ | |
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
|
OF_GETTER(path, YES)
}
- (void)setPath: (OFString*)path_
{
if (([scheme isEqual: @"http"] || [scheme isEqual: @"https"]) &&
![path_ hasPrefix: @"/"])
@throw [OFInvalidArgumentException exceptionWithClass: isa
selector: _cmd];
OF_SETTER(path, path_, YES, 1)
}
- (OFString*)parameters
{
OF_GETTER(parameters, YES)
|
|
>
|
|
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
|
OF_GETTER(path, YES)
}
- (void)setPath: (OFString*)path_
{
if (([scheme isEqual: @"http"] || [scheme isEqual: @"https"]) &&
![path_ hasPrefix: @"/"])
@throw [OFInvalidArgumentException
exceptionWithClass: [self class]
selector: _cmd];
OF_SETTER(path, path_, YES, 1)
}
- (OFString*)parameters
{
OF_GETTER(parameters, YES)
|
︙ | | | ︙ | |