(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