/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */ /* Matchsub APL2 V1.0.0 ************************************************ * Called by match. * * Yields 1 if arguments are same in structure and data, 0 otherwise. * ***********************************************************************/ #define INCLUDES APLCB #include "includes.h" int matchsub(datatyp,lp,rp) int datatyp; /* data type pointed to by lp, rp. */ char *lp, *rp; /* pointers to data to be compared. */ { Eq; Ivalue; Match; extern int aplerr; int ret; switch (datatyp) { case APLCHAR: ret = (*lp == *rp); break; case APLINT: ret = (*(int *)lp == *(int *)rp); break; case APLNUMB: ret = eq(*(double *)lp, *(double *)rp); break; case APLAPL: ret = ivalue(match(*(Aplcb *)lp,*(Aplcb *)rp)); break; default: ret = 0; aplerr = 999; break; } /* end select */ return(ret); }