home *** CD-ROM | disk | FTP | other *** search
- #import <appkit/appkit.h>
- #import "EvalListener.h"
- #import <mach.h>
- #import <sys/message.h>
- #import <servers/netname.h>
- extern port_t name_server_port;
- extern id NXResponsibleDelegate();
- @implementation EvalListener :Listener
- {}
- static NXRemoteMethod *remoteMethods = NULL;
- #define REMOTEMETHODS 1
- + initialize
- /* */
- {
- if (!remoteMethods) {
- remoteMethods =
- (NXRemoteMethod *) malloc((REMOTEMETHODS+1)*sizeof(NXRemoteMethod));
- remoteMethods[0].key =
- @selector(evalString:);
- remoteMethods[0].types = "c";
- remoteMethods[REMOTEMETHODS].key = NULL;
- }
- }
- -(int)evalString : (char *) string
- /* */
- {
- id _NXd;
- if (_NXd = NXResponsibleDelegate(self,
- @selector(evalString:)))
- return [_NXd evalString : string];
- return -1;
- }
-
- - (int) performRemoteMethod : (NXRemoteMethod *) method
- paramList : (NXParamValue *) paramList {
- /* */
- switch (method - remoteMethods) {
- case 0:
- return [self evalString : paramList[0].bval.p];
- 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
-