Metropoli BBS
VIEWER: scalay.c MODE: TEXT (ASCII)
/* Copyright (C) 1994 by Thomas Glen Smith.	All Rights Reserved. */
/* scalay APL2 V1.0.0 **************************************************
* Called from nwisec to determine the scalar processing function.	 *
***********************************************************************/
#define INCLUDES APLCB+FUNCODES+FUNSTRUC
#include "includes.h"
void *scalay(fun,code,intype,outype)
void *fun; /* function structure - see funstruc.h */
int code; /* function code extracted from *fun. */
int intype,outype; /* input and output data types */
{

	switch(intype) {
     	case APLCHAR:
          	return(((Eqne *)fun)->ph);
          case APLINT:
              	switch(code) { /* outype m/b APLINT */
                   	case EQNE:
                    	return(((Eqne *)fun)->rel.dyad.procs.ppint);
                    case SCDO:
                    	return(((Rela *)fun)->dyad.procs.ppint);
               }
          case APLNUMB:
          	if (outype == APLINT)
               	switch(code) {
                    	case EQNE:
                         	return(((Eqne *)fun)->rel.dyad.procs.ppmix);
                         case SCDO:
                         	return(((Rela *)fun)->dyad.procs.ppmix);
                         case SCMD:
                         	return(((Scalars *)fun)->dyad.procs.ppmix);
                    }
               else switch(code) { /* outype m/b APLNUMB */
                    	case EQNE:
                         	return(((Eqne *)fun)->rel.dyad.procs.ppdbl);
                         case SCDO:
                         	return(((Rela *)fun)->dyad.procs.ppdbl);
                         case SCMD:
                         	return(((Scalars *)fun)->dyad.procs.ppdbl);
               }
     }
     return(NULL); /* should not happen, but just in case. */
}
[ RETURN TO DIRECTORY ]