Oolite 1.91.0.7604-240417-a536cbe
Loading...
Searching...
No Matches
OOExcludeObjectEnumerator.m
Go to the documentation of this file.
1/*
2
3OOExcludeObjectEnumerator.m
4
5
6Oolite
7Copyright (C) 2004-2013 Giles C Williams and contributors
8
9This program is free software; you can redistribute it and/or
10modify it under the terms of the GNU General Public License
11as published by the Free Software Foundation; either version 2
12of the License, or (at your option) any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22MA 02110-1301, USA.
23
24*/
25
27
28
29@implementation OOExcludeObjectEnumerator
30
31- (id) initWithEnumerator:(NSEnumerator *)enumerator
32 excludingObject:(id)object
33{
34 if ((self = [super init]))
35 {
36 _enumerator = [enumerator retain];
37 _excludeObject = [object retain];
38 }
39
40 return self;
41}
42
43
44- (void) dealloc
45{
46 [_enumerator release];
47 [_excludeObject release];
48
49 [super dealloc];
50}
51
52
53+ (id) enumeratorWithEnumerator:(NSEnumerator *)enumerator
54 excludingObject:(id)object
55{
56 if (object == nil) return enumerator;
57 if (enumerator == nil) return nil;
58
59 return [[[self alloc] initWithEnumerator:enumerator excludingObject:object] autorelease];
60}
61
62
63- (id) nextObject
64{
65 id result = nil;
66 do
67 {
68 result = [_enumerator nextObject];
69 } while (result == _excludeObject && result != nil);
70
71 return result;
72}
73
74@end
75
76
77@implementation NSEnumerator (OOExcludingObject)
78
79- (id) ooExcludingObject:(id)object
80{
82}
83
84@end
return nil
id enumeratorWithEnumerator:excludingObject:(NSEnumerator *enumerator,[excludingObject] id object)