@@ -418,11 +418,11 @@ } - (OFString*)stringValue { OFMutableString *ret; - OFXMLElement *const *objects; + OFXMLNode *const *objects; size_t i, count = [_children count]; if (count == 0) return @""; @@ -590,11 +590,11 @@ objc_autoreleasePoolPop(pool2); } /* Childen */ if (_children != nil) { - OFXMLElement *const *childrenObjects = [_children objects]; + OFXMLNode *const *childrenObjects = [_children objects]; size_t childrenCount = [_children count]; OFDataArray *tmp = [OFDataArray dataArray]; bool indent; if (indentation > 0) { @@ -618,11 +618,11 @@ if (ind) [tmp addItem: "\n"]; if ([childrenObjects[j] isKindOfClass: [OFXMLElement class]]) - child = [childrenObjects[j] + child = [(OFXMLElement*)childrenObjects[j] OF_XMLStringWithParent: self namespaces: allNamespaces indentation: ind level: level + 1]; else @@ -1008,76 +1008,88 @@ namespace: elementNS] firstObject]; } - (OFArray*)elements { - OFMutableArray *ret = [OFMutableArray array]; - OFXMLElement *const *objects = [_children objects]; + OFMutableArray OF_GENERIC(OFXMLElement*) *ret = [OFMutableArray array]; + OFXMLNode *const *objects = [_children objects]; size_t i, count = [_children count]; for (i = 0; i < count; i++) if ([objects[i] isKindOfClass: [OFXMLElement class]]) - [ret addObject: objects[i]]; + [ret addObject: (OFXMLElement*)objects[i]]; [ret makeImmutable]; return ret; } - (OFArray*)elementsForName: (OFString*)elementName { - OFMutableArray *ret = [OFMutableArray array]; - OFXMLElement *const *objects = [_children objects]; + OFMutableArray OF_GENERIC(OFXMLElement*) *ret = [OFMutableArray array]; + OFXMLNode *const *objects = [_children objects]; size_t i, count = [_children count]; - for (i = 0; i < count; i++) - if ([objects[i] isKindOfClass: [OFXMLElement class]] && - objects[i]->_namespace == nil && - [objects[i]->_name isEqual: elementName]) - [ret addObject: objects[i]]; + for (i = 0; i < count; i++) { + if ([objects[i] isKindOfClass: [OFXMLElement class]]) { + OFXMLElement *element = (OFXMLElement*)objects[i]; + + if (element->_namespace == nil && + [element->_name isEqual: elementName]) + [ret addObject: element]; + } + } [ret makeImmutable]; return ret; } - (OFArray*)elementsForNamespace: (OFString*)elementNS { - OFMutableArray *ret = [OFMutableArray array]; - OFXMLElement *const *objects = [_children objects]; + OFMutableArray OF_GENERIC(OFXMLElement*) *ret = [OFMutableArray array]; + OFXMLNode *const *objects = [_children objects]; size_t i, count = [_children count]; - for (i = 0; i < count; i++) - if ([objects[i] isKindOfClass: [OFXMLElement class]] && - objects[i]->_name != nil && - [objects[i]->_namespace isEqual: elementNS]) - [ret addObject: objects[i]]; + for (i = 0; i < count; i++) { + if ([objects[i] isKindOfClass: [OFXMLElement class]]) { + OFXMLElement *element = (OFXMLElement*)objects[i]; + + if (element->_name != nil && + [element->_namespace isEqual: elementNS]) + [ret addObject: element]; + } + } [ret makeImmutable]; return ret; } - (OFArray*)elementsForName: (OFString*)elementName namespace: (OFString*)elementNS { - OFMutableArray *ret; - OFXMLElement *const *objects; + OFMutableArray OF_GENERIC(OFXMLElement*) *ret; + OFXMLNode *const *objects; size_t i, count; if (elementNS == nil) return [self elementsForName: elementName]; ret = [OFMutableArray array]; objects = [_children objects]; count = [_children count]; - for (i = 0; i < count; i++) - if ([objects[i] isKindOfClass: [OFXMLElement class]] && - [objects[i]->_namespace isEqual: elementNS] && - [objects[i]->_name isEqual: elementName]) - [ret addObject: objects[i]]; + for (i = 0; i < count; i++) { + if ([objects[i] isKindOfClass: [OFXMLElement class]]) { + OFXMLElement *element = (OFXMLElement*)objects[i]; + + if ([element->_namespace isEqual: elementNS] && + [element->_name isEqual: elementName]) + [ret addObject: element]; + } + } [ret makeImmutable]; return ret; }