ObjFW  Diff

Differences From Artifact [cdeeda612a]:

To Artifact [4847514de9]:


233
234
235
236
237
238
239
240
241


242
243
244
245
246
247

248
249
250

251
252

253




254
255
256
257
258
259
260
233
234
235
236
237
238
239


240
241


242
243
244

245


246
247
248

249
250
251
252
253
254
255
256
257
258
259
260
261







-
-
+
+
-
-



-
+
-
-

+

-
+

+
+
+
+







	@try {
		OFAutoreleasePool *pool, *pool2;
		OFEnumerator *enumerator;
		OFXMLElement *child;

		pool = [[OFAutoreleasePool alloc] init];

		if (![[element name] isEqual: @"object"] ||
		    ![[element namespace] isEqual: OF_SERIALIZATION_NS] ||
		if (![[element name] isEqual: [self className]] ||
		    ![[element namespace] isEqual: OF_SERIALIZATION_NS])
		    ![[[element attributeForName: @"class"] stringValue]
		    isEqual: [self className]])
			@throw [OFInvalidArgumentException newWithClass: isa
							       selector: _cmd];

		enumerator = [[element
		enumerator = [[element children] objectEnumerator];
		    elementsForName: @"object"
			  namespace: OF_SERIALIZATION_NS] objectEnumerator];
		pool2 = [[OFAutoreleasePool alloc] init];

		while ((child = [enumerator nextObject]) != nil) {
			id object = [child objectByDeserializing];
			id object;

			if (![[child namespace] isEqual: OF_SERIALIZATION_NS])
				continue;

			object = [child objectByDeserializing];
			[array addItem: &object];
			[object retain];

			[pool2 releaseObjects];
		}

		[pool release];
500
501
502
503
504
505
506

507

508
509
510
511
512
513


514
515

516
517
518
519
520

521

522
523


524




525
526
527
528
529
530
531
501
502
503
504
505
506
507
508

509
510
511
512
513


514
515
516

517


518
519
520
521

522
523
524
525
526

527
528
529
530
531
532
533
534
535
536
537







+
-
+




-
-
+
+

-
+
-
-



+
-
+


+
+
-
+
+
+
+







	 */
	ret->isa = [OFString class];
	return ret;
}

- (OFXMLElement*)XMLElementBySerializing
{
	OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
	OFAutoreleasePool *pool;
	OFAutoreleasePool *pool2;
	OFXMLElement *element;
	id <OFSerialization> *cArray = [array cArray];
	size_t i, count = [array count];

	element = [OFXMLElement elementWithName: @"object"
				      namespace: OF_SERIALIZATION_NS];
	element = [[OFXMLElement alloc] initWithName: [self className]
					   namespace: OF_SERIALIZATION_NS];

	pool = [[OFAutoreleasePool alloc] init];
	pool2 = [[OFAutoreleasePool alloc] init];
	[element addAttributeWithName: @"class"
			  stringValue: [self className]];

	for (i = 0; i < count; i++) {
		[element addChild: [cArray[i] XMLElementBySerializing]];

		[pool releaseObjects];
		[pool2 releaseObjects];
	}

	[element retain];
	@try {
	[pool release];
		[pool release];
	} @finally {
		[element autorelease];
	}

	return element;
}

- (void)makeObjectsPerformSelector: (SEL)selector
{
	id *cArray = [array cArray];