Annotation of OpenXM_contrib2/asir2000/builtin/compobj.c, Revision 1.1
1.1 ! noro 1: /* $OpenXM: OpenXM/src/asir99/builtin/compobj.c,v 1.1.1.1 1999/11/10 08:12:25 noro Exp $ */
! 2: #include "ca.h"
! 3: #include "parse.h"
! 4: #include "comp.h"
! 5:
! 6: void Parfreg();
! 7:
! 8: struct ftab comp_tab[] = {
! 9: {"arfreg",Parfreg,8},
! 10: {0,0,0},
! 11: };
! 12:
! 13: void Parfreg(arg,rp)
! 14: NODE arg;
! 15: Q *rp;
! 16: {
! 17: char *name;
! 18: P t;
! 19: SDEF s;
! 20: int i;
! 21:
! 22: asir_assert(ARG0(arg),O_STR,"arfreg");
! 23: name = ((STRING)ARG0(arg))->body;
! 24: for ( s = LSS->sa, i = 0; i < LSS->n; i++ )
! 25: if ( !strcmp(s[i].name,name) )
! 26: break;
! 27: if ( i == LSS->n )
! 28: error("argreg : no such structure");
! 29:
! 30: t = (P)ARG1(arg); s[i].arf.add = !t ? 0 : (FUNC)VR(t)->priv;
! 31: t = (P)ARG2(arg); s[i].arf.sub = !t ? 0 : (FUNC)VR(t)->priv;
! 32: t = (P)ARG3(arg); s[i].arf.mul = !t ? 0 : (FUNC)VR(t)->priv;
! 33: t = (P)ARG4(arg); s[i].arf.div = !t ? 0 : (FUNC)VR(t)->priv;
! 34: t = (P)ARG5(arg); s[i].arf.pwr = !t ? 0 : (FUNC)VR(t)->priv;
! 35: t = (P)ARG6(arg); s[i].arf.chsgn = !t ? 0 : (FUNC)VR(t)->priv;
! 36: t = (P)ARG7(arg); s[i].arf.comp = !t ? 0 : (FUNC)VR(t)->priv;
! 37: *rp = ONE;
! 38: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>