(FILECREATED "26-Jul-86 18:11:01" {DSK}<LISPFILES>DINDE>AUTOLOAD.;3 7042 changes to: (FNS SetUpDINDESession) previous date: "24-Jul-86 17:13:24" {DSK}<LISPFILES>DINDE>AUTOLOAD.;1) (* Copyright (c) 1986 by Massachusetts Institute of Technology. All rights reserved.) (PRETTYCOMPRINT AUTOLOADCOMS) (RPAQQ AUTOLOADCOMS ((* * The order of the files given below is a sensitive matter. Basically, Class definition must precede ALL Method defintions for that Class and ALL SubClass references. This occasionally leads to quirky placements on files, e.g. Class Plot is on DINDEMIXINS rather than DINDEPLOT because it is a SUPER of Graphic (sigh.)) (FILES CMLARRAY CMLARRAYINSPECTOR UNBOXEDOPS FREEMENU EXTENDEDOPS DINDEMIXINS DINDE DINDEARRAYS DINDEREEXPS DINDEBINOPS DINDESMRY DINDEMISC DINDENUMERIC DINDEBROWSER DINDEUTILITY DINDEVIEWS DINDEBIVREG DINDESORT DINDESMOOTH DINDERLINE DINDEICON DINDEDATA TWODGRAPHICS PLOTOBJECTS PLOT PLOTEXAMPLES BOXPLOT DYNAMICBOXPLOT BATCHVIEW SCATTERPLOT DINDEPLOTS) (FNS ClassBrowseDINDE SetUpDINDESession) (P (* * Set up a sensible floating point format. BUT NOT THIS WAY -- FLOATING POINT CONSTANTS WOULD BE TRUNCATED WHEN WRITTEN OUT BY MAKEFILE!) (* * FLTFMT (QUOTE (FLOAT NIL NIL NIL NIL 4))) (* * When the following fixes are removed, ALL SOURCE MUST BE RECOMPILED to take advantage of the correct DMACRO definitions!!!) (* * REPAIR FAULTY COMPILER MACRO. You are correct, the problem is with the SPREADAPPLY*. The macro for SPREADAPPLY* is just like APPLY*, only a little faster since it assumes that the function being applied is a spread function. If it ain't, you got troubles. In Loops, all the methods are indeed spread functions, so it seems safe to have ← expand to a call to SPREADAPPLY*. As you noticed, however, there is one place where this doesn't work -- when you send a "BogusMessage" %. Then the function that gets applied is a no-spread function, and things break. Since most users of Loops don't count on this, most people (including me) have no trouble. The fix? Change the macro for ← to expand to an APPLY* instead of SPREADAPPLY* and recompile your code. The cost? Slightly (very slightly, I might add) slower message sending in the general case. The benifit? MessageNotUnderstood will work. I should add that I have installed this fix in our version of Loops here at PARC. ----- smL) (PUTPROP (QUOTE SPREADAPPLY*) (QUOTE DMACRO) (QUOTE (= . APPLY*))) (* * Buttress LOOPS is not careful about taking CAR or CDR of non-lists, so we are forced to oblige.) (SETQ CAR/CDRERR NIL) (* * The CMLARRAY package in the KOTO Beta Release did not go the distance, but could have. So ...) (OR (GETPROP (QUOTE AREF) (QUOTE MACRO)) (PUTPROP (QUOTE AREF) (QUOTE MACRO) (QUOTE COMP.AREF))) (OR (GETPROP (QUOTE ASET) (QUOTE MACRO)) (PUTPROP (QUOTE ASET) (QUOTE MACRO) (QUOTE COMP.ASET))) (* * Set up the DINDE world.) (ClassBrowseDINDE) (SetUpDINDESession)))) (* * The order of the files given below is a sensitive matter. Basically, Class definition must precede ALL Method defintions for that Class and ALL SubClass references. This occasionally leads to quirky placements on files, e.g. Class Plot is on DINDEMIXINS rather than DINDEPLOT because it is a SUPER of Graphic (sigh.)) (FILESLOAD CMLARRAY CMLARRAYINSPECTOR UNBOXEDOPS FREEMENU EXTENDEDOPS DINDEMIXINS DINDE DINDEARRAYS DINDEREEXPS DINDEBINOPS DINDESMRY DINDEMISC DINDENUMERIC DINDEBROWSER DINDEUTILITY DINDEVIEWS DINDEBIVREG DINDESORT DINDESMOOTH DINDERLINE DINDEICON DINDEDATA TWODGRAPHICS PLOTOBJECTS PLOT PLOTEXAMPLES BOXPLOT DYNAMICBOXPLOT BATCHVIEW SCATTERPLOT DINDEPLOTS) (DEFINEQ (ClassBrowseDINDE [LAMBDA NIL (* SCP "15-Feb-86 17:26") (* A function to set up a ClassBrowser on all the Objects used in DINDE.) (←New ($ ClassBrowser) Browse (APPEND (INFILECOMS? NIL (QUOTE CLASSES) (QUOTE DINDEMIXINSCOMS)) (INFILECOMS? NIL (QUOTE CLASSES) (QUOTE DINDECOMS)) (INFILECOMS? NIL (QUOTE CLASSES) (QUOTE DINDEBROWSERCOMS]) (SetUpDINDESession [LAMBDA NIL (* RWO "26-Jul-86 18:10") (* A function to start a new DINDE session.) (LET [(ToolBox (←New ($ DINDEObjectBrowser) Browse (LIST ($ DINDEObject] (for ExtraClass in (QUOTE (BooleanArray FloatArray StringArray)) DO (← ToolBox DeleteFromBrowser ($! ExtraClass]) ) (* * Set up a sensible floating point format. BUT NOT THIS WAY -- FLOATING POINT CONSTANTS WOULD BE TRUNCATED WHEN WRITTEN OUT BY MAKEFILE!) (* * FLTFMT (QUOTE (FLOAT NIL NIL NIL NIL 4))) (* * When the following fixes are removed, ALL SOURCE MUST BE RECOMPILED to take advantage of the correct DMACRO definitions!!!) (* * REPAIR FAULTY COMPILER MACRO. You are correct, the problem is with the SPREADAPPLY*. The macro for SPREADAPPLY* is just like APPLY*, only a little faster since it assumes that the function being applied is a spread function. If it ain't, you got troubles. In Loops, all the methods are indeed spread functions, so it seems safe to have ← expand to a call to SPREADAPPLY*. As you noticed, however, there is one place where this doesn't work -- when you send a "BogusMessage" %. Then the function that gets applied is a no-spread function, and things break. Since most users of Loops don't count on this, most people (including me) have no trouble. The fix? Change the macro for ← to expand to an APPLY* instead of SPREADAPPLY* and recompile your code. The cost? Slightly (very slightly, I might add) slower message sending in the general case. The benifit? MessageNotUnderstood will work. I should add that I have installed this fix in our version of Loops here at PARC. ----- smL) (PUTPROP (QUOTE SPREADAPPLY*) (QUOTE DMACRO) (QUOTE (= . APPLY*))) (* * Buttress LOOPS is not careful about taking CAR or CDR of non-lists, so we are forced to oblige.) (SETQ CAR/CDRERR NIL) (* * The CMLARRAY package in the KOTO Beta Release did not go the distance, but could have. So ...) (OR (GETPROP (QUOTE AREF) (QUOTE MACRO)) (PUTPROP (QUOTE AREF) (QUOTE MACRO) (QUOTE COMP.AREF))) (OR (GETPROP (QUOTE ASET) (QUOTE MACRO)) (PUTPROP (QUOTE ASET) (QUOTE MACRO) (QUOTE COMP.ASET))) (* * Set up the DINDE world.) (ClassBrowseDINDE) (SetUpDINDESession) (PUTPROPS AUTOLOAD COPYRIGHT ("Massachusetts Institute of Technology" 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (3920 4992 (ClassBrowseDINDE 3930 . 4503) (SetUpDINDESession 4505 . 4990))))) STOP