This is nps.c in view mode; [Download] [Up]
/* Lisp to Next DPS window server connections */ /* only relatively low level operations are connected here */ /* The expectation begin that DSPPrintf will provide most of the functionality */ /* see nps.lisp */ #import "/usr/include/dpsclient/dpsNeXT.h" /* constants (from dpsclient/event.h) */ int MouseUp (void) {return NX_MOUSEUP;} int MouseDown (void) {return NX_MOUSEDOWN;} int MouseDownMask (void) {return NX_MOUSEDOWNMASK;} int MouseUpMask (void) {return NX_MOUSEUPMASK;} /* the event structure */ static NXEvent event; int EventWindow (void) {return event.window;} int EventType (void) {return event.type;} int EventLocationX (void) {int i; return (i = event.location.x);} /* wants to return a float */ int EventLocationY (void) {int i; return (i = event.location.y);} int EventFlags (void) {return event.flags;} int EventDataMouseEventNum (void) {return event.data.mouse.eventNum;} int EventDataMouseClick (void) {return event.data.mouse.click;} int EventDataKeyRepeat (void) {return event.data.key.repeat;} int EventDataKeycharSet (void) {return event.data.key.charSet;} int EventDataKeycharCode (void) {return event.data.key.charCode;} int EventDataKeyData (void) {return event.data.key.keyData;} int EventDataTrackingeventNum (void) {return event.data.tracking.eventNum;} int EventDataTrackingNum (void) {return event.data.tracking.trackingNum;} int EventDataTrackingUserData (void) {return event.data.tracking.userData;} int EventDataCompoundSubtype (void) {return event.data.compound.subtype;} static DPSContext ctx; int DisplayPSFile (char *fileName) { NXStream *st; char *addr; int len, maxlen; if (ctx == NULL) {return -1;} st = NXMapFile(fileName, NX_READONLY); if (st) { NXGetMemoryBuffer(st, &addr, &len, &maxlen); DPSPrintf(ctx,"/_the_saved_vm_ save def\n"); DPSWriteData(ctx, addr, len); DPSPrintf(ctx,"\ngrestoreall _the_saved_vm_ restore\n"); NXCloseMemory(st, NX_FREEBUFFER); return 1; } return -2; } void myerrorproc (DPSContext ctxt, DPSErrorCode errorCode, long unsigned int arg1, long unsigned int arg2) { printf("%%%%[ %.*s: %.*s; Offending command: %.*s ]%%%%\n", *(short *)(arg1+14),*(char **)(arg1+16)+arg1+4, *(short *)(arg1+22),*(char **)(arg1+24)+arg1+4, *(short *)(arg1+30),*(char **)(arg1+32)+arg1+4); fflush(stdout); } void myprintproc (DPSContext ctxt, const char *buf, long unsigned int count) { printf(buf); fflush(stdout); } int CreatePSContext (void) { ctx = DPSCreateContext(0,0,myprintproc,myerrorproc); return 1; } void KillPSContext (void) { ctx = NULL; } int SendPS (char* arg) { if (ctx == NULL) {return -1;} DPSPrintf(ctx,arg); return 1; } int FlushPS (void) { if (ctx == NULL) {return -1;} DPSFlushContext(ctx); return 1; } int GetPSEventNoMatterWhat (void) { if (ctx == NULL) {return -1;} DPSGetEvent(ctx,&event,-1,NX_FOREVER,0); return event.type; } int GetPSEvent (float timeout) { int success; double dtimeout; if (ctx == NULL) {return -1;} dtimeout = timeout; success = DPSGetEvent(ctx,&event,-1,dtimeout,0); return success; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.