Metropoli BBS
VIEWER: dyadcom.c MODE: TEXT (ASCII)
/* Copyright (C) 1994 by Thomas Glen Smith.  All Rights Reserved. */
/* dyadcom APL2 V1.0.0 *************************************************
* called by dyadset and preduces to determine the desired input/output *
* data types, and the routine to do the scalar dyadic processing.      *
***********************************************************************/
#define INCLUDES APLCB+FUNCODES+FUNSTRUC
#include "includes.h"
SCALAR_PROC dyadcom(pfun, pintype, poutype, ltype, rtype)
void *pfun;   /* Describes the scalar dyadic. */
int *pintype,*poutype; /* Set by dyadcom to required data types. */
int ltype,rtype; /* Argument data types. */
{
	Dyadoper;
     extern int aplerr;
     SCALAR_PROC oper=NULL;
     Scalar_dyadics *fun;
     int code,flags;

	code = ((Codes *)pfun)->funky_code;
	switch (flags = ((Codes *)pfun)->funky_flags) {
          case EQNE:
	     	fun = &(((Eqne *)pfun)->rel.dyad);
               break;
          case SCMD: /* dyadic scalars */
               fun = &(((Scalars *)pfun)->dyad);
               break;
          case SCDO: /* and, less, greater, etc. */
               fun = &(((Rela *)pfun)->dyad);
               break;
          default:
               return(NULL); /* no match */
     }
     if (ltype == APLCHAR || rtype == APLCHAR) fun = pfun;
	return(dyadoper(fun, pintype, poutype, ltype, rtype, flags, code));
}
[ RETURN TO DIRECTORY ]