ObjFW
|
00001 /* 00002 * Copyright (c) 2008, 2009, 2010, 2011, 2012 00003 * Jonathan Schleifer <js@webkeks.org> 00004 * 00005 * All rights reserved. 00006 * 00007 * This file is part of ObjFW. It may be distributed under the terms of the 00008 * Q Public License 1.0, which can be found in the file LICENSE.QPL included in 00009 * the packaging of this file. 00010 * 00011 * Alternatively, it may be distributed under the terms of the GNU General 00012 * Public License, either version 2 or 3, which can be found in the file 00013 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this 00014 * file. 00015 */ 00016 00017 #ifndef __STDC_LIMIT_MACROS 00018 # define __STDC_LIMIT_MACROS 00019 #endif 00020 #ifndef __STDC_CONSTANT_MACROS 00021 # define __STDC_CONSTANT_MACROS 00022 #endif 00023 00024 #include <stdarg.h> 00025 00026 #import "OFObject.h" 00027 #import "OFCollection.h" 00028 #import "OFSerialization.h" 00029 00030 @class OFArray; 00031 00032 #ifdef OF_HAVE_BLOCKS 00033 typedef void (^of_set_enumeration_block_t)(id object, BOOL *stop); 00034 typedef BOOL (^of_set_filter_block_t)(id object); 00035 #endif 00036 00040 @interface OFSet: OFObject <OFCollection, OFCopying, OFMutableCopying, 00041 OFSerialization> 00047 + set; 00048 00055 + setWithSet: (OFSet*)set; 00056 00063 + setWithArray: (OFArray*)array; 00064 00071 + setWithObjects: (id)firstObject, ...; 00072 00079 - initWithSet: (OFSet*)set; 00080 00087 - initWithArray: (OFArray*)array; 00088 00095 - initWithObjects: (id)firstObject, ...; 00096 00105 - initWithObject: (id)firstObject 00106 arguments: (va_list)arguments; 00107 00113 - (BOOL)isSubsetOfSet: (OFSet*)set; 00114 00122 - (BOOL)intersectsSet: (OFSet*)set; 00123 00124 #ifdef OF_HAVE_BLOCKS 00125 00130 - (void)enumerateObjectsUsingBlock: (of_set_enumeration_block_t)block; 00131 00139 - (OFSet*)filteredSetUsingBlock: (of_set_filter_block_t)block; 00140 #endif 00141 @end 00142 00143 #import "OFMutableSet.h"