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

Diff for /OpenXM_contrib2/asir2000/builtin/strobj.c between version 1.114 and 1.115

version 1.114, 2005/12/19 01:31:43 version 1.115, 2006/08/09 05:05:28
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/strobj.c,v 1.113 2005/12/18 06:54:28 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/strobj.c,v 1.114 2005/12/19 01:31:43 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 104  void Pnqt_match_rewrite();
Line 104  void Pnqt_match_rewrite();
 void Pqt_to_nbp();  void Pqt_to_nbp();
 void Pshuffle_mul(), Pharmonic_mul();  void Pshuffle_mul(), Pharmonic_mul();
 void Pnbp_hm(), Pnbp_ht(), Pnbp_hc(), Pnbp_rest();  void Pnbp_hm(), Pnbp_ht(), Pnbp_hc(), Pnbp_rest();
   void Pnbp_tm(), Pnbp_tt(), Pnbp_tc(), Pnbp_trest();
 void Pnbm_deg();  void Pnbm_deg();
 void Pnbm_hp_rest();  void Pnbm_hp_rest();
 void Pnbm_hxky(), Pnbm_xky_rest();  void Pnbm_hxky(), Pnbm_xky_rest();
Line 182  struct ftab str_tab[] = {
Line 183  struct ftab str_tab[] = {
         {"nbp_ht", Pnbp_ht,1},          {"nbp_ht", Pnbp_ht,1},
         {"nbp_hc", Pnbp_hc,1},          {"nbp_hc", Pnbp_hc,1},
         {"nbp_rest", Pnbp_rest,1},          {"nbp_rest", Pnbp_rest,1},
           {"nbp_tm", Pnbp_tm,1},
           {"nbp_tt", Pnbp_tt,1},
           {"nbp_tc", Pnbp_tc,1},
           {"nbp_trest", Pnbp_trest,1},
         {"nbm_deg", Pnbm_deg,1},          {"nbm_deg", Pnbm_deg,1},
         {"nbm_hxky", Pnbm_hxky,1},          {"nbm_hxky", Pnbm_hxky,1},
         {"nbm_xky_rest", Pnbm_xky_rest,1},          {"nbm_xky_rest", Pnbm_xky_rest,1},
Line 2410  void Pnbp_ht(NODE arg, NBP *rp)
Line 2415  void Pnbp_ht(NODE arg, NBP *rp)
         else {          else {
                 m = (NBM)BDY(BDY(p));                  m = (NBM)BDY(BDY(p));
                 NEWNBM(m1);                  NEWNBM(m1);
                 m1->d = m->d; m1->c = ONE; m1->b = m->b;                  m1->d = m->d; m1->c = (P)ONE; m1->b = m->b;
                 MKNODE(n,m1,0);                  MKNODE(n,m1,0);
                 MKNBP(*rp,n);                  MKNBP(*rp,n);
         }          }
 }  }
   
 void Pnbp_hc(NODE arg, Q *rp)  void Pnbp_hc(NODE arg, P *rp)
 {  {
         NBP p;          NBP p;
         NBM m;          NBM m;
Line 2444  void Pnbp_rest(NODE arg, NBP *rp)
Line 2449  void Pnbp_rest(NODE arg, NBP *rp)
         }          }
 }  }
   
   void Pnbp_tm(NODE arg, NBP *rp)
   {
           NBP p;
           NODE n;
           NBM m;
   
           p = (NBP)ARG0(arg);
           if ( !p ) *rp = 0;
           else {
                   for ( n = BDY(p); NEXT(n); n = NEXT(n) );
                   m = (NBM)BDY(n);
                   MKNODE(n,m,0);
                   MKNBP(*rp,n);
           }
   }
   
   void Pnbp_tt(NODE arg, NBP *rp)
   {
           NBP p;
           NODE n;
           NBM m,m1;
   
           p = (NBP)ARG0(arg);
           if ( !p ) *rp = 0;
           else {
                   for ( n = BDY(p); NEXT(n); n = NEXT(n) );
                   m = (NBM)BDY(n);
                   NEWNBM(m1);
                   m1->d = m->d; m1->c = (P)ONE; m1->b = m->b;
                   MKNODE(n,m1,0);
                   MKNBP(*rp,n);
           }
   }
   
   void Pnbp_tc(NODE arg, P *rp)
   {
           NBP p;
           NBM m;
           NODE n;
   
           p = (NBP)ARG0(arg);
           if ( !p ) *rp = 0;
           else {
                   for ( n = BDY(p); NEXT(n); n = NEXT(n) );
                   m = (NBM)BDY(n);
                   *rp = m->c;
           }
   }
   
   void Pnbp_trest(NODE arg, NBP *rp)
   {
           NBP p;
           NODE n,r,r0;
   
           p = (NBP)ARG0(arg);
           if ( !p ) *rp = 0;
           else {
                   n = BDY(p);
                   for ( r0 = 0; NEXT(n); n = NEXT(n) ) {
                           NEXTNODE(r0,r);
                           BDY(r) = (pointer)BDY(n);
                   }
                   if ( r0 ) {
                           NEXT(r) = 0;
                           MKNBP(*rp,r0);
                   } else
                           *rp = 0;
           }
   }
   
 void Pnbm_deg(NODE arg, Q *rp)  void Pnbm_deg(NODE arg, Q *rp)
 {  {
         NBP p;          NBP p;
Line 2479  void Pnbm_hp_rest(NODE arg, LIST *rp)
Line 2554  void Pnbm_hp_rest(NODE arg, LIST *rp)
                         for ( i = 1; i < d; i++ )                          for ( i = 1; i < d; i++ )
                                 if ( NBM_GET(b,i) != v ) break;                                  if ( NBM_GET(b,i) != v ) break;
                         NEWNBM(m1); NEWNBMBDY(m1,i);                          NEWNBM(m1); NEWNBMBDY(m1,i);
                         b1 = m1->b; m1->d = i; m1->c = ONE;                          b1 = m1->b; m1->d = i; m1->c = (P)ONE;
                         if ( v ) for ( j = 0; j < i; j++ ) NBM_SET(b1,j);                          if ( v ) for ( j = 0; j < i; j++ ) NBM_SET(b1,j);
                         else for ( j = 0; j < i; j++ ) NBM_CLR(b1,j);                          else for ( j = 0; j < i; j++ ) NBM_CLR(b1,j);
                         MKNODE(n,m1,0); MKNBP(h,n);                          MKNODE(n,m1,0); MKNBP(h,n);
   
                         d1 = d-i;                          d1 = d-i;
                         NEWNBM(m1); NEWNBMBDY(m1,d1);                          NEWNBM(m1); NEWNBMBDY(m1,d1);
                         b1 = m1->b; m1->d = d1; m1->c = ONE;                          b1 = m1->b; m1->d = d1; m1->c = (P)ONE;
                         for ( j = 0, k = i; j < d1; j++, k++ )                          for ( j = 0, k = i; j < d1; j++, k++ )
                                 if ( NBM_GET(b,k) ) NBM_SET(b1,j);                                  if ( NBM_GET(b,k) ) NBM_SET(b1,j);
                                 else NBM_CLR(b1,j);                                  else NBM_CLR(b1,j);
Line 2554  NBP fnode_to_nbp(FNODE f)
Line 2629  NBP fnode_to_nbp(FNODE f)
                 r = eval(f);                  r = eval(f);
                 NEWNBM(m);                  NEWNBM(m);
                 if ( OID(r) == O_N ) {                  if ( OID(r) == O_N ) {
                         m->d = 0; m->c = (Q)r; m->b = 0;                          m->d = 0; m->c = (P)r; m->b = 0;
                 } else {                  } else {
                         v = VR((P)r);                          v = VR((P)r);
                         m->d = 1; m->c = ONE; NEWNBMBDY(m,1);                          m->d = 1; m->c = (P)ONE; NEWNBMBDY(m,1);
                         if ( !strcmp(NAME(v),"x") ) NBM_SET(m->b,0);                          if ( !strcmp(NAME(v),"x") ) NBM_SET(m->b,0);
                         else NBM_CLR(m->b,0);                          else NBM_CLR(m->b,0);
                 }                  }

Legend:
Removed from v.1.114  
changed lines
  Added in v.1.115

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