int main(int argc, char *argv[]) { int i; LispBegin(); i = 1; if (argc > 1 && strcmp(argv[1], "-d") == 0) { LispDebug(1); ++i; } if (i < argc) { char buffer[2048]; for (; i < argc; i++) { snprintf(buffer, sizeof(buffer), "(load \"%s\" :if-does-not-exist :error)", argv[i]); LispExecute(buffer); } } else LispMachine(); LispEnd(); return (0); }
/* * Implementation */ int xawLoadModule(void) { int i; char *fname = "XAW-LOAD-MODULE"; xawWidget_t = LispRegisterOpaqueType("Widget"); xawWidgetClass_t = LispRegisterOpaqueType("WidgetClass"); xawListReturnStruct_t = LispRegisterOpaqueType("XawListReturnStruct"); xawFloatp_t = LispRegisterOpaqueType("float*"); LispExecute("(DEFSTRUCT XAW-LIST-RETURN-STRUCT STRING INDEX)\n"); GCDisable(); (void)LispSetVariable(ATOM2("ASCII-SINK-OBJECT-CLASS"), OPAQUE(asciiSinkObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("ASCII-SRC-OBJECT-CLASS"), OPAQUE(asciiSinkObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("ASCII-TEXT-WIDGET-CLASS"), OPAQUE(asciiTextWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("BOX-WIDGET-CLASS"), OPAQUE(boxWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("COMMAND-WIDGET-CLASS"), OPAQUE(commandWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("DIALOG-WIDGET-CLASS"), OPAQUE(dialogWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("FORM-WIDGET-CLASS"), OPAQUE(formWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("GRIP-WIDGET-CLASS"), OPAQUE(gripWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("LABEL-WIDGET-CLASS"), OPAQUE(labelWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("LIST-WIDGET-CLASS"), OPAQUE(listWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("MENU-BUTTON-WIDGET-CLASS"), OPAQUE(menuButtonWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("MULTI-SINK-OBJEC-TCLASS"), OPAQUE(multiSinkObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("MULTI-SRC-OBJECT-CLASS"), OPAQUE(multiSrcObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("PANED-WIDGET-CLASS"), OPAQUE(panedWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("PANNER-WIDGET-CLASS"), OPAQUE(pannerWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("PORTHOLE-WIDGET-CLASS"), OPAQUE(portholeWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("REPEATER-WIDGET-CLASS"), OPAQUE(repeaterWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("SCROLLBAR-WIDGET-CLASS"), OPAQUE(scrollbarWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("SIMPLE-MENU-WIDGET-CLASS"), OPAQUE(simpleMenuWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("SIMPLE-WIDGET-CLASS"), OPAQUE(simpleWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("SME-BSB-OBJECT-CLASS"), OPAQUE(smeBSBObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("SME-LINE-OBJECT-CLASS"), OPAQUE(smeLineObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("SME-OBJECT-CLASS"), OPAQUE(smeObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("STRIP-CHART-WIDGET-CLASS"), OPAQUE(stripChartWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("TEXT-WIDGET-CLASS"), OPAQUE(textWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("TEXT-SINKOBJECT-CLASS"), OPAQUE(textSinkObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("TEXT-SRC-OBJECT-CLASS"), OPAQUE(textSrcObjectClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("TIP-WIDGET-CLASS"), OPAQUE(tipWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("TOGGLE-WIDGET-CLASS"), OPAQUE(toggleWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("TREE-WIDGET-CLASS"), OPAQUE(treeWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("VIEWPORT-WIDGET-CLASS"), OPAQUE(viewportWidgetClass, xawWidgetClass_t), fname, 0); (void)LispSetVariable(ATOM2("VENDOR-SHELL-WIDGET-CLASS"), OPAQUE(vendorShellWidgetClass, xawWidgetClass_t), fname, 0); /* return codes of XawTextReplace */ (void)LispSetVariable(ATOM2("XAW-REPLACE-ERROR"), INTEGER(XawReplaceError), fname, 0); (void)LispSetVariable(ATOM2("XAW-EDIT-DONE"), INTEGER(XawEditDone), fname, 0); (void)LispSetVariable(ATOM2("XAW-EDIT-ERROR"), INTEGER(XawEditError), fname, 0); (void)LispSetVariable(ATOM2("XAW-POSITION-ERROR"), INTEGER(XawPositionError), fname, 0); /* return code of XawTextSearch */ (void)LispSetVariable(ATOM2("XAW-TEXT-SEARCH-ERROR"), INTEGER(XawTextSearchError), fname, 0); /* enum XawTextScanDirection */ (void)LispSetVariable(ATOM2("XAWSD-LEFT"), INTEGER(XawsdLeft), fname, 0); (void)LispSetVariable(ATOM2("XAWSD-RIGHT"), INTEGER(XawsdRight), fname, 0); GCEnable(); for (i = 0; i < sizeof(lispbuiltins) / sizeof(lispbuiltins[0]); i++) LispAddBuiltinFunction(&lispbuiltins[i]); return (1); }
/* * Implementation */ int psqlLoadModule(void) { int i; char *fname = "PSQL-LOAD-MODULE"; PGconn_t = LispRegisterOpaqueType("PGconn*"); PGresult_t = LispRegisterOpaqueType("PGresult*"); GCDisable(); /* NOTE: Implemented just enough to make programming examples * (and my needs) work. * Completing this is an exercise to the reader, or may be implemented * when/if required. */ LispExecute("(DEFSTRUCT PG-NOTIFY RELNAME BE-PID)\n" "(DEFSTRUCT PG-POINT X Y)\n" "(DEFSTRUCT PG-BOX HIGH LOW)\n" "(DEFSTRUCT PG-POLYGON SIZE NUM-POINTS BOUNDBOX POINTS)\n"); /* enum ConnStatusType */ (void)LispSetVariable(ATOM2("PG-CONNECTION-OK"), REAL(CONNECTION_OK), fname, 0); (void)LispSetVariable(ATOM2("PG-CONNECTION-BAD"), REAL(CONNECTION_BAD), fname, 0); (void)LispSetVariable(ATOM2("PG-CONNECTION-STARTED"), REAL(CONNECTION_STARTED), fname, 0); (void)LispSetVariable(ATOM2("PG-CONNECTION-MADE"), REAL(CONNECTION_MADE), fname, 0); (void)LispSetVariable(ATOM2("PG-CONNECTION-AWAITING-RESPONSE"), REAL(CONNECTION_AWAITING_RESPONSE), fname, 0); (void)LispSetVariable(ATOM2("PG-CONNECTION-AUTH-OK"), REAL(CONNECTION_AUTH_OK), fname, 0); (void)LispSetVariable(ATOM2("PG-CONNECTION-SETENV"), REAL(CONNECTION_SETENV), fname, 0); /* enum ExecStatusType */ (void)LispSetVariable(ATOM2("PGRES-EMPTY-QUERY"), REAL(PGRES_EMPTY_QUERY), fname, 0); (void)LispSetVariable(ATOM2("PGRES-COMMAND-OK"), REAL(PGRES_COMMAND_OK), fname, 0); (void)LispSetVariable(ATOM2("PGRES-TUPLES-OK"), REAL(PGRES_TUPLES_OK), fname, 0); (void)LispSetVariable(ATOM2("PGRES-COPY-OUT"), REAL(PGRES_COPY_OUT), fname, 0); (void)LispSetVariable(ATOM2("PGRES-COPY-IN"), REAL(PGRES_COPY_IN), fname, 0); (void)LispSetVariable(ATOM2("PGRES-BAD-RESPONSE"), REAL(PGRES_BAD_RESPONSE), fname, 0); (void)LispSetVariable(ATOM2("PGRES-NONFATAL-ERROR"), REAL(PGRES_NONFATAL_ERROR), fname, 0); (void)LispSetVariable(ATOM2("PGRES-FATAL-ERROR"), REAL(PGRES_FATAL_ERROR), fname, 0); GCEnable(); for (i = 0; i < sizeof(lispbuiltins) / sizeof(lispbuiltins[0]); i++) LispAddBuiltinFunction(&lispbuiltins[i]); return (1); }