This is EMErrorObserver.m in view mode; [Download] [Up]
#import "EMErrorManager.h"
#import "EMErrorObserver.h"
#import <appkit/appkit.h>
@implementation EMErrorObserver
//--------------------------------------------------------------------------------
// INIT & FREE
//--------------------------------------------------------------------------------
- initWith:anObj andSelector:(SEL)aSel;
{
[super init];
[self setObserver:anObj andSelector:aSel];
return self;
}
- free;
{
return [super free];
}
//--------------------------------------------------------------------------------
// I-VAR
//--------------------------------------------------------------------------------
- setObserver:anObj andSelector:(SEL)aSel;
{
Method method;
const char *type;
int d;
if(![anObj respondsTo:aSel])
EM_ERROR(EM_INTBASE+10,sel_getName(aSel),NULL);
method=class_getInstanceMethod([anObj class],aSel);
if(!method)
method=class_getClassMethod([anObj class],aSel);
if(!method)
EM_ERROR(EM_INTBASE+13,NULL,NULL);
switch(method_getNumberOfArguments(method))
{
case 2:
wantsInfoObject=NO;
break;
case 3:
method_getArgumentInfo(method,2,&type,&d);
if(type[0]==_C_ID)
wantsInfoObject=YES;
else
EM_ERROR(EM_INTBASE+11,sel_getName(aSel),NULL);
break;
default:
EM_ERROR(EM_INTBASE+11,sel_getName(aSel),NULL);
}
observer=anObj;
selector=aSel;
return self;
}
- observer;
{
return observer;
}
- (SEL)selector;
{
return selector;
}
//--------------------------------------------------------------------------------
// DISPATCH MESSAGE TO OBSERVER
//--------------------------------------------------------------------------------
- (void)dispatch:(EMErrorInfo *)object;
{
if(wantsInfoObject)
[observer perform:selector with:object];
else
[observer perform:selector];
}
//--------------------------------------------------------------------------------
// THAT'S IT
//--------------------------------------------------------------------------------
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.