ObjFW
src/OFSet.h
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"
 All Classes Functions Variables Properties