1#include <Python.h> 2#include "pyobjc-api.h" 3 4#import <Foundation/Foundation.h> 5 6 7 8@interface OC_TestSet : NSObject {} 9@end 10 11@implementation OC_TestSet 12 13+(Class)classOf:(NSObject*)value 14{ 15 return [value class]; 16} 17 18/* copying */ 19+(id)set:(NSSet*)set copyWithZone:(NSZone*)zone 20{ 21 return [[set copyWithZone:zone] autorelease]; 22} 23 24+(id)set:(NSSet*)set mutableCopyWithZone:(NSZone*)zone 25{ 26 return [[set mutableCopyWithZone:zone] autorelease]; 27} 28 29 30/* Base set */ 31 32+(NSArray*)allObjectsOfSet:(NSSet*)set 33{ 34 return [set allObjects]; 35} 36 37+(id)anyObjectOfSet:(NSSet*)set 38{ 39 return [set anyObject]; 40} 41 42+(BOOL)set:(NSSet*)set containsObject:(id)anObject 43{ 44 return [set containsObject:anObject]; 45} 46 47+(NSUInteger)countOfSet:(NSSet*)set 48{ 49 return [set count]; 50} 51 52+(NSString*)descriptionOfSet:(NSSet*)set 53{ 54 return [set description]; 55} 56 57+(NSString*)set:(NSSet*)set descriptionWithLocale:(id)locale 58{ 59 return [set descriptionWithLocale:locale]; 60} 61 62 63+(NSSet*)set:(NSSet*)set filteredSetUsingPredicate:(NSPredicate*)predicate 64{ 65 return [set filteredSetUsingPredicate:predicate]; 66} 67 68+(BOOL)set:(NSMutableSet*)set intersectsSet:(NSSet *)otherSet 69{ 70 return [set intersectsSet:otherSet]; 71} 72 73+(BOOL)set:(NSSet*)set isEqualToSet:(NSSet*)otherSet 74{ 75 return [set isEqualToSet:otherSet]; 76} 77 78+(BOOL)set:(NSSet*)set isSubsetOfSet:(NSSet*)otherSet 79{ 80 return [set isSubsetOfSet:otherSet]; 81} 82 83+(void)set:(NSSet*)set makeObjectsPerformSelector:(SEL)aSelector 84{ 85 return [set makeObjectsPerformSelector:aSelector]; 86} 87 88+(void)set:(NSSet*)set makeObjectsPerformSelector:(SEL)aSelector withObject:(id)anObject 89{ 90 return [set makeObjectsPerformSelector:aSelector withObject:anObject]; 91} 92 93+(id)set:(NSSet*)set member:(id)anObject 94{ 95 return [set member:anObject]; 96} 97 98+(NSEnumerator*)objectEnumeratorOfSet:(NSSet*)set 99{ 100 return [set objectEnumerator]; 101} 102 103+(NSSet*)set:(NSSet*)set setByAddingObject:(id)anObject 104{ 105 return [set setByAddingObject:anObject]; 106} 107 108+(NSSet*)set:(NSSet*)set setByAddingObjectsFromArray:(NSArray*)anObject 109{ 110 return [set setByAddingObjectsFromArray:anObject]; 111} 112 113+(NSSet*)set:(NSSet*)set setByAddingObjectsFromSet:(NSSet*)anObject 114{ 115 return [set setByAddingObjectsFromSet:anObject]; 116} 117 118+(void)set:(NSSet*)set setValue:(id)value forKey:(id)key 119{ 120 [set setValue:value forKey:key]; 121} 122 123+(id)set:(NSSet*)set valueForKey:(id)key 124{ 125 return [set valueForKey:key]; 126} 127 128/* Mutable set */ 129 130+(void)set:(NSMutableSet*)set addObject:(id)anObject 131{ 132 [set addObject:anObject]; 133} 134 135+(void)set:(NSMutableSet*)set addObjectsFromArray:(NSArray *)anArray 136{ 137 [set addObjectsFromArray:anArray]; 138} 139 140+(void)set:(NSMutableSet*)set filterUsingPredicate:(NSPredicate *)predicate 141{ 142 [set filterUsingPredicate:predicate]; 143} 144 145+(void)set:(NSMutableSet*)set intersectSet:(NSSet *)otherSet 146{ 147 [set intersectSet:otherSet]; 148} 149 150+(void)set:(NSMutableSet*)set minusSet:(NSSet *)otherSet 151{ 152 [set minusSet:otherSet]; 153} 154 155+(void)removeAllObjecsFromSet:(NSMutableSet*)set 156{ 157 [set removeAllObjects]; 158} 159 160+(void)set:(NSMutableSet*)set removeObject:(id)anObject 161{ 162 [set removeObject:anObject]; 163} 164 165+(void)set:(NSMutableSet*)set setSet:(NSSet *)otherSet 166{ 167 [set setSet:otherSet]; 168} 169 170+(void)set:(NSMutableSet*)set unionSet:(NSSet *)otherSet 171{ 172 [set unionSet:otherSet]; 173} 174 175 176 177@end 178 179 180static PyMethodDef mod_methods[] = { 181 { 0, 0, 0, 0 } 182}; 183 184#if PY_VERSION_HEX >= 0x03000000 185 186static struct PyModuleDef mod_module = { 187 PyModuleDef_HEAD_INIT, 188 "pythonset", 189 NULL, 190 0, 191 mod_methods, 192 NULL, 193 NULL, 194 NULL, 195 NULL 196}; 197 198#define INITERROR() return NULL 199#define INITDONE() return m 200 201PyObject* PyInit_pythonset(void); 202 203PyObject* 204PyInit_pythonset(void) 205 206#else 207 208#define INITERROR() return 209#define INITDONE() return 210 211void initpythonset(void); 212 213void 214initpythonset(void) 215#endif 216{ 217 PyObject* m; 218 219#if PY_VERSION_HEX >= 0x03000000 220 m = PyModule_Create(&mod_module); 221#else 222 m = Py_InitModule4("pythonset", mod_methods, 223 NULL, NULL, PYTHON_API_VERSION); 224#endif 225 if (!m) { 226 INITERROR(); 227 } 228 229 if (PyObjC_ImportAPI(m) < 0) { 230 INITERROR(); 231 } 232 233 if (PyModule_AddObject(m, "OC_TestSet", 234 PyObjCClass_New([OC_TestSet class])) < 0) { 235 INITERROR(); 236 } 237 238 INITDONE(); 239} 240