=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/dp-supp.c,v retrieving revision 1.50 retrieving revision 1.53 diff -u -p -r1.50 -r1.53 --- OpenXM_contrib2/asir2000/builtin/dp-supp.c 2009/01/04 10:02:00 1.50 +++ OpenXM_contrib2/asir2000/builtin/dp-supp.c 2009/01/07 05:33:18 1.53 @@ -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/dp-supp.c,v 1.49 2009/01/04 05:44:51 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp-supp.c,v 1.52 2009/01/05 02:14:00 noro Exp $ */ #include "ca.h" #include "base.h" @@ -1701,6 +1701,16 @@ int create_order_spec(VL vl,Obj obj,struct order_spec return 1; } else if ( OID(obj) == O_LIST ) { node = BDY((LIST)obj); + if ( !BDY(node) || NUM(BDY(node)) ) { + if ( length(node) < 2 ) + error("create_order_spec : invalid argument"); + create_order_spec(0,(Obj)BDY(NEXT(node)),&spec); + spec->id += 256; spec->obj = obj; + spec->ispot = (BDY(node)!=0); + *specp = spec; + return 1; + } + for ( n = 0, t = node; t; t = NEXT(t), n++ ); l = (struct order_pair *)MALLOC_ATOMIC(n*sizeof(struct order_pair)); for ( i = 0, t = node, s = 0; i < n; t = NEXT(t), i++ ) { @@ -1722,14 +1732,6 @@ int create_order_spec(VL vl,Obj obj,struct order_spec spec->nv = col; spec->ord.matrix.row = row; spec->ord.matrix.matrix = w; return 1; - } else if ( OID(obj) == O_VECT ) { - v = (VECT)obj; bv = BDY(v); - if ( v->len < 2 ) error("create_order_spec : invalid argument"); - create_order_spec(0,(Obj)bv[1],&spec); - spec->id += 256; spec->obj = obj; - spec->istop = bv[0]==0; - *specp = spec; - return 1; } else return 0; } @@ -2202,7 +2204,7 @@ void homogenize_order(struct order_spec *old,int n,str new->id = old->id; new->nv = n+1; new->ord.block.order_pair = l; new->ord.block.length = length+1; - new->istop = old->istop; + new->ispot = old->ispot; break; case 2: case 258: nv = old->nv; row = old->ord.matrix.row; @@ -2216,7 +2218,7 @@ void homogenize_order(struct order_spec *old,int n,str } new->id = old->id; new->nv = nv+1; new->ord.matrix.row = row+1; new->ord.matrix.matrix = newm; - new->istop = old->istop; + new->ispot = old->ispot; break; case 3: case 259: onv = old->nv; @@ -2256,7 +2258,7 @@ void homogenize_order(struct order_spec *old,int n,str new->nv = nnv; new->ord.composite.length = nlen; new->ord.composite.w_or_b = nwb; - new->istop = old->istop; + new->ispot = old->ispot; print_composite_order_spec(new); break; case 256: /* simple module order */ @@ -2277,7 +2279,7 @@ void homogenize_order(struct order_spec *old,int n,str default: error("homogenize_order : invalid input"); } - new->istop = old->istop; + new->ispot = old->ispot; break; default: error("homogenize_order : invalid input");