=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/pf.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -p -r1.15 -r1.16 --- OpenXM_contrib2/asir2000/builtin/pf.c 2008/11/18 20:52:47 1.15 +++ OpenXM_contrib2/asir2000/builtin/pf.c 2009/07/23 01:04:29 1.16 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/builtin/pf.c,v 1.14 2008/09/02 17:23:33 ohara Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/pf.c,v 1.15 2008/11/18 20:52:47 ohara Exp $ */ #include "ca.h" #include "math.h" @@ -613,7 +613,10 @@ void Pmapat(NODE arg,Obj *rp) int len,row,col,i,j,pos; Obj iter; pointer val; + NODE option; + option = current_option; + if ( argc(arg) < 3 ) error("mapat : too few arguments"); @@ -638,7 +641,7 @@ void Pmapat(NODE arg,Obj *rp) NEXTNODE(r0,r); iter = BDY(t); rest = NEXT(t); if ( !iter ) { - *rp = bevalf(f,node); + *rp = bevalf_with_opts(f,node,option); return; } switch ( OID(iter) ) { @@ -646,7 +649,7 @@ void Pmapat(NODE arg,Obj *rp) v = (VECT)iter; len = v->len; MKVECT(rv,len); for ( i = 0; i < len; i++ ) { BDY(r) = BDY(v)[i]; NEXT(r) = rest; - BDY(rv)[i] = bevalf(f,r0); + BDY(rv)[i] = bevalf_with_opts(f,r0,option); } *rp = (Obj)rv; break; @@ -655,7 +658,7 @@ void Pmapat(NODE arg,Obj *rp) for ( i = 0; i < row; i++ ) for ( j = 0; j < col; j++ ) { BDY(r) = BDY(m)[i][j]; NEXT(r) = rest; - BDY(rm)[i][j] = bevalf(f,r0); + BDY(rm)[i][j] = bevalf_with_opts(f,r0,option); } *rp = (Obj)rm; break; @@ -663,7 +666,7 @@ void Pmapat(NODE arg,Obj *rp) n = BDY((LIST)iter); for ( t0 = t = 0; n; n = NEXT(n) ) { BDY(r) = BDY(n); NEXT(r) = rest; - NEXTNODE(t0,t); BDY(t) = bevalf(f,r0); + NEXTNODE(t0,t); BDY(t) = bevalf_with_opts(f,r0,option); } if ( t0 ) NEXT(t) = 0; @@ -671,7 +674,7 @@ void Pmapat(NODE arg,Obj *rp) *rp = (Obj)rl; break; default: - *rp = bevalf(f,node); + *rp = bevalf_with_opts(f,node,option); break; } } @@ -690,7 +693,10 @@ void Pmap(NODE arg,Obj *rp) int len,row,col,i,j; Obj iter; pointer val; + NODE option; + option = current_option; + if ( argc(arg) < 2 ) error("mapat : too few arguments"); @@ -709,7 +715,7 @@ void Pmap(NODE arg,Obj *rp) NEXTNODE(r0,r); iter = BDY(t); rest = NEXT(t); if ( !iter ) { - *rp = bevalf(f,node); + *rp = bevalf_with_opts(f,node,option); return; } switch ( OID(iter) ) { @@ -717,7 +723,7 @@ void Pmap(NODE arg,Obj *rp) v = (VECT)iter; len = v->len; MKVECT(rv,len); for ( i = 0; i < len; i++ ) { BDY(r) = BDY(v)[i]; NEXT(r) = rest; - BDY(rv)[i] = bevalf(f,r0); + BDY(rv)[i] = bevalf_with_opts(f,r0,option); } *rp = (Obj)rv; break; @@ -726,7 +732,7 @@ void Pmap(NODE arg,Obj *rp) for ( i = 0; i < row; i++ ) for ( j = 0; j < col; j++ ) { BDY(r) = BDY(m)[i][j]; NEXT(r) = rest; - BDY(rm)[i][j] = bevalf(f,r0); + BDY(rm)[i][j] = bevalf_with_opts(f,r0,option); } *rp = (Obj)rm; break; @@ -734,7 +740,7 @@ void Pmap(NODE arg,Obj *rp) n = BDY((LIST)iter); for ( t0 = t = 0; n; n = NEXT(n) ) { BDY(r) = BDY(n); NEXT(r) = rest; - NEXTNODE(t0,t); BDY(t) = bevalf(f,r0); + NEXTNODE(t0,t); BDY(t) = bevalf_with_opts(f,r0,option); } if ( t0 ) NEXT(t) = 0; @@ -742,7 +748,7 @@ void Pmap(NODE arg,Obj *rp) *rp = (Obj)rl; break; default: - *rp = bevalf(f,node); + *rp = bevalf_with_opts(f,node,option); break; } }