@@ -98,22 +98,22 @@ return [[[self alloc] initWithName: name stringValue: stringValue] autorelease]; } + (instancetype)elementWithName: (OFString *)name - namespace: (OFString *)ns + namespace: (OFString *)namespace { return [[[self alloc] initWithName: name - namespace: ns] autorelease]; + namespace: namespace] autorelease]; } + (instancetype)elementWithName: (OFString *)name - namespace: (OFString *)ns + namespace: (OFString *)namespace stringValue: (OFString *)stringValue { return [[[self alloc] initWithName: name - namespace: ns + namespace: namespace stringValue: stringValue] autorelease]; } + (instancetype)elementWithElement: (OFXMLElement *)element { @@ -177,11 +177,11 @@ initWithKeysAndObjects: @"http://www.w3.org/XML/1998/namespace", @"xml", @"http://www.w3.org/2000/xmlns/", @"xmlns", nil]; if (stringValue != nil) - [self setStringValue: stringValue]; + self.stringValue = stringValue; } @catch (id e) { [self release]; @throw e; } @@ -228,16 +228,16 @@ parser = [OFXMLParser parser]; builder = [OFXMLElementBuilder elementBuilder]; delegate = [[[OFXMLElement_OFXMLElementBuilderDelegate alloc] init] autorelease]; - [parser setDelegate: builder]; - [builder setDelegate: delegate]; + parser.delegate = builder; + builder.delegate = delegate; [parser parseString: string]; - if (![parser hasFinishedParsing]) + if (!parser.hasFinishedParsing) @throw [OFMalformedXMLException exceptionWithParser: parser]; self = [delegate->_element retain]; objc_autoreleasePoolPop(pool); @@ -260,16 +260,16 @@ parser = [OFXMLParser parser]; builder = [OFXMLElementBuilder elementBuilder]; delegate = [[[OFXMLElement_OFXMLElementBuilderDelegate alloc] init] autorelease]; - [parser setDelegate: builder]; - [builder setDelegate: delegate]; + parser.delegate = builder; + builder.delegate = delegate; [parser parseFile: path]; - if (![parser hasFinishedParsing]) + if (!parser.hasFinishedParsing) @throw [OFMalformedXMLException exceptionWithParser: parser]; self = [delegate->_element retain]; objc_autoreleasePoolPop(pool); @@ -287,39 +287,38 @@ OFXMLElement *attributesElement, *namespacesElement; OFXMLElement *childrenElement; OFEnumerator *keyEnumerator, *objectEnumerator; OFString *key, *object; - if (![[element name] isEqual: [self className]] || - ![[element namespace] isEqual: OF_SERIALIZATION_NS]) + if (![element.name isEqual: self.className] || + ![element.namespace isEqual: OF_SERIALIZATION_NS]) @throw [OFInvalidArgumentException exception]; - _name = [[[element attributeForName: @"name"] - stringValue] copy]; - _namespace = [[[element attributeForName: @"namespace"] - stringValue] copy]; - _defaultNamespace = [[[element attributeForName: - @"defaultNamespace"] stringValue] copy]; - - attributesElement = [[[element + _name = [[element attributeForName: @"name"].stringValue copy]; + _namespace = [[element attributeForName: @"namespace"] + .stringValue copy]; + _defaultNamespace = [[element attributeForName: + @"defaultNamespace"].stringValue copy]; + + attributesElement = [[element elementForName: @"attributes" namespace: OF_SERIALIZATION_NS] elementsForNamespace: - OF_SERIALIZATION_NS] firstObject]; - namespacesElement = [[[element + OF_SERIALIZATION_NS].firstObject; + namespacesElement = [[element elementForName: @"namespaces" namespace: OF_SERIALIZATION_NS] elementsForNamespace: - OF_SERIALIZATION_NS] firstObject]; - childrenElement = [[[element + OF_SERIALIZATION_NS].firstObject; + childrenElement = [[element elementForName: @"children" namespace: OF_SERIALIZATION_NS] elementsForNamespace: - OF_SERIALIZATION_NS] firstObject]; + OF_SERIALIZATION_NS].firstObject; - _attributes = [[attributesElement objectByDeserializing] + _attributes = [attributesElement.objectByDeserializing + mutableCopy]; + _namespaces = [namespacesElement.objectByDeserializing mutableCopy]; - _namespaces = [[namespacesElement objectByDeserializing] - mutableCopy]; - _children = [[childrenElement objectByDeserializing] + _children = [childrenElement.objectByDeserializing mutableCopy]; /* Sanity checks */ if ((_attributes != nil && ![_attributes isKindOfClass: [OFMutableArray class]]) || (_namespaces != nil && @@ -396,29 +395,29 @@ - (void)setStringValue: (OFString *)stringValue { void *pool = objc_autoreleasePoolPush(); - [self setChildren: [OFArray arrayWithObject: - [OFXMLCharacters charactersWithString: stringValue]]]; + self.children = [OFArray arrayWithObject: + [OFXMLCharacters charactersWithString: stringValue]]; objc_autoreleasePoolPop(pool); } - (OFString *)stringValue { OFMutableString *ret; - if ([_children count] == 0) + if (_children.count == 0) return @""; ret = [OFMutableString string]; for (OFXMLNode *child in _children) { void *pool = objc_autoreleasePoolPush(); - [ret appendString: [child stringValue]]; + [ret appendString: child.stringValue]; objc_autoreleasePoolPop(pool); } [ret makeImmutable]; @@ -471,43 +470,42 @@ defaultNS = parent->_defaultNamespace; else defaultNS = _defaultNamespace; i = 0; - length = [_name UTF8StringLength] + 3 + (level * indentation); + length = _name.UTF8StringLength + 3 + (level * indentation); cString = [self allocMemoryWithSize: length]; memset(cString + i, ' ', level * indentation); i += level * indentation; /* Start of tag */ cString[i++] = '<'; if (prefix != nil && ![_namespace isEqual: defaultNS]) { - length += [prefix UTF8StringLength] + 1; + length += prefix.UTF8StringLength + 1; @try { cString = [self resizeMemory: cString size: length]; } @catch (id e) { [self freeMemory: cString]; @throw e; } - memcpy(cString + i, [prefix UTF8String], - [prefix UTF8StringLength]); - i += [prefix UTF8StringLength]; + memcpy(cString + i, prefix.UTF8String, prefix.UTF8StringLength); + i += prefix.UTF8StringLength; cString[i++] = ':'; } - memcpy(cString + i, [_name UTF8String], [_name UTF8StringLength]); - i += [_name UTF8StringLength]; + memcpy(cString + i, _name.UTF8String, _name.UTF8StringLength); + i += _name.UTF8StringLength; /* xmlns if necessary */ if (prefix == nil && ((_namespace != nil && ![_namespace isEqual: defaultNS]) || (_namespace == nil && defaultNS != nil))) { - length += [_namespace UTF8StringLength] + 9; + length += _namespace.UTF8StringLength + 9; @try { cString = [self resizeMemory: cString size: length]; } @catch (id e) { [self freeMemory: cString]; @@ -514,25 +512,23 @@ @throw e; } memcpy(cString + i, " xmlns='", 8); i += 8; - memcpy(cString + i, [_namespace UTF8String], - [_namespace UTF8StringLength]); - i += [_namespace UTF8StringLength]; + memcpy(cString + i, _namespace.UTF8String, + _namespace.UTF8StringLength); + i += _namespace.UTF8StringLength; cString[i++] = '\''; } /* Attributes */ for (OFXMLAttribute *attribute in _attributes) { void *pool2 = objc_autoreleasePoolPush(); - const char *attributeNameCString = - [attribute->_name UTF8String]; - size_t attributeNameLength = - [attribute->_name UTF8StringLength]; + const char *attributeNameCString = attribute->_name.UTF8String; + size_t attributeNameLength = attribute->_name.UTF8StringLength; OFString *attributePrefix = nil; - OFString *tmp = [[attribute stringValue] stringByXMLEscaping]; + OFString *tmp = attribute.stringValue.stringByXMLEscaping; char delimiter = (attribute->_useDoubleQuotes ? '"' : '\''); if (attribute->_namespace != nil && (attributePrefix = [allNamespaces objectForKey: attribute->_namespace]) == nil) @@ -540,12 +536,12 @@ exceptionWithNamespace: [attribute namespace] element: self]; length += attributeNameLength + (attributePrefix != nil ? - [attributePrefix UTF8StringLength] + 1 : 0) + - [tmp UTF8StringLength] + 4; + attributePrefix.UTF8StringLength + 1 : 0) + + tmp.UTF8StringLength + 4; @try { cString = [self resizeMemory: cString size: length]; } @catch (id e) { @@ -553,21 +549,21 @@ @throw e; } cString[i++] = ' '; if (attributePrefix != nil) { - memcpy(cString + i, [attributePrefix UTF8String], - [attributePrefix UTF8StringLength]); - i += [attributePrefix UTF8StringLength]; + memcpy(cString + i, attributePrefix.UTF8String, + attributePrefix.UTF8StringLength); + i += attributePrefix.UTF8StringLength; cString[i++] = ':'; } memcpy(cString + i, attributeNameCString, attributeNameLength); i += attributeNameLength; cString[i++] = '='; cString[i++] = delimiter; - memcpy(cString + i, [tmp UTF8String], [tmp UTF8StringLength]); - i += [tmp UTF8StringLength]; + memcpy(cString + i, tmp.UTF8String, tmp.UTF8StringLength); + i += tmp.UTF8StringLength; cString[i++] = delimiter; objc_autoreleasePoolPop(pool2); } @@ -605,18 +601,18 @@ else childString = [child XMLStringWithIndentation: ind level: level + 1]; - [tmp addItems: [childString UTF8String] - count: [childString UTF8StringLength]]; + [tmp addItems: childString.UTF8String + count: childString.UTF8StringLength]; } if (indent) [tmp addItem: "\n"]; - length += [tmp count] + [_name UTF8StringLength] + 2 + + length += tmp.count + _name.UTF8StringLength + 2 + (indent ? level * indentation : 0); @try { cString = [self resizeMemory: cString size: length]; } @catch (id e) { @@ -624,38 +620,37 @@ @throw e; } cString[i++] = '>'; - memcpy(cString + i, [tmp items], [tmp count]); - i += [tmp count]; + memcpy(cString + i, tmp.items, tmp.count); + i += tmp.count; if (indent) { memset(cString + i, ' ', level * indentation); i += level * indentation; } cString[i++] = '<'; cString[i++] = '/'; if (prefix != nil) { - length += [prefix UTF8StringLength] + 1; + length += prefix.UTF8StringLength + 1; @try { cString = [self resizeMemory: cString size: length]; } @catch (id e) { [self freeMemory: cString]; @throw e; } - memcpy(cString + i, [prefix UTF8String], - [prefix UTF8StringLength]); - i += [prefix UTF8StringLength]; + memcpy(cString + i, prefix.UTF8String, + prefix.UTF8StringLength); + i += prefix.UTF8StringLength; cString[i++] = ':'; } - memcpy(cString + i, [_name UTF8String], - [_name UTF8StringLength]); - i += [_name UTF8StringLength]; + memcpy(cString + i, _name.UTF8String, _name.UTF8StringLength); + i += _name.UTF8StringLength; } else cString[i++] = '/'; cString[i++] = '>'; assert(i == length); @@ -699,11 +694,11 @@ - (OFXMLElement *)XMLElementBySerializing { void *pool = objc_autoreleasePoolPush(); OFXMLElement *element; - element = [OFXMLElement elementWithName: [self className] + element = [OFXMLElement elementWithName: self.className namespace: OF_SERIALIZATION_NS]; if (_name != nil) [element addAttributeWithName: @"name" stringValue: _name]; @@ -721,11 +716,11 @@ attributesElement = [OFXMLElement elementWithName: @"attributes" namespace: OF_SERIALIZATION_NS]; [attributesElement addChild: - [_attributes XMLElementBySerializing]]; + _attributes.XMLElementBySerializing]; [element addChild: attributesElement]; } if (_namespaces != nil) { OFXMLElement *namespacesElement; @@ -735,16 +730,16 @@ [namespacesCopy removeObjectForKey: @"http://www.w3.org/XML/1998/namespace"]; [namespacesCopy removeObjectForKey: @"http://www.w3.org/2000/xmlns/"]; - if ([namespacesCopy count] > 0) { + if (namespacesCopy.count > 0) { namespacesElement = [OFXMLElement elementWithName: @"namespaces" namespace: OF_SERIALIZATION_NS]; [namespacesElement addChild: - [namespacesCopy XMLElementBySerializing]]; + namespacesCopy.XMLElementBySerializing]; [element addChild: namespacesElement]; } } if (_children != nil) { @@ -751,11 +746,11 @@ OFXMLElement *childrenElement; childrenElement = [OFXMLElement elementWithName: @"children" namespace: OF_SERIALIZATION_NS]; - [childrenElement addChild: [_children XMLElementBySerializing]]; + [childrenElement addChild: _children.XMLElementBySerializing]; [element addChild: childrenElement]; } [element retain]; @@ -822,12 +817,12 @@ return nil; } - (void)removeAttributeForName: (OFString *)attributeName { - OFXMLAttribute *const *objects = [_attributes objects]; - size_t count = [_attributes count]; + OFXMLAttribute *const *objects = _attributes.objects; + size_t count = _attributes.count; for (size_t i = 0; i < count; i++) { if (objects[i]->_namespace == nil && [objects[i]->_name isEqual: attributeName]) { [_attributes removeObjectAtIndex: i]; @@ -846,12 +841,12 @@ if (attributeNS == nil) { [self removeAttributeForName: attributeName]; return; } - objects = [_attributes objects]; - count = [_attributes count]; + objects = _attributes.objects; + count = _attributes.count; for (size_t i = 0; i < count; i++) { if ([objects[i]->_namespace isEqual: attributeNS] && [objects[i]->_name isEqual: attributeName]) { [_attributes removeObjectAtIndex: i]; @@ -861,11 +856,11 @@ } - (void)setPrefix: (OFString *)prefix forNamespace: (OFString *)namespace { - if ([prefix length] == 0) + if (prefix.length == 0) @throw [OFInvalidArgumentException exception]; if (namespace == nil) namespace = @""; [_namespaces setObject: prefix @@ -951,18 +946,18 @@ withObject: node]; } - (OFXMLElement *)elementForName: (OFString *)elementName { - return [[self elementsForName: elementName] firstObject]; + return [self elementsForName: elementName].firstObject; } - (OFXMLElement *)elementForName: (OFString *)elementName namespace: (OFString *)elementNS { - return [[self elementsForName: elementName - namespace: elementNS] firstObject]; + return [self elementsForName: elementName + namespace: elementNS].firstObject; } - (OFArray *)elements { OFMutableArray OF_GENERIC(OFXMLElement *) *ret = [OFMutableArray array]; @@ -1076,16 +1071,16 @@ { uint32_t hash; OF_HASH_INIT(hash); - OF_HASH_ADD_HASH(hash, [_name hash]); - OF_HASH_ADD_HASH(hash, [_namespace hash]); - OF_HASH_ADD_HASH(hash, [_defaultNamespace hash]); - OF_HASH_ADD_HASH(hash, [_attributes hash]); - OF_HASH_ADD_HASH(hash, [_namespaces hash]); - OF_HASH_ADD_HASH(hash, [_children hash]); + OF_HASH_ADD_HASH(hash, _name.hash); + OF_HASH_ADD_HASH(hash, _namespace.hash); + OF_HASH_ADD_HASH(hash, _defaultNamespace.hash); + OF_HASH_ADD_HASH(hash, _attributes.hash); + OF_HASH_ADD_HASH(hash, _namespaces.hash); + OF_HASH_ADD_HASH(hash, _children.hash); OF_HASH_FINALIZE(hash); return hash; }