/* Copyright (C) 1994 by Thomas Glen Smith. All Rights Reserved. */
/** compute APL2 V1.0.0 ************************************************
* Called from execmond to perform the APL execute function. *
***********************************************************************/
#define INCLUDES APLCB+APLMEM+TREE+APLFUNCI
#include "includes.h"
Aplcb compute(rite)
Aplcb rite; /* character variable to be computed */
{
Errinit; Errstop; Executf; Pop; Treeroot;
extern Treelist treehdr;
Treelist root;
Aplcb out=NULL;
int i;
if (errinit() == 0) {
root = treeroot(NULL);
if (root == NULL) return(NULL); /* out of memory? */
out = executf(rite);
rite = NULL; /* executf will have freed */
i = treehdr->lastfun;
root = pop(&treehdr); /* pop treehdr stack */
treehdr->lastfun = i; /* propagate */
free(root); /* free root */
}
return(errstop(0,NULL,rite,out));
}