2 Copyright (C) 2000-2003 SKYRIX Software AG
4 This file is part of OGo
6 OGo is free software; you can redistribute it and/or modify it under
7 the terms of the GNU Lesser General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
11 OGo is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with OGo; see the file COPYING. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
23 #include <EOControl/EOQualifier.h>
26 @interface NSObject(QualifierDescription)
27 - (NSString *)qualifierDescription;
30 @interface EOQualifier(EvalContext)
31 - (BOOL)evaluateWithObject:(id)_object inEvalContext:(id)_ctx;
34 @implementation EONotQualifier
36 - (id)initWithQualifier:(EOQualifier *)_qualifier {
37 self->qualifier = [_qualifier retain];
42 [self->qualifier release];
48 - (EOQualifier *)qualifier {
49 return self->qualifier;
52 - (unsigned int)count {
53 return self->qualifier ? 1 : 0;
55 - (NSArray *)subqualifiers {
56 return self->qualifier ? [NSArray arrayWithObject:self->qualifier] : nil;
61 - (EOQualifier *)qualifierWithBindings:(NSDictionary *)_bindings
62 requiresAllVariables:(BOOL)_reqAll
66 nq = [self->qualifier qualifierWithBindings:_bindings
67 requiresAllVariables:_reqAll];
71 if (nq == self->qualifier)
74 return [[[[self class] alloc] initWithQualifier:nq] autorelease];
77 - (NSArray *)bindingKeys {
78 return [self->qualifier bindingKeys];
83 - (void)addQualifierKeysToSet:(NSMutableSet *)_keys {
85 [self->qualifier addQualifierKeysToSet:_keys];
90 - (BOOL)evaluateWithObject:(id)_object inEvalContext:(id)_ctx {
92 [self->qualifier evaluateWithObject:_object inEvalContext:_ctx]
95 - (BOOL)evaluateWithObject:(id)_object {
96 return [self evaluateWithObject:_object inEvalContext:nil];
101 - (void)encodeWithCoder:(NSCoder *)_coder {
102 [_coder encodeObject:self->qualifier];
105 - (id)initWithCoder:(NSCoder *)_coder {
106 self->qualifier = [[_coder decodeObject] retain];
112 - (BOOL)isEqualToQualifier:(EOQualifier *)_qual {
113 return [self->qualifier isEqual:[(EONotQualifier *)_qual qualifier]];
118 - (EOQualifier *)qualifierByApplyingTransformer:(id)_transformer
121 if ([_transformer respondsToSelector:
122 @selector(transformNotQualifier:inContext:)]) {
123 return [_transformer transformNotQualifier:self inContext:_ctx];
130 qualifierByApplyingTransformer:_transformer inContext:_ctx];
131 nq = [[EONotQualifier alloc] initWithQualifier:(q ? q : self->qualifier)];
132 return [nq autorelease];
136 - (EOQualifier *)qualifierByApplyingKeyMap:(NSDictionary *)_map {
140 q = [self->qualifier qualifierByApplyingKeyMap:_map];
141 nq = [[EONotQualifier alloc] initWithQualifier:(q ? q : self->qualifier)];
142 return [nq autorelease];
147 - (NSString *)description {
150 qd = [self->qualifier qualifierDescription];
152 return [[@"NOT (" stringByAppendingString:qd] stringByAppendingString:@")"];
155 @end /* EONotQualifier */