This is CEListener.m in view mode; [Download] [Up]
#import <appkit/appkit.h> #import "CEListener.h" #import <mach/mach.h> #import <mach/message.h> #import <servers/netname.h> extern port_t name_server_port; extern id NXResponsibleDelegate(); @implementation CEListener { } static NXRemoteMethod *remoteMethods = NULL; #define REMOTEMETHODS 2 + initialize { if (!remoteMethods) { remoteMethods = (NXRemoteMethod *) malloc((REMOTEMETHODS+1)*sizeof(NXRemoteMethod)); remoteMethods[0].key = @selector(openFile:onHost:atTrueLine:); remoteMethods[0].types = "cci"; remoteMethods[1].key = @selector(openFile:onHost:fromTrueLine:to:); remoteMethods[1].types = "ccii"; remoteMethods[REMOTEMETHODS].key = NULL; } return self; } - (int)openFile:(char *)aPath onHost:(char *)aHost atTrueLine:(int)aLine { id _NXd; if( _NXd = NXResponsibleDelegate(self, @selector(openFile:onHost:atTrueLine:)) ) return [_NXd openFile:aPath onHost:aHost atTrueLine:aLine]; return -1; } - (int)openFile:(char *)aPath onHost:(char *)aHost fromTrueLine:(int)fromLine to:(int)toLine { id _NXd; if( _NXd = NXResponsibleDelegate(self, @selector(openFile:onHost:fromTrueLine:to:)) ) return [_NXd openFile:aPath onHost:aHost fromTrueLine:fromLine to:toLine]; return -1; } - (int)performRemoteMethod:(NXRemoteMethod *)method paramList:(NXParamValue *)paramList { switch (method - remoteMethods) { case 0: return [self openFile : paramList[0].bval.p onHost : paramList[1].bval.p atTrueLine : paramList[2].ival]; default: return [super performRemoteMethod : method paramList : paramList]; } } - (NXRemoteMethod *)remoteMethodFor:(SEL)aSel { NXRemoteMethod *rm; if (rm = NXRemoteMethodFromSel(aSel,remoteMethods)) return rm; return [super remoteMethodFor : aSel]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.