@@ -10,70 +10,20 @@ */ #include "config.h" #include -#include #include #import "OFXMLElement.h" #import "OFString.h" #import "OFArray.h" #import "OFDictionary.h" +#import "OFXMLAttribute.h" #import "OFAutoreleasePool.h" #import "OFExceptions.h" -int _OFXMLElement_reference; - -@implementation OFXMLAttribute -+ attributeWithName: (OFString*)name - namespace: (OFString*)ns - stringValue: (OFString*)value -{ - return [[[self alloc] initWithName: name - namespace: ns - stringValue: value] autorelease]; -} - -- initWithName: (OFString*)name_ - namespace: (OFString*)ns - stringValue: (OFString*)value -{ - self = [super init]; - - name = [name_ copy]; - namespace = [ns copy]; - stringValue = [value copy]; - - return self; -} - -- (void)dealloc -{ - [name release]; - [namespace release]; - [stringValue release]; - - [super dealloc]; -} - -- (OFString*)name -{ - return [[name copy] autorelease]; -} - -- (OFString*)namespace -{ - return [[namespace copy] autorelease]; -} - -- (OFString*)stringValue -{ - return [[stringValue copy] autorelease]; -} -@end - @implementation OFXMLElement + elementWithName: (OFString*)name_ { return [[[self alloc] initWithName: name_] autorelease]; } @@ -418,79 +368,6 @@ [namespaces release]; [children release]; [super dealloc]; } -@end - -@implementation OFString (OFXMLEscaping) -- (OFString*)stringByXMLEscaping -{ - char *str_c, *append, *tmp; - size_t len, append_len; - size_t i, j; - OFString *ret; - - j = 0; - len = length; - - /* - * We can't use allocMemoryWithSize: here as it might be a @"" literal - */ - if ((str_c = malloc(len)) == NULL) - @throw [OFOutOfMemoryException newWithClass: isa - size: len]; - - for (i = 0; i < length; i++) { - switch (string[i]) { - case '<': - append = "<"; - append_len = 4; - break; - case '>': - append = ">"; - append_len = 4; - break; - case '"': - append = """; - append_len = 6; - break; - case '\'': - append = "'"; - append_len = 6; - break; - case '&': - append = "&"; - append_len = 5; - break; - default: - append = NULL; - append_len = 0; - } - - if (append != NULL) { - if ((tmp = realloc(str_c, len + append_len)) == NULL) { - free(str_c); - @throw [OFOutOfMemoryException - newWithClass: isa - size: len + append_len]; - } - str_c = tmp; - len += append_len - 1; - - memcpy(str_c + j, append, append_len); - j += append_len; - } else - str_c[j++] = string[i]; - } - - assert(j == len); - - @try { - ret = [OFString stringWithCString: str_c - length: len]; - } @finally { - free(str_c); - } - return ret; -} @end