// Tee.m v. 1.0
//
// Tee implementation file
//
// Copyright (C) 1992  Dimitri Tischenko & Bart 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
