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

version 1.99, 2005/11/24 08:16:03 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.98 2005/11/16 23:42:53 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 99  void Pnquote_comp();
Line 99  void Pnquote_comp();
 void Pnquote_match();  void Pnquote_match();
   
 void Pquote_to_nbp();  void Pquote_to_nbp();
 void Pshuffle_mul_nbp(), Pharmonic_mul_nbp();  void Pshuffle_mul(), Pharmonic_mul();
   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 146  struct ftab str_tab[] = {
Line 151  struct ftab str_tab[] = {
         {"nquote_comp",Pnquote_comp,2},          {"nquote_comp",Pnquote_comp,2},
         {"nquote_match",Pnquote_match,2},          {"nquote_match",Pnquote_match,2},
         {"quote_to_nbp",Pquote_to_nbp,1},          {"quote_to_nbp",Pquote_to_nbp,1},
         {"shuffle_mul_nbp",Pshuffle_mul_nbp,2},          {"shuffle_mul",Pshuffle_mul,2},
         {"harmonic_mul_nbp",Pharmonic_mul_nbp,2},          {"harmonic_mul",Pharmonic_mul,2},
   
           {"nbp_hm", Pnbp_hm,1},
           {"nbp_ht", Pnbp_ht,1},
           {"nbp_hc", Pnbp_hc,1},
           {"nbp_rest", Pnbp_rest,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},
   
         {"quote_to_nary",Pquote_to_nary,1},          {"quote_to_nary",Pquote_to_nary,1},
         {"quote_to_bin",Pquote_to_bin,2},          {"quote_to_bin",Pquote_to_bin,2},
   
Line 2063  void Pquote_to_nbp(NODE arg,NBP *rp)
Line 2079  void Pquote_to_nbp(NODE arg,NBP *rp)
         *rp = fnode_to_nbp(f);          *rp = fnode_to_nbp(f);
 }  }
   
 void Pshuffle_mul_nbp(NODE arg,NBP *rp)  void Pshuffle_mul(NODE arg,NBP *rp)
 {  {
         NBP p1,p2;          NBP p1,p2;
   
Line 2072  void Pshuffle_mul_nbp(NODE arg,NBP *rp)
Line 2088  void Pshuffle_mul_nbp(NODE arg,NBP *rp)
         shuffle_mulnbp(CO,p1,p2,rp);          shuffle_mulnbp(CO,p1,p2,rp);
 }  }
   
 void Pharmonic_mul_nbp(NODE arg,NBP *rp)  void Pharmonic_mul(NODE arg,NBP *rp)
 {  {
         NBP p1,p2;          NBP p1,p2;
   
Line 2081  void Pharmonic_mul_nbp(NODE arg,NBP *rp)
Line 2097  void Pharmonic_mul_nbp(NODE arg,NBP *rp)
         harmonic_mulnbp(CO,p1,p2,rp);          harmonic_mulnbp(CO,p1,p2,rp);
 }  }
   
   void Pnbp_hm(NODE arg, NBP *rp)
   {
           NBP p;
           NODE n;
           NBM m;
   
           p = (NBP)ARG0(arg);
           if ( !p ) *rp = 0;
           else {
                   m = (NBM)BDY(BDY(p));
                   MKNODE(n,m,0);
                   MKNBP(*rp,n);
           }
   }
   
   void Pnbp_ht(NODE arg, NBP *rp)
   {
           NBP p;
           NODE n;
           NBM m,m1;
   
           p = (NBP)ARG0(arg);
           if ( !p ) *rp = 0;
           else {
                   m = (NBM)BDY(BDY(p));
                   NEWNBM(m1);
                   m1->d = m->d; m1->c = ONE; m1->b = m->b;
                   MKNODE(n,m1,0);
                   MKNBP(*rp,n);
           }
   }
   
   void Pnbp_hc(NODE arg, Q *rp)
   {
           NBP p;
           NBM m;
   
           p = (NBP)ARG0(arg);
           if ( !p ) *rp = 0;
           else {
                   m = (NBM)BDY(BDY(p));
                   *rp = m->c;
           }
   }
   
   void Pnbp_rest(NODE arg, NBP *rp)
   {
           NBP p;
           NODE n;
   
           p = (NBP)ARG0(arg);
           if ( !p ) *rp = 0;
           else {
                   n = BDY(p);
                   if ( !NEXT(n) ) *rp = 0;
                   else
                           MKNBP(*rp,NEXT(n));
           }
   }
   
   void Pnbm_deg(NODE arg, Q *rp)
   {
           NBP p;
           NBM m;
   
           p = (NBP)ARG0(arg);
           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;
           int *b,*b1;
           int d,d1,v,i,j,k;
   
           p = (NBP)ARG0(arg);
           if ( !p )
                   MKLIST(*rp,0);
           else {
                   m = (NBM)BDY(BDY(p));
                   b = m->b; d = m->d;
                   if ( !d )
                           MKLIST(*rp,0);
                   else {
                           v = NBM_GET(b,0);
                           for ( i = 1; i < d; i++ )
                                   if ( NBM_GET(b,i) != v ) break;
                           NEWNBM(m1); NEWNBMBDY(m1,i);
                           b1 = m1->b; m1->d = i; m1->c = ONE;
                           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);
                   }
           }
   }
   
   void Pnbm_hxky(NODE arg, LIST *rp)
   {
           NBP p;
   
           p = (NBP)ARG0(arg);
           if ( !p )
                   *rp = 0;
           else
                   separate_xky_nbm((NBM)BDY(BDY(p)),0,rp,0);
   }
   
   void Pnbm_xky_rest(NODE arg,NBP *rp)
   {
           NBP p;
   
           p = (NBP)ARG0(arg);
           if ( !p )
                   *rp = 0;
           else
                   separate_xky_nbm((NBM)BDY(BDY(p)),0,0,rp);
   }
   
   void Pnbm_hv(NODE arg, NBP *rp)
   {
           NBP p;
   
           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.99  
changed lines
  Added in v.1.102

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