(FILECREATED "25-Jun-86 01:47:01" {QV}<PEDERSEN>LISP>IDLARRAYMETHODS.;6 7911   

      changes to:  (VARS IDLARRAYMETHODSCOMS)
		   (FNS APPLY-DYADIC-METHOD APPLY-MONADIC-METHOD APPLY-REDUCTION-METHOD 
			APPLY-SCAN-METHOD APPLY-NADIC-METHODMACRO MEDIAN-METHOD MEAN-METHOD 
			VARIANCE-METHOD PLUS-METHOD DIFFERENCE-METHOD QUOTIENT-METHOD TIMES-METHOD 
			MIN-METHOD MAX-METHOD IDL-MIN IDL-MAX RESIDUE-METHOD CEILING-METHOD 
			MINUS-METHOD FLOOR-METHOD)

      previous date: " 6-Jun-86 11:47:15" {QV}<PEDERSEN>LISP>IDLARRAYMETHODS.;5)


(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT IDLARRAYMETHODSCOMS)

(RPAQQ IDLARRAYMETHODSCOMS ((* File created by Coms Manager.)
			      (FNS APPLY-DYADIC-METHOD APPLY-DYADIC-SPECIFIER APPLY-MONADIC-METHOD 
				   APPLY-NADIC-METHODMACRO APPLY-REDUCTION-METHOD APPLY-SCAN-METHOD 
				   DYADIC-MOST-SPECIFIC-NODE FIND-DYADIC-METHOD FIND-MONADIC-METHOD)
			      (RECORDS METHOD-TREE-NODE)
			      (VARS DYADIC-METHOD-TREES MONADIC-METHOD-TREES REDUCTION-METHOD-TREES 
				    SCAN-METHOD-TREES)
			      (MACROS APPLY-NADIC-METHOD)))



(* File created by Coms Manager.)

