/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */ /* execdyal APL2 V1.0.0 ************************************************ * The entry point to execdyal is returned by execdyap to execdyas when * * the function is type EQNE. Execdyas stores the entry point to * * execdyal in dp->deriv_left.func, the address of which is passed to * * execdyas by slashtrc. Redscan tests for dp->deriv_left.func being * * equal to either execdyal or execdyam, and if so, and the data type * * is other than APLAPL, it processes the current operation as a * * primitive dyadic scalar. * ***********************************************************************/ #define INCLUDES APLCB+FUNSTRUC #include "includes.h" Aplcb execdyal(pfun,left,rite) void *pfun; /* function structure - see funstruc.h */ Aplcb left,rite; /* function arguments */ { Dyadicp; Execdyat; int lefttype,ritetype; lefttype = left->aplflags & (APLMASK + APLAPL); /* data type */ ritetype = rite->aplflags & (APLMASK + APLAPL); /* data type */ if (lefttype == APLAPL || ritetype == APLAPL) return(execdyat(pfun,left,rite,execdyal)); else return(dyadicp(pfun,left,rite)); }