/* Copyright (C) 1992 by Thomas Glen Smith. All Rights Reserved. */
/* popnesc APL2 V1.0.0 *************************************************
* Popnesc is called from popnest when the result is to be a simple *
* array of data type APLCPLX. *
***********************************************************************/
#define INCLUDES APLCB+APLTOKEN
#include "includes.h"
void popnesc(hdr,out)
void *hdr; /* Operand stack */
Aplcb out; /* new output operand */
{
Endoper; Execgetp; Pop; Value;
extern int aplerr;
Aplcb wrk;
int datacnt;
double *op;
op = out->aplptr.apldata;
datacnt = out->aplcount;
while( datacnt-- && aplerr == 0) {
wrk = execgetp(pop(hdr)); /* pop token, get aplcb ptr */
switch (wrk->aplflags & APLMASK) {
case APLINT:
*op++ = *(wrk->aplptr.aplint);
*op++ = 0e0;
break;
case APLNUMB:
*op++ = *(wrk->aplptr.apldata);
*op++ = 0e0;
break;
case APLCPLX:
*op++ = *(wrk->aplptr.apldata);
*op++ = *(wrk->aplptr.apldata + 1);
break;
default:
aplerr = 123; /* item out of place */
break;
} /* end switch */
endoper(wrk);
}
}