/* $OpenXM: OpenXM_contrib2/asir2000/builtin/compobj.c,v 1.1 1999/12/03 07:39:07 noro Exp $ */
#include "ca.h"
#include "parse.h"
#include "comp.h"
void Parfreg();
struct ftab comp_tab[] = {
{"arfreg",Parfreg,8},
{0,0,0},
};
void Parfreg(arg,rp)
NODE arg;
Q *rp;
{
char *name;
P t;
SDEF s;
int i;
asir_assert(ARG0(arg),O_STR,"arfreg");
name = ((STRING)ARG0(arg))->body;
for ( s = LSS->sa, i = 0; i < LSS->n; i++ )
if ( !strcmp(s[i].name,name) )
break;
if ( i == LSS->n )
error("argreg : no such structure");
t = (P)ARG1(arg); s[i].arf.add = !t ? 0 : (FUNC)VR(t)->priv;
t = (P)ARG2(arg); s[i].arf.sub = !t ? 0 : (FUNC)VR(t)->priv;
t = (P)ARG3(arg); s[i].arf.mul = !t ? 0 : (FUNC)VR(t)->priv;
t = (P)ARG4(arg); s[i].arf.div = !t ? 0 : (FUNC)VR(t)->priv;
t = (P)ARG5(arg); s[i].arf.pwr = !t ? 0 : (FUNC)VR(t)->priv;
t = (P)ARG6(arg); s[i].arf.chsgn = !t ? 0 : (FUNC)VR(t)->priv;
t = (P)ARG7(arg); s[i].arf.comp = !t ? 0 : (FUNC)VR(t)->priv;
*rp = ONE;
}