1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/*
* Copyright (c) 2008 - 2010
* Jonathan Schleifer <js@webkeks.org>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE included in
* the packaging of this file.
*/
#include "config.h"
#include <assert.h>
#include <string.h>
#import "OFXMLElement.h"
#import "OFString.h"
#import "OFArray.h"
#import "OFDictionary.h"
#import "OFXMLAttribute.h"
#import "OFAutoreleasePool.h"
|
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/*
* Copyright (c) 2008 - 2010
* Jonathan Schleifer <js@webkeks.org>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE included in
* the packaging of this file.
*/
#include "config.h"
#include <string.h>
#include <assert.h>
#import "OFXMLElement.h"
#import "OFString.h"
#import "OFArray.h"
#import "OFDictionary.h"
#import "OFXMLAttribute.h"
#import "OFAutoreleasePool.h"
|
︙ | | | ︙ | |
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
}
- (OFArray*)children
{
return [[children copy] autorelease];
}
- (OFString*)_stringWithParentNamespaces: (OFDictionary*)parent_namespaces
parentDefaultNamespace: (OFString*)parent_default_ns
{
OFAutoreleasePool *pool, *pool2;
char *str_c;
size_t len, i, j, attrs_count;
OFString *prefix = nil;
OFXMLAttribute **attrs_carray;
OFString *ret, *tmp;
|
|
|
|
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
}
- (OFArray*)children
{
return [[children copy] autorelease];
}
- (OFString*)_stringValueWithParentNamespaces: (OFDictionary*)parent_namespaces
parentDefaultNamespace: (OFString*)parent_default_ns
{
OFAutoreleasePool *pool, *pool2;
char *str_c;
size_t len, i, j, attrs_count;
OFString *prefix = nil;
OFXMLAttribute **attrs_carray;
OFString *ret, *tmp;
|
︙ | | | ︙ | |
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
|
append = [tmp methodForSelector:
@selector(appendCStringWithoutUTF8Checking:)];
for (j = 0; j < children_count; j++)
append(tmp, @selector(
appendCStringWithoutUTF8Checking:),
[[children_carray[j]
_stringWithParentNamespaces: all_namespaces
parentDefaultNamespace: defaultNamespace] cString]);
len += [tmp cStringLength] + [name cStringLength] + 2;
@try {
str_c = [self resizeMemory: str_c
toSize: len];
} @catch (id e) {
|
|
|
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
|
append = [tmp methodForSelector:
@selector(appendCStringWithoutUTF8Checking:)];
for (j = 0; j < children_count; j++)
append(tmp, @selector(
appendCStringWithoutUTF8Checking:),
[[children_carray[j]
_stringValueWithParentNamespaces: all_namespaces
parentDefaultNamespace: defaultNamespace] cString]);
len += [tmp cStringLength] + [name cStringLength] + 2;
@try {
str_c = [self resizeMemory: str_c
toSize: len];
} @catch (id e) {
|
︙ | | | ︙ | |
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
|
length: len];
} @finally {
[self freeMemory: str_c];
}
return ret;
}
- (OFString*)string
{
return [self _stringWithParentNamespaces: nil
parentDefaultNamespace: nil];
}
- (void)addAttribute: (OFXMLAttribute*)attr
{
if (name == nil)
@throw [OFInvalidArgumentException newWithClass: isa
selector: _cmd];
|
|
|
|
>
>
>
>
>
|
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
|
length: len];
} @finally {
[self freeMemory: str_c];
}
return ret;
}
- (OFString*)stringValue
{
return [self _stringValueWithParentNamespaces: nil
parentDefaultNamespace: nil];
}
- (OFString*)description
{
return [self stringValue];
}
- (void)addAttribute: (OFXMLAttribute*)attr
{
if (name == nil)
@throw [OFInvalidArgumentException newWithClass: isa
selector: _cmd];
|
︙ | | | ︙ | |