(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