mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 08:21:25 +00:00
Add missing set filtering functionality
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@27833 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
b732dc843b
commit
b3da05d398
3 changed files with 65 additions and 0 deletions
|
@ -1534,6 +1534,48 @@
|
|||
|
||||
@end
|
||||
|
||||
@implementation NSSet (NSPredicate)
|
||||
|
||||
- (NSSet *) filteredSetUsingPredicate: (NSPredicate *)predicate
|
||||
{
|
||||
NSMutableSet *result;
|
||||
NSEnumerator *e = [self objectEnumerator];
|
||||
id object;
|
||||
|
||||
result = [NSMutableSet setWithCapacity: [self count]];
|
||||
while ((object = [e nextObject]) != nil)
|
||||
{
|
||||
if ([predicate evaluateWithObject: object] == YES)
|
||||
{
|
||||
[result addObject: object]; // passes filter
|
||||
}
|
||||
}
|
||||
return [result makeImmutableCopyOnFail: NO];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSMutableSet (NSPredicate)
|
||||
|
||||
- (void) filterUsingPredicate: (NSPredicate *)predicate
|
||||
{
|
||||
NSMutableSet *rejected;
|
||||
NSEnumerator *e = [self objectEnumerator];
|
||||
id object;
|
||||
|
||||
rejected = [NSMutableSet setWithCapacity: [self count]];
|
||||
while ((object = [e nextObject]) != nil)
|
||||
{
|
||||
if ([predicate evaluateWithObject: object] == NO)
|
||||
{
|
||||
[rejected addObject: object];
|
||||
}
|
||||
}
|
||||
[self minusSet: rejected];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@implementation GSPredicateScanner
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue