[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.101 and 1.102

version 1.101, 2005/11/26 01:28:11 version 1.102, 2005/11/27 00:07:05
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.100 2005/11/25 07:18:31 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/strobj.c,v 1.101 2005/11/26 01:28:11 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 100  void Pnquote_match();
Line 100  void Pnquote_match();
   
 void Pquote_to_nbp();  void Pquote_to_nbp();
 void Pshuffle_mul(), Pharmonic_mul();  void Pshuffle_mul(), Pharmonic_mul();
 void Pnbp_hm(), Pnbp_ht(), Pnbp_hc(), Pnbp_rest(), Pnbm_hp(), Pnbm_rest();  void Pnbp_hm(), Pnbp_ht(), Pnbp_hc(), Pnbp_rest();
   void Pnbm_deg();
   void Pnbm_hp_rest();
   void Pnbm_hxky(), Pnbm_xky_rest();
   void Pnbm_hv(), Pnbm_rest();
   
 void Pquote_to_funargs(),Pfunargs_to_quote(),Pget_function_name();  void Pquote_to_funargs(),Pfunargs_to_quote(),Pget_function_name();
 void Pquote_match(),Pget_quote_id(),Pquote_match_rewrite();  void Pquote_match(),Pget_quote_id(),Pquote_match_rewrite();
Line 154  struct ftab str_tab[] = {
Line 158  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},
         {"nbm_hp", Pnbm_hp,1},          {"nbm_deg", Pnbm_deg,1},
           {"nbm_hxky", Pnbm_hxky,1},
           {"nbm_xky_rest", Pnbm_xky_rest,1},
           {"nbm_hp_rest", Pnbm_hp_rest,1},
           {"nbm_hv", Pnbm_hv,1},
         {"nbm_rest", Pnbm_rest,1},          {"nbm_rest", Pnbm_rest,1},
   
         {"quote_to_nary",Pquote_to_nary,1},          {"quote_to_nary",Pquote_to_nary,1},
Line 2149  void Pnbp_rest(NODE arg, NBP *rp)
Line 2157  void Pnbp_rest(NODE arg, NBP *rp)
         }          }
 }  }
   
 void Pnbm_hp(NODE arg, LIST *rp)  void Pnbm_deg(NODE arg, Q *rp)
 {  {
         NBP p;          NBP p;
         NBM m;          NBM m;
         int d,i,xy;  
         int *b;          p = (NBP)ARG0(arg);
         Q qxy,qi;          if ( !p )
                   STOQ(-1,*rp);
           else {
                   m = (NBM)BDY(BDY(p));
                   STOQ(m->d,*rp);
           }
   }
   
   void Pnbm_hp_rest(NODE arg, LIST *rp)
   {
           NBP p,h,r;
           NBM m,m1;
         NODE n;          NODE n;
           int *b,*b1;
           int d,d1,v,i,j,k;
   
         p = (NBP)ARG0(arg);          p = (NBP)ARG0(arg);
         if ( !p ) {          if ( !p )
                 MKLIST(*rp,0);                  MKLIST(*rp,0);
         } else {          else {
                 m = (NBM)BDY(BDY(p));                  m = (NBM)BDY(BDY(p));
                 b = m->b;                  b = m->b; d = m->d;
                 d = m->d;  
                 if ( !d )                  if ( !d )
                         MKLIST(*rp,0);                          MKLIST(*rp,0);
                 else {                  else {
                         xy = NBM_GET(b,0);                          v = NBM_GET(b,0);
                         for ( i = 1; i < d; i++ )                          for ( i = 1; i < d; i++ )
                                 if ( NBM_GET(b,i) != xy ) break;                                  if ( NBM_GET(b,i) != v ) break;
                         STOQ(xy,qxy);                          NEWNBM(m1); NEWNBMBDY(m1,i);
                         STOQ(i,qi);                          b1 = m1->b; m1->d = i; m1->c = ONE;
                         n = mknode(2,qxy,qi);                          if ( v ) for ( j = 0; j < i; j++ ) NBM_SET(b1,j);
                           else for ( j = 0; j < i; j++ ) NBM_CLR(b1,j);
                           MKNODE(n,m1,0); MKNBP(h,n);
   
                           d1 = d-i;
                           NEWNBM(m1); NEWNBMBDY(m1,d1);
                           b1 = m1->b; m1->d = d1; m1->c = ONE;
                           for ( j = 0, k = i; j < d1; j++, k++ )
                                   if ( NBM_GET(b,k) ) NBM_SET(b1,j);
                                   else NBM_CLR(b1,j);
                           MKNODE(n,m1,0); MKNBP(r,n);
                           n = mknode(2,h,r);
                         MKLIST(*rp,n);                          MKLIST(*rp,n);
                 }                  }
         }          }
 }  }
   
 void Pnbm_rest(NODE arg,NBP *rp)  void Pnbm_hxky(NODE arg, LIST *rp)
 {  {
         NBP p;          NBP p;
         NBM m,m1;  
         int d,xy,i,d1,i1;  
         int *b,*b1;  
         NODE n;  
   
         p = (NBP)ARG0(arg);          p = (NBP)ARG0(arg);
         if ( !p )          if ( !p )
                 *rp = 0;                  *rp = 0;
         else {          else
                 m = (NBM)BDY(BDY(p));                  separate_xky_nbm((NBM)BDY(BDY(p)),0,rp,0);
                 b = m->b;  }
                 d = m->d;  
                 if ( !d )  void Pnbm_xky_rest(NODE arg,NBP *rp)
                         *rp = p;  {
                 else {          NBP p;
                         xy = NBM_GET(b,0);  
                         for ( i = 1; i < d; i++ )          p = (NBP)ARG0(arg);
                                 if ( NBM_GET(b,i) != xy ) break;          if ( !p )
                         d1 = d-i;                  *rp = 0;
                         NEWNBM(m1);          else
                         m1->d = d1; m1->c = m->c;                  separate_xky_nbm((NBM)BDY(BDY(p)),0,0,rp);
                         NEWNBMBDY(m1,d1);  }
                         b1 = m1->b;  
                         for ( i1 = 0; i < d; i++, i1++ )  void Pnbm_hv(NODE arg, NBP *rp)
                                 if ( NBM_GET(b,i) ) NBM_SET(b1,i1);  {
                                 else NBM_CLR(b1,i1);          NBP p;
                         MKNODE(n,m1,0);  
                         MKNBP(*rp,n);          p = (NBP)ARG0(arg);
                 }          if ( !p )
         }                  *rp = 0;
           else
                   separate_nbm((NBM)BDY(BDY(p)),0,rp,0);
   }
   
   void Pnbm_rest(NODE arg, NBP *rp)
   {
           NBP p;
   
           p = (NBP)ARG0(arg);
           if ( !p )
                   *rp = 0;
           else
                   separate_nbm((NBM)BDY(BDY(p)),0,0,rp);
 }  }
   
 NBP fnode_to_nbp(FNODE f)  NBP fnode_to_nbp(FNODE f)

Legend:
Removed from v.1.101  
changed lines
  Added in v.1.102

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