[BACK]Return to poly.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Diff for /OpenXM_contrib2/asir2000/builtin/poly.c between version 1.22 and 1.24

version 1.22, 2011/03/30 02:43:18 version 1.24, 2011/07/21 04:43:26
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/builtin/poly.c,v 1.21 2003/06/24 09:49:35 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/poly.c,v 1.23 2011/07/20 03:19:11 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 445  void Pp_mag(NODE arg,Q *rp)
Line 445  void Pp_mag(NODE arg,Q *rp)
   
 void Pord(NODE arg,LIST *listp)  void Pord(NODE arg,LIST *listp)
 {  {
         NODE n,tn;          NODE n,tn,p,opt;
           char *key;
           Obj value;
           int overwrite=0;
         LIST l;          LIST l;
         VL vl,tvl,svl;          VL vl,tvl,svl;
         P t;          P t;
Line 453  void Pord(NODE arg,LIST *listp)
Line 456  void Pord(NODE arg,LIST *listp)
         V *va;          V *va;
         V v;          V v;
   
           if ( current_option ) {
                   for ( opt = current_option; opt; opt = NEXT(opt) ) {
                           p = BDY((LIST)BDY(opt));
                           key = BDY((STRING)BDY(p));
                           value = (Obj)BDY(NEXT(p));
                           if ( !strcmp(key,"overwrite") && value ) {
                                   overwrite = value ? 1 : 0;
                                   break;
                           }
                   }
           }
   
         if ( argc(arg) ) {          if ( argc(arg) ) {
                 asir_assert(ARG0(arg),O_LIST,"ord");                  asir_assert(ARG0(arg),O_LIST,"ord");
                 for ( vl = 0, i = 0, n = BDY((LIST)ARG0(arg));                  for ( vl = 0, i = 0, n = BDY((LIST)ARG0(arg));
Line 466  void Pord(NODE arg,LIST *listp)
Line 481  void Pord(NODE arg,LIST *listp)
                                 error("ord : invalid argument");                                  error("ord : invalid argument");
                         VR(tvl) = VR(t);                          VR(tvl) = VR(t);
                 }                  }
                 va = (V *)ALLOCA(i*sizeof(V));                  if ( !overwrite ) {
                 for ( j = 0, svl = vl; j < i; j++, svl = NEXT(svl) )                          va = (V *)ALLOCA(i*sizeof(V));
                         va[j] = VR(svl);                          for ( j = 0, svl = vl; j < i; j++, svl = NEXT(svl) )
                 for ( svl = CO; svl; svl = NEXT(svl) ) {                                  va[j] = VR(svl);
                         v = VR(svl);                          for ( svl = CO; svl; svl = NEXT(svl) ) {
                         for ( j = 0; j < i; j++ )                                  v = VR(svl);
                                 if ( v == va[j] )                                  for ( j = 0; j < i; j++ )
                                         break;                                          if ( v == va[j] )
                         if ( j == i ) {                                                  break;
                                 if ( !vl ) {                                  if ( j == i ) {
                                         NEWVL(vl); tvl = vl;                                          if ( !vl ) {
                                 } else {                                                  NEWVL(vl); tvl = vl;
                                         NEWVL(NEXT(tvl)); tvl = NEXT(tvl);                                          } else {
                                                   NEWVL(NEXT(tvl)); tvl = NEXT(tvl);
                                           }
                                           VR(tvl) = v;
                                 }                                  }
                                 VR(tvl) = v;                          }
                   } else {
                           for ( svl = vl; svl; svl = NEXT(svl) ) {
                                   if ( svl->v->attr == (pointer)V_PF )
                                           ((PFINS)svl->v->priv)->pf->ins = 0;
                         }                          }
                 }                  }
                 if ( vl )                  if ( vl )

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.24

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>