ObjFW  Diff

Differences From Artifact [7fc442d7ba]:

To Artifact [7e2dfe5b27]:


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69


70
71
72
73

74
75
37
38
39
40
41
42
43

44
45
46
47





48

49

50
51
52
53
54
55
56
57
58
59
60


61
62

63
64

65
66
67







-




-
-
-
-
-

-
+
-











-
-
+
+
-


-
+



int _OFXMLElement_Serialization_reference;

@implementation OFXMLElement (Serialization)
- (id)objectByDeserializing
{
	OFAutoreleasePool *pool;
	OFString *className;
	Class class;
	id <OFSerialization> object;

	pool = [[OFAutoreleasePool alloc] init];
	className = [[self attributeForName: @"class"] stringValue];
	if (className == nil)
		@throw [OFNotImplementedException
		    newWithClass: nil
			selector: @selector(initWithSerialization:)];

	class = objc_lookUpClass([className cString]);
	if ((class = objc_lookUpClass([name cString])) == Nil)
	if (class == Nil)
		@throw [OFNotImplementedException newWithClass: Nil];

	if (![class conformsToProtocol: @protocol(OFSerialization)])
		@throw [OFNotImplementedException
		    newWithClass: class
			selector: @selector(initWithSerialization:)];

	object = [[class alloc] initWithSerialization: self];

	@try {
		[pool release];
	} @catch (id e) {
		[object release];
	} @finally {
		[object autorelease];
		@throw e;
	}

	return [object autorelease];
	return object;
}
@end