(DEFINEQ

(APPLY-DYADIC-METHOD
  [LAMBDA (METHODNAME LEFTIDLARRAY RIGHTIDLARRAY RESULT)     (* jop: "24-Jun-86 23:49")

          (* *)


    (DECLARE (GLOBALVARS DYADIC-METHOD-TREES))
    (LET ((SPECIFIC-METHOD (FIND-DYADIC-METHOD METHODNAME LEFTIDLARRAY RIGHTIDLARRAY 
						 DYADIC-METHOD-TREES)))
         (if SPECIFIC-METHOD
	     then (APPLY* SPECIFIC-METHOD LEFTIDLARRAY RIGHTIDLARRAY RESULT)
	   else (ERROR "No such method" METHODNAME])

(APPLY-DYADIC-SPECIFIER
  [LAMBDA (LEFTGENARRAY RIGHTGENARRAY SPECIFIER)             (* jop: " 9-May-86 12:28")
          
          (* *)

    (LET ((LSPECIFIER (CAR SPECIFIER))
          (RSPECIFIER (CADR SPECIFIER)))
         (AND (IDLARRAY-TYPEP LEFTGENARRAY LSPECIFIER)
              (IDLARRAY-TYPEP RIGHTGENARRAY RSPECIFIER])

(APPLY-MONADIC-METHOD
  [LAMBDA (METHODNAME IDLARRAY RESULT)                       (* jop: "24-Jun-86 23:50")

          (* *)


    (DECLARE (GLOBALVARS MONADIC-METHOD-TREES))
    (LET ((SPECIFIC-METHOD (FIND-MONADIC-METHOD METHODNAME IDLARRAY MONADIC-METHOD-TREES)))
         (if SPECIFIC-METHOD
	     then (APPLY* SPECIFIC-METHOD IDLARRAY RESULT)
	   else (ERROR "No such method"])

(APPLY-NADIC-METHODMACRO
  [LAMBDA (ARGS)                                             (* jop: "24-Jun-86 23:52")

          (* *)


    (LET ((METHODNAME (CAR ARGS))
	  (KEYARRAY (CADR ARGS)))
         (BQUOTE (LET ((SPECIFIC-METHOD (FIND-MONADIC-METHOD , METHODNAME , KEYARRAY 
								 MONADIC-METHOD-TREES)))
		        (DECLARE (GLOBALVARS MONADIC-METHOD-TREES))
		        (if SPECIFIC-METHOD
			    then (APPLY* SPECIFIC-METHOD ,@(CDR ARGS))
			  else (ERROR "No such nadic method" , METHODNAME])

(APPLY-REDUCTION-METHOD
  [LAMBDA (FN IDLARRAY AXIS RESULT)                          (* jop: "25-Jun-86 00:22")

          (* *)


    (DECLARE (GLOBALVARS REDUCTION-METHOD-TREES))
    (LET ((SPECIFIC-METHOD (FIND-MONADIC-METHOD FN IDLARRAY REDUCTION-METHOD-TREES)))
         (if SPECIFIC-METHOD
	     then (APPLY* SPECIFIC-METHOD IDLARRAY AXIS RESULT)
	   else (ERROR "No such reduction method" FN])

(APPLY-SCAN-METHOD
  [LAMBDA (METHODNAME IDLARRAY AXIS RESULT)                  (* jop: "25-Jun-86 00:22")

          (* *)


    (DECLARE (GLOBALVARS SCAN-METHOD-TREES))
    (LET ((SPECIFIC-METHOD (FIND-MONADIC-METHOD METHODNAME IDLARRAY SCAN-METHOD-TREES)))
         (if SPECIFIC-METHOD
	     then (APPLY* SPECIFIC-METHOD IDLARRAY RESULT)
	   else (ERROR "No such scan method" METHODNAME])

(DYADIC-MOST-SPECIFIC-NODE
  [LAMBDA (METHODNAME LEFTIDLARRAY RIGHTIDLARRAY TREE)       (* jop: " 9-May-86 12:28")
          
          (* *)

    (if (APPLY-DYADIC-SPECIFIER LEFTIDLARRAY RIGHTIDLARRAY (fetch (METHOD-TREE-NODE TYPE-SPECIFIER)
                                                              of TREE))
        then (bind (CURRENTCHILDREN ←(fetch (METHOD-TREE-NODE CHILDREN) of TREE))
                   (MOSTSPECIFICNODE ←(if (LISTGET (fetch (METHOD-TREE-NODE METHODS) of TREE)
                                                 METHODNAME)
                                          then TREE))
                   CURRENTNODE while [SETQ CURRENTNODE (for NODE in CURRENTCHILDREN
                                                          thereis (APPLY-DYADIC-SPECIFIER
                                                                   LEFTIDLARRAY RIGHTIDLARRAY
                                                                   (fetch (METHOD-TREE-NODE 
                                                                                 TYPE-SPECIFIER)
                                                                      of NODE]
                do (SETQ CURRENTCHILDREN (fetch (METHOD-TREE-NODE CHILDREN) of CURRENTNODE))
                   (if (LISTGET (fetch (METHOD-TREE-NODE METHODS) of CURRENTNODE)
                              METHODNAME)
                       then (SETQ MOSTSPECIFICNODE CURRENTNODE)) finally (RETURN MOSTSPECIFICNODE])

(FIND-DYADIC-METHOD
  [LAMBDA (METHODNAME LEFTIDLARRAY RIGHTIDLARRAY TREES)      (* jop: " 9-May-86 12:25")
          
          (* *)

    (LET*[(NODE (bind RESULT for TREE in TREES thereis (SETQ RESULT (DYADIC-MOST-SPECIFIC-NODE 
                                                                           METHODNAME LEFTIDLARRAY 
                                                                           RIGHTIDLARRAY TREE))
                   finally (RETURN RESULT)))
          (METHODS (AND NODE (fetch (METHOD-TREE-NODE METHODS) of NODE]
     (LISTGET METHODS METHODNAME])

(FIND-MONADIC-METHOD
  [LAMBDA (METHODNAME IDLARRAY TREES)                        (* jop: " 9-May-86 12:17")
          
          (* *)

    (LET*[(NODE (bind RESULT for TREE in TREES thereis (SETQ RESULT (MONADIC-MOST-SPECIFIC-NODE
                                                                     METHODNAME IDLARRAY TREE))
                   finally (RETURN RESULT)))
          (METHODS (AND NODE (fetch (METHOD-TREE-NODE METHODS) of NODE]
     (LISTGET METHODS METHODNAME])
)
[DECLARE: EVAL@COMPILE 

(RECORD METHOD-TREE-NODE (TYPE-SPECIFIER METHODS CHILDREN))
]

(RPAQQ DYADIC-METHOD-TREES [(((NUMERIC NIL)
				(NUMERIC NIL))
			       NIL
			       ((((NUMERIC 0)
				  (NUMERIC NIL))
				 NIL
				 ((((NUMERIC 0)
				    (NUMERIC 0))
				   NIL NIL)))
				(((NUMERIC NIL)
				  (NUMERIC 0))
				 NIL NIL)))
			      (((LOGICAL NIL)
				(LOGICAL NIL))
			       NIL
			       ((((LOGICAL 0)
				  (LOGICAL NIL))
				 NIL
				 ((((LOGICAL 0)
				    (LOGICAL 0))
				   NIL NIL)))
				(((LOGICAL NIL)
				  (LOGICAL 0))
				 NIL NIL)))
			      (((NIL NIL)
				(NIL NIL))
			       (BLT GENERIC-BLT MEMBER GENERIC-MEMBER INDEXOF GENERIC-INDEXOF)
			       ((((NIL 0)
				  (NIL NIL))
				 NIL
				 ((((NIL 0)
				    (NIL 0))
				   NIL NIL)))
				(((NIL NIL)
				  (NIL 0))
				 NIL NIL])

(RPAQQ MONADIC-METHOD-TREES [((NIL NIL)
				NIL
				(((NIL 0)
				  NIL NIL)
				 ((NIL 1+)
				  (FILL GENERIC-FILL SORT GENERIC-SORT)
				  NIL])

(RPAQQ REDUCTION-METHOD-TREES (((NIL NIL)
				  NIL NIL)))

(RPAQQ SCAN-METHOD-TREES (((NIL NIL)
			     NIL NIL)))
(DECLARE: EVAL@COMPILE 
(PUTPROPS APPLY-NADIC-METHOD MACRO (ARGS (APPLY-NADIC-METHODMACRO ARGS)))
)
(PUTPROPS IDLARRAYMETHODS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (1165 6624 (APPLY-DYADIC-METHOD 1175 . 1654) (APPLY-DYADIC-SPECIFIER 1656 . 2003) (
APPLY-MONADIC-METHOD 2005 . 2433) (APPLY-NADIC-METHODMACRO 2435 . 2995) (APPLY-REDUCTION-METHOD 2997
 . 3441) (APPLY-SCAN-METHOD 3443 . 3878) (DYADIC-MOST-SPECIFIC-NODE 3880 . 5463) (FIND-DYADIC-METHOD 
5465 . 6092) (FIND-MONADIC-METHOD 6094 . 6622)))))
STOP