@@ -1,7 +1,7 @@ /* - * Copyright (c) 2008-2022 Jonathan Schleifer + * Copyright (c) 2008-2024 Jonathan Schleifer * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in @@ -13,18 +13,17 @@ * file. */ #include "config.h" -#import "OFMapTableSet.h" +#import "OFConcreteSet.h" #import "OFArray.h" -#import "OFCountedMapTableSet.h" -#import "OFMapTable.h" +#import "OFConcreteCountedSet.h" +#import "OFConcreteMutableSet.h" #import "OFMapTable+Private.h" -#import "OFMutableMapTableSet.h" +#import "OFMapTable.h" #import "OFString.h" -#import "OFXMLElement.h" #import "OFInvalidArgumentException.h" #import "OFEnumerationMutationException.h" static void * @@ -57,11 +56,11 @@ .hash = hash, .equal = equal }; static const OFMapTableFunctions objectFunctions = { NULL }; -@implementation OFMapTableSet +@implementation OFConcreteSet - (instancetype)init { return [self initWithCapacity: 0]; } @@ -179,41 +178,10 @@ } return self; } -- (instancetype)initWithSerialization: (OFXMLElement *)element -{ - self = [self init]; - - @try { - void *pool = objc_autoreleasePoolPush(); - - if ((![element.name isEqual: @"OFSet"] && - ![element.name isEqual: @"OFMutableSet"]) || - ![element.namespace isEqual: OFSerializationNS]) - @throw [OFInvalidArgumentException exception]; - - for (OFXMLElement *child in - [element elementsForNamespace: OFSerializationNS]) { - void *pool2 = objc_autoreleasePoolPush(); - - [_mapTable setObject: (void *)1 - forKey: [child objectByDeserializing]]; - - objc_autoreleasePoolPop(pool2); - } - - objc_autoreleasePoolPop(pool); - } @catch (id e) { - [self release]; - @throw e; - } - - return self; -} - - (void)dealloc { [_mapTable release]; [super dealloc]; @@ -232,18 +200,18 @@ return ([_mapTable objectForKey: object] != nil); } - (bool)isEqual: (id)object { - OFMapTableSet *set; + OFConcreteSet *set; if (object == self) return true; - if (![object isKindOfClass: [OFMapTableSet class]] && - ![object isKindOfClass: [OFMutableMapTableSet class]] && - ![object isKindOfClass: [OFCountedMapTableSet class]]) + if (![object isKindOfClass: [OFConcreteSet class]] && + ![object isKindOfClass: [OFConcreteMutableSet class]] && + ![object isKindOfClass: [OFConcreteCountedSet class]]) return [super isEqual: object]; set = object; return [set->_mapTable isEqual: _mapTable];