/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */ /* funstruc.h - APL2 V1.0.0 ******************************************** * Funstruc.h and funstrud.h define all the structures used to describe * * builtin APL functions and operators. * ***********************************************************************/ #if !defined(FUNSTRUC_INCL) #define FUNSTRUC_INCL #if !defined(SCALAR_PROC_DEF) #define SCALAR_PROC_DEF typedef void (*SCALAR_PROC)(); /* Entry to dyadic scalar proc. */ #endif #include "funstrud.h" typedef struct oper { /* slash, slope, each, dot, etc. */ Codes codes; int (*eptok)(Apltoken); /* transformer to derived function */ } Oper; typedef struct dmxo { /* dyadic mixed only, or dual purpose */ Codes codes; Mixed_dyadics dyad; } Dmxo; typedef struct mixa { /* mixed functions */ Codes codes; Mixed_monadics mona; Mixed_dyadics dyad; } Mixa; typedef struct msmd {/*monadic scalar mixed dyadic roll/deal not/without*/ Codes codes; Scalar_monadics mona; Mixed_dyadics dyad; } Msmd; typedef struct rela { /* relational functions */ Codes codes; Scalar_dyadics dyad; } Rela; typedef struct eqne { /* equality functions */ Rela rel; int (*ch)(char, char); void (*ph)(char*, char*, int*); void (*pd)(char*, char*, double*); void (*eqnedum)(void*, void*, int*); } Eqne; typedef struct scalars { Codes codes; Scalar_dyadics dyad; Scalar_monadics mona; } Scalars; #endif