This is Tee.m in view mode; [Download] [Up]
// Tee.m
//
// Tee implementation file
//
// Copyright (C) 1992 Dimitri Tischenko & P.B. Schuller, Delft U. of T.
// Many thanks to Scott Hess
//
#import "Tee.h"
#include <stdio.h>
#ifdef DEBUG
static void log(STR, id, STR, SEL);
#else
#define log(a, b, c, d)
#endif
@implementation Tee
- forward:(SEL)aSelector: (marg_list)argFrame
{
if ([target1 isKindOf:[Tee class]])
{
log("target1", target1, "forward", aSelector);
[target1 forward:aSelector :argFrame];
}
else
{
if ([target1 respondsTo:aSelector]){
log("target1", target1, "performv", aSelector);
[target1 performv:aSelector :argFrame];
}
}
if ([target2 isKindOf:[Tee class]])
{
log("target2", target2, "forward", aSelector);
[target2 forward:aSelector :argFrame];
}
else
{
if ([target2 respondsTo:aSelector]){
log("target2", target2, "performv", aSelector);
[target2 performv:aSelector :argFrame];
}
}
return self;
}
- (BOOL)respondsTo:(SEL)aSelector
{
#ifdef DEBUG
printf("Tee respondsTo: %s = %s\n",
sel_getName(aSelector), aSelector ? "YES":"NO");
#endif
if (!aSelector)
return NO;
else
return YES;
}
#ifdef DEBUG
void log(STR varname, id obj, STR action, SEL aSelector)
{
printf("%s is a %s; %s %s\n", varname, [obj name], action, sel_getName(aSelector));
}
#endif
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.